aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/x86_64/entry.S
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2012-05-22 16:30:11 +0200
committerJan Beulich <jbeulich@suse.com>2012-05-22 16:30:11 +0200
commitb25df336bd3b81c8245811effe8b3b6389078f88 (patch)
tree03e6787819114be033fbd6554e7e102543b0eef3 /xen/arch/x86/x86_64/entry.S
parent8c09a7869b615141a60e798f6699b93084a57fd4 (diff)
downloadxen-b25df336bd3b81c8245811effe8b3b6389078f88.tar.gz
xen-b25df336bd3b81c8245811effe8b3b6389078f88.tar.bz2
xen-b25df336bd3b81c8245811effe8b3b6389078f88.zip
x86: don't hold off NMI delivery when MCE is masked
Likely through copy'n'paste, all three instances of guest MCE processing jumped to the wrong place (where NMI processing code correctly jumps to) when MCE-s are temporarily masked (due to one currently being processed by the guest). A nested, unmasked NMI should get delivered immediately, however. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/x86_64/entry.S')
-rw-r--r--xen/arch/x86/x86_64/entry.S3
1 files changed, 2 insertions, 1 deletions
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index b78bd24245..dce105e95b 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -192,6 +192,7 @@ test_all_events:
jnz process_softirqs
testb $1,VCPU_mce_pending(%rbx)
jnz process_mce
+.Ltest_guest_nmi:
testb $1,VCPU_nmi_pending(%rbx)
jnz process_nmi
test_guest_events:
@@ -220,7 +221,7 @@ process_softirqs:
/* %rbx: struct vcpu */
process_mce:
testb $1 << VCPU_TRAP_MCE,VCPU_async_exception_mask(%rbx)
- jnz test_guest_events
+ jnz .Ltest_guest_nmi
sti
movb $0,VCPU_mce_pending(%rbx)
call set_guest_machinecheck_trapbounce