|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-4.1-testing] x86: don't hold off NMI delivery when MCE is masked
# HG changeset patch
# User Jan Beulich <jbeulich@xxxxxxxx>
# Date 1346762637 -7200
# Node ID 520ab355fbb09ca9a0df1c01515011bcaa636799
# Parent 201895ed11bcad4c74a2bb953f93e222c8f50abe
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@xxxxxxxx>
Acked-by: Keir Fraser <keir@xxxxxxx>
xen-unstable changeset: 25382:6dc80df50fa8
xen-unstable date: Tue May 22 14:30:11 UTC 2012
---
diff -r 201895ed11bc -r 520ab355fbb0 xen/arch/x86/x86_32/entry.S
--- a/xen/arch/x86/x86_32/entry.S Tue Sep 04 14:42:16 2012 +0200
+++ b/xen/arch/x86/x86_32/entry.S Tue Sep 04 14:43:57 2012 +0200
@@ -215,6 +215,7 @@ test_all_events:
jnz process_softirqs
testb $1,VCPU_mce_pending(%ebx)
jnz process_mce
+.Ltest_guest_nmi:
testb $1,VCPU_nmi_pending(%ebx)
jnz process_nmi
test_guest_events:
@@ -244,7 +245,7 @@ process_softirqs:
/* %ebx: struct vcpu */
process_mce:
testb $1 << VCPU_TRAP_MCE,VCPU_async_exception_mask(%ebx)
- jnz test_guest_events
+ jnz .Ltest_guest_nmi
sti
movb $0,VCPU_mce_pending(%ebx)
call set_guest_machinecheck_trapbounce
diff -r 201895ed11bc -r 520ab355fbb0 xen/arch/x86/x86_64/compat/entry.S
--- a/xen/arch/x86/x86_64/compat/entry.S Tue Sep 04 14:42:16 2012 +0200
+++ b/xen/arch/x86/x86_64/compat/entry.S Tue Sep 04 14:43:57 2012 +0200
@@ -104,6 +104,7 @@ ENTRY(compat_test_all_events)
jnz compat_process_softirqs
testb $1,VCPU_mce_pending(%rbx)
jnz compat_process_mce
+.Lcompat_test_guest_nmi:
testb $1,VCPU_nmi_pending(%rbx)
jnz compat_process_nmi
compat_test_guest_events:
@@ -134,7 +135,7 @@ compat_process_softirqs:
/* %rbx: struct vcpu */
compat_process_mce:
testb $1 << VCPU_TRAP_MCE,VCPU_async_exception_mask(%rbx)
- jnz compat_test_guest_events
+ jnz .Lcompat_test_guest_nmi
sti
movb $0,VCPU_mce_pending(%rbx)
call set_guest_machinecheck_trapbounce
diff -r 201895ed11bc -r 520ab355fbb0 xen/arch/x86/x86_64/entry.S
--- a/xen/arch/x86/x86_64/entry.S Tue Sep 04 14:42:16 2012 +0200
+++ b/xen/arch/x86/x86_64/entry.S Tue Sep 04 14:43:57 2012 +0200
@@ -204,6 +204,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:
@@ -232,7 +233,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
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |