diff options
author | Jan Beulich <jbeulich@suse.com> | 2013-01-17 13:59:51 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2013-01-17 13:59:51 +0100 |
commit | c7861d0cbc9a140216ecc4cffe871680ba12eb54 (patch) | |
tree | 8cb23eee7f05879e8bfb1f4dc3c69e204ad18b14 /xen/arch/x86/traps.c | |
parent | 41333c800cf5fd34229f06b338ef3ff9a2fd3bde (diff) | |
download | xen-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.c | 6 |
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); } } |