VirtualBox

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


Ignore:
Timestamp:
Nov 5, 2019 9:48:53 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
134425
Message:

VMM: Nested VMX: bugref:9180 Cleanup cpum.h interfaces - drop unused parameters for nested VT-x functions.

Location:
trunk/src/VBox/VMM
Files:
8 edited

Legend:

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

    r80333 r81665  
    12631263#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    12641264    if (   CPUMIsGuestInVmxNonRootMode(&pVCpu->cpum.s.Guest)
    1265         && CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.s.Guest, VMX_PROC_CTLS2_VIRT_X2APIC_MODE))
     1265        && CPUMIsGuestVmxProcCtls2Set(&pVCpu->cpum.s.Guest, VMX_PROC_CTLS2_VIRT_X2APIC_MODE))
    12661266    {
    12671267        VBOXSTRICTRC rcStrict = IEMExecVmxVirtApicAccessMsr(pVCpu, idMsr, puValue, false /* fWrite */);
     
    12831283#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    12841284    if (   CPUMIsGuestInVmxNonRootMode(&pVCpu->cpum.s.Guest)
    1285         && CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.s.Guest, VMX_PROC_CTLS2_VIRT_X2APIC_MODE))
     1285        && CPUMIsGuestVmxProcCtls2Set(&pVCpu->cpum.s.Guest, VMX_PROC_CTLS2_VIRT_X2APIC_MODE))
    12861286    {
    12871287        VBOXSTRICTRC rcStrict = IEMExecVmxVirtApicAccessMsr(pVCpu, idMsr, &uValue, true /* fWrite */);
  • trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp

    r80814 r81665  
    18841884
    18851885    if (CPUMIsGuestInVmxNonRootMode(&pVCpu->cpum.s.Guest))
    1886         return CPUMIsGuestVmxPhysIntrEnabled(pVCpu, &pVCpu->cpum.s.Guest);
     1886        return CPUMIsGuestVmxPhysIntrEnabled(&pVCpu->cpum.s.Guest);
    18871887
    18881888    Assert(CPUMIsGuestInSvmNestedHwVirtMode(&pVCpu->cpum.s.Guest));
     
    19021902VMM_INT_DECL(bool) CPUMIsGuestVirtIntrEnabled(PVMCPU pVCpu)
    19031903{
    1904     Assert(CPUMIsGuestInNestedHwvirtMode(&pVCpu->cpum.s.Guest));
    1905 
    1906     if (CPUMIsGuestInVmxNonRootMode(&pVCpu->cpum.s.Guest))
    1907         return CPUMIsGuestVmxVirtIntrEnabled(pVCpu, &pVCpu->cpum.s.Guest);
    1908 
    1909     Assert(CPUMIsGuestInSvmNestedHwVirtMode(&pVCpu->cpum.s.Guest));
    1910     return CPUMIsGuestSvmVirtIntrEnabled(pVCpu, &pVCpu->cpum.s.Guest);
     1904    PCCPUMCTX pCtx = &pVCpu->cpum.s.Guest;
     1905    Assert(CPUMIsGuestInNestedHwvirtMode(pCtx));
     1906
     1907    if (CPUMIsGuestInVmxNonRootMode(pCtx))
     1908        return CPUMIsGuestVmxVirtIntrEnabled(pCtx);
     1909
     1910    Assert(CPUMIsGuestInSvmNestedHwVirtMode(pCtx));
     1911    return CPUMIsGuestSvmVirtIntrEnabled(pVCpu, pCtx);
    19111912}
    19121913
     
    20122013    if (   !CPUMIsGuestInNestedHwvirtMode(pCtx)
    20132014        ||  CPUMIsGuestInSvmNestedHwVirtMode(pCtx)
    2014         || !CPUMIsGuestVmxPinCtlsSet(pVCpu, pCtx, VMX_PIN_CTLS_VIRT_NMI))
     2015        || !CPUMIsGuestVmxPinCtlsSet(pCtx, VMX_PIN_CTLS_VIRT_NMI))
    20152016        return VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_BLOCK_NMIS);
    20162017
     
    20192020     * VMX nested-guest with virtual-NMIs enabled.
    20202021     */
    2021     return CPUMIsGuestVmxVirtNmiBlocking(pVCpu, pCtx);
     2022    return CPUMIsGuestVmxVirtNmiBlocking(pCtx);
    20222023}
    20232024
     
    20442045    if (   !CPUMIsGuestInNestedHwvirtMode(pCtx)
    20452046        ||  CPUMIsGuestInSvmNestedHwVirtMode(pCtx)
    2046         || !CPUMIsGuestVmxPinCtlsSet(pVCpu, pCtx, VMX_PIN_CTLS_VIRT_NMI))
     2047        || !CPUMIsGuestVmxPinCtlsSet(pCtx, VMX_PIN_CTLS_VIRT_NMI))
    20472048    {
    20482049        if (fBlock)
     
    20632064     * VMX nested-guest with virtual-NMIs enabled.
    20642065     */
    2065     return CPUMSetGuestVmxVirtNmiBlocking(pVCpu, pCtx, fBlock);
     2066    return CPUMSetGuestVmxVirtNmiBlocking(pCtx, fBlock);
    20662067}
    20672068
     
    22132214        PCVMXVVMCS pVmcs = pCtx->hwvirt.vmx.CTX_SUFF(pVmcs);
    22142215        Assert(pVmcs);
    2215         if (CPUMIsGuestVmxProcCtlsSet(pVCpu, pCtx, VMX_PROC_CTLS_USE_TSC_OFFSETTING))
     2216        if (CPUMIsGuestVmxProcCtlsSet(pCtx, VMX_PROC_CTLS_USE_TSC_OFFSETTING))
    22162217            return uTscValue + pVmcs->u64TscOffset.u;
    22172218        return uTscValue;
     
    22482249    if (CPUMIsGuestInVmxNonRootMode(pCtx))
    22492250    {
    2250         if (CPUMIsGuestVmxProcCtlsSet(pVCpu, pCtx, VMX_PROC_CTLS_USE_TSC_OFFSETTING))
     2251        if (CPUMIsGuestVmxProcCtlsSet(pCtx, VMX_PROC_CTLS_USE_TSC_OFFSETTING))
    22512252        {
    22522253            PCVMXVVMCS pVmcs = pCtx->hwvirt.vmx.CTX_SUFF(pVmcs);
     
    27502751{
    27512752    PCCPUMCTX pCtx = &pVCpu->cpum.s.Guest;
    2752     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, pCtx, VMX_PROC_CTLS_UNCOND_IO_EXIT))
     2753    if (CPUMIsGuestVmxProcCtlsSet(pCtx, VMX_PROC_CTLS_UNCOND_IO_EXIT))
    27532754        return true;
    27542755
    2755     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, pCtx, VMX_PROC_CTLS_USE_IO_BITMAPS))
     2756    if (CPUMIsGuestVmxProcCtlsSet(pCtx, VMX_PROC_CTLS_USE_IO_BITMAPS))
    27562757    {
    27572758        uint8_t const *pbIoBitmap = (uint8_t const *)pCtx->hwvirt.vmx.CTX_SUFF(pvIoBitmap);
     
    27812782    PCCPUMCTX  pCtx  = &pVCpu->cpum.s.Guest;
    27822783    PCVMXVVMCS pVmcs = pCtx->hwvirt.vmx.CTX_SUFF(pVmcs);
    2783     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, pCtx, VMX_PROC_CTLS_CR3_LOAD_EXIT))
     2784    if (CPUMIsGuestVmxProcCtlsSet(pCtx, VMX_PROC_CTLS_CR3_LOAD_EXIT))
    27842785    {
    27852786        uint32_t const uCr3TargetCount = pVmcs->u32Cr3TargetCount;
     
    28212822     * Without VMCS shadowing, all VMREAD and VMWRITE instructions are intercepted.
    28222823     */
    2823     if (!CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.s.Guest, VMX_PROC_CTLS2_VMCS_SHADOWING))
     2824    if (!CPUMIsGuestVmxProcCtls2Set(&pVCpu->cpum.s.Guest, VMX_PROC_CTLS2_VMCS_SHADOWING))
    28242825        return true;
    28252826
  • trunk/src/VBox/VMM/VMMAll/IEMAll.cpp

    r81605 r81665  
    398398 */
    399399# define IEM_VMX_IS_PINCTLS_SET(a_pVCpu, a_PinCtl) \
    400     (CPUMIsGuestVmxPinCtlsSet((a_pVCpu), IEM_GET_CTX(a_pVCpu), (a_PinCtl)))
     400    (CPUMIsGuestVmxPinCtlsSet(IEM_GET_CTX(a_pVCpu), (a_PinCtl)))
    401401
    402402/**
     
    404404 */
    405405#define IEM_VMX_IS_PROCCTLS_SET(a_pVCpu, a_ProcCtl) \
    406     (CPUMIsGuestVmxProcCtlsSet((a_pVCpu), IEM_GET_CTX(a_pVCpu), (a_ProcCtl)))
     406    (CPUMIsGuestVmxProcCtlsSet(IEM_GET_CTX(a_pVCpu), (a_ProcCtl)))
    407407
    408408/**
     
    411411 */
    412412#define IEM_VMX_IS_PROCCTLS2_SET(a_pVCpu, a_ProcCtl2) \
    413     (CPUMIsGuestVmxProcCtls2Set((a_pVCpu), IEM_GET_CTX(a_pVCpu), (a_ProcCtl2)))
     413    (CPUMIsGuestVmxProcCtls2Set(IEM_GET_CTX(a_pVCpu), (a_ProcCtl2)))
    414414
    415415/**
     
    54465446        if (pVCpu->cpum.GstCtx.hwvirt.vmx.fVirtNmiBlocking)
    54475447        {
    5448             Assert(CPUMIsGuestVmxPinCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PIN_CTLS_VIRT_NMI));
     5448            Assert(CPUMIsGuestVmxPinCtlsSet(&pVCpu->cpum.GstCtx, VMX_PIN_CTLS_VIRT_NMI));
    54495449            fBlockNmi = false;
    54505450        }
     
    1382013820            Assert(CPUMIsGuestVmxInterceptEvents(&pVCpu->cpum.GstCtx));
    1382113821            if (   VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_NMI_WINDOW)
    13822                 && CPUMIsGuestVmxVirtNmiBlocking(pVCpu, &pVCpu->cpum.GstCtx))
     13822                && CPUMIsGuestVmxVirtNmiBlocking(&pVCpu->cpum.GstCtx))
    1382313823            {
    1382413824                rcStrict = iemVmxVmexit(pVCpu, VMX_EXIT_NMI_WINDOW, 0 /* u64ExitQual */);
     
    1382613826            }
    1382713827            else if (   VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_INT_WINDOW)
    13828                      && CPUMIsGuestVmxVirtIntrEnabled(pVCpu, &pVCpu->cpum.GstCtx))
     13828                     && CPUMIsGuestVmxVirtIntrEnabled(&pVCpu->cpum.GstCtx))
    1382913829            {
    1383013830                rcStrict = iemVmxVmexit(pVCpu, VMX_EXIT_INT_WINDOW, 0 /* u64ExitQual */);
     
    1426114261            fIntrEnabled = pVCpu->cpum.GstCtx.eflags.Bits.u1IF;
    1426214262        else if (CPUMIsGuestInVmxNonRootMode(IEM_GET_CTX(pVCpu)))
    14263             fIntrEnabled = CPUMIsGuestVmxPhysIntrEnabled(pVCpu, IEM_GET_CTX(pVCpu));
     14263            fIntrEnabled = CPUMIsGuestVmxPhysIntrEnabled(IEM_GET_CTX(pVCpu));
    1426414264        else
    1426514265        {
     
    1623116231    if (CPUMIsGuestInVmxNonRootMode(IEM_GET_CTX(pVCpu)))
    1623216232    {
    16233         Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, IEM_GET_CTX(pVCpu), VMX_PROC_CTLS2_VIRT_APIC_ACCESS));
    16234         Assert(CPUMGetGuestVmxApicAccessPageAddr(pVCpu, IEM_GET_CTX(pVCpu)) == GCPhysAccessBase);
     16233        Assert(CPUMIsGuestVmxProcCtls2Set(IEM_GET_CTX(pVCpu), VMX_PROC_CTLS2_VIRT_APIC_ACCESS));
     16234        Assert(CPUMGetGuestVmxApicAccessPageAddr(IEM_GET_CTX(pVCpu)) == GCPhysAccessBase);
    1623516235
    1623616236        /** @todo NSTVMX: How are we to distinguish instruction fetch accesses here?
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h

    r81091 r81665  
    53865386        {
    53875387            /* CR0/CR4 reads are subject to masking when in VMX non-root mode. */
    5388             case 0: crX = CPUMGetGuestVmxMaskedCr0(pVCpu, &pVCpu->cpum.GstCtx, pVmcs->u64Cr0Mask.u); break;
    5389             case 4: crX = CPUMGetGuestVmxMaskedCr4(pVCpu, &pVCpu->cpum.GstCtx, pVmcs->u64Cr4Mask.u); break;
     5388            case 0: crX = CPUMGetGuestVmxMaskedCr0(&pVCpu->cpum.GstCtx, pVmcs->u64Cr0Mask.u); break;
     5389            case 4: crX = CPUMGetGuestVmxMaskedCr4(&pVCpu->cpum.GstCtx, pVmcs->u64Cr4Mask.u); break;
    53905390
    53915391            case 3:
     
    54295429        PCVMXVVMCS pVmcs = pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pVmcs);
    54305430        Assert(pVmcs);
    5431         u64MaskedCr0 = CPUMGetGuestVmxMaskedCr0(pVCpu, &pVCpu->cpum.GstCtx, pVmcs->u64Cr0Mask.u);
     5431        u64MaskedCr0 = CPUMGetGuestVmxMaskedCr0(&pVCpu->cpum.GstCtx, pVmcs->u64Cr0Mask.u);
    54325432    }
    54335433    uint64_t const u64GuestCr0 = u64MaskedCr0;
     
    54825482        PCVMXVVMCS pVmcs = pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pVmcs);
    54835483        Assert(pVmcs);
    5484         u64MaskedCr0 = CPUMGetGuestVmxMaskedCr0(pVCpu, &pVCpu->cpum.GstCtx, pVmcs->u64Cr0Mask.u);
     5484        u64MaskedCr0 = CPUMGetGuestVmxMaskedCr0(&pVCpu->cpum.GstCtx, pVmcs->u64Cr0Mask.u);
    54855485    }
    54865486    uint64_t const u64GuestCr0 = u64MaskedCr0;
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp.h

    r81640 r81665  
    28442844
    28452845    uint16_t const uNewMsw = *pu16NewMsw;
    2846     if (CPUMIsGuestVmxLmswInterceptSet(pVCpu, &pVCpu->cpum.GstCtx, uNewMsw))
     2846    if (CPUMIsGuestVmxLmswInterceptSet(&pVCpu->cpum.GstCtx, uNewMsw))
    28472847    {
    28482848        Log2(("lmsw: Guest intercept -> VM-exit\n"));
     
    29602960
    29612961    uint64_t const uNewCrX = *puNewCrX;
    2962     if (CPUMIsGuestVmxMovToCr0Cr4InterceptSet(pVCpu, &pVCpu->cpum.GstCtx, iCrReg, uNewCrX))
     2962    if (CPUMIsGuestVmxMovToCr0Cr4InterceptSet(&pVCpu->cpum.GstCtx, iCrReg, uNewCrX))
    29632963    {
    29642964        Log2(("mov_Cr_Rd: (CR%u) Guest intercept -> VM-exit\n", iCrReg));
     
    36983698        ||  (fFlags & (IEM_XCPT_FLAGS_BP_INSTR | IEM_XCPT_FLAGS_OF_INSTR | IEM_XCPT_FLAGS_ICEBP_INSTR)))
    36993699    {
    3700         fIntercept = CPUMIsGuestVmxXcptInterceptSet(pVCpu, &pVCpu->cpum.GstCtx, uVector, uErrCode);
     3700        fIntercept = CPUMIsGuestVmxXcptInterceptSet(&pVCpu->cpum.GstCtx, uVector, uErrCode);
    37013701    }
    37023702    else
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r81638 r81665  
    997997        bool const fRemoveCtls = !pVmxTransient->fIsNestedGuest
    998998                               ? true
    999                                : !CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, uProcCtls);
     999                               : !CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, uProcCtls);
    10001000#else
    10011001        NOREF(pVCpu);
     
    18641864        else
    18651865        {
    1866             pVmcsInfo->pbVirtApic = (uint8_t *)CPUMGetGuestVmxVirtApicPage(pVCpu, &pVCpu->cpum.GstCtx,
    1867                                                                            &pVmcsInfo->HCPhysVirtApic);
     1866            pVmcsInfo->pbVirtApic = (uint8_t *)CPUMGetGuestVmxVirtApicPage(&pVCpu->cpum.GstCtx, &pVmcsInfo->HCPhysVirtApic);
    18681867            Assert(pVmcsInfo->pbVirtApic);
    18691868            Assert(pVmcsInfo->HCPhysVirtApic && pVmcsInfo->HCPhysVirtApic != NIL_RTHCPHYS);
     
    45934592     */
    45944593    if (   pVmxTransient->fIsNestedGuest
    4595         && (   CPUMIsGuestVmxEntryCtlsSet(pVCpu, pCtx, VMX_ENTRY_CTLS_LOAD_EFER_MSR)
    4596             || CPUMIsGuestVmxExitCtlsSet(pVCpu, pCtx, VMX_EXIT_CTLS_SAVE_EFER_MSR)
    4597             || CPUMIsGuestVmxExitCtlsSet(pVCpu, pCtx, VMX_EXIT_CTLS_LOAD_EFER_MSR)))
     4594        && (   CPUMIsGuestVmxEntryCtlsSet(pCtx, VMX_ENTRY_CTLS_LOAD_EFER_MSR)
     4595            || CPUMIsGuestVmxExitCtlsSet(pCtx, VMX_EXIT_CTLS_SAVE_EFER_MSR)
     4596            || CPUMIsGuestVmxExitCtlsSet(pCtx, VMX_EXIT_CTLS_LOAD_EFER_MSR)))
    45984597        return true;
    45994598# else
     
    53035302            if (   CPUMIsGuestInVmxRootMode(&pVCpu->cpum.GstCtx)
    53045303                && !CPUMIsGuestInVmxNonRootMode(&pVCpu->cpum.GstCtx)
    5305                 && CPUMIsGuestVmxCurrentVmcsValid(pVCpu, &pVCpu->cpum.GstCtx))
     5304                && CPUMIsGuestVmxCurrentVmcsValid(&pVCpu->cpum.GstCtx))
    53065305            {
    53075306                /* Paranoia. */
     
    54835482            HMVMX_CPUMCTX_ASSERT(pVCpu, CPUMCTX_EXTRN_CR0);
    54845483            uint64_t       u64GuestCr0  = pVCpu->cpum.GstCtx.cr0;
    5485             uint64_t const u64ShadowCr0 = CPUMGetGuestVmxMaskedCr0(pVCpu, &pVCpu->cpum.GstCtx, pVmcsInfo->u64Cr0Mask);
     5484            uint64_t const u64ShadowCr0 = CPUMGetGuestVmxMaskedCr0(&pVCpu->cpum.GstCtx, pVmcsInfo->u64Cr0Mask);
    54865485            Assert(!RT_HI_U32(u64GuestCr0));
    54875486            Assert(u64GuestCr0 & X86_CR0_NE);
     
    56525651        uint64_t const u64ShadowCr4 = !pVmxTransient->fIsNestedGuest
    56535652                                    ? pCtx->cr4
    5654                                     : CPUMGetGuestVmxMaskedCr4(pVCpu, pCtx, pVmcsInfo->u64Cr4Mask);
     5653                                    : CPUMGetGuestVmxMaskedCr4(pCtx, pVmcsInfo->u64Cr4Mask);
    56555654        Assert(!RT_HI_U32(u64GuestCr4));
    56565655
     
    86108609#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    86118610            if (   fIsNestedGuest
    8612                 && CPUMIsGuestVmxPinCtlsSet(pVCpu, pCtx, VMX_PIN_CTLS_NMI_EXIT))
     8611                && CPUMIsGuestVmxPinCtlsSet(pCtx, VMX_PIN_CTLS_NMI_EXIT))
    86138612                return IEMExecVmxVmexitXcptNmi(pVCpu);
    86148613#endif
     
    86418640#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    86428641            if (    fIsNestedGuest
    8643                 &&  CPUMIsGuestVmxPinCtlsSet(pVCpu, pCtx, VMX_PIN_CTLS_EXT_INT_EXIT)
    8644                 && !CPUMIsGuestVmxExitCtlsSet(pVCpu, pCtx, VMX_EXIT_CTLS_ACK_EXT_INT))
     8642                &&  CPUMIsGuestVmxPinCtlsSet(pCtx, VMX_PIN_CTLS_EXT_INT_EXIT)
     8643                && !CPUMIsGuestVmxExitCtlsSet(pCtx, VMX_EXIT_CTLS_ACK_EXT_INT))
    86458644            {
    86468645                VBOXSTRICTRC rcStrict = IEMExecVmxVmexitExtInt(pVCpu, 0 /* uVector */, true /* fIntPending */);
     
    86558654#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    86568655                if (   fIsNestedGuest
    8657                     && CPUMIsGuestVmxPinCtlsSet(pVCpu, pCtx, VMX_PIN_CTLS_EXT_INT_EXIT)
    8658                     && CPUMIsGuestVmxExitCtlsSet(pVCpu, pCtx, VMX_EXIT_CTLS_ACK_EXT_INT))
     8656                    && CPUMIsGuestVmxPinCtlsSet(pCtx, VMX_PIN_CTLS_EXT_INT_EXIT)
     8657                    && CPUMIsGuestVmxExitCtlsSet(pCtx, VMX_EXIT_CTLS_ACK_EXT_INT))
    86598658                {
    86608659                    VBOXSTRICTRC rcStrict = IEMExecVmxVmexitExtInt(pVCpu, u8Interrupt, false /* fIntPending */);
     
    1618316182
    1618416183            PCCPUMCTX pCtx = &pVCpu->cpum.GstCtx;
    16185             bool const fIntercept = CPUMIsGuestVmxXcptInterceptSet(pVCpu, pCtx, VMX_EXIT_INT_INFO_VECTOR(uExitIntInfo),
     16184            bool const fIntercept = CPUMIsGuestVmxXcptInterceptSet(pCtx, VMX_EXIT_INT_INFO_VECTOR(uExitIntInfo),
    1618616185                                                                   pVmxTransient->uExitIntErrorCode);
    1618716186            if (fIntercept)
     
    1626616265    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1626716266
    16268     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_INT_WINDOW_EXIT))
     16267    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_INT_WINDOW_EXIT))
    1626916268        return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason, 0 /* uExitQual */);
    1627016269    return hmR0VmxExitIntWindow(pVCpu, pVmxTransient);
     
    1627916278    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1628016279
    16281     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_NMI_WINDOW_EXIT))
     16280    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_NMI_WINDOW_EXIT))
    1628216281        return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason, 0 /* uExitQual */);
    1628316282    return hmR0VmxExitIntWindow(pVCpu, pVmxTransient);
     
    1631916318    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1632016319
    16321     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_HLT_EXIT))
     16320    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_HLT_EXIT))
    1632216321    {
    1632316322        hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     
    1633516334    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1633616335
    16337     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_INVLPG_EXIT))
     16336    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_INVLPG_EXIT))
    1633816337    {
    1633916338        hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     
    1635816357    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1635916358
    16360     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_RDPMC_EXIT))
     16359    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_RDPMC_EXIT))
    1636116360    {
    1636216361        hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     
    1641516414    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1641616415
    16417     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_RDTSC_EXIT))
     16416    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_RDTSC_EXIT))
    1641816417    {
    1641916418        hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     
    1645216451                case 0:
    1645316452                case 4:
    16454                     fIntercept = CPUMIsGuestVmxMovToCr0Cr4InterceptSet(pVCpu, &pVCpu->cpum.GstCtx, iCrReg, uNewCrX);
     16453                    fIntercept = CPUMIsGuestVmxMovToCr0Cr4InterceptSet(&pVCpu->cpum.GstCtx, iCrReg, uNewCrX);
    1645516454                    break;
    1645616455
     
    1646016459
    1646116460                case 8:
    16462                     fIntercept = CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_CR8_LOAD_EXIT);
     16461                    fIntercept = CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_CR8_LOAD_EXIT);
    1646316462                    break;
    1646416463
     
    1649616495                                                                  0, 0, 0, VMX_PROC_CTLS_CR8_STORE_EXIT };
    1649716496                uint32_t const uIntercept = s_auCrXReadIntercepts[iCrReg];
    16498                 if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, uIntercept))
     16497                if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, uIntercept))
    1649916498                {
    1650016499                    VMXVEXITINFO ExitInfo;
     
    1655316552                GCPtrEffDst = NIL_RTGCPTR;
    1655416553
    16555             if (CPUMIsGuestVmxLmswInterceptSet(pVCpu, &pVCpu->cpum.GstCtx, uNewMsw))
     16554            if (CPUMIsGuestVmxLmswInterceptSet(&pVCpu->cpum.GstCtx, uNewMsw))
    1655616555            {
    1655716556                VMXVEXITINFO ExitInfo;
     
    1659216591    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1659316592
    16594     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_MOV_DR_EXIT))
     16593    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_MOV_DR_EXIT))
    1659516594    {
    1659616595        hmR0VmxReadExitQualVmcs(pVmxTransient);
     
    1667516674
    1667616675    uint32_t fMsrpm;
    16677     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_USE_MSR_BITMAPS))
     16676    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_USE_MSR_BITMAPS))
    1667816677        fMsrpm = CPUMGetVmxMsrPermission(pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pvMsrBitmap), pVCpu->cpum.GstCtx.ecx);
    1667916678    else
     
    1669716696
    1669816697    uint32_t fMsrpm;
    16699     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_USE_MSR_BITMAPS))
     16698    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_USE_MSR_BITMAPS))
    1670016699        fMsrpm = CPUMGetVmxMsrPermission(pVCpu->cpum.GstCtx.hwvirt.vmx.CTX_SUFF(pvMsrBitmap), pVCpu->cpum.GstCtx.ecx);
    1670116700    else
     
    1671816717    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1671916718
    16720     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_MWAIT_EXIT))
     16719    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_MWAIT_EXIT))
    1672116720    {
    1672216721        hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     
    1675216751    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1675316752
    16754     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_MONITOR_EXIT))
     16753    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_MONITOR_EXIT))
    1675516754    {
    1675616755        hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     
    1677316772
    1677416773    /* The CPU would have already performed the necessary CPL checks for PAUSE-loop exiting. */
    16775     if (   CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_PAUSE_EXIT)
    16776         || CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_PAUSE_LOOP_EXIT))
     16774    if (   CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_PAUSE_EXIT)
     16775        || CPUMIsGuestVmxProcCtls2Set(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_PAUSE_LOOP_EXIT))
    1677716776    {
    1677816777        hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     
    1679116790    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1679216791
    16793     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_USE_TPR_SHADOW))
     16792    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_USE_TPR_SHADOW))
    1679416793    {
    1679516794        hmR0VmxReadGuestPendingDbgXctps(pVmxTransient);
     
    1681716816    hmR0VmxReadExitQualVmcs(pVmxTransient);
    1681816817
    16819     Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_VIRT_APIC_ACCESS));
     16818    Assert(CPUMIsGuestVmxProcCtls2Set(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_VIRT_APIC_ACCESS));
    1682016819
    1682116820    Log4Func(("at offset %#x type=%u\n", VMX_EXIT_QUAL_APIC_ACCESS_OFFSET(pVmxTransient->uExitQual),
     
    1684416843    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1684516844
    16846     Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_APIC_REG_VIRT));
     16845    Assert(CPUMIsGuestVmxProcCtls2Set(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_APIC_REG_VIRT));
    1684716846    hmR0VmxReadExitQualVmcs(pVmxTransient);
    1684816847    return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason, pVmxTransient->uExitQual);
     
    1685816857    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1685916858
    16860     Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_VIRT_INT_DELIVERY));
     16859    Assert(CPUMIsGuestVmxProcCtls2Set(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_VIRT_INT_DELIVERY));
    1686116860    hmR0VmxReadExitQualVmcs(pVmxTransient);
    1686216861    return IEMExecVmxVmexit(pVCpu, pVmxTransient->uExitReason, pVmxTransient->uExitQual);
     
    1687116870    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1687216871
    16873     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_RDTSC_EXIT))
    16874     {
    16875         Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_RDTSCP));
     16872    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_RDTSC_EXIT))
     16873    {
     16874        Assert(CPUMIsGuestVmxProcCtls2Set(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_RDTSCP));
    1687616875        hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
    1687716876        return IEMExecVmxVmexitInstr(pVCpu, pVmxTransient->uExitReason, pVmxTransient->cbExitInstr);
     
    1688816887    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1688916888
    16890     if (CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_WBINVD_EXIT))
     16889    if (CPUMIsGuestVmxProcCtls2Set(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_WBINVD_EXIT))
    1689116890    {
    1689216891        hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
     
    1690416903    HMVMX_VALIDATE_NESTED_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient);
    1690516904
    16906     if (CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_INVLPG_EXIT))
    16907     {
    16908         Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_INVPCID));
     16905    if (CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_INVLPG_EXIT))
     16906    {
     16907        Assert(CPUMIsGuestVmxProcCtls2Set(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS2_INVPCID));
    1690916908        hmR0VmxReadExitInstrLenVmcs(pVmxTransient);
    1691016909        hmR0VmxReadExitQualVmcs(pVmxTransient);
     
    1695816957    {
    1695916958        case VMX_EXIT_ENCLS:
    16960             Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, pCtx, VMX_PROC_CTLS2_ENCLS_EXIT));
     16959            Assert(CPUMIsGuestVmxProcCtls2Set(pCtx, VMX_PROC_CTLS2_ENCLS_EXIT));
    1696116960            break;
    1696216961
    1696316962        case VMX_EXIT_VMFUNC:
    16964             Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, pCtx, VMX_PROC_CTLS2_VMFUNC));
     16963            Assert(CPUMIsGuestVmxProcCtls2Set(pCtx, VMX_PROC_CTLS2_VMFUNC));
    1696516964            break;
    1696616965    }
     
    1698816987        case VMX_EXIT_GDTR_IDTR_ACCESS:
    1698916988        case VMX_EXIT_LDTR_TR_ACCESS:
    16990             Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, pCtx, VMX_PROC_CTLS2_DESC_TABLE_EXIT));
     16989            Assert(CPUMIsGuestVmxProcCtls2Set(pCtx, VMX_PROC_CTLS2_DESC_TABLE_EXIT));
    1699116990            break;
    1699216991
    1699316992        case VMX_EXIT_RDRAND:
    16994             Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, pCtx, VMX_PROC_CTLS2_RDRAND_EXIT));
     16993            Assert(CPUMIsGuestVmxProcCtls2Set(pCtx, VMX_PROC_CTLS2_RDRAND_EXIT));
    1699516994            break;
    1699616995
    1699716996        case VMX_EXIT_RDSEED:
    16998             Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, pCtx, VMX_PROC_CTLS2_RDSEED_EXIT));
     16997            Assert(CPUMIsGuestVmxProcCtls2Set(pCtx, VMX_PROC_CTLS2_RDSEED_EXIT));
    1699916998            break;
    1700016999
     
    1700217001        case VMX_EXIT_XRSTORS:
    1700317002            /** @todo NSTVMX: Verify XSS-bitmap. */
    17004             Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, pCtx, VMX_PROC_CTLS2_XSAVES_XRSTORS));
     17003            Assert(CPUMIsGuestVmxProcCtls2Set(pCtx, VMX_PROC_CTLS2_XSAVES_XRSTORS));
    1700517004            break;
    1700617005
    1700717006        case VMX_EXIT_UMWAIT:
    1700817007        case VMX_EXIT_TPAUSE:
    17009             Assert(CPUMIsGuestVmxProcCtlsSet(pVCpu, pCtx, VMX_PROC_CTLS_RDTSC_EXIT));
    17010             Assert(CPUMIsGuestVmxProcCtls2Set(pVCpu, pCtx, VMX_PROC_CTLS2_USER_WAIT_PAUSE));
     17008            Assert(CPUMIsGuestVmxProcCtlsSet(pCtx, VMX_PROC_CTLS_RDTSC_EXIT));
     17009            Assert(CPUMIsGuestVmxProcCtls2Set(pCtx, VMX_PROC_CTLS2_USER_WAIT_PAUSE));
    1701117010            break;
    1701217011    }
  • trunk/src/VBox/VMM/VMMR3/EM.cpp

    r81153 r81665  
    15001500#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    15011501    /* Handle the "external interrupt" VM-exit intercept. */
    1502     if (    CPUMIsGuestVmxPinCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PIN_CTLS_EXT_INT_EXIT)
    1503         && !CPUMIsGuestVmxExitCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_EXIT_CTLS_ACK_EXT_INT))
     1502    if (    CPUMIsGuestVmxPinCtlsSet(&pVCpu->cpum.GstCtx, VMX_PIN_CTLS_EXT_INT_EXIT)
     1503        && !CPUMIsGuestVmxExitCtlsSet(&pVCpu->cpum.GstCtx, VMX_EXIT_CTLS_ACK_EXT_INT))
    15041504    {
    15051505        VBOXSTRICTRC rcStrict = IEMExecVmxVmexitExtInt(pVCpu, 0 /* uVector */, true /* fIntPending */);
     
    19391939                 */
    19401940                if (    VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_NMI_WINDOW)
    1941                     && !CPUMIsGuestVmxVirtNmiBlocking(pVCpu, &pVCpu->cpum.GstCtx))
     1941                    && !CPUMIsGuestVmxVirtNmiBlocking(&pVCpu->cpum.GstCtx))
    19421942                {
    1943                     Assert(CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_NMI_WINDOW_EXIT));
     1943                    Assert(CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_NMI_WINDOW_EXIT));
    19441944                    Assert(CPUMIsGuestVmxInterceptEvents(&pVCpu->cpum.GstCtx));
    19451945                    rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexit(pVCpu, VMX_EXIT_NMI_WINDOW, 0 /* uExitQual */));
     
    19601960#ifdef VBOX_WITH_NESTED_HWVIRT_VMX
    19611961                    if (   fInVmxNonRootMode
    1962                         && CPUMIsGuestVmxPinCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PIN_CTLS_NMI_EXIT))
     1962                        && CPUMIsGuestVmxPinCtlsSet(&pVCpu->cpum.GstCtx, VMX_PIN_CTLS_NMI_EXIT))
    19631963                    {
    19641964                        rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexitXcptNmi(pVCpu));
     
    20042004                 */
    20052005                else if (   VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_VMX_INT_WINDOW)
    2006                          && CPUMIsGuestVmxVirtIntrEnabled(pVCpu, &pVCpu->cpum.GstCtx))
     2006                         && CPUMIsGuestVmxVirtIntrEnabled(&pVCpu->cpum.GstCtx))
    20072007                {
    2008                     Assert(CPUMIsGuestVmxProcCtlsSet(pVCpu, &pVCpu->cpum.GstCtx, VMX_PROC_CTLS_INT_WINDOW_EXIT));
     2008                    Assert(CPUMIsGuestVmxProcCtlsSet(&pVCpu->cpum.GstCtx, VMX_PROC_CTLS_INT_WINDOW_EXIT));
    20092009                    Assert(CPUMIsGuestVmxInterceptEvents(&pVCpu->cpum.GstCtx));
    20102010                    rc2 = VBOXSTRICTRC_VAL(IEMExecVmxVmexit(pVCpu, VMX_EXIT_INT_WINDOW, 0 /* uExitQual */));
     
    20312031                    if (   fInVmxNonRootMode
    20322032                        && VMCPU_FF_IS_SET(pVCpu, VMCPU_FF_INTERRUPT_NESTED_GUEST)
    2033                         && CPUMIsGuestVmxVirtIntrEnabled(pVCpu, &pVCpu->cpum.GstCtx))
     2033                        && CPUMIsGuestVmxVirtIntrEnabled(&pVCpu->cpum.GstCtx))
    20342034                    {
    20352035                        /** @todo NSTVMX: virtual-interrupt delivery. */
  • trunk/src/VBox/VMM/VMMR3/TRPM.cpp

    r81150 r81665  
    379379        if (   CPUMIsGuestInVmxNonRootMode(pCtx)
    380380            && CPUMIsGuestVmxInterceptEvents(pCtx)
    381             && CPUMIsGuestVmxPinCtlsSet(pVCpu, pCtx, VMX_PIN_CTLS_EXT_INT_EXIT)
    382             && CPUMIsGuestVmxExitCtlsSet(pVCpu, pCtx, VMX_EXIT_CTLS_ACK_EXT_INT))
     381            && CPUMIsGuestVmxPinCtlsSet(pCtx, VMX_PIN_CTLS_EXT_INT_EXIT)
     382            && CPUMIsGuestVmxExitCtlsSet(pCtx, VMX_EXIT_CTLS_ACK_EXT_INT))
    383383        {
    384384            VBOXSTRICTRC rcStrict = IEMExecVmxVmexitExtInt(pVCpu, u8Interrupt, false /* fIntPending */);
Note: See TracChangeset for help on using the changeset viewer.

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