diff options
author | Ian.Campbell@xensource.com <Ian.Campbell@xensource.com> | 2006-01-11 15:51:18 +0000 |
---|---|---|
committer | Ian.Campbell@xensource.com <Ian.Campbell@xensource.com> | 2006-01-11 15:51:18 +0000 |
commit | 1582d1175001a99133810c158622c53d1e3dc9ee (patch) | |
tree | 1e0149f92efff3ada536b33c03a60635f32be064 /patches | |
parent | 6bc154ed1e341a48ec3e21c08dc10fda9734aedd (diff) | |
download | xen-1582d1175001a99133810c158622c53d1e3dc9ee.tar.gz xen-1582d1175001a99133810c158622c53d1e3dc9ee.tar.bz2 xen-1582d1175001a99133810c158622c53d1e3dc9ee.zip |
Factor re-enabling the IOCK line out of io_check_error()
and into a machine specific function to.
Signed-off-by: Ian Campbell <Ian.Campbell@XenSource.com>
Diffstat (limited to 'patches')
-rw-r--r-- | patches/linux-2.6.12/i386-mach-io-check-nmi.patch | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/patches/linux-2.6.12/i386-mach-io-check-nmi.patch b/patches/linux-2.6.12/i386-mach-io-check-nmi.patch new file mode 100644 index 0000000000..3a6048833a --- /dev/null +++ b/patches/linux-2.6.12/i386-mach-io-check-nmi.patch @@ -0,0 +1,43 @@ +--- ref-linux-2.6.12/arch/i386/kernel/traps.c 2005-12-19 09:23:44.000000000 +0000 ++++ linux-2.6.12-xen0/arch/i386/kernel/traps.c 2006-01-05 15:51:52.000000000 +0000 +@@ -521,18 +521,11 @@ + + static void io_check_error(unsigned char reason, struct pt_regs * regs) + { +- unsigned long i; +- + printk("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 void unknown_nmi_error(unsigned char reason, struct pt_regs * regs) +--- ref-linux-2.6.12/include/asm-i386/mach-default/mach_traps.h 2005-06-17 20:48:29.000000000 +0100 ++++ linux-2.6.12-xen0/include/asm-i386/mach-default/mach_traps.h 2006-01-05 15:52:33.000000000 +0000 +@@ -15,6 +15,18 @@ + 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); |