From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: [PATCH] x86: don't hold off NMI delivery when MCE is masked Date: Tue, 22 May 2012 15:11:47 +0100 Message-ID: References: <4FBB97C90200007800085160@nat28.tlf.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <4FBB97C90200007800085160@nat28.tlf.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich , xen-devel List-Id: xen-devel@lists.xenproject.org On 22/05/2012 12:42, "Jan Beulich" wrote: > 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 Acked-by: Keir Fraser > --- a/xen/arch/x86/x86_32/entry.S > +++ b/xen/arch/x86/x86_32/entry.S > @@ -214,6 +214,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: > @@ -243,7 +244,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 > --- a/xen/arch/x86/x86_64/compat/entry.S > +++ b/xen/arch/x86/x86_64/compat/entry.S > @@ -103,6 +103,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: > @@ -133,7 +134,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 > --- 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 > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel