Changeset 91287 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Sep 16, 2021 9:30:45 PM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 146947
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp
r91281 r91287 2097 2097 Assert(CPUMIsGuestInSvmNestedHwVirtMode(pCtx)); 2098 2098 2099 PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm. CTX_SUFF(pVmcb)->ctrl;2099 PCSVMVMCBCTRL pVmcbCtrl = &pCtx->hwvirt.svm.Vmcb.ctrl; 2100 2100 PCSVMINTCTRL pVmcbIntCtrl = &pVmcbCtrl->IntCtrl; 2101 2101 Assert(!pVmcbIntCtrl->n.u1VGifEnable); /* We don't support passing virtual-GIF feature to the guest yet. */ … … 2116 2116 VMM_INT_DECL(uint8_t) CPUMGetGuestSvmVirtIntrVector(PCCPUMCTX pCtx) 2117 2117 { 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; 2120 2119 } 2121 2120 … … 2212 2211 uint64_t offTsc; 2213 2212 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; 2219 2214 return uTscValue + offTsc; 2220 2215 } … … 2251 2246 uint64_t offTsc; 2252 2247 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; 2258 2249 return uTscValue - offTsc; 2259 2250 } -
trunk/src/VBox/VMM/VMMAll/HMSVMAll.cpp
r87563 r91287 139 139 * by a physical CPU on #VMEXIT. 140 140 */ 141 PSVMVMCBCTRL pVmcbNstGstCtrl = &pCtx->hwvirt.svm. CTX_SUFF(pVmcb)->ctrl;141 PSVMVMCBCTRL pVmcbNstGstCtrl = &pCtx->hwvirt.svm.Vmcb.ctrl; 142 142 pVmcbNstGstCtrl->u16InterceptRdCRx = pVmcbNstGstCache->u16InterceptRdCRx; 143 143 pVmcbNstGstCtrl->u16InterceptWrCRx = pVmcbNstGstCache->u16InterceptWrCRx; -
trunk/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h
r91281 r91287 5562 5562 if (CPUMIsGuestInSvmNestedHwVirtMode(IEM_GET_CTX(pVCpu))) 5563 5563 { 5564 PCSVMVMCBCTRL pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm. CTX_SUFF(pVmcb)->ctrl;5564 PCSVMVMCBCTRL pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb.ctrl; 5565 5565 if (CPUMIsGuestSvmVirtIntrMasking(pVCpu, IEM_GET_CTX(pVCpu))) 5566 5566 { … … 6098 6098 } 6099 6099 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; 6102 6101 if (CPUMIsGuestSvmVirtIntrMasking(pVCpu, IEM_GET_CTX(pVCpu))) 6103 6102 { -
trunk/src/VBox/VMM/VMMAll/IEMAllCImplSvmInstr.cpp.h
r82968 r91287 150 150 PSVMVMCB pVmcbMem; 151 151 PGMPAGEMAPLOCK PgLockMem; 152 PSVMVMCBCTRL pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm. CTX_SUFF(pVmcb)->ctrl;152 PSVMVMCBCTRL pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb.ctrl; 153 153 rcStrict = iemMemPageMap(pVCpu, pVCpu->cpum.GstCtx.hwvirt.svm.GCPhysVmcb, IEM_ACCESS_DATA_RW, (void **)&pVmcbMem, 154 154 &PgLockMem); … … 380 380 */ 381 381 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)); 383 383 if (RT_SUCCESS(rc)) 384 384 { … … 395 395 * typically enter hardware-assisted SVM soon anyway, see @bugref{7243#c113}. 396 396 */ 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; 399 399 400 400 RT_ZERO(pVmcbCtrl->u8Reserved0); … … 916 916 && !(uErr & X86_TRAP_PF_ID)) 917 917 { 918 PSVMVMCBCTRL pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm. CTX_SUFF(pVmcb)->ctrl;918 PSVMVMCBCTRL pVmcbCtrl = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb.ctrl; 919 919 # ifdef IEM_WITH_CODE_TLB 920 920 uint8_t const *pbInstrBuf = pVCpu->iem.s.pbInstrBuf; … … 934 934 IEM_SVM_UPDATE_NRIP(pVCpu); 935 935 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, 937 937 u8Vector, uExitInfo1, uExitInfo2)); 938 938 IEM_SVM_VMEXIT_RET(pVCpu, SVM_EXIT_XCPT_0 + u8Vector, uExitInfo1, uExitInfo2); -
trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp
r91015 r91287 1967 1967 1968 1968 /** 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 */ 1976 GVMMR0DECL(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 /** 1969 1987 * This is will wake up expired and soon-to-be expired VMs. 1970 1988 * -
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r91271 r91287 1219 1219 #ifdef VBOX_WITH_NESTED_HWVIRT_SVM 1220 1220 if (CPUMIsGuestInSvmNestedHwVirtMode(&pVCpu->cpum.GstCtx)) 1221 return pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb);1221 return &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb; 1222 1222 #endif 1223 1223 return pVCpu->hmr0.s.svm.pVmcb; … … 2233 2233 PVMCC pVM = pVCpu->CTX_SUFF(pVM); 2234 2234 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; 2236 2236 PSVMVMCBCTRL pVmcbNstGstCtrl = &pVmcbNstGst->ctrl; 2237 2237 … … 2542 2542 if (!fWasCached) 2543 2543 { 2544 PCSVMVMCB pVmcbNstGst = pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb);2544 PCSVMVMCB pVmcbNstGst = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb; 2545 2545 PCSVMVMCBCTRL pVmcbNstGstCtrl = &pVmcbNstGst->ctrl; 2546 2546 pVmcbNstGstCache->u16InterceptRdCRx = pVmcbNstGstCtrl->u16InterceptRdCRx; … … 2575 2575 static void hmR0SvmSetupVmcbNested(PVMCPUCC pVCpu) 2576 2576 { 2577 PSVMVMCB pVmcbNstGst = pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb);2577 PSVMVMCB pVmcbNstGst = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb; 2578 2578 PSVMVMCBCTRL pVmcbNstGstCtrl = &pVmcbNstGst->ctrl; 2579 2579 … … 4674 4674 Assert(pcLoops); 4675 4675 Assert(*pcLoops <= pVCpu->CTX_SUFF(pVM)->hmr0.s.cMaxResumeLoops); 4676 RTHCPHYS const HCPhysVmcb = GVMMR0ConvertGVMPtr2HCPhys(pVCpu->pGVM, &pCtx->hwvirt.svm.Vmcb); 4676 4677 4677 4678 SVMTRANSIENT SvmTransient; 4678 4679 RT_ZERO(SvmTransient); 4679 4680 SvmTransient.fUpdateTscOffsetting = true; 4680 SvmTransient.pVmcb = pCtx->hwvirt.svm.CTX_SUFF(pVmcb);4681 SvmTransient.pVmcb = &pCtx->hwvirt.svm.Vmcb; 4681 4682 SvmTransient.fIsNestedGuest = true; 4682 4683 … … 4703 4704 hmR0SvmPreRunGuestCommitted(pVCpu, &SvmTransient); 4704 4705 4705 rc = hmR0SvmRunGuest(pVCpu, pCtx->hwvirt.svm.HCPhysVmcb);4706 rc = hmR0SvmRunGuest(pVCpu, HCPhysVmcb); 4706 4707 4707 4708 /* Restore any residual host-state and save any bits shared between host and guest … … 4728 4729 HMSVM_NESTED_EXITCODE_STAM_COUNTER_INC(SvmTransient.u64ExitCode); 4729 4730 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); 4731 4732 rc = hmR0SvmHandleExitNested(pVCpu, &SvmTransient); 4732 4733 STAM_PROFILE_ADV_STOP(&pVCpu->hm.s.StatExitHandling, x); … … 4872 4873 * nested-guest. If it isn't, it should be handled by the (outer) guest. 4873 4874 */ 4874 PSVMVMCB pVmcbNstGst = pVCpu->cpum.GstCtx.hwvirt.svm.CTX_SUFF(pVmcb);4875 PSVMVMCB pVmcbNstGst = &pVCpu->cpum.GstCtx.hwvirt.svm.Vmcb; 4875 4876 PCCPUMCTX pCtx = &pVCpu->cpum.GstCtx; 4876 4877 PSVMVMCBCTRL pVmcbNstGstCtrl = &pVmcbNstGst->ctrl; -
trunk/src/VBox/VMM/VMMR3/CPUM.cpp
r91286 r91287 1021 1021 { 1022 1022 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;1029 1023 1030 1024 if (pVCpu->cpum.s.Guest.hwvirt.svm.pvMsrBitmapR3) … … 1061 1055 pVCpu->cpum.s.Guest.hwvirt.enmHwvirt = CPUMHWVIRT_SVM; 1062 1056 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)); 1080 1058 1081 1059 /* … … 1136 1114 PCPUMCTX pCtx = &pVCpu->cpum.s.Guest; 1137 1115 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); 1141 1118 pCtx->hwvirt.svm.uMsrHSavePa = 0; 1142 1119 pCtx->hwvirt.svm.uPrevPauseTick = 0; … … 2667 2644 if (pVM->cpum.s.GuestFeatures.fSvm) 2668 2645 { 2669 Assert(pGstCtx->hwvirt.svm.CTX_SUFF(pVmcb));2670 2646 SSMR3PutU64(pSSM, pGstCtx->hwvirt.svm.uMsrHSavePa); 2671 2647 SSMR3PutGCPhys(pSSM, pGstCtx->hwvirt.svm.GCPhysVmcb); … … 2676 2652 SSMR3PutStructEx(pSSM, &pGstCtx->hwvirt.svm.HostState, sizeof(pGstCtx->hwvirt.svm.HostState), 0 /* fFlags */, 2677 2653 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)); 2679 2655 SSMR3PutMem(pSSM, pGstCtx->hwvirt.svm.pvMsrBitmapR3, SVM_MSRPM_PAGES << X86_PAGE_4K_SHIFT); 2680 2656 SSMR3PutMem(pSSM, pGstCtx->hwvirt.svm.pvIoBitmapR3, SVM_IOPM_PAGES << X86_PAGE_4K_SHIFT); … … 2954 2930 if (pVM->cpum.s.GuestFeatures.fSvm) 2955 2931 { 2956 Assert(pGstCtx->hwvirt.svm.CTX_SUFF(pVmcb));2957 2932 SSMR3GetU64(pSSM, &pGstCtx->hwvirt.svm.uMsrHSavePa); 2958 2933 SSMR3GetGCPhys(pSSM, &pGstCtx->hwvirt.svm.GCPhysVmcb); … … 2963 2938 SSMR3GetStructEx(pSSM, &pGstCtx->hwvirt.svm.HostState, sizeof(pGstCtx->hwvirt.svm.HostState), 2964 2939 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)); 2966 2941 SSMR3GetMem(pSSM, pGstCtx->hwvirt.svm.pvMsrBitmapR3, SVM_MSRPM_PAGES << X86_PAGE_4K_SHIFT); 2967 2942 SSMR3GetMem(pSSM, pGstCtx->hwvirt.svm.pvIoBitmapR3, SVM_IOPM_PAGES << X86_PAGE_4K_SHIFT); … … 4151 4126 pHlp->pfnPrintf(pHlp, " GCPhysVmcb = %#RGp\n", pCtx->hwvirt.svm.GCPhysVmcb); 4152 4127 pHlp->pfnPrintf(pHlp, " VmcbCtrl:\n"); 4153 cpumR3InfoSvmVmcbCtrl(pHlp, &pCtx->hwvirt.svm. pVmcbR3->ctrl, " " /* pszPrefix */);4128 cpumR3InfoSvmVmcbCtrl(pHlp, &pCtx->hwvirt.svm.Vmcb.ctrl, " " /* pszPrefix */); 4154 4129 pHlp->pfnPrintf(pHlp, " VmcbStateSave:\n"); 4155 cpumR3InfoSvmVmcbStateSave(pHlp, &pCtx->hwvirt.svm. pVmcbR3->guest, " " /* pszPrefix */);4130 cpumR3InfoSvmVmcbStateSave(pHlp, &pCtx->hwvirt.svm.Vmcb.guest, " " /* pszPrefix */); 4156 4131 pHlp->pfnPrintf(pHlp, " HostState:\n"); 4157 4132 pHlp->pfnPrintf(pHlp, " uEferMsr = %#RX64\n", pCtx->hwvirt.svm.HostState.uEferMsr); -
trunk/src/VBox/VMM/include/CPUMInternal.mac
r91283 r91287 231 231 232 232 alignb 4096 233 .Guest.hwvirt.svm.Vmcb resb 4096 233 234 .Guest.hwvirt.svm.uMsrHSavePa resq 1 234 235 .Guest.hwvirt.svm.GCPhysVmcb resq 1 235 .Guest.hwvirt.svm.pVmcbR0 RTR0PTR_RES 1236 alignb 8237 .Guest.hwvirt.svm.pVmcbR3 RTR3PTR_RES 1238 236 alignb 8 239 237 .Guest.hwvirt.svm.HostState resb 184 … … 250 248 alignb 8 251 249 .Guest.hwvirt.svm.pvIoBitmapR3 RTR3PTR_RES 1 252 alignb 8 253 .Guest.hwvirt.svm.HCPhysVmcb RTHCPHYS_RES 1254 .Guest.hwvirt.svm.abPadding0 resb 272250 251 ;.unnamed_padding.1 resb 0 252 alignb 8 255 253 .Guest.hwvirt.enmHwvirt resd 1 256 254 .Guest.hwvirt.fGif resb 1 -
trunk/src/VBox/VMM/testcase/tstAsmStructsAsm-lst.sed
r91281 r91287 31 31 /^\.data$/d 32 32 /^\.bss$/d 33 / *\.unnamed_padding\./d 33 34 s/[[:space:]][[:space:]]*/ /g 34 35 -
trunk/src/VBox/VMM/testcase/tstVMStruct.h
r91286 r91287 128 128 GEN_CHECK_SIZE(CPUMCTX); 129 129 GEN_CHECK_OFF(CPUMCTX, hwvirt); 130 GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.Vmcb); 130 131 GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.uMsrHSavePa); 131 132 GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.GCPhysVmcb); 132 GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pVmcbR0);133 GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pVmcbR3);134 133 GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.HostState); 135 134 GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.uPrevPauseTick); … … 141 140 GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pvIoBitmapR0); 142 141 GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.pvIoBitmapR3); 143 GEN_CHECK_OFF(CPUMCTX, hwvirt.svm.HCPhysVmcb);144 142 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.GCPhysVmxon); 145 143 GEN_CHECK_OFF(CPUMCTX, hwvirt.vmx.GCPhysVmcs);
Note:
See TracChangeset
for help on using the changeset viewer.