33 lines
1.0 KiB
Diff
33 lines
1.0 KiB
Diff
|
# HG changeset patch
|
||
|
# User Jan Beulich <jbeulich@suse.com>
|
||
|
# Date 1358427591 -3600
|
||
|
# Node ID 76598d4bf61ef0c575deba539ff99078c80e651e
|
||
|
# Parent 0dee85c061addb7124d77c5f6cfe2ea7bc03b760
|
||
|
x86: handle both NMI kinds if they occur simultaneously
|
||
|
|
||
|
We shouldn't assume PCI SERR excludes IOCHK.
|
||
|
|
||
|
Once at it, also remove the doubly redundant range restriction on
|
||
|
"reason" - the variable already is "unsigned char".
|
||
|
|
||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||
|
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
|
||
|
Acked-by: Keir Fraser <keir@xen.org>
|
||
|
|
||
|
--- a/xen/arch/x86/traps.c
|
||
|
+++ b/xen/arch/x86/traps.c
|
||
|
@@ -3357,10 +3357,10 @@ void do_nmi(struct cpu_user_regs *regs)
|
||
|
reason = inb(0x61);
|
||
|
if ( reason & 0x80 )
|
||
|
pci_serr_error(regs);
|
||
|
- else if ( reason & 0x40 )
|
||
|
+ if ( reason & 0x40 )
|
||
|
io_check_error(regs);
|
||
|
- else if ( !nmi_watchdog )
|
||
|
- unknown_nmi_error(regs, (unsigned char)(reason&0xff));
|
||
|
+ if ( !(reason & 0xc0) && !nmi_watchdog )
|
||
|
+ unknown_nmi_error(regs, reason);
|
||
|
}
|
||
|
}
|
||
|
|