VirtualBox

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


Ignore:
Timestamp:
Sep 16, 2021 9:30:45 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
146947
Message:

VMM/CPUM,++: Moved the nested SVM VMCB allocation into CPUMCTX. bugref:10093

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

Legend:

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

    r91281 r91287  
    20972097    Assert(CPUMIsGuestInSvmNestedHwVirtMode(pCtx));
    20982098
    2099     PCSVMVMCBCTRL pVmcbCtrl    = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     2099    PCSVMVMCBCTRL pVmcbCtrl    = &pCtx->hwvirt.svm.Vmcb.ctrl;
    21002100    PCSVMINTCTRL  pVmcbIntCtrl = &pVmcbCtrl->IntCtrl;
    21012101    Assert(!pVmcbIntCtrl->n.u1VGifEnable);      /* We don't support passing virtual-GIF feature to the guest yet. */
     
    21162116VMM_INT_DECL(uint8_t) CPUMGetGuestSvmVirtIntrVector(PCCPUMCTX pCtx)
    21172117{
    2118     PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    2119     return pVmcbCtrl->IntCtrl.n.u8VIntrVector;
     2118    return pCtx->hwvirt.svm.Vmcb.ctrl.IntCtrl.n.u8VIntrVector;
    21202119}
    21212120
     
    22122211        uint64_t offTsc;
    22132212        if (!HMGetGuestSvmTscOffset(pVCpu, &offTsc))
    2214         {
    2215             PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
    2216             Assert(pVmcb);
    2217             offTsc = pVmcb->ctrl.u64TSCOffset;
    2218         }
     2213            offTsc = pCtx->hwvirt.svm.Vmcb.ctrl.u64TSCOffset;
    22192214        return uTscValue + offTsc;
    22202215    }
     
    22512246        uint64_t offTsc;
    22522247        if (!HMGetGuestSvmTscOffset(pVCpu, &offTsc))
    2253         {
    2254             PCSVMVMCB pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
    2255             Assert(pVmcb);
    2256             offTsc = pVmcb->ctrl.u64TSCOffset;
    2257         }
     2248            offTsc = pCtx->hwvirt.svm.Vmcb.ctrl.u64TSCOffset;
    22582249        return uTscValue - offTsc;
    22592250    }
  • trunk/src/VBox/VMM/VMMAll/HMSVMAll.cpp

    r87563 r91287  
    139139         * by a physical CPU on #VMEXIT.
    140140         */
    141         PSVMVMCBCTRL pVmcbNstGstCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     141        PSVMVMCBCTRL pVmcbNstGstCtrl = &pCtx->hwvirt.svm.Vmcb.ctrl;
    142142        pVmcbNstGstCtrl->u16InterceptRdCRx                 = pVmcbNstGstCache->u16InterceptRdCRx;
    143143        pVmcbNstGstCtrl->u16InterceptWrCRx                 = pVmcbNstGstCache->u16InterceptWrCRx;
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h

    r91281 r91287  
    55625562            if (CPUMIsGuestInSvmNestedHwVirtMode(IEM_GET_CTX(pVCpu)))
    55635563            {
    5564                 PCSVMVMCBCTRL pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     5564                PCSVMVMCBCTRL pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb.ctrl;
    55655565                if (CPUMIsGuestSvmVirtIntrMasking(pVCpu, IEM_GET_CTX(pVCpu)))
    55665566                {
     
    60986098                }
    60996099
    6100                 PSVMVMCBCTRL pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    6101                 pVmcbCtrl->IntCtrl.n.u8VTPR = uNewCrX;
     6100                pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb.ctrl.IntCtrl.n.u8VTPR = uNewCrX;
    61026101                if (CPUMIsGuestSvmVirtIntrMasking(pVCpu, IEM_GET_CTX(pVCpu)))
    61036102                {
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImplSvmInstr.cpp.h

    r82968 r91287  
    150150        PSVMVMCB       pVmcbMem;
    151151        PGMPAGEMAPLOCK PgLockMem;
    152         PSVMVMCBCTRL   pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     152        PSVMVMCBCTRL   pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb.ctrl;
    153153        rcStrict = iemMemPageMap(pVCpu, pVCpu->cpum.GstCtx.hwvirt.svm.GCPhysVmcb, IEM_ACCESS_DATA_RW, (void **)&pVmcbMem,
    154154                                 &PgLockMem);
     
    380380     */
    381381    PVMCC pVM = pVCpu->CTX_SUFF(pVM);
    382     int rc = PGMPhysSimpleReadGCPhys(pVM, pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb), GCPhysVmcb, sizeof(SVMVMCB));
     382    int rc = PGMPhysSimpleReadGCPhys(pVM, &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb, GCPhysVmcb, sizeof(SVMVMCB));
    383383    if (RT_SUCCESS(rc))
    384384    {
     
    395395         * typically enter hardware-assisted SVM soon anyway, see @bugref{7243#c113}.
    396396         */
    397         PSVMVMCBCTRL      pVmcbCtrl   = &pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    398         PSVMVMCBSTATESAVE pVmcbNstGst = &pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb)->guest;
     397        PSVMVMCBCTRL      pVmcbCtrl   = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb.ctrl;
     398        PSVMVMCBSTATESAVE pVmcbNstGst = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb.guest;
    399399
    400400        RT_ZERO(pVmcbCtrl->u8Reserved0);
     
    916916            && !(uErr & X86_TRAP_PF_ID))
    917917        {
    918             PSVMVMCBCTRL  pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     918            PSVMVMCBCTRL  pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb.ctrl;
    919919# ifdef IEM_WITH_CODE_TLB
    920920            uint8_t const *pbInstrBuf = pVCpu->iem.s.pbInstrBuf;
     
    934934            IEM_SVM_UPDATE_NRIP(pVCpu);
    935935        Log2(("iemHandleSvmNstGstEventIntercept: Xcpt intercept u32InterceptXcpt=%#RX32 u8Vector=%#x "
    936               "uExitInfo1=%#RX64 uExitInfo2=%#RX64 -> #VMEXIT\n", pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb)->ctrl.u32InterceptXcpt,
     936              "uExitInfo1=%#RX64 uExitInfo2=%#RX64 -> #VMEXIT\n", pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb.ctrl.u32InterceptXcpt,
    937937              u8Vector, uExitInfo1, uExitInfo2));
    938938        IEM_SVM_VMEXIT_RET(pVCpu, SVM_EXIT_XCPT_0 + u8Vector, uExitInfo1, uExitInfo2);
  • trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp

    r91015 r91287  
    19671967
    19681968/**
     1969 * Converts a pointer with the GVM structure to a host physical address.
     1970 *
     1971 * @returns Host physical address.
     1972 * @param   pGVM    The global (ring-0) VM structure.
     1973 * @param   pv      The address to convert.
     1974 * @thread  EMT
     1975 */
     1976GVMMR0DECL(RTHCPHYS) GVMMR0ConvertGVMPtr2HCPhys(PGVM pGVM, void *pv)
     1977{
     1978    AssertPtr(pGVM);
     1979    Assert(pGVM->u32Magic == GVM_MAGIC);
     1980    uintptr_t const off = (uintptr_t)pv - (uintptr_t)pGVM;
     1981    Assert(off < RT_UOFFSETOF_DYN(GVM, aCpus[pGVM->cCpus]));
     1982    return RTR0MemObjGetPagePhysAddr(pGVM->gvmm.s.VMMemObj, off >> PAGE_SHIFT) | ((uintptr_t)pv & PAGE_OFFSET_MASK);
     1983}
     1984
     1985
     1986/**
    19691987 * This is will wake up expired and soon-to-be expired VMs.
    19701988 *
  • trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp

    r91271 r91287  
    12191219#ifdef VBOX_WITH_NESTED_HWVIRT_SVM
    12201220    if (CPUMIsGuestInSvmNestedHwVirtMode(&pVCpu->cpum.GstCtx))
    1221         return pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb);
     1221        return &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb;
    12221222#endif
    12231223    return pVCpu->hmr0.s.svm.pVmcb;
     
    22332233    PVMCC        pVM             = pVCpu->CTX_SUFF(pVM);
    22342234    PCSVMVMCB    pVmcb           = pVCpu->hmr0.s.svm.pVmcb;
    2235     PSVMVMCB     pVmcbNstGst     = pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb);
     2235    PSVMVMCB     pVmcbNstGst     = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb;
    22362236    PSVMVMCBCTRL pVmcbNstGstCtrl = &pVmcbNstGst->ctrl;
    22372237
     
    25422542    if (!fWasCached)
    25432543    {
    2544         PCSVMVMCB      pVmcbNstGst    = pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb);
     2544        PCSVMVMCB      pVmcbNstGst    = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb;
    25452545        PCSVMVMCBCTRL pVmcbNstGstCtrl = &pVmcbNstGst->ctrl;
    25462546        pVmcbNstGstCache->u16InterceptRdCRx       = pVmcbNstGstCtrl->u16InterceptRdCRx;
     
    25752575static void hmR0SvmSetupVmcbNested(PVMCPUCC pVCpu)
    25762576{
    2577     PSVMVMCB     pVmcbNstGst     = pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb);
     2577    PSVMVMCB     pVmcbNstGst     = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb;
    25782578    PSVMVMCBCTRL pVmcbNstGstCtrl = &pVmcbNstGst->ctrl;
    25792579
     
    46744674    Assert(pcLoops);
    46754675    Assert(*pcLoops <= pVCpu->CTX_SUFF(pVM)->hmr0.s.cMaxResumeLoops);
     4676    RTHCPHYS const HCPhysVmcb = GVMMR0ConvertGVMPtr2HCPhys(pVCpu->pGVM, &pCtx->hwvirt.svm.Vmcb);
    46764677
    46774678    SVMTRANSIENT SvmTransient;
    46784679    RT_ZERO(SvmTransient);
    46794680    SvmTransient.fUpdateTscOffsetting = true;
    4680     SvmTransient.pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);
     4681    SvmTransient.pVmcb = &pCtx->hwvirt.svm.Vmcb;
    46814682    SvmTransient.fIsNestedGuest = true;
    46824683
     
    47034704        hmR0SvmPreRunGuestCommitted(pVCpu, &SvmTransient);
    47044705
    4705         rc = hmR0SvmRunGuest(pVCpu, pCtx->hwvirt.svm.HCPhysVmcb);
     4706        rc = hmR0SvmRunGuest(pVCpu, HCPhysVmcb);
    47064707
    47074708        /* Restore any residual host-state and save any bits shared between host and guest
     
    47284729        HMSVM_NESTED_EXITCODE_STAM_COUNTER_INC(SvmTransient.u64ExitCode);
    47294730        STAM_PROFILE_ADV_STOP_START(&pVCpu->hm.s.StatPreExit, &pVCpu->hm.s.StatExitHandling, x);
    4730         VBOXVMM_R0_HMSVM_VMEXIT(pVCpu, pCtx, SvmTransient.u64ExitCode, pCtx->hwvirt.svm.CTX_SUFF(pVmcb));
     4731        VBOXVMM_R0_HMSVM_VMEXIT(pVCpu, pCtx, SvmTransient.u64ExitCode, &pCtx->hwvirt.svm.Vmcb);
    47314732        rc = hmR0SvmHandleExitNested(pVCpu, &SvmTransient);
    47324733        STAM_PROFILE_ADV_STOP(&pVCpu->hm.s.StatExitHandling, x);
     
    48724873     * nested-guest. If it isn't, it should be handled by the (outer) guest.
    48734874     */
    4874     PSVMVMCB       pVmcbNstGst     = pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb);
     4875    PSVMVMCB       pVmcbNstGst     = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb;
    48754876    PCCPUMCTX      pCtx            = &pVCpu->cpum.GstCtx;
    48764877    PSVMVMCBCTRL   pVmcbNstGstCtrl = &pVmcbNstGst->ctrl;
  • trunk/src/VBox/VMM/VMMR3/CPUM.cpp

    r91286 r91287  
    10211021    {
    10221022        PVMCPU pVCpu = pVM->apCpusR3[i];
    1023         if (pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3)
    1024         {
    1025             SUPR3PageFreeEx(pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3, SVM_VMCB_PAGES);
    1026             pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3 = NULL;
    1027         }
    1028         pVCpu->cpum.s.Guest.hwvirt.svm.HCPhysVmcb = NIL_RTHCPHYS;
    10291023
    10301024        if (pVCpu->cpum.s.Guest.hwvirt.svm.pvMsrBitmapR3)
     
    10611055        pVCpu->cpum.s.Guest.hwvirt.enmHwvirt = CPUMHWVIRT_SVM;
    10621056
    1063         /*
    1064          * Allocate the nested-guest VMCB.
    1065          */
    1066         SUPPAGE SupNstGstVmcbPage;
    1067         RT_ZERO(SupNstGstVmcbPage);
    1068         SupNstGstVmcbPage.Phys = NIL_RTHCPHYS;
    1069         Assert(SVM_VMCB_PAGES == 1);
    1070         Assert(!pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3);
    1071         rc = SUPR3PageAllocEx(SVM_VMCB_PAGES, 0 /* fFlags */, (void **)&pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3,
    1072                               &pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR0, &SupNstGstVmcbPage);
    1073         if (RT_FAILURE(rc))
    1074         {
    1075             Assert(!pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3);
    1076             LogRel(("CPUM%u: Failed to alloc %u pages for the nested-guest's VMCB\n", pVCpu->idCpu, SVM_VMCB_PAGES));
    1077             break;
    1078         }
    1079         pVCpu->cpum.s.Guest.hwvirt.svm.HCPhysVmcb = SupNstGstVmcbPage.Phys;
     1057        AssertCompile(SVM_VMCB_PAGES * PAGE_SIZE == sizeof(pVCpu->cpum.s.Guest.hwvirt.svm.Vmcb));
    10801058
    10811059        /*
     
    11361114    PCPUMCTX pCtx = &pVCpu->cpum.s.Guest;
    11371115    Assert(pCtx->hwvirt.enmHwvirt == CPUMHWVIRT_SVM);
    1138     Assert(pCtx->hwvirt.svm.CTX_SUFF(pVmcb));
    1139 
    1140     memset(pCtx->hwvirt.svm.CTX_SUFF(pVmcb), 0, SVM_VMCB_PAGES << PAGE_SHIFT);
     1116
     1117    RT_ZERO(pCtx->hwvirt.svm.Vmcb);
    11411118    pCtx->hwvirt.svm.uMsrHSavePa    = 0;
    11421119    pCtx->hwvirt.svm.uPrevPauseTick = 0;
     
    26672644        if (pVM->cpum.s.GuestFeatures.fSvm)
    26682645        {
    2669             Assert(pGstCtx->hwvirt.svm.CTX_SUFF(pVmcb));
    26702646            SSMR3PutU64(pSSM,    pGstCtx->hwvirt.svm.uMsrHSavePa);
    26712647            SSMR3PutGCPhys(pSSM, pGstCtx->hwvirt.svm.GCPhysVmcb);
     
    26762652            SSMR3PutStructEx(pSSM, &pGstCtx->hwvirt.svm.HostState, sizeof(pGstCtx->hwvirt.svm.HostState), 0 /* fFlags */,
    26772653                             g_aSvmHwvirtHostState, NULL /* pvUser */);
    2678             SSMR3PutMem(pSSM,    pGstCtx->hwvirt.svm.pVmcbR3,       SVM_VMCB_PAGES  << X86_PAGE_4K_SHIFT);
     2654            SSMR3PutMem(pSSM,   &pGstCtx->hwvirt.svm.Vmcb,          sizeof(pGstCtx->hwvirt.svm.Vmcb));
    26792655            SSMR3PutMem(pSSM,    pGstCtx->hwvirt.svm.pvMsrBitmapR3, SVM_MSRPM_PAGES << X86_PAGE_4K_SHIFT);
    26802656            SSMR3PutMem(pSSM,    pGstCtx->hwvirt.svm.pvIoBitmapR3,  SVM_IOPM_PAGES  << X86_PAGE_4K_SHIFT);
     
    29542930                    if (pVM->cpum.s.GuestFeatures.fSvm)
    29552931                    {
    2956                         Assert(pGstCtx->hwvirt.svm.CTX_SUFF(pVmcb));
    29572932                        SSMR3GetU64(pSSM,      &pGstCtx->hwvirt.svm.uMsrHSavePa);
    29582933                        SSMR3GetGCPhys(pSSM,   &pGstCtx->hwvirt.svm.GCPhysVmcb);
     
    29632938                        SSMR3GetStructEx(pSSM, &pGstCtx->hwvirt.svm.HostState, sizeof(pGstCtx->hwvirt.svm.HostState),
    29642939                                         0 /* fFlags */, g_aSvmHwvirtHostState, NULL /* pvUser */);
    2965                         SSMR3GetMem(pSSM,       pGstCtx->hwvirt.svm.pVmcbR3,       SVM_VMCB_PAGES  << X86_PAGE_4K_SHIFT);
     2940                        SSMR3GetMem(pSSM,      &pGstCtx->hwvirt.svm.Vmcb,          sizeof(pGstCtx->hwvirt.svm.Vmcb));
    29662941                        SSMR3GetMem(pSSM,       pGstCtx->hwvirt.svm.pvMsrBitmapR3, SVM_MSRPM_PAGES << X86_PAGE_4K_SHIFT);
    29672942                        SSMR3GetMem(pSSM,       pGstCtx->hwvirt.svm.pvIoBitmapR3,  SVM_IOPM_PAGES  << X86_PAGE_4K_SHIFT);
     
    41514126        pHlp->pfnPrintf(pHlp, "  GCPhysVmcb                 = %#RGp\n",     pCtx->hwvirt.svm.GCPhysVmcb);
    41524127        pHlp->pfnPrintf(pHlp, "  VmcbCtrl:\n");
    4153         cpumR3InfoSvmVmcbCtrl(pHlp, &pCtx->hwvirt.svm.pVmcbR3->ctrl,       "    " /* pszPrefix */);
     4128        cpumR3InfoSvmVmcbCtrl(pHlp, &pCtx->hwvirt.svm.Vmcb.ctrl,       "    " /* pszPrefix */);
    41544129        pHlp->pfnPrintf(pHlp, "  VmcbStateSave:\n");
    4155         cpumR3InfoSvmVmcbStateSave(pHlp, &pCtx->hwvirt.svm.pVmcbR3->guest, "    " /* pszPrefix */);
     4130        cpumR3InfoSvmVmcbStateSave(pHlp, &pCtx->hwvirt.svm.Vmcb.guest, "    " /* pszPrefix */);
    41564131        pHlp->pfnPrintf(pHlp, "  HostState:\n");
    41574132        pHlp->pfnPrintf(pHlp, "    uEferMsr                   = %#RX64\n",  pCtx->hwvirt.svm.HostState.uEferMsr);
  • trunk/src/VBox/VMM/include/CPUMInternal.mac

    r91283 r91287  
    231231
    232232    alignb 4096
     233    .Guest.hwvirt.svm.Vmcb                  resb            4096
    233234    .Guest.hwvirt.svm.uMsrHSavePa            resq         1
    234235    .Guest.hwvirt.svm.GCPhysVmcb             resq         1
    235     .Guest.hwvirt.svm.pVmcbR0                RTR0PTR_RES  1
    236     alignb 8
    237     .Guest.hwvirt.svm.pVmcbR3                RTR3PTR_RES  1
    238236    alignb 8
    239237    .Guest.hwvirt.svm.HostState              resb         184
     
    250248    alignb 8
    251249    .Guest.hwvirt.svm.pvIoBitmapR3           RTR3PTR_RES  1
    252     alignb 8
    253     .Guest.hwvirt.svm.HCPhysVmcb             RTHCPHYS_RES 1
    254     .Guest.hwvirt.svm.abPadding0             resb       272
     250
     251    ;.unnamed_padding.1 resb 0
     252    alignb 8
    255253    .Guest.hwvirt.enmHwvirt                  resd         1
    256254    .Guest.hwvirt.fGif                       resb         1
  • trunk/src/VBox/VMM/testcase/tstAsmStructsAsm-lst.sed

    r91281 r91287  
    3131/^\.data$/d
    3232/^\.bss$/d
     33/ *\.unnamed_padding\./d
    3334s/[[:space:]][[:space:]]*/ /g
    3435
  • trunk/src/VBox/VMM/testcase/tstVMStruct.h

    r91286 r91287  
    128128    GEN_CHECK_SIZE(CPUMCTX);
    129129    GEN_CHECK_OFF(CPUMCTX, hwvirt);
     130    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.Vmcb);
    130131    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.uMsrHSavePa);
    131132    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.GCPhysVmcb);
    132     GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pVmcbR0);
    133     GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pVmcbR3);
    134133    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.HostState);
    135134    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.uPrevPauseTick);
     
    141140    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pvIoBitmapR0);
    142141    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pvIoBitmapR3);
    143     GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.HCPhysVmcb);
    144142    GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.GCPhysVmxon);
    145143    GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.GCPhysVmcs);
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