VirtualBox

Changeset 67924 in vbox


Ignore:
Timestamp:
Jul 12, 2017 11:12:15 AM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
116916
Message:

VMM/CPUM: Nested Hw.virt: Allocate the nested-guest VMCB (controls and state-save area) dynamically.

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/cpum.h

    r67258 r67924  
    13151315}
    13161316
     1317#ifndef IN_RC
    13171318/**
    13181319 * Checks if the guest VMCB has the specified ctrl/instruction intercept active.
     
    13251326DECLINLINE(bool) CPUMIsGuestSvmCtrlInterceptSet(PCCPUMCTX pCtx, uint64_t fIntercept)
    13261327{
    1327     return RT_BOOL(pCtx->hwvirt.svm.VmcbCtrl.u64InterceptCtrl & fIntercept);
     1328    PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     1329    return RT_BOOL(pVmcbCtrl->u64InterceptCtrl & fIntercept);
    13281330}
    13291331
     
    13381340DECLINLINE(bool) CPUMIsGuestSvmReadCRxInterceptSet(PCCPUMCTX pCtx, uint8_t uCr)
    13391341{
    1340     return RT_BOOL(pCtx->hwvirt.svm.VmcbCtrl.u16InterceptRdCRx & (1 << uCr));
     1342    PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     1343    return RT_BOOL(pVmcbCtrl->u16InterceptRdCRx & (1 << uCr));
    13411344}
    13421345
     
    13511354DECLINLINE(bool) CPUMIsGuestSvmWriteCRxInterceptSet(PCCPUMCTX pCtx, uint8_t uCr)
    13521355{
    1353     return RT_BOOL(pCtx->hwvirt.svm.VmcbCtrl.u16InterceptWrCRx & (1 << uCr));
     1356    PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     1357    return RT_BOOL(pVmcbCtrl->u16InterceptWrCRx & (1 << uCr));
    13541358}
    13551359
     
    13641368DECLINLINE(bool) CPUMIsGuestSvmReadDRxInterceptSet(PCCPUMCTX pCtx, uint8_t uDr)
    13651369{
    1366     return RT_BOOL(pCtx->hwvirt.svm.VmcbCtrl.u16InterceptRdDRx & (1 << uDr));
     1370    PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     1371    return RT_BOOL(pVmcbCtrl->u16InterceptRdDRx & (1 << uDr));
    13671372}
    13681373
     
    13771382DECLINLINE(bool) CPUMIsGuestSvmWriteDRxInterceptSet(PCCPUMCTX pCtx, uint8_t uDr)
    13781383{
    1379     return RT_BOOL(pCtx->hwvirt.svm.VmcbCtrl.u16InterceptWrDRx & (1 << uDr));
     1384    PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     1385    return RT_BOOL(pVmcbCtrl->u16InterceptWrDRx & (1 << uDr));
    13801386}
    13811387
     
    13911397{
    13921398    Assert(uVector < 32);
    1393     return RT_BOOL(pCtx->hwvirt.svm.VmcbCtrl.u32InterceptXcpt & (UINT32_C(1) << uVector));
     1399    PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     1400    return RT_BOOL(pVmcbCtrl->u32InterceptXcpt & (UINT32_C(1) << uVector));
    13941401}
     1402#endif /* !IN_RC */
    13951403
    13961404/**
     
    14061414     * See AMD spec. 15.5 "VMRUN instruction" subsection "Canonicalization and Consistency Checks".
    14071415     */
    1408     return RT_BOOL(pCtx->hwvirt.svm.VmcbCtrl.u64InterceptCtrl & SVM_CTRL_INTERCEPT_VMRUN);
     1416#ifndef IN_RC
     1417    PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
     1418    return RT_BOOL(pVmcbCtrl->u64InterceptCtrl & SVM_CTRL_INTERCEPT_VMRUN);
     1419#else
     1420    RT_NOREF(pCtx);
     1421    return false;
     1422#endif
    14091423}
    14101424
     
    14171431DECLINLINE(bool) CPUMIsGuestInVmxNestedHwVirtMode(PCCPUMCTX pCtx)
    14181432{
    1419     RT_NOREF1(pCtx);
    14201433    /** @todo Intel. */
     1434    RT_NOREF(pCtx);
    14211435    return false;
    14221436}
  • trunk/include/VBox/vmm/cpum.mac

    r66667 r67924  
    258258    .abPadding          resb    12
    259259%endif
    260     .hwvirt.svm.uMsrHSavePa              resq    1
    261     .hwvirt.svm.GCPhysVmcb               resq    1
    262     .hwvirt.svm.VmcbCtrl                 resb  256
    263     .hwvirt.svm.HostState                resb  184
    264     .hwvirt.svm.fGif                     resb    1
    265     .hwvirt.svm.cPauseFilter             resw    1
    266     .hwvirt.svm.cPauseFilterThreshold    resw    1
    267     .hwvirt.svm.fInterceptEvents         resb    1
    268     .hwvirt.svm.abPadding0               resb    2
    269     .hwvirt.svm.pvMsrBitmapR0            RTR0PTR_RES 1
    270     .hwvirt.svm.pvMsrBitmapR3            RTR3PTR_RES 1
    271     .hwvirt.svm.pvIoBitmapR0             RTR0PTR_RES 1
    272     .hwvirt.svm.pvIoBitmapR3             RTR3PTR_RES 1
     260    .hwvirt.svm.uMsrHSavePa            resq          1
     261    .hwvirt.svm.GCPhysVmcb             resq          1
     262    .hwvirt.svm.pVmcbR0                RTR0PTR_RES   1
     263    .hwvirt.svm.pVmcbR3                RTR3PTR_RES   1
    273264%if HC_ARCH_BITS == 32
    274     .hwvirt.svm.abPadding1               resb   16
    275 %endif
    276     .hwvirt.fLocalForcedActions          resd    1
     265    .hwvirt.svm.abPadding0             resb          8
     266%endif
     267    .hwvirt.svm.HostState              resb        184
     268    .hwvirt.svm.fGif                   resb          1
     269    .hwvirt.svm.cPauseFilter           resw          1
     270    .hwvirt.svm.cPauseFilterThreshold  resw          1
     271    .hwvirt.svm.fInterceptEvents       resb          1
     272    .hwvirt.svm.abPadding1             resb          2
     273    .hwvirt.svm.pvMsrBitmapR0          RTR0PTR_RES   1
     274    .hwvirt.svm.pvMsrBitmapR3          RTR3PTR_RES   1
     275    .hwvirt.svm.pvIoBitmapR0           RTR0PTR_RES   1
     276    .hwvirt.svm.pvIoBitmapR3           RTR3PTR_RES   1
     277%if HC_ARCH_BITS == 32
     278    .hwvirt.svm.abPadding2             resb          16
     279%endif
     280    .hwvirt.fLocalForcedActions        resd          1
    277281    alignb 64
    278282endstruc
  • trunk/include/VBox/vmm/cpumctx.h

    r66667 r67924  
    479479                /** 736 - Guest physical address of the nested-guest VMCB. */
    480480                RTGCPHYS            GCPhysVmcb;
    481                 /** 744 - Cache of the nested-guest VMCB control area. */
    482                 SVMVMCBCTRL         VmcbCtrl;
    483                 /** 1000 - Guest's host-state save area. */
     481                /** 744 - Cache of the nested-guest VMCB - R0 ptr. */
     482                R0PTRTYPE(PSVMVMCB) pVmcbR0;
     483                /** 752 / 748 - Cache of the nested-guest VMCB - R3 ptr. */
     484                R3PTRTYPE(PSVMVMCB) pVmcbR3;
     485#if HC_ARCH_BITS == 32
     486                /** NA / 752 - Padding. */
     487                uint8_t             abPadding0[8];
     488#endif
     489                /** 760 - Guest's host-state save area. */
    484490                SVMHOSTSTATE        HostState;
    485                 /** 1184 - Global interrupt flag. */
     491                /** 944 - Global interrupt flag. */
    486492                uint8_t             fGif;
    487                 /** 1185 - Pause filter count. */
     493                /** 945 - Pause filter count. */
    488494                uint16_t            cPauseFilter;
    489                 /** 1187 - Pause filter count. */
     495                /** 947 - Pause filter count. */
    490496                uint16_t            cPauseFilterThreshold;
    491                 /** 1189 - Whether the injected event is subject to event intercepts. */
     497                /** 949 - Whether the injected event is subject to event intercepts. */
    492498                uint8_t             fInterceptEvents;
    493                 /** 1190 - Padding. */
    494                 uint8_t             abPadding0[2];
    495                 /** 1192 - MSR permission bitmap - R0 ptr. */
     499                /** 950 - Padding. */
     500                uint8_t             abPadding1[2];
     501                /** 952 - MSR permission bitmap - R0 ptr. */
    496502                R0PTRTYPE(void *)   pvMsrBitmapR0;
    497                 /** 1200 / 1196 - MSR permission bitmap - R3 ptr. */
     503                /** 960 / 956 - MSR permission bitmap - R3 ptr. */
    498504                R3PTRTYPE(void *)   pvMsrBitmapR3;
    499                 /** 1208 / 1200 - IO permission bitmap - R0 ptr. */
     505                /** 968 / 960 - IO permission bitmap - R0 ptr. */
    500506                R0PTRTYPE(void *)   pvIoBitmapR0;
    501                 /** 1216 / 1204 - IO permission bitmap - R3 ptr. */
     507                /** 976 / 964 - IO permission bitmap - R3 ptr. */
    502508                R3PTRTYPE(void *)   pvIoBitmapR3;
    503509#if HC_ARCH_BITS == 32
    504                 /** NA / 1200 - Padding. */
    505                 uint8_t             abPadding1[16];
     510                /** NA / 968 - Padding. */
     511                uint8_t             abPadding2[16];
    506512#endif
    507513            } svm;
     
    513519        } CPUM_UNION_NM(s);
    514520
    515         /** 1224 - A subset of force flags that are preserved while running
     521        /** 984 - A subset of force flags that are preserved while running
    516522         *  the nested-guest. */
    517523        uint32_t                fLocalForcedActions;
    518524        /** 1212 - Padding. */
    519         uint8_t                 abPadding1[52];
     525        uint8_t                 abPadding1[36];
    520526    } hwvirt;
    521527    /** @} */
     
    575581AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.uMsrHSavePa,            728);
    576582AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.GCPhysVmcb,             736);
    577 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.VmcbCtrl,               744);
    578 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.HostState,             1000);
    579 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.fGif,                  1184);
    580 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.cPauseFilter,          1185);
    581 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.cPauseFilterThreshold, 1187);
    582 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.fInterceptEvents,      1189);
    583 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvMsrBitmapR0,         1192);
    584 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvMsrBitmapR3,         HC_ARCH_BITS == 64 ? 1200 : 1196);
    585 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvIoBitmapR0,          HC_ARCH_BITS == 64 ? 1208 : 1200);
    586 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvIoBitmapR3,          HC_ARCH_BITS == 64 ? 1216 : 1204);
    587 AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) fLocalForcedActions,       1224);
     583AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pVmcbR0,                744);
     584AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pVmcbR3,                HC_ARCH_BITS == 64 ? 752 : 748);
     585AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.HostState,              760);
     586AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.fGif,                   944);
     587AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.cPauseFilter,           945);
     588AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.cPauseFilterThreshold,  947);
     589AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.fInterceptEvents,       949);
     590AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvMsrBitmapR0,          952);
     591AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvMsrBitmapR3,          HC_ARCH_BITS == 64 ? 960 : 956);
     592AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvIoBitmapR0,           HC_ARCH_BITS == 64 ? 968 : 960);
     593AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvIoBitmapR3,           HC_ARCH_BITS == 64 ? 976 : 964);
     594AssertCompileMemberOffset(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) fLocalForcedActions,        984);
     595AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pVmcbR0,       8);
     596AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvMsrBitmapR0, 8);
     597AssertCompileMemberAlignment(CPUMCTX, hwvirt.CPUM_UNION_NM(s.) svm.pvIoBitmapR0,  8);
    588598
    589599AssertCompileMembersAtSameOffset(CPUMCTX, CPUM_UNION_STRUCT_NM(g,qw.) rax, CPUMCTX, CPUM_UNION_NM(g.) aGRegs);
  • trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp

    r67696 r67924  
    25552555VMM_INT_DECL(bool) CPUMCanSvmNstGstTakePhysIntr(PCCPUMCTX pCtx)
    25562556{
     2557#ifdef IN_RC
     2558    RT_NOREF(pCtx);
     2559    AssertReleaseFailedReturn(false);
     2560#else
    25572561    Assert(CPUMIsGuestInSvmNestedHwVirtMode(pCtx));
    25582562    Assert(pCtx->hwvirt.svm.fGif);
    25592563
    2560     PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.VmcbCtrl;
     2564    PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    25612565    X86EFLAGS fEFlags;
    25622566    if (pVmcbCtrl->IntCtrl.n.u1VIntrMasking)
     
    25662570
    25672571    return fEFlags.Bits.u1IF;
     2572#endif
    25682573}
    25692574
     
    25802585VMM_INT_DECL(bool) CPUMCanSvmNstGstTakeVirtIntr(PCCPUMCTX pCtx)
    25812586{
     2587#ifdef IN_RC
     2588    RT_NOREF(pCtx);
     2589    AssertReleaseFailedReturn(false);
     2590#else
    25822591    Assert(CPUMIsGuestInSvmNestedHwVirtMode(pCtx));
    25832592
    2584     PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.VmcbCtrl;
     2593    PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    25852594    if (   !pVmcbCtrl->IntCtrl.n.u1IgnoreTPR
    25862595        &&  pVmcbCtrl->IntCtrl.n.u4VIntrPrio <= pVmcbCtrl->IntCtrl.n.u8VTPR)
     
    25942603
    25952604    return true;
     2605#endif
    25962606}
    25972607
     
    26052615VMM_INT_DECL(uint8_t) CPUMGetSvmNstGstInterrupt(PCCPUMCTX pCtx)
    26062616{
    2607     PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.VmcbCtrl;
     2617#ifdef IN_RC
     2618    RT_NOREF(pCtx);
     2619    AssertReleaseFailedReturn(0);
     2620#else
     2621    PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.CTX_SUFF(pVmcb)->ctrl;
    26082622    return pVmcbCtrl->IntCtrl.n.u8VIntrVector;
    2609 }
    2610 
     2623#endif
     2624}
     2625
  • trunk/src/VBox/VMM/VMMR3/CPUM.cpp

    r67723 r67924  
    762762    {
    763763        PVMCPU pVCpu = &pVM->aCpus[i];
     764        if (pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3)
     765        {
     766            SUPR3PageFreeEx(pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3, SVM_VMCB_PAGES);
     767            pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3 = NULL;
     768        }
     769
    764770        if (pVCpu->cpum.s.Guest.hwvirt.svm.pvMsrBitmapR3)
    765771        {
     
    793799    {
    794800        PVMCPU pVCpu = &pVM->aCpus[i];
     801
     802        /*
     803         * Allocate the nested-guest VMCB.
     804         */
     805        Assert(!pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3);
     806        rc = SUPR3PageAllocEx(SVM_VMCB_PAGES, 0 /* fFlags */, (void **)&pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3,
     807                              (PRTR0PTR)pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR0, NULL /* paPages */);
     808        if (RT_FAILURE(rc))
     809        {
     810            Assert(!pVCpu->cpum.s.Guest.hwvirt.svm.pVmcbR3);
     811            LogRel(("CPUM%u: Failed to alloc %u pages for the nested-guest's VMCB\n", pVCpu->idCpu, SVM_VMCB_PAGES));
     812            break;
     813        }
    795814
    796815        /*
     
    12501269     */
    12511270    /* SVM. */
    1252     RT_ZERO(pCtx->hwvirt.svm.VmcbCtrl);
     1271    memset(&pCtx->hwvirt.svm, 0, sizeof(pCtx->hwvirt.svm));
    12531272    pCtx->hwvirt.svm.fGif = 1;
    12541273}
     
    22252244        pHlp->pfnPrintf(pHlp, "  GCPhysVmcb                 = %#RGp\n",     pCtx->hwvirt.svm.GCPhysVmcb);
    22262245        pHlp->pfnPrintf(pHlp, "  VmcbCtrl:\n");
    2227         HMR3InfoSvmVmcbCtrl(pHlp, &pCtx->hwvirt.svm.VmcbCtrl, "    " /* pszPrefix */);
     2246        HMR3InfoSvmVmcbCtrl(pHlp, &pCtx->hwvirt.svm.pVmcbR3->ctrl, "    " /* pszPrefix */);
     2247        /** @todo HMR3InfoSvmVmcbStateSave. */
    22282248        pHlp->pfnPrintf(pHlp, "  HostState:\n");
    22292249        pHlp->pfnPrintf(pHlp, "    uEferMsr                   = %#RX64\n",  pCtx->hwvirt.svm.HostState.uEferMsr);
  • trunk/src/VBox/VMM/include/CPUMInternal.mac

    r66667 r67924  
    231231    .Guest.abPadding          resb    12
    232232%endif
    233     .Guest.hwvirt.svm.uMsrHSavePa               resq    1
    234     .Guest.hwvirt.svm.GCPhysVmcb                resq    1
    235     .Guest.hwvirt.svm.VmcbCtrl                  resb  256
    236     .Guest.hwvirt.svm.HostState                 resb  184
    237     .Guest.hwvirt.svm.fGif                      resb    1
    238     .Guest.hwvirt.svm.cPauseFilter              resw    1
    239     .Guest.hwvirt.svm.cPauseFilterThreshold     resw    1
    240     .Guest.hwvirt.svm.fInterceptEvents          resb    1
    241     .Guest.hwvirt.svm.abPadding0                resb    2
    242     .Guest.hwvirt.svm.pvMsrBitmapR0             RTR0PTR_RES 1
    243     .Guest.hwvirt.svm.pvMsrBitmapR3             RTR3PTR_RES 1
    244     .Guest.hwvirt.svm.pvIoBitmapR0              RTR0PTR_RES 1
    245     .Guest.hwvirt.svm.pvIoBitmapR3              RTR3PTR_RES 1
     233    .Guest.hwvirt.svm.uMsrHSavePa            resq         1
     234    .Guest.hwvirt.svm.GCPhysVmcb             resq         1
     235    .Guest.hwvirt.svm.pVmcbR0                RTR0PTR_RES  1
     236    .Guest.hwvirt.svm.pVmcbR3                RTR3PTR_RES  1
    246237%if HC_ARCH_BITS == 32
    247     .Guest.hwvirt.svm.abPadding1                resb    16
    248 %endif
    249     .Guest.hwvirt.fLocalForcedActions           resd    1
     238    .Guest.hwvirt.svm.abPadding0             resb         8
     239%endif
     240    .Guest.hwvirt.svm.HostState              resb         184
     241    .Guest.hwvirt.svm.fGif                   resb         1
     242    .Guest.hwvirt.svm.cPauseFilter           resw         1
     243    .Guest.hwvirt.svm.cPauseFilterThreshold  resw         1
     244    .Guest.hwvirt.svm.fInterceptEvents       resb         1
     245    .Guest.hwvirt.svm.abPadding1             resb         2
     246    .Guest.hwvirt.svm.pvMsrBitmapR0          RTR0PTR_RES  1
     247    .Guest.hwvirt.svm.pvMsrBitmapR3          RTR3PTR_RES  1
     248    .Guest.hwvirt.svm.pvIoBitmapR0           RTR0PTR_RES  1
     249    .Guest.hwvirt.svm.pvIoBitmapR3           RTR3PTR_RES  1
     250%if HC_ARCH_BITS == 32
     251    .Guest.hwvirt.svm.abPadding2             resb         16
     252%endif
     253    .Guest.hwvirt.fLocalForcedActions        resd         1
    250254    alignb 64
    251255
     
    511515    .Hyper.abPadding          resb    12
    512516%endif
    513     .Hyper.hwvirt.svm.uMsrHSavePa               resq    1
    514     .Hyper.hwvirt.svm.GCPhysVmcb                resq    1
    515     .Hyper.hwvirt.svm.VmcbCtrl                  resb  256
    516     .Hyper.hwvirt.svm.HostState                 resb  184
    517     .Hyper.hwvirt.svm.fGif                      resb    1
    518     .Hyper.hwvirt.svm.cPauseFilter              resw    1
    519     .Hyper.hwvirt.svm.cPauseFilterThreshold     resw    1
    520     .Hyper.hwvirt.svm.fInterceptEvents          resb    1
    521     .Hyper.hwvirt.svm.abPadding0                resb    2
    522     .Hyper.hwvirt.svm.pvMsrBitmapR0             RTR0PTR_RES 1
    523     .Hyper.hwvirt.svm.pvMsrBitmapR3             RTR3PTR_RES 1
    524     .Hyper.hwvirt.svm.pvIoBitmapR0              RTR0PTR_RES 1
    525     .Hyper.hwvirt.svm.pvIoBitmapR3              RTR3PTR_RES 1
     517    .Hyper.hwvirt.svm.uMsrHSavePa            resq         1
     518    .Hyper.hwvirt.svm.GCPhysVmcb             resq         1
     519    .Hyper.hwvirt.svm.pVmcbR0                RTR0PTR_RES  1
     520    .Hyper.hwvirt.svm.pVmcbR3                RTR3PTR_RES  1
    526521%if HC_ARCH_BITS == 32
    527     .Hyper.hwvirt.svm.abPadding1                resb   16
    528 %endif
    529     .Hyper.hwvirt.fLocalForcedActions           resd    1
     522    .Hyper.hwvirt.svm.abPadding0             resb         8
     523%endif
     524    .Hyper.hwvirt.svm.HostState              resb         184
     525    .Hyper.hwvirt.svm.fGif                   resb         1
     526    .Hyper.hwvirt.svm.cPauseFilter           resw         1
     527    .Hyper.hwvirt.svm.cPauseFilterThreshold  resw         1
     528    .Hyper.hwvirt.svm.fInterceptEvents       resb         1
     529    .Hyper.hwvirt.svm.abPadding1             resb         2
     530    .Hyper.hwvirt.svm.pvMsrBitmapR0          RTR0PTR_RES  1
     531    .Hyper.hwvirt.svm.pvMsrBitmapR3          RTR3PTR_RES  1
     532    .Hyper.hwvirt.svm.pvIoBitmapR0           RTR0PTR_RES  1
     533    .Hyper.hwvirt.svm.pvIoBitmapR3           RTR3PTR_RES  1
     534%if HC_ARCH_BITS == 32
     535    .Hyper.hwvirt.svm.abPadding2             resb         16
     536%endif
     537    .Hyper.hwvirt.fLocalForcedActions        resd         1
    530538    alignb 64
    531539
  • trunk/src/VBox/VMM/testcase/tstVMStruct.h

    r67669 r67924  
    134134    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.uMsrHSavePa);
    135135    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.GCPhysVmcb);
    136     GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.VmcbCtrl);
     136    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pVmcbR0);
     137    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pVmcbR3);
    137138    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.HostState);
    138139    GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.fGif);
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