Skip to contentSkip to conversation

Use i8253.c lock for PC speaker on MIPS, too.

PATCH In review Ralf Baechle 3 participants 3 messages Nov 2, 2007 – Nov 3, 2007 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore
#1 lore raw

PATCH 1/1 Use i8253.c lock for PC speaker on MIPS, too.

In reply to a message not in the archive

The Jazz machines have to use the PIT timer for dyntick and highresolution kernels. This may break because currently just like i386 used to do MIPS uses two separate spinlocks in the actual PIT code and the PC speaker code. So switch to do it the same that x86 currently does PIT locking.

---
Linus, this patch is meant to be applied on top of the pull request I mailed you earlier today.

 arch/mips/kernel/i8253.c    |    2 +-
 drivers/input/misc/pcspkr.c |    2 +-
 include/asm-mips/i8253.h    |    4 ++++
 3 files changed, 6 insertions(+), 2 deletions(-)
arch/mips/kernel/i8253.c +1 -1
index a925abd..c2d497c 100644
@@ -14,7 +14,7 @@
 #include <asm/io.h>
 #include <asm/time.h>
 
-static DEFINE_SPINLOCK(i8253_lock);
+DEFINE_SPINLOCK(i8253_lock);
 
 /*
  * Initialize the PIT timer.
drivers/input/misc/pcspkr.c +1 -1
index 4941a9e..43aaa5c 100644
@@ -24,7 +24,7 @@ MODULE_DESCRIPTION("PC Speaker beeper driver");
 MODULE_LICENSE("GPL");
 MODULE_ALIAS("platform:pcspkr");
 
-#ifdef CONFIG_X86
+#if defined(CONFIG_MIPS) || defined(CONFIG_X86)
 /* Use the global PIT lock ! */
 #include <asm/i8253.h>
 #else
include/asm-mips/i8253.h +4 -0
index 778b2f0..032ca73 100644
@@ -5,11 +5,15 @@
 #ifndef __ASM_I8253_H
 #define __ASM_I8253_H
 
+#include <linux/spinlock.h>
+
 /* i8253A PIT registers */
 #define PIT_MODE		0x43
 #define PIT_CH0			0x40
 #define PIT_CH2			0x42
 
+extern spinlock_t i8253_lock;
+
 extern void setup_pit_timer(void);
 
 #endif /* __ASM_I8253_H */
#2 lore raw
Quoted 5 lines · Ralf Baechle

The Jazz machines have to use the PIT timer for dyntick and highresolution kernels. This may break because currently just like i386 used to do MIPS uses two separate spinlocks in the actual PIT code and the PC speaker code. So switch to do it the same that x86 currently does PIT locking.

Hmm. That leaves apparently just alpha/ppc/powerpc as supporting pcspkr, and *not* doing this. Maybe they should be forced to do the i8253 lock in arch code too, and expose it through <asm/i8253.h>, instead of having that butt-ugly #ifdef remain in the sources?

Paul, Jay, Ivan: right now drivers/input/pcspkr.c does this:

	#if defined(CONFIG_MIPS) || defined(CONFIG_X86)
	/* Use the global PIT lock ! */
	#include <asm/i8253.h>
	#else
	#include <asm/8253pit.h>
	static DEFINE_SPINLOCK(i8253_lock);
	#endif

and wouldn't it be nice if we just changed it to

	#include <asm/i8253.h>

and got rid of one totally unnecessary stupid arch difference?

Linus

#3 lore raw
Quoted 5 lines · Linus Torvalds

and wouldn't it be nice if we just changed it to

	#include <asm/i8253.h>

and got rid of one totally unnecessary stupid arch difference?

Looks fine to me. I'll do a patch for powerpc & ppc.

Paul.