VirtualBox

Changeset 107731 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Jan 13, 2025 11:52:57 PM (4 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
166837
Message:

VMM/CPUM: Added some missing CPUID extended feature bits and fixed a couple of bugs in previous x86.h changes. jiraref:VBP-947

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp

    r107712 r107731  
    53075307static DBGFREGSUBFIELD const g_aLeaf7Sub0EdxSubFields[] =
    53085308{
     5309    DBGFREGSUBFIELD_RO("MCU_OPT_CTRL\0" "Supports IA32_MCU_OPT_CTRL ",                   9, 1, 0),
    53095310    DBGFREGSUBFIELD_RO("MD_CLEAR\0"     "Supports MDS related buffer clearing",         10, 1, 0),
     5311    DBGFREGSUBFIELD_RO("TSX_FORCE_ABORT\0" "Supports IA32_TSX_FORCE_ABORT",             11, 1, 0),
     5312    DBGFREGSUBFIELD_RO("CET_IBT\0"      "Supports indirect branch tracking w/ CET",     20, 1, 0),
    53105313    DBGFREGSUBFIELD_RO("IBRS_IBPB\0"    "IA32_SPEC_CTRL.IBRS and IA32_PRED_CMD.IBPB",   26, 1, 0),
    53115314    DBGFREGSUBFIELD_RO("STIBP\0"        "Supports IA32_SPEC_CTRL.STIBP",                27, 1, 0),
     
    53145317    DBGFREGSUBFIELD_RO("CORECAP\0"      "Supports IA32_CORE_CAP",                       30, 1, 0),
    53155318    DBGFREGSUBFIELD_RO("SSBD\0"         "Supports IA32_SPEC_CTRL.SSBD",                 31, 1, 0),
     5319    DBGFREGSUBFIELD_TERMINATOR()
     5320};
     5321
     5322
     5323/** CPUID(7,2).EBX field descriptions. */
     5324static DBGFREGSUBFIELD const g_aLeaf7Sub2EbxSubFields[] =
     5325{
     5326    DBGFREGSUBFIELD_TERMINATOR()
     5327};
     5328
     5329/** CPUID(7,2).ECX field descriptions. */
     5330static DBGFREGSUBFIELD const g_aLeaf7Sub2EcxSubFields[] =
     5331{
     5332    DBGFREGSUBFIELD_TERMINATOR()
     5333};
     5334
     5335/** CPUID(7,2).EDX field descriptions. */
     5336static DBGFREGSUBFIELD const g_aLeaf7Sub2EdxSubFields[] =
     5337{
     5338    DBGFREGSUBFIELD_RO("PSFD\0"         "Supports IA32_SPEC_CTRL[7] (PSFD)",             0, 1, 0),
     5339    DBGFREGSUBFIELD_RO("IPRED_CTRL\0"   "Supports IA32_SPEC_CTRL[4:3] (IPRED_DIS)",      1, 1, 0),
     5340    DBGFREGSUBFIELD_RO("RRSBA_CTRL\0"   "Supports IA32_SPEC_CTRL[6:5] (RRSBA_DIS)",      2, 1, 0),
     5341    DBGFREGSUBFIELD_RO("DDPD_U\0"       "Supports IA32_SPEC_CTRL[8] (DDPD_U)",           3, 1, 0),
     5342    DBGFREGSUBFIELD_RO("BHI_CTRL\0"     "Supports IA32_SPEC_CTRL[10] (BHI_DIS_S) ",      4, 1, 0),
     5343    DBGFREGSUBFIELD_RO("MCDT_NO\0"      "No MXCSR Config Dependent Timing issues",       5, 1, 0),
     5344    DBGFREGSUBFIELD_RO("UC_LOCK_DIS\0"  "Supports UC-lock disable and causing #AC",      6, 1, 0),
     5345    DBGFREGSUBFIELD_RO("MONITOR_MITG_NO\0" "No MONITOR/UMONITOR power issues",           7, 1, 0),
    53165346    DBGFREGSUBFIELD_TERMINATOR()
    53175347};
     
    56955725                if (fVerbose)
    56965726                {
     5727                    pHlp->pfnPrintf(pHlp, " Sub-leaf 0\n");
    56975728                    pHlp->pfnPrintf(pHlp, "  Mnemonic - Description                                  = guest (host)\n");
    56985729                    cpumR3CpuIdInfoVerboseCompareListU32(pHlp, pCurLeaf->uEbx, Host.uEbx, g_aLeaf7Sub0EbxSubFields, 56);
     
    57035734                else
    57045735                {
    5705                     cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEbx, g_aLeaf7Sub0EbxSubFields, "Ext Features EBX:", 36);
    5706                     cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEcx, g_aLeaf7Sub0EcxSubFields, "Ext Features ECX:", 36);
     5736                    cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEbx, g_aLeaf7Sub0EbxSubFields, "Ext Features #0 EBX:", 36);
     5737                    cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEcx, g_aLeaf7Sub0EcxSubFields, "Ext Features #0 ECX:", 36);
    57075738                    if (pCurLeaf->uEdx)
    5708                         cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEdx, g_aLeaf7Sub0EdxSubFields, "Ext Features EDX:", 36);
     5739                        cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEdx, g_aLeaf7Sub0EdxSubFields, "Ext Features #0 EDX:", 36);
     5740                }
     5741                break;
     5742
     5743            /** @todo case 1   */
     5744
     5745            case 2:
     5746                if (fVerbose)
     5747                {
     5748                    pHlp->pfnPrintf(pHlp, " Sub-leaf 2\n");
     5749                    pHlp->pfnPrintf(pHlp, "  Mnemonic - Description                                  = guest (host)\n");
     5750                    if (pCurLeaf->uEbx || Host.uEbx)
     5751                        cpumR3CpuIdInfoVerboseCompareListU32(pHlp, pCurLeaf->uEbx, Host.uEbx, g_aLeaf7Sub2EbxSubFields, 56);
     5752                    if (pCurLeaf->uEcx || Host.uEcx)
     5753                        cpumR3CpuIdInfoVerboseCompareListU32(pHlp, pCurLeaf->uEcx, Host.uEcx, g_aLeaf7Sub2EcxSubFields, 56);
     5754                    cpumR3CpuIdInfoVerboseCompareListU32(pHlp, pCurLeaf->uEdx, Host.uEdx, g_aLeaf7Sub2EdxSubFields, 56);
     5755                }
     5756                else
     5757                {
     5758                    if (pCurLeaf->uEbx)
     5759                        cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEbx, g_aLeaf7Sub2EbxSubFields, "Ext Features #2 EBX:", 36);
     5760                    if (pCurLeaf->uEcx)
     5761                        cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEcx, g_aLeaf7Sub2EcxSubFields, "Ext Features #2 ECX:", 36);
     5762                    if (pCurLeaf->uEdx)
     5763                        cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEdx, g_aLeaf7Sub2EdxSubFields, "Ext Features #2 EDX:", 36);
    57095764                }
    57105765                break;
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette