[PATCH] powerpc: Use check_legacy_ioport() on ppc32 too.
authorDavid Woodhouse <dwmw2@infradead.org>
Mon, 24 Apr 2006 22:22:17 +0000 (23:22 +0100)
committerPaul Mackerras <paulus@samba.org>
Fri, 28 Apr 2006 11:04:55 +0000 (21:04 +1000)
Some people report that we die on some Macs when we are expecting to
catch machine checks after poking at some random I/O address. I'd seen
it happen on my dual G4 with serial ports until we fixed those to use
OF, but now other users are reporting it with i8042.

This expands the use of check_legacy_ioport() to avoid that situation
even on 32-bit kernels.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/setup-common.c
arch/powerpc/kernel/setup_64.c
drivers/block/floppy.c
drivers/input/serio/i8042-io.h
include/asm-powerpc/io.h

index 1d93e73a700345ab65c3243786edabb8422587d8..684ab1d49c65366d62930c22346cb3581e588e71 100644 (file)
@@ -516,3 +516,11 @@ void probe_machine(void)
 
        printk(KERN_INFO "Using %s machine description\n", ppc_md.name);
 }
+
+int check_legacy_ioport(unsigned long base_port)
+{
+       if (ppc_md.check_legacy_ioport == NULL)
+               return 0;
+       return ppc_md.check_legacy_ioport(base_port);
+}
+EXPORT_SYMBOL(check_legacy_ioport);
index 13e91c4d70a8ff1444fff3ccc232750569c3c5c0..4467c49903b64011884337a47445eb1ee9044d0f 100644 (file)
@@ -594,14 +594,6 @@ void ppc64_terminate_msg(unsigned int src, const char *msg)
        printk("[terminate]%04x %s\n", src, msg);
 }
 
-int check_legacy_ioport(unsigned long base_port)
-{
-       if (ppc_md.check_legacy_ioport == NULL)
-               return 0;
-       return ppc_md.check_legacy_ioport(base_port);
-}
-EXPORT_SYMBOL(check_legacy_ioport);
-
 void cpu_die(void)
 {
        if (ppc_md.cpu_die)
index bedb689b051fe5cb9e58667b082673208b41cc81..dff1e67b1dd4e2768447ac92465caf8e1cceb97a 100644 (file)
@@ -4301,7 +4301,7 @@ static int __init floppy_init(void)
        }
 
        use_virtual_dma = can_use_virtual_dma & 1;
-#if defined(CONFIG_PPC64)
+#if defined(CONFIG_PPC_MERGE)
        if (check_legacy_ioport(FDC1)) {
                del_timer(&fd_timeout);
                err = -ENODEV;
index 9a92216442501d066ec4b41476ad37b41ffbfd03..cc21914fbc72360967c117138fe75eab3db907fe 100644 (file)
@@ -67,14 +67,14 @@ static inline int i8042_platform_init(void)
  * On some platforms touching the i8042 data register region can do really
  * bad things. Because of this the region is always reserved on such boxes.
  */
-#if !defined(__sh__) && !defined(__alpha__) && !defined(__mips__) && !defined(CONFIG_PPC64)
+#if !defined(__sh__) && !defined(__alpha__) && !defined(__mips__) && !defined(CONFIG_PPC_MERGE)
        if (!request_region(I8042_DATA_REG, 16, "i8042"))
                return -EBUSY;
 #endif
 
         i8042_reset = 1;
 
-#if defined(CONFIG_PPC64)
+#if defined(CONFIG_PPC_MERGE)
        if (check_legacy_ioport(I8042_DATA_REG))
                return -EBUSY;
        if (!request_region(I8042_DATA_REG, 16, "i8042"))
index 68efbea379c98bd909201c12d80e3d1567a7e3aa..f1c2469b8844793996310ca4f4151942ec7f54d5 100644 (file)
@@ -9,6 +9,9 @@
  * 2 of the License, or (at your option) any later version.
  */
 
+/* Check of existence of legacy devices */
+extern int check_legacy_ioport(unsigned long base_port);
+
 #ifndef CONFIG_PPC64
 #include <asm-ppc/io.h>
 #else
@@ -437,9 +440,6 @@ out:
 #define dma_cache_wback(_start,_size)          do { } while (0)
 #define dma_cache_wback_inv(_start,_size)      do { } while (0)
 
-/* Check of existence of legacy devices */
-extern int check_legacy_ioport(unsigned long base_port);
-
 
 /*
  * Convert a physical pointer to a virtual kernel pointer for /dev/mem