summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/2.6.22/20007_i386-mach-io-check-nmi.patch1')
-rw-r--r--trunk/2.6.22/20007_i386-mach-io-check-nmi.patch153
1 files changed, 53 insertions, 0 deletions
diff --git a/trunk/2.6.22/20007_i386-mach-io-check-nmi.patch1 b/trunk/2.6.22/20007_i386-mach-io-check-nmi.patch1
new file mode 100644
index 0000000..c6fccf6
--- /dev/null
+++ b/trunk/2.6.22/20007_i386-mach-io-check-nmi.patch1
@@ -0,0 +1,53 @@
+Subject: Separate out clearing of NMI I/O check error
+From: http://xenbits.xensource.com/xen-3.1-testing.hg (tip 15042)
+Patch-mainline: obsolete
+Acked-by: jbeulich@novell.com
+
+---
+ arch/i386/kernel/traps.c | 9 +--------
+ include/asm-i386/mach-default/mach_traps.h | 12 ++++++++++++
+ 2 files changed, 13 insertions(+), 8 deletions(-)
+
+--- a/arch/i386/kernel/traps.c 2007-08-27 14:01:24.000000000 -0400
++++ b/arch/i386/kernel/traps.c 2007-08-27 14:01:24.000000000 -0400
+@@ -656,18 +656,11 @@ mem_parity_error(unsigned char reason, s
+ static __kprobes void
+ io_check_error(unsigned char reason, struct pt_regs * regs)
+ {
+- unsigned long i;
+-
+ printk(KERN_EMERG "NMI: IOCK error (debug interrupt?)\n");
+ show_registers(regs);
+
+ /* Re-enable the IOCK line, wait for a few seconds */
+- reason = (reason & 0xf) | 8;
+- outb(reason, 0x61);
+- i = 2000;
+- while (--i) udelay(1000);
+- reason &= ~8;
+- outb(reason, 0x61);
++ clear_io_check_error(reason);
+ }
+
+ static __kprobes void
+--- a/include/asm-i386/mach-default/mach_traps.h 2007-08-27 12:09:26.000000000 -0400
++++ b/include/asm-i386/mach-default/mach_traps.h 2007-08-27 14:01:24.000000000 -0400
+@@ -15,6 +15,18 @@ static inline void clear_mem_error(unsig
+ outb(reason, 0x61);
+ }
+
++static inline void clear_io_check_error(unsigned char reason)
++{
++ unsigned long i;
++
++ reason = (reason & 0xf) | 8;
++ outb(reason, 0x61);
++ i = 2000;
++ while (--i) udelay(1000);
++ reason &= ~8;
++ outb(reason, 0x61);
++}
++
+ static inline unsigned char get_nmi_reason(void)
+ {
+ return inb(0x61);