VirtualBox

Changeset 74189 in vbox for trunk/src


Ignore:
Timestamp:
Sep 11, 2018 9:19:34 AM (6 years ago)
Author:
vboxsync
Message:

VMM/IEM: Nested VMX: bugref:9180 Don't include success as part of diagnostics as it would overwrite failures from the previous instruction that we want to inspect.

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/HMVMXAll.cpp

    r74187 r74189  
    3131*********************************************************************************************************************************/
    3232#define VMXV_DIAG_DESC(a_Def, a_Desc)      #a_Def " - " #a_Desc
     33/** VMX virtual-instructions and VM-exit diagnostics. */
    3334static const char * const g_apszVmxVDiagDesc[] =
    3435{
     
    5859    VMXV_DIAG_DESC(kVmxVDiag_Vmxon_RealOrV86Mode              , "RealOrV86Mode"             ),
    5960    VMXV_DIAG_DESC(kVmxVDiag_Vmxon_ShadowVmcs                 , "ShadowVmcs"                ),
    60     VMXV_DIAG_DESC(kVmxVDiag_Vmxon_Success                    , "Success"                   ),
    6161    VMXV_DIAG_DESC(kVmxVDiag_Vmxon_VmxAlreadyRoot             , "VmxAlreadyRoot"            ),
    6262    VMXV_DIAG_DESC(kVmxVDiag_Vmxon_Vmxe                       , "Vmxe"                      ),
     
    6868    VMXV_DIAG_DESC(kVmxVDiag_Vmxoff_LongModeCS                , "LongModeCS"                ),
    6969    VMXV_DIAG_DESC(kVmxVDiag_Vmxoff_RealOrV86Mode             , "RealOrV86Mode"             ),
    70     VMXV_DIAG_DESC(kVmxVDiag_Vmxoff_Success                   , "Success"                   ),
    7170    VMXV_DIAG_DESC(kVmxVDiag_Vmxoff_Vmxe                      , "Vmxe"                      ),
    7271    VMXV_DIAG_DESC(kVmxVDiag_Vmxoff_VmxRoot                   , "VmxRoot"                   ),
     
    8281    VMXV_DIAG_DESC(kVmxVDiag_Vmptrld_RealOrV86Mode            , "RealOrV86Mode"             ),
    8382    VMXV_DIAG_DESC(kVmxVDiag_Vmptrld_ShadowVmcs               , "ShadowVmcs"                ),
    84     VMXV_DIAG_DESC(kVmxVDiag_Vmptrld_Success                  , "Success"                   ),
    8583    VMXV_DIAG_DESC(kVmxVDiag_Vmptrld_VmcsRevId                , "VmcsRevId"                 ),
    8684    VMXV_DIAG_DESC(kVmxVDiag_Vmptrld_VmxRoot                  , "VmxRoot"                   ),
     
    9088    VMXV_DIAG_DESC(kVmxVDiag_Vmptrst_PtrMap                   , "PtrMap"                    ),
    9189    VMXV_DIAG_DESC(kVmxVDiag_Vmptrst_RealOrV86Mode            , "RealOrV86Mode"             ),
    92     VMXV_DIAG_DESC(kVmxVDiag_Vmptrst_Success                  , "Success"                   ),
    9390    VMXV_DIAG_DESC(kVmxVDiag_Vmptrst_VmxRoot                  , "VmxRoot"                   ),
    9491    /* VMCLEAR. */
     
    10299    VMXV_DIAG_DESC(kVmxVDiag_Vmclear_PtrWidth                 , "PtrWidth"                  ),
    103100    VMXV_DIAG_DESC(kVmxVDiag_Vmclear_RealOrV86Mode            , "RealOrV86Mode"             ),
    104     VMXV_DIAG_DESC(kVmxVDiag_Vmclear_Success                  , "Success"                   ),
    105101    VMXV_DIAG_DESC(kVmxVDiag_Vmclear_VmxRoot                  , "VmxRoot"                   ),
    106102    /* VMWRITE. */
     
    113109    VMXV_DIAG_DESC(kVmxVDiag_Vmwrite_PtrMap                   , "PtrMap"                    ),
    114110    VMXV_DIAG_DESC(kVmxVDiag_Vmwrite_RealOrV86Mode            , "RealOrV86Mode"             ),
    115     VMXV_DIAG_DESC(kVmxVDiag_Vmwrite_Success                  , "Success"                   ),
    116111    VMXV_DIAG_DESC(kVmxVDiag_Vmwrite_VmxRoot                  , "VmxRoot"                   ),
    117112    /* VMREAD. */
     
    123118    VMXV_DIAG_DESC(kVmxVDiag_Vmread_PtrMap                    , "PtrMap"                    ),
    124119    VMXV_DIAG_DESC(kVmxVDiag_Vmread_RealOrV86Mode             , "RealOrV86Mode"             ),
    125     VMXV_DIAG_DESC(kVmxVDiag_Vmread_Success                   , "Success"                   ),
    126120    VMXV_DIAG_DESC(kVmxVDiag_Vmread_VmxRoot                   , "VmxRoot"                   ),
    127121    /* VMLAUNCH/VMRESUME. */
     
    317311    VMXV_DIAG_DESC(kVmxVDiag_Vmentry_RealOrV86Mode            , "RealOrV86Mode"             ),
    318312    VMXV_DIAG_DESC(kVmxVDiag_Vmentry_SavePreemptTimer         , "SavePreemptTimer"          ),
    319     VMXV_DIAG_DESC(kVmxVDiag_Vmentry_Success                  , "Success"                   ),
    320313    VMXV_DIAG_DESC(kVmxVDiag_Vmentry_TprThresholdRsvd         , "TprThresholdRsvd"          ),
    321314    VMXV_DIAG_DESC(kVmxVDiag_Vmentry_TprThresholdVTpr         , "TprThresholdVTpr"          ),
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h

    r74187 r74189  
    12171217DECL_FORCE_INLINE(void) iemVmxVmreadSuccess(PVMCPU pVCpu, uint8_t cbInstr)
    12181218{
    1219     pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmread_Success;
    12201219    iemVmxVmSucceed(pVCpu);
    12211220    iemRegAddToRipAndClearRF(pVCpu, cbInstr);
     
    15711570    }
    15721571
    1573     pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmwrite_Success;
    15741572    iemVmxVmSucceed(pVCpu);
    15751573    iemRegAddToRipAndClearRF(pVCpu, cbInstr);
     
    16821680    }
    16831681
    1684     pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmclear_Success;
    16851682    iemVmxVmSucceed(pVCpu);
    16861683    iemRegAddToRipAndClearRF(pVCpu, cbInstr);
     
    17261723    if (RT_LIKELY(rcStrict == VINF_SUCCESS))
    17271724    {
    1728         pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrst_Success;
    17291725        iemVmxVmSucceed(pVCpu);
    17301726        iemRegAddToRipAndClearRF(pVCpu, cbInstr);
     
    18621858        IEM_VMX_SET_CURRENT_VMCS(pVCpu, GCPhysVmcs);
    18631859    }
    1864     pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmptrld_Success;
     1860
    18651861    iemVmxVmSucceed(pVCpu);
    18661862    iemRegAddToRipAndClearRF(pVCpu, cbInstr);
     
    20142010        IEM_VMX_CLEAR_CURRENT_VMCS(pVCpu);
    20152011        pVCpu->cpum.GstCtx.hwvirt.vmx.fInVmxRootMode = true;
     2012
    20162013        /** @todo NSTVMX: clear address-range monitoring. */
    20172014        /** @todo NSTVMX: Intel PT. */
    2018         pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmxon_Success;
     2015
    20192016        iemVmxVmSucceed(pVCpu);
    20202017        iemRegAddToRipAndClearRF(pVCpu, cbInstr);
     
    39863983    }
    39873984
    3988     pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmentry_Success;
    39893985    iemVmxVmSucceed(pVCpu);
    39903986    iemRegAddToRipAndClearRF(pVCpu, cbInstr);
     
    40444040    if (fSmmMonitorCtl & MSR_IA32_SMM_MONITOR_VMXOFF_UNBLOCK_SMI)
    40454041    { /** @todo NSTVMX: Unblock SMI. */ }
     4042
    40464043    /** @todo NSTVMX: Unblock and enable A20M. */
    40474044    /** @todo NSTVMX: Clear address-range monitoring. */
    40484045
    4049     pVCpu->cpum.GstCtx.hwvirt.vmx.enmDiag = kVmxVDiag_Vmxoff_Success;
    40504046    iemVmxVmSucceed(pVCpu);
    40514047    iemRegAddToRipAndClearRF(pVCpu, cbInstr);
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