Commit 3db521ca authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Linus Torvalds

[PATCH] ppc: Disable IRQ probe on ppc

The current "generic" implementation of IRQ probing isn't well suited
for ppc in it's current form, and causes issues with yenta_socket
(and possibly others) on pmac laptops. We didn't have a probe implementation
in the past, we probably don't need one anyway, so for now, the fix is to
make this optional and enable it on x86 and x86_64 but not ppc and ppc64
(the 4 archs to use the generic IRQ code).
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent e206f393
...@@ -1207,6 +1207,10 @@ config GENERIC_HARDIRQS ...@@ -1207,6 +1207,10 @@ config GENERIC_HARDIRQS
bool bool
default y default y
config GENERIC_IRQ_PROBE
bool
default y
config X86_SMP config X86_SMP
bool bool
depends on SMP && !X86_VOYAGER depends on SMP && !X86_VOYAGER
......
...@@ -346,6 +346,10 @@ config GENERIC_HARDIRQS ...@@ -346,6 +346,10 @@ config GENERIC_HARDIRQS
bool bool
default y default y
config GENERIC_IRQ_PROBE
bool
default y
menu "Power management options" menu "Power management options"
source kernel/power/Kconfig source kernel/power/Kconfig
......
...@@ -252,8 +252,24 @@ extern void tasklet_init(struct tasklet_struct *t, ...@@ -252,8 +252,24 @@ extern void tasklet_init(struct tasklet_struct *t,
* or zero if none occurred, or a negative irq number * or zero if none occurred, or a negative irq number
* if more than one irq occurred. * if more than one irq occurred.
*/ */
#if defined(CONFIG_GENERIC_HARDIRQS) && !defined(CONFIG_GENERIC_IRQ_PROBE)
static inline unsigned long probe_irq_on(void)
{
return 0;
}
static inline int probe_irq_off(unsigned long val)
{
return 0;
}
static inline unsigned int probe_irq_mask(unsigned long val)
{
return 0;
}
#else
extern unsigned long probe_irq_on(void); /* returns 0 on failure */ extern unsigned long probe_irq_on(void); /* returns 0 on failure */
extern int probe_irq_off(unsigned long); /* returns 0 or negative on failure */ extern int probe_irq_off(unsigned long); /* returns 0 or negative on failure */
extern unsigned int probe_irq_mask(unsigned long); /* returns mask of ISA interrupts */ extern unsigned int probe_irq_mask(unsigned long); /* returns mask of ISA interrupts */
#endif
#endif #endif
obj-y := autoprobe.o handle.o manage.o spurious.o obj-y := handle.o manage.o spurious.o
obj-$(CONFIG_GENERIC_IRQ_PROBE) += autoprobe.o
obj-$(CONFIG_PROC_FS) += proc.o obj-$(CONFIG_PROC_FS) += proc.o
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment