VirtualBox

Changeset 70846 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Feb 1, 2018 7:22:08 AM (7 years ago)
Author:
vboxsync
Message:

VMM/CPUM: Dump recognized bits in leaf 0x80000007 for both host and guest now that we expose invariant TSC.

File:
1 edited

Legend:

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

    r70845 r70846  
    61356135    DBGFREGSUBFIELD_RO("TBM\0"          "Trailing Bit Manipulation instructions",       21, 1, 0),
    61366136    DBGFREGSUBFIELD_RO("TOPOEXT\0"      "Topology Extensions",                          22, 1, 0),
     6137    DBGFREGSUBFIELD_RO("PRFEXTCORE\0"   "Performance Counter Extensions support",       23, 1, 0),
     6138    DBGFREGSUBFIELD_RO("PRFEXTNB\0"     "NB Performance Counter Extensions support",    24, 1, 0),
     6139    DBGFREGSUBFIELD_RO("DATABPEXT\0"    "Data-access Breakpoint Extension",             26, 1, 0),
     6140    DBGFREGSUBFIELD_RO("PERFTSC\0"      "Performance Time Stamp Counter",               27, 1, 0),
     6141    DBGFREGSUBFIELD_TERMINATOR()
     6142};
     6143
     6144/** CPUID(0x80000007,0).EDX field descriptions.   */
     6145static DBGFREGSUBFIELD const g_aExtLeaf7EdxSubFields[] =
     6146{
     6147    DBGFREGSUBFIELD_RO("TS\0"           "Temperature Sensor",                            0, 1, 0),
     6148    DBGFREGSUBFIELD_RO("FID\0"          "Frequency ID control",                          1, 1, 0),
     6149    DBGFREGSUBFIELD_RO("VID\0"          "Voltage ID control",                            2, 1, 0),
     6150    DBGFREGSUBFIELD_RO("VID\0"          "Voltage ID control",                            2, 1, 0),
     6151    DBGFREGSUBFIELD_RO("TTP\0"          "Thermal Trip",                                  3, 1, 0),
     6152    DBGFREGSUBFIELD_RO("TM\0"           "Hardware Thermal Control (HTC)",                4, 1, 0),
     6153    DBGFREGSUBFIELD_RO("100MHzSteps\0"  "100 MHz Multiplier control",                    6, 1, 0),
     6154    DBGFREGSUBFIELD_RO("HwPstate\0"     "Hardware P-state control",                      7, 1, 0),
     6155    DBGFREGSUBFIELD_RO("TscInvariant\0" "Invariant Time Stamp Counter",                  8, 1, 0),
     6156    DBGFREGSUBFIELD_RO("CBP\0"          "Core Performance Boost",                        9, 1, 0),
     6157    DBGFREGSUBFIELD_RO("EffFreqRO\0"    "Read-only Effective Frequency Interface",      10, 1, 0),
     6158    DBGFREGSUBFIELD_RO("ProcFdbkIf\0"   "Processor Feedback Interface",                 11, 1, 0),
     6159    DBGFREGSUBFIELD_RO("ProcPwrRep\0"   "Core power reporting interface support",       12, 1, 0),
    61376160    DBGFREGSUBFIELD_TERMINATOR()
    61386161};
     
    68186841        if (iVerbosity && (pCurLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, UINT32_C(0x80000007), 0)) != NULL)
    68196842        {
    6820             uint32_t uEDX = pCurLeaf->uEdx;
    6821 
    6822             pHlp->pfnPrintf(pHlp, "APM Features:                   ");
    6823             if (uEDX & RT_BIT(0))   pHlp->pfnPrintf(pHlp, " TS");
    6824             if (uEDX & RT_BIT(1))   pHlp->pfnPrintf(pHlp, " FID");
    6825             if (uEDX & RT_BIT(2))   pHlp->pfnPrintf(pHlp, " VID");
    6826             if (uEDX & RT_BIT(3))   pHlp->pfnPrintf(pHlp, " TTP");
    6827             if (uEDX & RT_BIT(4))   pHlp->pfnPrintf(pHlp, " TM");
    6828             if (uEDX & RT_BIT(5))   pHlp->pfnPrintf(pHlp, " STC");
    6829             if (uEDX & RT_BIT(6))   pHlp->pfnPrintf(pHlp, " MC");
    6830             if (uEDX & RT_BIT(7))   pHlp->pfnPrintf(pHlp, " HWPSTATE");
    6831             if (uEDX & RT_BIT(8))   pHlp->pfnPrintf(pHlp, " TscInvariant");
    6832             if (uEDX & RT_BIT(9))   pHlp->pfnPrintf(pHlp, " CPB");
    6833             if (uEDX & RT_BIT(10))  pHlp->pfnPrintf(pHlp, " EffFreqRO");
    6834             if (uEDX & RT_BIT(11))  pHlp->pfnPrintf(pHlp, " PFI");
    6835             if (uEDX & RT_BIT(12))  pHlp->pfnPrintf(pHlp, " PA");
    6836             for (unsigned iBit = 13; iBit < 32; iBit++)
    6837                 if (uEDX & RT_BIT(iBit))
    6838                     pHlp->pfnPrintf(pHlp, " %d", iBit);
    6839             pHlp->pfnPrintf(pHlp, "\n");
    6840 
    68416843            ASMCpuIdExSlow(UINT32_C(0x80000007), 0, 0, 0, &Host.uEax, &Host.uEbx, &Host.uEcx, &Host.uEdx);
    6842             pHlp->pfnPrintf(pHlp, "Host Invariant-TSC support:      %RTbool\n",
    6843                             cHstMax >= UINT32_C(0x80000007) && (Host.uEdx & RT_BIT(8)));
    6844 
     6844            if (pCurLeaf->uEdx || (Host.uEdx && iVerbosity))
     6845            {
     6846                if (iVerbosity < 1)
     6847                    cpumR3CpuIdInfoMnemonicListU32(pHlp, pCurLeaf->uEdx, g_aExtLeaf7EdxSubFields, "APM Features EDX:", 34);
     6848                else
     6849                    cpumR3CpuIdInfoVerboseCompareListU32(pHlp, pCurLeaf->uEdx, Host.uEdx, g_aExtLeaf7EdxSubFields, 56);
     6850            }
    68456851        }
    68466852
Note: See TracChangeset for help on using the changeset viewer.

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