[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/hvm: Fix the unknown nested vmexit reason 80000021 bug
> From: Li, Liang Z > Sent: Tuesday, April 07, 2015 9:27 PM > > This bug will be trigged when NMI happen in the L2 guest. The current > code handles the NMI incorrectly. According to Intel SDM 31.7.1.2 > (Resuming Guest Software after Handling an Exception), If bit 31 of the > IDT-vectoring information fields is set, and the virtual NMIs VM-execution > control is 1, while bits 10:8 in the IDT-vectoring information field is > 2, bit 3 in the interruptibility-state field should be cleared to avoid > the next VM entry fail. > > Signed-off-by: Liang Li <liang.z.li@xxxxxxxxx> Acked-by: Kevin Tian <kevin.tian@xxxxxxxxx> > --- > xen/arch/x86/hvm/vmx/vmx.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c > index e1c55ce..b1f2df8 100644 > --- a/xen/arch/x86/hvm/vmx/vmx.c > +++ b/xen/arch/x86/hvm/vmx/vmx.c > @@ -2621,7 +2621,8 @@ static void vmx_idtv_reinject(unsigned long > idtv_info) > * Clear NMI-blocking interruptibility info if an NMI delivery > faulted. > * Re-delivery will re-set it (see SDM 3B 25.7.1.2). > */ > - if ( (idtv_info & INTR_INFO_INTR_TYPE_MASK) == > (X86_EVENTTYPE_NMI<<8) ) > + if ( cpu_has_vmx_vnmi && ((idtv_info & > INTR_INFO_INTR_TYPE_MASK) == > + (X86_EVENTTYPE_NMI<<8)) ) > { > unsigned long intr_info; > > @@ -2772,8 +2773,7 @@ void vmx_vmexit_handler(struct cpu_user_regs > *regs) > hvm_maybe_deassert_evtchn_irq(); > > __vmread(IDT_VECTORING_INFO, &idtv_info); > - if ( !nestedhvm_vcpu_in_guestmode(v) && > - exit_reason != EXIT_REASON_TASK_SWITCH ) > + if ( exit_reason != EXIT_REASON_TASK_SWITCH ) > vmx_idtv_reinject(idtv_info); > > switch ( exit_reason ) > -- > 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |