Changeset 107854 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Jan 18, 2025 11:59:26 PM (4 months ago)
- svn:sync-xref-src-repo-rev:
- 167053
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/CPUMAllCpuId.cpp
r107749 r107854 1403 1403 1404 1404 1405 void cpumCpuIdExplodeFeaturesX86SetSummaryBits(CPUMFEATURESX86 *pFeatures) 1406 { 1407 /* Summary or all bits indicating the presence of the IA32_SPEC_CTRL MSR. */ 1408 pFeatures->fSpecCtrlMsr = pFeatures->fIbrs 1409 | pFeatures->fStibp 1410 | pFeatures->fSsbd 1411 | pFeatures->fPsfd 1412 | pFeatures->fIpredCtrl 1413 | pFeatures->fRrsbaCtrl 1414 | pFeatures->fDdpdU 1415 | pFeatures->fBhiCtrl 1416 ; 1417 } 1418 1419 1405 1420 int cpumCpuIdExplodeFeaturesX86(PCCPUMCPUIDLEAF paLeaves, uint32_t cLeaves, PCCPUMMSRS pMsrs, CPUMFEATURESX86 *pFeatures) 1406 1421 { … … 1565 1580 pFeatures->fMmx |= RT_BOOL(pExtLeaf->uEdx & X86_CPUID_AMD_FEATURE_EDX_MMX); 1566 1581 pFeatures->fTsc |= RT_BOOL(pExtLeaf->uEdx & X86_CPUID_AMD_FEATURE_EDX_TSC); 1567 pFeatures->fIbpb |= pExtLeaf8 && (pExtLeaf8->uEbx & X86_CPUID_AMD_EFEID_EBX_IBPB);1568 1582 pFeatures->fAmdMmxExts = RT_BOOL(pExtLeaf->uEdx & X86_CPUID_AMD_FEATURE_EDX_AXMMX); 1569 1583 pFeatures->fXop = RT_BOOL(pExtLeaf->uEcx & X86_CPUID_AMD_FEATURE_ECX_XOP); 1570 1584 pFeatures->fTbm = RT_BOOL(pExtLeaf->uEcx & X86_CPUID_AMD_FEATURE_ECX_TBM); 1571 1585 pFeatures->fSvm = RT_BOOL(pExtLeaf->uEcx & X86_CPUID_AMD_FEATURE_ECX_SVM); 1586 1587 if (pExtLeaf8) 1588 { 1589 pFeatures->fIbpb |= RT_BOOL(pExtLeaf8->uEbx & X86_CPUID_AMD_EFEID_EBX_IBPB); 1590 pFeatures->fIbrs |= RT_BOOL(pExtLeaf8->uEbx & X86_CPUID_AMD_EFEID_EBX_IBRS); 1591 pFeatures->fStibp |= RT_BOOL(pExtLeaf8->uEbx & X86_CPUID_AMD_EFEID_EBX_STIBP); 1592 pFeatures->fSsbd |= RT_BOOL(pExtLeaf8->uEbx & X86_CPUID_AMD_EFEID_EBX_SPEC_CTRL_SSBD); 1593 pFeatures->fPsfd |= RT_BOOL(pExtLeaf8->uEbx & X86_CPUID_AMD_EFEID_EBX_PSFD); 1594 } 1595 1596 PCCPUMCPUIDLEAF pExtLeaf21 = cpumCpuIdFindLeaf(paLeaves, cLeaves, 0x80000021); 1597 if (pExtLeaf21) 1598 { 1599 /** @todo IBPB_BRTYPE is implied on Zen 1 & 2. 1600 * https://www.amd.com/content/dam/amd/en/documents/corporate/cr/speculative-return-stack-overflow-whitepaper.pdf */ 1601 } 1602 1572 1603 if (pFeatures->fSvm) 1573 1604 { … … 1655 1686 else 1656 1687 AssertLogRelReturn(cLeaves == 0, VERR_CPUM_IPE_1); 1688 1689 cpumCpuIdExplodeFeaturesX86SetSummaryBits(pFeatures); 1657 1690 return VINF_SUCCESS; 1658 1691 } … … 1662 1695 * Helper for extracting feature bits from IA32_ARCH_CAPABILITIES. 1663 1696 */ 1664 staticvoid cpumCpuIdExplodeArchCapabilities(CPUMFEATURESX86 *pFeatures, bool fHasArchCap, uint64_t fArchVal)1697 void cpumCpuIdExplodeArchCapabilities(CPUMFEATURESX86 *pFeatures, bool fHasArchCap, uint64_t fArchVal) 1665 1698 { 1666 1699 Assert(fHasArchCap || fArchVal == 0);
Note:
See TracChangeset
for help on using the changeset viewer.