Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12:Update
xen.10697
5527edd2-x86-hvm-Fix-the-unknown-nested-vmexit-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 5527edd2-x86-hvm-Fix-the-unknown-nested-vmexit-reason-80000021-bug.patch of Package xen.10697
# Commit f7708796db463410a97b5fa3dd5902f6e8a1d102 # Date 2015-04-10 11:35:46 -0400 # Author Liang Li <liang.z.li@intel.com> # Committer Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> x86/hvm: Fix the unknown nested vmexit reason 80000021 bug 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@intel.com> Acked-by: Kevin Tian <kevin.tian@intel.com> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com> --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -2545,7 +2545,8 @@ static void vmx_idtv_reinject(unsigned l * 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; @@ -2696,8 +2697,7 @@ void vmx_vmexit_handler(struct cpu_user_ 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 )
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor