Changeset 76147 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Dec 11, 2018 6:56:36 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/CPUMAllMsrs.cpp
r75509 r76147 1386 1386 | (pGuestFeatures->fVmxPreemptTimer << VMX_BF_PIN_CTLS_PREEMPT_TIMER_SHIFT) 1387 1387 | (pGuestFeatures->fVmxPostedInt << VMX_BF_PIN_CTLS_POSTED_INT_SHIFT ); 1388 uint32_t const fVal = VMX_PIN_CTLS_DEFAULT1; 1389 uint32_t const fZap = fFeatures | VMX_PIN_CTLS_DEFAULT1; 1390 AssertMsg((fVal & fZap) == fVal, ("fVal=%#RX32 fZap=%#RX32 fFeatures=%#RX32\n", fVal, fZap, fFeatures)); 1391 uVmxMsr = RT_MAKE_U64(fVal, fZap); 1388 /* Set the default1 class bits. See Intel spec. A.3.1 "Pin-Based VM-Execution Controls". */ 1389 uint32_t const fAllowed0 = VMX_PIN_CTLS_DEFAULT1; 1390 uint32_t const fAllowed1 = fFeatures | VMX_PIN_CTLS_DEFAULT1; 1391 AssertMsg((fAllowed0 & fAllowed1) == fAllowed0, ("fAllowed0=%#RX32 fAllowed1=%#RX32 fFeatures=%#RX32\n", 1392 fAllowed0, fAllowed1, fFeatures)); 1393 uVmxMsr = RT_MAKE_U64(fAllowed0, fAllowed1); 1394 LogRel(("fVmxExtIntExit=%u fFeatures=%#RX32 uVmxMsr=%#RX64\n", !!pGuestFeatures->fVmxExtIntExit, fFeatures, uVmxMsr)); 1392 1395 } 1393 1396 else … … 1439 1442 | (pGuestFeatures->fVmxPauseExit << VMX_BF_PROC_CTLS_PAUSE_EXIT_SHIFT ) 1440 1443 | (pGuestFeatures->fVmxSecondaryExecCtls << VMX_BF_PROC_CTLS_USE_SECONDARY_CTLS_SHIFT); 1441 uint32_t const fVal = VMX_PROC_CTLS_DEFAULT1; 1442 uint32_t const fZap = fFeatures | VMX_PROC_CTLS_DEFAULT1; 1443 AssertMsg((fVal & fZap) == fVal, ("fVal=%#RX32 fZap=%#RX32 fFeatures=%#RX32\n", fVal, fZap, fFeatures)); 1444 uVmxMsr = RT_MAKE_U64(fVal, fZap); 1444 /* Set the default1 class bits. See Intel spec. A.3.2 "Primary Processor-Based VM-Execution Controls". */ 1445 uint32_t const fAllowed0 = VMX_PROC_CTLS_DEFAULT1; 1446 uint32_t const fAllowed1 = fFeatures | VMX_PROC_CTLS_DEFAULT1; 1447 AssertMsg((fAllowed0 & fAllowed1) == fAllowed0, ("fAllowed0=%#RX32 fAllowed1=%#RX32 fFeatures=%#RX32\n", fAllowed0, 1448 fAllowed1, fFeatures)); 1449 uVmxMsr = RT_MAKE_U64(fAllowed0, fAllowed1); 1445 1450 } 1446 1451 else … … 1479 1484 | (pGuestFeatures->fVmxExitLoadEferMsr << VMX_BF_EXIT_CTLS_LOAD_EFER_MSR_SHIFT ) 1480 1485 | (pGuestFeatures->fVmxSavePreemptTimer << VMX_BF_EXIT_CTLS_SAVE_PREEMPT_TIMER_SHIFT ); 1481 uint32_t const fVal = VMX_EXIT_CTLS_DEFAULT1; 1482 uint32_t const fZap = fFeatures | VMX_EXIT_CTLS_DEFAULT1; 1483 AssertMsg((fVal & fZap) == fVal, ("fVal=%#RX32 fZap=%#RX32 fFeatures=%#RX32\n", fVal, fZap, fFeatures)); 1484 uVmxMsr = RT_MAKE_U64(fVal, fZap); 1486 /* Set the default1 class bits. See Intel spec. A.4 "VM-exit Controls". */ 1487 uint32_t const fAllowed0 = VMX_EXIT_CTLS_DEFAULT1; 1488 uint32_t const fAllowed1 = fFeatures | VMX_EXIT_CTLS_DEFAULT1; 1489 AssertMsg((fAllowed0 & fAllowed1) == fAllowed0, ("fAllowed0=%#RX32 fAllowed1=%#RX32 fFeatures=%#RX32\n", fAllowed0, 1490 fAllowed1, fFeatures)); 1491 uVmxMsr = RT_MAKE_U64(fAllowed0, fAllowed1); 1485 1492 } 1486 1493 else … … 1515 1522 | (pGuestFeatures->fVmxEntryLoadEferMsr << VMX_BF_ENTRY_CTLS_LOAD_EFER_MSR_SHIFT ) 1516 1523 | (pGuestFeatures->fVmxEntryLoadPatMsr << VMX_BF_ENTRY_CTLS_LOAD_PAT_MSR_SHIFT ); 1517 uint32_t const fDefault1 = VMX_ENTRY_CTLS_DEFAULT1; 1518 uint32_t const fVal = fDefault1; 1519 uint32_t const fZap = fFeatures | fDefault1; 1520 AssertMsg((fVal & fZap) == fVal, ("fVal=%#RX32 fZap=%#RX32 fFeatures=%#RX32\n", fVal, fZap, fFeatures)); 1521 uVmxMsr = RT_MAKE_U64(fVal, fZap); 1524 /* Set the default1 class bits. See Intel spec. A.5 "VM-entry Controls". */ 1525 uint32_t const fAllowed0 = VMX_ENTRY_CTLS_DEFAULT1; 1526 uint32_t const fAllowed1 = fFeatures | VMX_ENTRY_CTLS_DEFAULT1; 1527 AssertMsg((fAllowed0 & fAllowed1) == fAllowed0, ("fAllowed0=%#RX32 fAllowed0=%#RX32 fFeatures=%#RX32\n", fAllowed0, 1528 fAllowed1, fFeatures)); 1529 uVmxMsr = RT_MAKE_U64(fAllowed0, fAllowed1); 1522 1530 } 1523 1531 else … … 1754 1762 | (pGuestFeatures->fVmxXsavesXrstors << VMX_BF_PROC_CTLS2_XSAVES_XRSTORS_SHIFT ) 1755 1763 | (pGuestFeatures->fVmxUseTscScaling << VMX_BF_PROC_CTLS2_TSC_SCALING_SHIFT ); 1756 uint32_t const fVal = 0; 1757 uint32_t const fZap = fFeatures; 1758 uVmxMsr = RT_MAKE_U64(fVal, fZap); 1764 /* No default1 class bits. A.3.3 "Secondary Processor-Based VM-Execution Controls". */ 1765 uint32_t const fAllowed0 = 0; 1766 uint32_t const fAllowed1 = fFeatures; 1767 uVmxMsr = RT_MAKE_U64(fAllowed0, fAllowed1); 1759 1768 } 1760 1769 else
Note:
See TracChangeset
for help on using the changeset viewer.