]> git.hungrycats.org Git - linux/commitdiff
[PATCH] ppc: Disable IRQ probe on ppc
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 22 Oct 2004 00:31:42 +0000 (17:31 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Fri, 22 Oct 2004 00:31:42 +0000 (17:31 -0700)
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: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/i386/Kconfig
arch/x86_64/Kconfig
include/linux/interrupt.h
kernel/irq/Makefile

index 5b5e7f4bdcff0dc891ae4986c918b3baab8985c3..3a75925ce11db10e2b418652137ee53b353fb607 100644 (file)
@@ -1207,6 +1207,10 @@ config GENERIC_HARDIRQS
        bool
        default y
 
+config GENERIC_IRQ_PROBE
+       bool
+       default y
+
 config X86_SMP
        bool
        depends on SMP && !X86_VOYAGER
index d895c3bec3c6bc26989658e2a490cc3160a7df55..4486df15e55b9d803d3e125ff43cd9651a768f92 100644 (file)
@@ -346,6 +346,10 @@ config GENERIC_HARDIRQS
        bool
        default y
 
+config GENERIC_IRQ_PROBE
+       bool
+       default y
+
 menu "Power management options"
 
 source kernel/power/Kconfig
index 2b0f7331f9c3b47776f4ef217da7373becb9049f..1b65f9bfa57ea9c1ce0f353c5f4c3d64548e81bf 100644 (file)
@@ -252,8 +252,24 @@ extern void tasklet_init(struct tasklet_struct *t,
  * or zero if none occurred, or a negative irq number
  * 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 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 */
+#endif
 
 #endif
index 66d3be6e4da8829d552df04174ec6d211e38a2b6..49378738ff5e751fe0c139e994b4cdc3cfa2c32c 100644 (file)
@@ -1,4 +1,5 @@
 
-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