Changeset 87563 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Feb 3, 2021 1:23:13 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 142590
- Location:
- trunk/src/VBox/VMM/VMMR0
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMR0.cpp
r87559 r87563 1175 1175 pVM->hm.s.vmx.fUsePreemptTimerCfg = pVM->hmr0.s.vmx.fUsePreemptTimer; 1176 1176 pVM->hm.s.vmx.cPreemptTimerShift = g_cHmVmxPreemptTimerShift; 1177 pVM->hm.s. vmx.u64HostCr4ForRing3= g_uHmVmxHostCr4;1178 pVM->hm.s. vmx.u64HostMsrEferForRing3= g_uHmVmxHostMsrEfer;1179 pVM->hm.s. vmx.u64HostSmmMonitorCtlForRing3= g_uHmVmxHostSmmMonitorCtl;1180 HMGetVmxMsrsFromHwvirtMsrs(&g_HmMsrs, &pVM->hm.s. vmx.MsrsForRing3);1177 pVM->hm.s.ForR3.vmx.u64HostCr4 = g_uHmVmxHostCr4; 1178 pVM->hm.s.ForR3.vmx.u64HostMsrEfer = g_uHmVmxHostMsrEfer; 1179 pVM->hm.s.ForR3.vmx.u64HostSmmMonitorCtl = g_uHmVmxHostSmmMonitorCtl; 1180 HMGetVmxMsrsFromHwvirtMsrs(&g_HmMsrs, &pVM->hm.s.ForR3.vmx.Msrs); 1181 1181 /* If you need to tweak host MSRs for testing VMX R0 code, do it here. */ 1182 1182 1183 1183 /* Enable VPID if supported and configured. */ 1184 1184 if (g_HmMsrs.u.vmx.ProcCtls2.n.allowed1 & VMX_PROC_CTLS2_VPID) 1185 pVM->hm.s.vmx.fVpidForRing3 1186 = pVM->hmr0.s.vmx.fVpid = pVM->hm.s.vmx.fAllowVpid; /* Can be overridden by CFGM in HMR3Init(). */ 1185 pVM->hm.s.ForR3.vmx.fVpid = pVM->hmr0.s.vmx.fVpid = pVM->hm.s.vmx.fAllowVpid; /* Can be overridden by CFGM in HMR3Init(). */ 1187 1186 1188 1187 /* Use VMCS shadowing if supported. */ 1189 1188 pVM->hmr0.s.vmx.fUseVmcsShadowing = pVM->cpum.ro.GuestFeatures.fVmx 1190 1189 && (g_HmMsrs.u.vmx.ProcCtls2.n.allowed1 & VMX_PROC_CTLS2_VMCS_SHADOWING); 1191 pVM->hm.s. vmx.fUseVmcsShadowingForRing3= pVM->hmr0.s.vmx.fUseVmcsShadowing;1190 pVM->hm.s.ForR3.vmx.fUseVmcsShadowing = pVM->hmr0.s.vmx.fUseVmcsShadowing; 1192 1191 1193 1192 /* Use the VMCS controls for swapping the EFER MSR if supported. */ 1194 pVM->hm.s. vmx.fSupportsVmcsEferForRing3= g_fHmVmxSupportsVmcsEfer;1193 pVM->hm.s.ForR3.vmx.fSupportsVmcsEfer = g_fHmVmxSupportsVmcsEfer; 1195 1194 1196 1195 #if 0 … … 1210 1209 else if (pVM->hm.s.svm.fSupported) 1211 1210 { 1212 pVM->hm.s. svm.u32Rev= g_uHmSvmRev;1213 pVM->hm.s. svm.fFeaturesForRing3= g_fHmSvmFeatures;1214 pVM->hm.s. svm.u64MsrHwcr= g_HmMsrs.u.svm.u64MsrHwcr;1211 pVM->hm.s.ForR3.svm.u32Rev = g_uHmSvmRev; 1212 pVM->hm.s.ForR3.svm.fFeatures = g_fHmSvmFeatures; 1213 pVM->hm.s.ForR3.svm.u64MsrHwcr = g_HmMsrs.u.svm.u64MsrHwcr; 1215 1214 /* If you need to tweak host MSRs for testing SVM R0 code, do it here. */ 1216 1215 } 1217 pVM->hm.s. rcInit= g_rcHmInit;1218 pVM->hm.s. uMaxAsidForLog= g_uHmMaxAsid;1216 pVM->hm.s.ForR3.rcInit = g_rcHmInit; 1217 pVM->hm.s.ForR3.uMaxAsid = g_uHmMaxAsid; 1219 1218 1220 1219 /* … … 1275 1274 pVCpu->hmr0.s.fWorldSwitcher = fWorldSwitcher; 1276 1275 } 1277 pVM->hm.s. fWorldSwitcherForLog= fWorldSwitcher;1276 pVM->hm.s.ForR3.fWorldSwitcher = fWorldSwitcher; 1278 1277 1279 1278 -
trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp
r87561 r87563 994 994 AssertReturn(pVM->hm.s.svm.fSupported, VERR_INCOMPATIBLE_CONFIG); 995 995 bool const fNestedPaging = pVM->hm.s.fNestedPagingCfg; 996 AssertReturn( !fNestedPaging 997 || (pVM->hm.s.svm.fFeaturesForRing3 & X86_CPUID_SVM_FEATURE_EDX_NESTED_PAGING), 998 VERR_INCOMPATIBLE_CONFIG); 996 AssertReturn(!fNestedPaging || (g_fHmSvmFeatures & X86_CPUID_SVM_FEATURE_EDX_NESTED_PAGING), VERR_INCOMPATIBLE_CONFIG); 999 997 pVM->hmr0.s.fNestedPaging = fNestedPaging; 1000 998 pVM->hmr0.s.fAllow64BitGuests = pVM->hm.s.fAllow64BitGuestsCfg; -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r87562 r87563 1453 1453 VMXReadVmcs32(VMX_VMCS32_RO_VM_INSTR_ERROR, &pVCpu->hm.s.vmx.LastError.u32InstrError); 1454 1454 } 1455 pVCpu->CTX_SUFF(pVM)->hm.s. rcInit = rc;1455 pVCpu->CTX_SUFF(pVM)->hm.s.ForR3.rcInit = rc; 1456 1456 } 1457 1457 … … 1738 1738 1739 1739 if (pVM) 1740 pVM->hm.s. vmx.HCPhysVmxEnableError = HCPhysCpuPage;1740 pVM->hm.s.ForR3.vmx.HCPhysVmxEnableError = HCPhysCpuPage; 1741 1741 } 1742 1742 … … 3351 3351 LogRelFunc(("Only SINGLE_CONTEXT_RETAIN_GLOBALS supported. Ignoring VPID.\n")); 3352 3352 pVM->hmr0.s.vmx.enmTlbFlushVpid = VMXTLBFLUSHVPID_NOT_SUPPORTED; 3353 pVM->hm .s.vmx.fVpidForRing3 = pVM->hmr0.s.vmx.fVpid= false;3353 pVM->hmr0.s.vmx.fVpid = false; 3354 3354 } 3355 3355 } … … 3359 3359 Log4Func(("VPID supported without INVEPT support. Ignoring VPID.\n")); 3360 3360 pVM->hmr0.s.vmx.enmTlbFlushVpid = VMXTLBFLUSHVPID_NOT_SUPPORTED; 3361 pVM->hm .s.vmx.fVpidForRing3 = pVM->hmr0.s.vmx.fVpid= false;3361 pVM->hmr0.s.vmx.fVpid = false; 3362 3362 } 3363 3363 } … … 3379 3379 * Copy out the result to ring-3. 3380 3380 */ 3381 pVM->hm.s. vmx.fVpidForRing3= pVM->hmr0.s.vmx.fVpid;3382 pVM->hm.s. vmx.enmTlbFlushTypeForRing3= pVM->hmr0.s.vmx.enmTlbFlushType;3383 pVM->hm.s. vmx.enmTlbFlushEptForRing3= pVM->hmr0.s.vmx.enmTlbFlushEpt;3384 pVM->hm.s. vmx.enmTlbFlushVpidForRing3= pVM->hmr0.s.vmx.enmTlbFlushVpid;3381 pVM->hm.s.ForR3.vmx.fVpid = pVM->hmr0.s.vmx.fVpid; 3382 pVM->hm.s.ForR3.vmx.enmTlbFlushType = pVM->hmr0.s.vmx.enmTlbFlushType; 3383 pVM->hm.s.ForR3.vmx.enmTlbFlushEpt = pVM->hmr0.s.vmx.enmTlbFlushEpt; 3384 pVM->hm.s.ForR3.vmx.enmTlbFlushVpid = pVM->hmr0.s.vmx.enmTlbFlushVpid; 3385 3385 return VINF_SUCCESS; 3386 3386 } … … 3482 3482 pVM->hmr0.s.vmx.idLbrTosMsr = idLbrTosMsr; 3483 3483 3484 pVM->hm.s. vmx.idLbrFromIpMsrFirstForRing3= pVM->hmr0.s.vmx.idLbrFromIpMsrFirst = idLbrFromIpMsrFirst;3485 pVM->hm.s. vmx.idLbrFromIpMsrLastForRing3= pVM->hmr0.s.vmx.idLbrFromIpMsrLast = idLbrFromIpMsrLast;3486 3487 pVM->hm.s. vmx.idLbrToIpMsrFirstForRing3= pVM->hmr0.s.vmx.idLbrToIpMsrFirst = idLbrToIpMsrFirst;3488 pVM->hm.s. vmx.idLbrToIpMsrLastForRing3= pVM->hmr0.s.vmx.idLbrToIpMsrLast = idLbrToIpMsrLast;3484 pVM->hm.s.ForR3.vmx.idLbrFromIpMsrFirst = pVM->hmr0.s.vmx.idLbrFromIpMsrFirst = idLbrFromIpMsrFirst; 3485 pVM->hm.s.ForR3.vmx.idLbrFromIpMsrLast = pVM->hmr0.s.vmx.idLbrFromIpMsrLast = idLbrFromIpMsrLast; 3486 3487 pVM->hm.s.ForR3.vmx.idLbrToIpMsrFirst = pVM->hmr0.s.vmx.idLbrToIpMsrFirst = idLbrToIpMsrFirst; 3488 pVM->hm.s.ForR3.vmx.idLbrToIpMsrLast = pVM->hmr0.s.vmx.idLbrToIpMsrLast = idLbrToIpMsrLast; 3489 3489 return VINF_SUCCESS; 3490 3490 } … … 4537 4537 4538 4538 /* Initialize these always, see hmR3InitFinalizeR0().*/ 4539 pVM->hm.s. vmx.enmTlbFlushEptForRing3= pVM->hmr0.s.vmx.enmTlbFlushEpt = VMXTLBFLUSHEPT_NONE;4540 pVM->hm.s. vmx.enmTlbFlushVpidForRing3= pVM->hmr0.s.vmx.enmTlbFlushVpid = VMXTLBFLUSHVPID_NONE;4539 pVM->hm.s.ForR3.vmx.enmTlbFlushEpt = pVM->hmr0.s.vmx.enmTlbFlushEpt = VMXTLBFLUSHEPT_NONE; 4540 pVM->hm.s.ForR3.vmx.enmTlbFlushVpid = pVM->hmr0.s.vmx.enmTlbFlushVpid = VMXTLBFLUSHVPID_NONE; 4541 4541 4542 4542 /* Setup the tagged-TLB flush handlers. */
Note:
See TracChangeset
for help on using the changeset viewer.