Changeset 101309 in vbox
- Timestamp:
- Sep 29, 2023 5:58:03 AM (16 months ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/cpum-x86-amd64.h
r100994 r101309 1113 1113 /** VMX: Supports XSAVES/XRSTORS. */ 1114 1114 uint32_t fVmxXsavesXrstors : 1; 1115 /** VMX: Supports PASID translation. */ 1116 uint32_t fVmxPasidTranslate : 1; 1115 1117 /** VMX: Supports mode-based execute control for EPT. */ 1116 1118 uint32_t fVmxModeBasedExecuteEpt : 1; … … 1123 1125 /** VMX: Supports TPAUSE, UMONITOR, or UMWAIT. */ 1124 1126 uint32_t fVmxUserWaitPause : 1; 1127 /** VMX: Supports PCONFIG. */ 1128 uint32_t fVmxPconfig : 1; 1125 1129 /** VMX: Supports enclave (ENCLV) exiting. */ 1126 1130 uint32_t fVmxEnclvExit : 1; 1131 /** VMX: Supports VMM bus-lock detection. */ 1132 uint32_t fVmxBusLockDetect : 1; 1133 /** VMX: Supports instruction timeout. */ 1134 uint32_t fVmxInstrTimeout : 1; 1127 1135 /** @} */ 1128 1136 … … 1131 1139 /** VMX: Supports LOADIWKEY exiting. */ 1132 1140 uint32_t fVmxLoadIwKeyExit : 1; 1141 /** VMX: Supports hypervisor-managed linear address translation (HLAT). */ 1142 uint32_t fVmxHlat : 1; 1143 /** VMX: Supports EPT paging-write control. */ 1144 uint32_t fVmxEptPagingWrite : 1; 1145 /** VMX: Supports Guest-paging verification. */ 1146 uint32_t fVmxGstPagingVerify : 1; 1147 /** VMX: Supports IPI virtualization. */ 1148 uint32_t fVmxIpiVirt : 1; 1149 /** VMX: Supports virtualize IA32_SPEC_CTRL. */ 1150 uint32_t fVmxVirtSpecCtrl : 1; 1133 1151 /** @} */ 1134 1152 … … 1182 1200 1183 1201 /** VMX: Padding / reserved for future features. */ 1184 uint32_t fVmxPadding0 : 16;1202 uint32_t fVmxPadding0 : 7; 1185 1203 /** VMX: Padding / reserved for future, making it a total of 128 bits. */ 1186 1204 uint32_t fVmxPadding1; -
trunk/src/VBox/VMM/VMMAll/CPUMAllCpuId.cpp
r100935 r101309 1333 1333 pFeatures->fVmxConcealVmxFromPt = RT_BOOL(fProcCtls2 & VMX_PROC_CTLS2_CONCEAL_VMX_FROM_PT); 1334 1334 pFeatures->fVmxXsavesXrstors = RT_BOOL(fProcCtls2 & VMX_PROC_CTLS2_XSAVES_XRSTORS); 1335 pFeatures->fVmxPasidTranslate = RT_BOOL(fProcCtls2 & VMX_PROC_CTLS2_PASID_TRANSLATE); 1335 1336 pFeatures->fVmxModeBasedExecuteEpt = RT_BOOL(fProcCtls2 & VMX_PROC_CTLS2_MODE_BASED_EPT_PERM); 1336 1337 pFeatures->fVmxSppEpt = RT_BOOL(fProcCtls2 & VMX_PROC_CTLS2_SPP_EPT); … … 1338 1339 pFeatures->fVmxUseTscScaling = RT_BOOL(fProcCtls2 & VMX_PROC_CTLS2_TSC_SCALING); 1339 1340 pFeatures->fVmxUserWaitPause = RT_BOOL(fProcCtls2 & VMX_PROC_CTLS2_USER_WAIT_PAUSE); 1341 pFeatures->fVmxPconfig = RT_BOOL(fProcCtls2 & VMX_PROC_CTLS2_PCONFIG); 1340 1342 pFeatures->fVmxEnclvExit = RT_BOOL(fProcCtls2 & VMX_PROC_CTLS2_ENCLV_EXIT); 1343 pFeatures->fVmxBusLockDetect = RT_BOOL(fProcCtls2 & VMX_PROC_CTLS2_BUS_LOCK_DETECT); 1344 pFeatures->fVmxInstrTimeout = RT_BOOL(fProcCtls2 & VMX_PROC_CTLS2_INSTR_TIMEOUT); 1341 1345 } 1342 1346 … … 1345 1349 uint64_t const fProcCtls3 = pFeatures->fVmxTertiaryExecCtls ? pVmxMsrs->u64ProcCtls3 : 0; 1346 1350 pFeatures->fVmxLoadIwKeyExit = RT_BOOL(fProcCtls3 & VMX_PROC_CTLS3_LOADIWKEY_EXIT); 1351 pFeatures->fVmxHlat = RT_BOOL(fProcCtls3 & VMX_PROC_CTLS3_HLAT); 1352 pFeatures->fVmxEptPagingWrite = RT_BOOL(fProcCtls3 & VMX_PROC_CTLS3_EPT_PAGING_WRITE); 1353 pFeatures->fVmxGstPagingVerify = RT_BOOL(fProcCtls3 & VMX_PROC_CTLS3_GST_PAGING_VERIFY); 1354 pFeatures->fVmxIpiVirt = RT_BOOL(fProcCtls3 & VMX_PROC_CTLS3_IPI_VIRT); 1355 pFeatures->fVmxVirtSpecCtrl = RT_BOOL(fProcCtls3 & VMX_PROC_CTLS3_VIRT_SPEC_CTRL); 1347 1356 } 1348 1357 -
trunk/src/VBox/VMM/VMMR3/CPUM.cpp
r100940 r101309 1250 1250 VMXFEATDUMP("VmcsShadowing - VMCS shadowing ", fVmxVmcsShadowing); 1251 1251 VMXFEATDUMP("RdseedExiting - RDSEED exiting ", fVmxRdseedExit); 1252 VMXFEATDUMP("PML - Page-Modification Log (PML)", fVmxPml);1252 VMXFEATDUMP("PML - Page-Modification Log ", fVmxPml); 1253 1253 VMXFEATDUMP("EptVe - EPT violations can cause #VE ", fVmxEptXcptVe); 1254 1254 VMXFEATDUMP("ConcealVmxFromPt - Conceal VMX from Processor Trace ", fVmxConcealVmxFromPt); 1255 1255 VMXFEATDUMP("XsavesXRstors - Enable XSAVES/XRSTORS ", fVmxXsavesXrstors); 1256 VMXFEATDUMP("PasidTranslate - PASID translation ", fVmxPasidTranslate); 1256 1257 VMXFEATDUMP("ModeBasedExecuteEpt - Mode-based execute permissions ", fVmxModeBasedExecuteEpt); 1257 1258 VMXFEATDUMP("SppEpt - Sub-page page write permissions for EPT ", fVmxSppEpt); … … 1259 1260 VMXFEATDUMP("UseTscScaling - Use TSC scaling ", fVmxUseTscScaling); 1260 1261 VMXFEATDUMP("UserWaitPause - Enable TPAUSE, UMONITOR and UMWAIT ", fVmxUserWaitPause); 1262 VMXFEATDUMP("Pconfig - Enable PCONFIG ", fVmxPconfig); 1261 1263 VMXFEATDUMP("EnclvExit - ENCLV exiting ", fVmxEnclvExit); 1264 VMXFEATDUMP("BusLockDetect - VMM Bus-Lock detection ", fVmxBusLockDetect); 1265 VMXFEATDUMP("InstrTimeout - Instruction timeout ", fVmxInstrTimeout); 1262 1266 1263 1267 /* Tertiary processor-based controls. */ 1264 1268 VMXFEATDUMP("LoadIwKeyExit - LOADIWKEY exiting ", fVmxLoadIwKeyExit); 1269 VMXFEATDUMP("HLAT - Hypervisor-managed linear-address translation ", fVmxHlat); 1270 VMXFEATDUMP("EptPagingWrite - EPT paging-write ", fVmxEptPagingWrite); 1271 VMXFEATDUMP("GstPagingVerify - Guest-paging verification ", fVmxGstPagingVerify); 1272 VMXFEATDUMP("IpiVirt - IPI virtualization ", fVmxIpiVirt); 1273 VMXFEATDUMP("VirtSpecCtrl - Virtualize IA32_SPEC_CTRL ", fVmxVirtSpecCtrl); 1265 1274 1266 1275 /* VM-entry controls. */ … … 1283 1292 /* Miscellaneous data. */ 1284 1293 VMXFEATDUMP("ExitSaveEferLma - Save IA32_EFER.LMA on VM-exit ", fVmxExitSaveEferLma); 1285 VMXFEATDUMP("IntelPt - Intel P T (Processor Trace) in VMX operation", fVmxPt);1294 VMXFEATDUMP("IntelPt - Intel Processor Trace in VMX operation ", fVmxPt); 1286 1295 VMXFEATDUMP("VmwriteAll - VMWRITE to any supported VMCS field ", fVmxVmwriteAll); 1287 1296 VMXFEATDUMP("EntryInjectSoftInt - Inject softint. with 0-len instr. ", fVmxEntryInjectSoftInt); … … 1433 1442 | (pGuestFeatures->fVmxConcealVmxFromPt << VMX_BF_PROC_CTLS2_CONCEAL_VMX_FROM_PT_SHIFT) 1434 1443 | (pGuestFeatures->fVmxXsavesXrstors << VMX_BF_PROC_CTLS2_XSAVES_XRSTORS_SHIFT ) 1444 | (pGuestFeatures->fVmxPasidTranslate << VMX_BF_PROC_CTLS2_PASID_TRANSLATE_SHIFT ) 1435 1445 | (pGuestFeatures->fVmxModeBasedExecuteEpt << VMX_BF_PROC_CTLS2_MODE_BASED_EPT_PERM_SHIFT) 1436 1446 | (pGuestFeatures->fVmxSppEpt << VMX_BF_PROC_CTLS2_SPP_EPT_SHIFT ) … … 1438 1448 | (pGuestFeatures->fVmxUseTscScaling << VMX_BF_PROC_CTLS2_TSC_SCALING_SHIFT ) 1439 1449 | (pGuestFeatures->fVmxUserWaitPause << VMX_BF_PROC_CTLS2_USER_WAIT_PAUSE_SHIFT ) 1440 | (pGuestFeatures->fVmxEnclvExit << VMX_BF_PROC_CTLS2_ENCLV_EXIT_SHIFT ); 1450 | (pGuestFeatures->fVmxPconfig << VMX_BF_PROC_CTLS2_PCONFIG_SHIFT ) 1451 | (pGuestFeatures->fVmxEnclvExit << VMX_BF_PROC_CTLS2_ENCLV_EXIT_SHIFT ) 1452 | (pGuestFeatures->fVmxBusLockDetect << VMX_BF_PROC_CTLS2_BUSLOCK_DETECT_SHIFT ) 1453 | (pGuestFeatures->fVmxInstrTimeout << VMX_BF_PROC_CTLS2_INSTR_TIMEOUT_SHIFT ); 1441 1454 uint32_t const fAllowed0 = 0; 1442 1455 uint32_t const fAllowed1 = fFeatures; … … 1447 1460 if (pGuestFeatures->fVmxTertiaryExecCtls) 1448 1461 { 1449 pGuestVmxMsrs->u64ProcCtls3 = (pGuestFeatures->fVmxLoadIwKeyExit << VMX_BF_PROC_CTLS3_LOADIWKEY_EXIT_SHIFT); 1462 pGuestVmxMsrs->u64ProcCtls3 = (pGuestFeatures->fVmxLoadIwKeyExit << VMX_BF_PROC_CTLS3_LOADIWKEY_EXIT_SHIFT) 1463 | (pGuestFeatures->fVmxHlat << VMX_BF_PROC_CTLS3_HLAT_SHIFT) 1464 | (pGuestFeatures->fVmxEptPagingWrite << VMX_BF_PROC_CTLS3_EPT_PAGING_WRITE_SHIFT) 1465 | (pGuestFeatures->fVmxGstPagingVerify << VMX_BF_PROC_CTLS3_GST_PAGING_VERIFY_SHIFT) 1466 | (pGuestFeatures->fVmxIpiVirt << VMX_BF_PROC_CTLS3_IPI_VIRT_SHIFT) 1467 | (pGuestFeatures->fVmxVirtSpecCtrl << VMX_BF_PROC_CTLS3_VIRT_SPEC_CTRL_SHIFT); 1450 1468 } 1451 1469 … … 1867 1885 EmuFeat.fVmxConcealVmxFromPt = 0; 1868 1886 EmuFeat.fVmxXsavesXrstors = 0; 1887 EmuFeat.fVmxPasidTranslate = 0; 1869 1888 EmuFeat.fVmxModeBasedExecuteEpt = 0; 1870 1889 EmuFeat.fVmxSppEpt = 0; … … 1872 1891 EmuFeat.fVmxUseTscScaling = 0; 1873 1892 EmuFeat.fVmxUserWaitPause = 0; 1893 EmuFeat.fVmxPconfig = 0; 1874 1894 EmuFeat.fVmxEnclvExit = 0; 1895 EmuFeat.fVmxBusLockDetect = 0; 1896 EmuFeat.fVmxInstrTimeout = 0; 1875 1897 EmuFeat.fVmxLoadIwKeyExit = 0; 1898 EmuFeat.fVmxHlat = 0; 1899 EmuFeat.fVmxEptPagingWrite = 0; 1900 EmuFeat.fVmxGstPagingVerify = 0; 1901 EmuFeat.fVmxIpiVirt = 0; 1902 EmuFeat.fVmxVirtSpecCtrl = 0; 1876 1903 EmuFeat.fVmxEntryLoadDebugCtls = 1; 1877 1904 EmuFeat.fVmxIa32eModeGuest = 1; … … 1949 1976 pGuestFeat->fVmxConcealVmxFromPt = (pBaseFeat->fVmxConcealVmxFromPt & EmuFeat.fVmxConcealVmxFromPt ); 1950 1977 pGuestFeat->fVmxXsavesXrstors = (pBaseFeat->fVmxXsavesXrstors & EmuFeat.fVmxXsavesXrstors ); 1978 pGuestFeat->fVmxPasidTranslate = (pBaseFeat->fVmxPasidTranslate & EmuFeat.fVmxPasidTranslate ); 1951 1979 pGuestFeat->fVmxModeBasedExecuteEpt = (pBaseFeat->fVmxModeBasedExecuteEpt & EmuFeat.fVmxModeBasedExecuteEpt ); 1952 1980 pGuestFeat->fVmxSppEpt = (pBaseFeat->fVmxSppEpt & EmuFeat.fVmxSppEpt ); … … 1954 1982 pGuestFeat->fVmxUseTscScaling = (pBaseFeat->fVmxUseTscScaling & EmuFeat.fVmxUseTscScaling ); 1955 1983 pGuestFeat->fVmxUserWaitPause = (pBaseFeat->fVmxUserWaitPause & EmuFeat.fVmxUserWaitPause ); 1984 pGuestFeat->fVmxPconfig = (pBaseFeat->fVmxPconfig & EmuFeat.fVmxPconfig ); 1956 1985 pGuestFeat->fVmxEnclvExit = (pBaseFeat->fVmxEnclvExit & EmuFeat.fVmxEnclvExit ); 1986 pGuestFeat->fVmxBusLockDetect = (pBaseFeat->fVmxBusLockDetect & EmuFeat.fVmxBusLockDetect ); 1987 pGuestFeat->fVmxInstrTimeout = (pBaseFeat->fVmxInstrTimeout & EmuFeat.fVmxInstrTimeout ); 1957 1988 pGuestFeat->fVmxLoadIwKeyExit = (pBaseFeat->fVmxLoadIwKeyExit & EmuFeat.fVmxLoadIwKeyExit ); 1989 pGuestFeat->fVmxHlat = (pBaseFeat->fVmxHlat & EmuFeat.fVmxHlat ); 1990 pGuestFeat->fVmxEptPagingWrite = (pBaseFeat->fVmxEptPagingWrite & EmuFeat.fVmxEptPagingWrite ); 1991 pGuestFeat->fVmxGstPagingVerify = (pBaseFeat->fVmxGstPagingVerify & EmuFeat.fVmxGstPagingVerify ); 1992 pGuestFeat->fVmxIpiVirt = (pBaseFeat->fVmxIpiVirt & EmuFeat.fVmxIpiVirt ); 1993 pGuestFeat->fVmxVirtSpecCtrl = (pBaseFeat->fVmxVirtSpecCtrl & EmuFeat.fVmxVirtSpecCtrl ); 1958 1994 pGuestFeat->fVmxEntryLoadDebugCtls = (pBaseFeat->fVmxEntryLoadDebugCtls & EmuFeat.fVmxEntryLoadDebugCtls ); 1959 1995 pGuestFeat->fVmxIa32eModeGuest = (pBaseFeat->fVmxIa32eModeGuest & EmuFeat.fVmxIa32eModeGuest ); … … 2024 2060 2025 2061 if (!pGuestFeat->fVmxTertiaryExecCtls) 2062 { 2026 2063 Assert(!pGuestFeat->fVmxLoadIwKeyExit); 2064 Assert(!pGuestFeat->fVmxHlat); 2065 Assert(!pGuestFeat->fVmxEptPagingWrite); 2066 Assert(!pGuestFeat->fVmxGstPagingVerify); 2067 Assert(!pGuestFeat->fVmxIpiVirt); 2068 Assert(!pGuestFeat->fVmxVirtSpecCtrl); 2069 } 2027 2070 2028 2071 /*
Note:
See TracChangeset
for help on using the changeset viewer.