diff options
author | Jan Beulich <jbeulich@suse.com> | 2012-05-22 16:30:11 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2012-05-22 16:30:11 +0200 |
commit | b25df336bd3b81c8245811effe8b3b6389078f88 (patch) | |
tree | 03e6787819114be033fbd6554e7e102543b0eef3 /xen/arch/x86/x86_64/entry.S | |
parent | 8c09a7869b615141a60e798f6699b93084a57fd4 (diff) | |
download | xen-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.S | 3 |
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 |