VirtualBox

Changeset 54738 in vbox for trunk/include


Ignore:
Timestamp:
Mar 12, 2015 9:04:02 PM (10 years ago)
Author:
vboxsync
Message:

VMM,REM: CPUID revamp - almost there now.

Location:
trunk/include
Files:
4 edited

Legend:

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

    r54728 r54738  
    631631/** Return to ring-3 to write the MSR there. */
    632632#define VINF_CPUM_R3_MSR_WRITE                  (1759)
     633/** Too may CPUID leaves. */
     634#define VERR_TOO_MANY_CPUID_LEAVES              (1760)
    633635/** @} */
    634636
  • trunk/include/VBox/vmm/cpum.h

    r54714 r54738  
    305305/** @name CPUMCPUIDLEAF::fFlags
    306306 * @{ */
    307 /** Indicates that ECX (the sub-leaf indicator) doesn't change when
    308  * requesting the final leaf and all undefined leaves that follows it.
    309  * Observed for 0x0000000b on Intel. */
    310 #define CPUMCPUIDLEAF_F_SUBLEAVES_ECX_UNCHANGED RT_BIT_32(0)
     307/** Indicates working intel leaf 0xb where the lower 8 ECX bits are not modified
     308 * and EDX containing the extended APIC ID. */
     309#define CPUMCPUIDLEAF_F_INTEL_TOPOLOGY_SUBLEAVES    RT_BIT_32(0)
     310/** The leaf contains an APIC ID that needs changing to that of the current CPU. */
     311#define CPUMCPUIDLEAF_F_CONTAINS_APIC_ID            RT_BIT_32(1)
     312/** Mask of the valid flags. */
     313#define CPUMCPUIDLEAF_F_VALID_MASK                  UINT32_C(0x3)
    311314/** @} */
    312315
    313316/**
    314  * Method used to deal with unknown CPUID leafs.
     317 * Method used to deal with unknown CPUID leaves.
    315318 * @remarks Used in patch code.
    316319 */
    317 typedef enum CPUMUKNOWNCPUID
     320typedef enum CPUMUNKNOWNCPUID
    318321{
    319322    /** Invalid zero value. */
    320     CPUMUKNOWNCPUID_INVALID = 0,
     323    CPUMUNKNOWNCPUID_INVALID = 0,
    321324    /** Use given default values (DefCpuId). */
    322     CPUMUKNOWNCPUID_DEFAULTS,
     325    CPUMUNKNOWNCPUID_DEFAULTS,
    323326    /** Return the last standard leaf.
    324327     * Intel Sandy Bridge has been observed doing this. */
    325     CPUMUKNOWNCPUID_LAST_STD_LEAF,
     328    CPUMUNKNOWNCPUID_LAST_STD_LEAF,
    326329    /** Return the last standard leaf, with ecx observed.
    327330     * Intel Sandy Bridge has been observed doing this. */
    328     CPUMUKNOWNCPUID_LAST_STD_LEAF_WITH_ECX,
     331    CPUMUNKNOWNCPUID_LAST_STD_LEAF_WITH_ECX,
    329332    /** The register values are passed thru unmodified. */
    330     CPUMUKNOWNCPUID_PASSTHRU,
     333    CPUMUNKNOWNCPUID_PASSTHRU,
    331334    /** End of valid value. */
    332     CPUMUKNOWNCPUID_END,
     335    CPUMUNKNOWNCPUID_END,
    333336    /** Ensure 32-bit type. */
    334     CPUMUKNOWNCPUID_32BIT_HACK = 0x7fffffff
    335 } CPUMUKNOWNCPUID;
     337    CPUMUNKNOWNCPUID_32BIT_HACK = 0x7fffffff
     338} CPUMUNKNOWNCPUID;
    336339/** Pointer to unknown CPUID leaf method. */
    337 typedef CPUMUKNOWNCPUID *PCPUMUKNOWNCPUID;
     340typedef CPUMUNKNOWNCPUID *PCPUMUNKNOWNCPUID;
    338341
    339342
     
    923926VMMDECL(uint64_t)   CPUMGetGuestDR7(PVMCPU pVCpu);
    924927VMMDECL(int)        CPUMGetGuestDRx(PVMCPU pVCpu, uint32_t iReg, uint64_t *pValue);
    925 VMMDECL(void)       CPUMGetGuestCpuId(PVMCPU pVCpu, uint32_t iLeaf, uint32_t *pEax, uint32_t *pEbx, uint32_t *pEcx, uint32_t *pEdx);
     928VMMDECL(void)       CPUMGetGuestCpuId(PVMCPU pVCpu, uint32_t iLeaf, uint32_t iSubLeaf,
     929                                      uint32_t *pEax, uint32_t *pEbx, uint32_t *pEcx, uint32_t *pEdx);
    926930VMMDECL(uint64_t)   CPUMGetGuestEFER(PVMCPU pVCpu);
    927931VMMDECL(VBOXSTRICTRC)   CPUMQueryGuestMsr(PVMCPU pVCpu, uint32_t idMsr, uint64_t *puValue);
     
    12681272VMMR3DECL(const char *)     CPUMR3MicroarchName(CPUMMICROARCH enmMicroarch);
    12691273VMMR3DECL(int)              CPUMR3CpuIdCollectLeaves(PCPUMCPUIDLEAF *ppaLeaves, uint32_t *pcLeaves);
    1270 VMMR3DECL(int)              CPUMR3CpuIdDetectUnknownLeafMethod(PCPUMUKNOWNCPUID penmUnknownMethod, PCPUMCPUID pDefUnknown);
    1271 VMMR3DECL(const char *)     CPUMR3CpuIdUnknownLeafMethodName(CPUMUKNOWNCPUID enmUnknownMethod);
     1274VMMR3DECL(int)              CPUMR3CpuIdDetectUnknownLeafMethod(PCPUMUNKNOWNCPUID penmUnknownMethod, PCPUMCPUID pDefUnknown);
     1275VMMR3DECL(const char *)     CPUMR3CpuIdUnknownLeafMethodName(CPUMUNKNOWNCPUID enmUnknownMethod);
    12721276VMMR3DECL(CPUMCPUVENDOR)    CPUMR3CpuIdDetectVendorEx(uint32_t uEAX, uint32_t uEBX, uint32_t uECX, uint32_t uEDX);
    12731277VMMR3DECL(const char *)     CPUMR3CpuVendorName(CPUMCPUVENDOR enmVendor);
     
    12811285VMMR3_INT_DECL(RCPTRTYPE(PCCPUMCPUIDLEAF)) CPUMR3GetGuestCpuIdPatmArrayRCPtr(PVM pVM);
    12821286VMMR3_INT_DECL(RCPTRTYPE(PCCPUMCPUIDLEAF)) CPUMR3GetGuestCpuIdPatmArrayEndRCPtr(PVM pVM);
    1283 VMMR3_INT_DECL(CPUMUKNOWNCPUID)            CPUMR3GetGuestCpuIdPatmUnknownLeafMethod(PVM pVM);
     1287VMMR3_INT_DECL(CPUMUNKNOWNCPUID)            CPUMR3GetGuestCpuIdPatmUnknownLeafMethod(PVM pVM);
    12841288/* Legacy: */
    12851289VMMR3_INT_DECL(uint32_t)                   CPUMR3GetGuestCpuIdPatmStdMax(PVM pVM);
  • trunk/include/VBox/vmm/cpum.mac

    r54714 r54738  
    4343    .fFlags             resd    1
    4444endstruc
    45 %define CPUMCPUIDLEAF_F_SUBLEAVES_ECX_UNCHANGED RT_BIT_32(0)
     45%define CPUMCPUIDLEAF_F_INTEL_TOPOLOGY_SUBLEAVES RT_BIT_32(0)
    4646
    4747;;
     
    5656
    5757
    58 ;; @name Method used to deal with unknown CPUID leafs.
     58;; @name Method used to deal with unknown CPUID leaves.
    5959;; @{
    60 %define CPUMUKNOWNCPUID_DEFAULTS                1
    61 %define CPUMUKNOWNCPUID_LAST_STD_LEAF           2
    62 %define CPUMUKNOWNCPUID_LAST_STD_LEAF_WITH_ECX  3
    63 %define CPUMUKNOWNCPUID_PASSTHRU                4
     60%define CPUMUNKNOWNCPUID_DEFAULTS                1
     61%define CPUMUNKNOWNCPUID_LAST_STD_LEAF           2
     62%define CPUMUNKNOWNCPUID_LAST_STD_LEAF_WITH_ECX  3
     63%define CPUMUNKNOWNCPUID_PASSTHRU                4
    6464;; @}
    6565
  • trunk/include/iprt/x86.h

    r53630 r54738  
    583583/** EBX Bit 29 - SHA - Supports Secure Hash Algorithm extensions. */
    584584#define X86_CPUID_STEXT_FEATURE_EBX_SHA               RT_BIT(29)
     585
     586/** ECX Bit 0 - PREFETCHWT1 - Supports the PREFETCHWT1 instruction. */
     587#define X86_CPUID_STEXT_FEATURE_ECX_PREFETCHWT1       RT_BIT(0)
    585588/** @} */
    586589
     
    654657#define X86_CPUID_AMD_FEATURE_EDX_3DNOW     RT_BIT(31)
    655658
    656 /** Bit 1 - CMPL - Core multi-processing legacy mode. */
     659/** Bit 1 - CmpLegacy - Core multi-processing legacy mode. */
    657660#define X86_CPUID_AMD_FEATURE_ECX_CMPL      RT_BIT(1)
    658661/** Bit 2 - SVM - AMD VM extensions. */
     
    680683/** Bit 13 - WDT - AMD Watchdog timer support. */
    681684#define X86_CPUID_AMD_FEATURE_ECX_WDT       RT_BIT(13)
    682 
     685/** Bit 15 - LWP - Lightweight profiling support. */
     686#define X86_CPUID_AMD_FEATURE_ECX_LWP       RT_BIT(15)
     687/** Bit 16 - FMA4 - Four operand FMA instruction support. */
     688#define X86_CPUID_AMD_FEATURE_ECX_FMA4      RT_BIT(16)
     689/** Bit 19 - NodeId - Indicates support for
     690 * MSR_C001_100C[NodeId,NodesPerProcessr]. */
     691#define X86_CPUID_AMD_FEATURE_ECX_NODEID    RT_BIT(19)
     692/** Bit 21 - TBM - Trailing bit manipulation instruction support. */
     693#define X86_CPUID_AMD_FEATURE_ECX_TBM       RT_BIT(21)
     694/** Bit 22 - TopologyExtensions - . */
     695#define X86_CPUID_AMD_FEATURE_ECX_TOPOEXT   RT_BIT(22)
    683696/** @} */
    684697
     
    706719/** Bit 8 - TSCINVAR - TSC Invariant. */
    707720#define X86_CPUID_AMD_ADVPOWER_EDX_TSCINVAR  RT_BIT(8)
     721/** Bit 9 - CPB - TSC Invariant. */
     722#define X86_CPUID_AMD_ADVPOWER_EDX_CPB       RT_BIT(9)
     723/** Bit 10 - EffFreqRO - MPERF/APERF. */
     724#define X86_CPUID_AMD_ADVPOWER_EDX_EFRO      RT_BIT(10)
     725/** Bit 11 - PFI - Processor feedback interface (see EAX). */
     726#define X86_CPUID_AMD_ADVPOWER_EDX_PFI       RT_BIT(11)
     727/** Bit 12 - PA - Processor accumulator (MSR c001_007a). */
     728#define X86_CPUID_AMD_ADVPOWER_EDX_PA        RT_BIT(12)
    708729/** @} */
    709730
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