aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/traps.c
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2013-01-17 13:59:51 +0100
committerJan Beulich <jbeulich@suse.com>2013-01-17 13:59:51 +0100
commitc7861d0cbc9a140216ecc4cffe871680ba12eb54 (patch)
tree8cb23eee7f05879e8bfb1f4dc3c69e204ad18b14 /xen/arch/x86/traps.c
parent41333c800cf5fd34229f06b338ef3ff9a2fd3bde (diff)
downloadxen-c7861d0cbc9a140216ecc4cffe871680ba12eb54.tar.gz
xen-c7861d0cbc9a140216ecc4cffe871680ba12eb54.tar.bz2
xen-c7861d0cbc9a140216ecc4cffe871680ba12eb54.zip
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>
Diffstat (limited to 'xen/arch/x86/traps.c')
-rw-r--r--xen/arch/x86/traps.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index 7c180ea676..ab4e85e1f5 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -3201,10 +3201,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);
}
}