VirtualBox

Changeset 85353 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jul 15, 2020 4:40:28 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
139348
Message:

VMM/VBoxCpuReport: Make it work on Zen CPUs, tested on Ryzen 7 1800X

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/tools/VBoxCpuReport.cpp

    r82969 r85353  
    523523#endif
    524524            /* Skip 0xc0011012..13 as it seems to be bad for our health (Phenom II X6 1100T). */
     525            /* Ditto for 0x0000002ff (MSR_IA32_MTRR_DEF_TYPE) on AMD (Ryzen 7 1800X). */
    525526            /* Ditto for 0x0000002a (EBL_CR_POWERON) and 0x00000277 (MSR_IA32_CR_PAT) on Intel (Atom 330). */
    526527            /* And more of the same for 0x280 on Intel Pentium III. */
    527528            if (   ((uMsr >= 0xc0011012 && uMsr <= 0xc0011013) && (g_enmVendor == CPUMCPUVENDOR_AMD || g_enmVendor == CPUMCPUVENDOR_HYGON))
     529                || (   uMsr == 0x2ff
     530                    && (g_enmVendor == CPUMCPUVENDOR_AMD || g_enmVendor == CPUMCPUVENDOR_HYGON)
     531                    && g_enmMicroarch >= kCpumMicroarch_AMD_Zen_First)
    528532                || (   (uMsr == 0x2a || uMsr == 0x277)
    529533                    && g_enmVendor == CPUMCPUVENDOR_INTEL
     
    25272531        case 0xc001001a:
    25282532        case 0xc001001d:
     2533
     2534        case 0xc0010058: /* MMIO Configuration Base Address on AMD Zen CPUs. */
     2535            if (CPUMMICROARCH_IS_AMD_FAM_ZEN(g_enmMicroarch))
     2536                return VBCPUREPBADNESS_BOND_VILLAIN;
     2537            break;
     2538
    25292539        case 0xc0010064: /* P-state fequency, voltage, ++. */
    25302540        case 0xc0010065: /* P-state fequency, voltage, ++. */
     
    33673377        fSkipMask |= UINT64_C(0x0000000ffffff000);
    33683378
     3379    /* @todo This makes the host unstable on a AMD Ryzen 1800X CPU, skip everything for now.
     3380     * Figure out exactly what causes the issue.
     3381     */
     3382    if (   g_enmMicroarch >= kCpumMicroarch_AMD_Zen_First
     3383        && g_enmMicroarch >= kCpumMicroarch_AMD_Zen_End)
     3384        fSkipMask |= UINT64_C(0xffffffffffffffff);
     3385
    33693386    return reportMsr_GenFunctionEx(uMsr, "Ia32ApicBase", uValue, fSkipMask, 0, NULL);
    33703387}
     
    35643581    /* Had a spot of trouble on an old macbook pro with core2 duo T9900 (penryn)
    35653582       running 64-bit win81pe. Not giving PAT such a scrutiny fixes it. */
     3583    /* This hangs the host on a AMD Ryzen 1800X CPU */
    35663584    if (   uMsr != 0x00000277
    35673585        || (  g_enmVendor == CPUMCPUVENDOR_INTEL
    35683586            ? g_enmMicroarch >= kCpumMicroarch_Intel_Core7_First
    35693587            : g_enmVendor == CPUMCPUVENDOR_AMD || g_enmVendor == CPUMCPUVENDOR_HYGON
    3570             ? g_enmMicroarch != kCpumMicroarch_AMD_K8_90nm_AMDV
     3588            ? (   g_enmMicroarch != kCpumMicroarch_AMD_K8_90nm_AMDV
     3589               && !CPUMMICROARCH_IS_AMD_FAM_ZEN(g_enmMicroarch))
    35713590            : true) )
    35723591    {
     
    36443663        cRegs++;
    36453664    }
    3646     if (cRegs & 3)
     3665
     3666    /** aeichner: An AMD Ryzen 7 1800X CPU triggers this and I'm too lazy to check the correctness in detail. */
     3667    if (   (cRegs & 3)
     3668        && !CPUMMICROARCH_IS_AMD_FAM_ZEN(g_enmMicroarch))
    36473669        return RTMsgErrorRc(VERR_INVALID_PARAMETER, "MC MSR range is odd: cRegs=%#x\n", cRegs);
    36483670
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