VirtualBox

Changeset 79712 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Jul 12, 2019 5:34:26 AM (6 years ago)
Author:
vboxsync
Message:

VMM/HMVMXR0: Nested VMX: bugref: Don't read VMX_VMCS64_CTRL_EPTP_FULL if the CPU does not support it! Also added some extra assertions and build fix on Linux hosts.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r79698 r79712  
    1366313663         */
    1366413664        {
    13665             int rc = hmR0VmxReadExitIntInfoVmcs(pVmxTransient);
     13665            rc = hmR0VmxReadExitIntInfoVmcs(pVmxTransient);
    1366613666            AssertRCReturn(rc, rc);
    1366713667
     
    1544815448    rc = VMXReadVmcsHstN(VMX_VMCS_CTRL_CR4_READ_SHADOW, &uHCReg);           AssertRC(rc);
    1544915449    Log4(("VMX_VMCS_CTRL_CR4_READ_SHADOW              %#RHr\n", uHCReg));
    15450     rc = VMXReadVmcs64(VMX_VMCS64_CTRL_EPTP_FULL, &u64Val);                 AssertRC(rc);
    15451     Log4(("VMX_VMCS64_CTRL_EPTP_FULL                  %#RX64\n", u64Val));
     15450    if (pVCpu->CTX_SUFF(pVM)->hm.s.fNestedPaging)
     15451    {
     15452        rc = VMXReadVmcs64(VMX_VMCS64_CTRL_EPTP_FULL, &u64Val);             AssertRC(rc);
     15453        Log4(("VMX_VMCS64_CTRL_EPTP_FULL                  %#RX64\n", u64Val));
     15454    }
    1545215455
    1545315456    hmR0DumpRegs(pVCpu);
     
    1698416987         */
    1698516988        case VMX_EXIT_INT_INFO_TYPE_NMI:
     16989        {
     16990            Assert(!pVCpu->hm.s.Event.fPending);  /* NMIs cannot be caused during delivery on another event. */
    1698616991            return hmR0VmxExitHostNmi(pVCpu, pVmxTransient->pVmcsInfo);
     16992        }
    1698716993
    1698816994        /*
     
    1703517041                    Assert(ExitEventInfo.uIdtVectoringInfo    == pVCpu->hm.s.Event.u64IntInfo);
    1703617042                    Assert(ExitEventInfo.uIdtVectoringErrCode == pVCpu->hm.s.Event.u32ErrCode);
     17043                    if (   VMX_IDT_VECTORING_INFO_TYPE(ExitEventInfo.uIdtVectoringInfo) == VMX_IDT_VECTORING_INFO_TYPE_SW_INT
     17044                        || VMX_IDT_VECTORING_INFO_TYPE(ExitEventInfo.uIdtVectoringInfo) == VMX_IDT_VECTORING_INFO_TYPE_PRIV_SW_XCPT
     17045                        || VMX_IDT_VECTORING_INFO_TYPE(ExitEventInfo.uIdtVectoringInfo) == VMX_IDT_VECTORING_INFO_TYPE_SW_XCPT)
     17046                    {
     17047                        Assert(ExitInfo.cbInstr == pVCpu->hm.s.Event.cbInstr);
     17048                    }
     17049
    1703717050                    pVCpu->hm.s.Event.fPending = false;
    1703817051                }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette