VirtualBox

Changeset 109029 in vbox for trunk/include


Ignore:
Timestamp:
Apr 20, 2025 2:48:56 AM (2 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168558
Message:

SUP,VBoxCpuReport,VMM/CPUM: Deal with core variations on arm CPUs when generating reports for them. jiraref:VBP-1598

Location:
trunk/include/VBox
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/sup.h

    r109022 r109029  
    20382038 *
    20392039 * @returns VBox status code.
     2040 * @param   idCpu               The CPU to query the registers on, NIL_RTCPUID
     2041 *                              if any will do.
    20402042 * @param   fFlags              Query flags, SUP_ARM_SYS_REG_F_XXX.
    20412043 * @param   cMaxRegs            Maximum number of registers @a paSysRegValues
     
    20482050 *                              associated info.
    20492051 */
    2050 SUPR3DECL(int) SUPR3ArmQuerySysRegs(uint32_t fFlags, uint32_t cMaxRegs,
     2052SUPR3DECL(int) SUPR3ArmQuerySysRegs(RTCPUID idCpu, uint32_t fFlags, uint32_t cMaxRegs,
    20512053                                    uint32_t *pcRegsReturned, uint32_t *pcRegsAvailable, PSUPARMSYSREGVAL paSysRegValues);
    20522054#endif /* defined(RT_ARCH_ARM64) || defined(DOXYGEN_RUNNING) */
  • trunk/include/VBox/vmm/cpum.h

    r109020 r109029  
    295295    kCpumMicroarch_Apple_M1 = kCpumMicroarch_Apple_First,
    296296    kCpumMicroarch_Apple_M2,
     297    kCpumMicroarch_Apple_M3,
     298    kCpumMicroarch_Apple_M4,
    297299    kCpumMicroarch_Apple_End,
     300
     301    kCpumMicroarch_Qualcomm_First,
     302    kCpumMicroarch_Qualcomm_Kyro = kCpumMicroarch_Qualcomm_First,
     303    kCpumMicroarch_Qualcomm_Oryon,
     304    kCpumMicroarch_Qualcomm_End,
    298305
    299306    /*
     
    17011708
    17021709
     1710/** CPU core type. */
     1711typedef enum CPUMCORETYPE
     1712{
     1713    kCpumCoreType_Invalid = 0,
     1714    kCpumCoreType_Unknown,
     1715    kCpumCoreType_Performance,
     1716    kCpumCoreType_Efficiency,
     1717    kCpumCoreType_End,
     1718    kCpumCoreType_32BitHack = 0x7fffffff,
     1719} CPUMCORETYPE;
     1720
     1721
    17031722/**
    17041723 * CPU database entry for x86.
     
    17481767{
    17491768    /** The common parts. */
    1750     CPUMDBENTRY         Core;
    1751 
    1752     /** The implementer value from MIDR_EL1. */
    1753     uint8_t             bImplementer;
    1754     /** The revision number from MIDR_EL1. */
    1755     uint8_t             bRevision;
    1756     /** The part number value from MIDR_EL1. */
    1757     uint16_t            uPartNum;
    1758 
    1759     /** Number of entries in the table paSysRegVals points to. */
    1760     uint32_t            cSysRegVals;
    1761     /** System register values. */
    1762     struct SUPARMSYSREGVAL const *paSysRegVals;
     1769    CPUMDBENTRY                     Core;
     1770
     1771    /** System register values common to all the core variations. */
     1772    struct SUPARMSYSREGVAL const   *paSysRegCmnVals;
     1773    /** Number of entries in the table paSysRegCmnVals points to. */
     1774    uint32_t                        cSysRegCmnVals;
     1775    /** Number of core variants in aVariants below. */
     1776    uint32_t                        cVariants;
     1777
     1778    /** CPU core variation details. */
     1779    struct
     1780    {
     1781        /** The name of this CPU core variation. */
     1782        const char                     *pszName;
     1783        /** MIDR_EL1 for this CPU core variation. */
     1784        union
     1785        {
     1786            struct
     1787            {
     1788                /** CPU revision. */
     1789                uint32_t                u4Revision    :  4;
     1790                /** Part number. */
     1791                uint32_t                u12PartNum    : 12;
     1792                /** ARM architecture indicator. */
     1793                uint32_t                u4Arch        :  4;
     1794                /** Implementer specific variant. */
     1795                uint32_t                u4Variant     :  4;
     1796                /** The implementer. */
     1797                uint32_t                u8Implementer :  8;
     1798            } s;
     1799            uint64_t                    u64;
     1800        } Midr;
     1801        /** The CPU core type. */
     1802        CPUMCORETYPE                    enmCoreType;
     1803        /** Number of entries in the table paSysRegVals points to. */
     1804        uint32_t                        cSysRegVals;
     1805        /** System register values specific to this CPU core variant. */
     1806        struct SUPARMSYSREGVAL const   *paSysRegVals;
     1807    } aVariants[2];
    17631808} CPUMDBENTRYARM;
    17641809/** Pointer to a const ARM CPU database entry. */
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