20#ifndef __INTEL_CPUID_H__
21#define __INTEL_CPUID_H__
45#define CPUID_SIGNATURE 0x00
50#define CPUID_SIGNATURE_GENUINE_INTEL_EBX SIGNATURE_32 ('G', 'e', 'n', 'u')
51#define CPUID_SIGNATURE_GENUINE_INTEL_EDX SIGNATURE_32 ('i', 'n', 'e', 'I')
52#define CPUID_SIGNATURE_GENUINE_INTEL_ECX SIGNATURE_32 ('n', 't', 'e', 'l')
81#define CPUID_VERSION_INFO 0x01
110#define CPUID_VERSION_INFO_EAX_PROCESSOR_TYPE_ORIGINAL_OEM_PROCESSOR 0x00
111#define CPUID_VERSION_INFO_EAX_PROCESSOR_TYPE_INTEL_OVERDRIVE_PROCESSOR 0x01
112#define CPUID_VERSION_INFO_EAX_PROCESSOR_TYPE_DUAL_PROCESSOR 0x02
410 UINT32 Reserved1 : 1;
467 UINT32 Reserved2 : 1;
523 UINT32 Reserved3 : 1;
710#define CPUID_CACHE_INFO 0x02
721 UINT32 Reserved : 31;
731 UINT8 CacheDescriptor[4];
764#define CPUID_SERIAL_NUMBER 0x03
802#define CPUID_CACHE_PARAMS 0x04
866#define CPUID_CACHE_PARAMS_CACHE_TYPE_NULL 0x00
867#define CPUID_CACHE_PARAMS_CACHE_TYPE_DATA 0x01
868#define CPUID_CACHE_PARAMS_CACHE_TYPE_INSTRUCTION 0x02
869#define CPUID_CACHE_PARAMS_CACHE_TYPE_UNIFIED 0x03
935 UINT32 Reserved : 29;
967#define CPUID_MONITOR_MWAIT 0x05
983 UINT32 Reserved : 16;
1005 UINT32 Reserved : 16;
1032 UINT32 Reserved : 30;
1114#define CPUID_THERMAL_POWER_MANAGEMENT 0x06
1137 UINT32 Reserved1 : 1;
1171 UINT32 Reserved2 : 1;
1198 UINT32 Reserved4 : 1;
1203 UINT32 Reserved5 : 11;
1224 UINT32 Reserved : 28;
1248 UINT32 Reserved1 : 2;
1255 UINT32 Reserved2 : 28;
1301#define CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS 0x07
1306#define CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_SUB_LEAF_INFO 0x00
1415 UINT32 Reserved6 : 1;
1493 UINT32 Reserved8 : 8;
1503 UINT32 Reserved7 : 1;
1517 UINT32 Reserved3 : 7;
1522 UINT32 Reserved4 : 1;
1623#define CPUID_DIRECT_CACHE_ACCESS_INFO 0x09
1647#define CPUID_ARCHITECTURAL_PERFORMANCE_MONITORING 0x0A
1730 UINT32 Reserved : 25;
1757 UINT32 Reserved1 : 2;
1762 UINT32 Reserved2 : 16;
1815#define CPUID_EXTENDED_TOPOLOGY 0x0B
1835 UINT32 Reserved : 27;
1863 UINT32 Reserved : 16;
1891 UINT32 Reserved : 16;
1902#define CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_INVALID 0x00
1903#define CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_SMT 0x01
1904#define CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_CORE 0x02
1918#define CPUID_EXTENDED_STATE 0x0D
1953#define CPUID_EXTENDED_STATE_MAIN_LEAF 0x00
1992 UINT32 Reserved1 : 3;
1997 UINT32 Reserved2 : 18;
2033#define CPUID_EXTENDED_STATE_SUB_LEAF 0x01
2060 UINT32 Reserved : 28;
2089 UINT32 Reserved1 : 3;
2094 UINT32 Reserved8 : 18;
2147#define CPUID_EXTENDED_STATE_SIZE_OFFSET 0x02
2171 UINT32 Reserved : 30;
2187#define CPUID_INTEL_RDT_MONITORING 0x0F
2214#define CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF 0x00
2226 UINT32 Reserved1 : 1;
2231 UINT32 Reserved2 : 30;
2263#define CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF 0x01
2287 UINT32 Reserved : 29;
2303#define CPUID_INTEL_RDT_ALLOCATION 0x10
2327#define CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF 0x00
2339 UINT32 Reserved1 : 1;
2352 UINT32 Reserved3 : 28;
2387#define CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF 0x01
2404 UINT32 Reserved : 27;
2422 UINT32 Reserved3 : 2;
2427 UINT32 Reserved2 : 29;
2449 UINT32 Reserved : 16;
2482#define CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF 0x02
2499 UINT32 Reserved : 27;
2521 UINT32 Reserved : 16;
2560#define CPUID_INTEL_RDT_ALLOCATION_MEMORY_BANDWIDTH_SUB_LEAF 0x03
2577 UINT32 Reserved : 20;
2603 UINT32 Reserved2 : 29;
2625 UINT32 Reserved : 16;
2648#define CPUID_INTEL_SGX 0x12
2677#define CPUID_INTEL_SGX_CAPABILITIES_0_SUB_LEAF 0x00
2696 UINT32 Reserved1 : 3;
2707 UINT32 Reserved2 : 25;
2734 UINT32 Reserved : 16;
2776#define CPUID_INTEL_SGX_CAPABILITIES_1_SUB_LEAF 0x01
2811#define CPUID_INTEL_SGX_CAPABILITIES_RESOURCES_SUB_LEAF 0x02
2830 UINT32 Reserved : 8;
2857 UINT32 Reserved : 12;
2881 UINT32 Reserved : 8;
2908 UINT32 Reserved : 12;
2924#define CPUID_INTEL_PROCESSOR_TRACE 0x14
2951#define CPUID_INTEL_PROCESSOR_TRACE_MAIN_LEAF 0x00
2994 UINT32 Reserved : 26;
3031 UINT32 Reserved : 27;
3077#define CPUID_INTEL_PROCESSOR_TRACE_SUB_LEAF 0x01
3092 UINT32 Reserved : 13;
3159#define CPUID_TIME_STAMP_COUNTER 0x15
3194#define CPUID_PROCESSOR_FREQUENCY 0x16
3209 UINT32 Reserved : 16;
3230 UINT32 Reserved : 16;
3251 UINT32 Reserved : 16;
3275#define CPUID_SOC_VENDOR 0x17
3305#define CPUID_SOC_VENDOR_MAIN_LEAF 0x00
3326 UINT32 Reserved : 15;
3362#define CPUID_SOC_VENDOR_BRAND_STRING1 0x01
3372 CHAR8 BrandString[4];
3407#define CPUID_SOC_VENDOR_BRAND_STRING2 0x02
3437#define CPUID_SOC_VENDOR_BRAND_STRING3 0x03
3462#define CPUID_DETERMINISTIC_ADDRESS_TRANSLATION_PARAMETERS 0x18
3491#define CPUID_DETERMINISTIC_ADDRESS_TRANSLATION_PARAMETERS_MAIN_LEAF 0x00
3584#define CPUID_DETERMINISTIC_ADDRESS_TRANSLATION_PARAMETERS_TRANSLATION_CACHE_TYPE_INVALID 0x00
3585#define CPUID_DETERMINISTIC_ADDRESS_TRANSLATION_PARAMETERS_TRANSLATION_CACHE_TYPE_DATA_TLB 0x01
3586#define CPUID_DETERMINISTIC_ADDRESS_TRANSLATION_PARAMETERS_TRANSLATION_CACHE_TYPE_INSTRUCTION_TLB 0x02
3587#define CPUID_DETERMINISTIC_ADDRESS_TRANSLATION_PARAMETERS_TRANSLATION_CACHE_TYPE_UNIFIED_TLB 0x03
3616#define CPUID_HYBRID_INFORMATION 0x1A
3621#define CPUID_HYBRID_INFORMATION_MAIN_LEAF 0x00
3655#define CPUID_CORE_TYPE_INTEL_ATOM 0x20
3656#define CPUID_CORE_TYPE_INTEL_CORE 0x40
3685#define CPUID_V2_EXTENDED_TOPOLOGY 0x1F
3692#define CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_MODULE 0x03
3693#define CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_TILE 0x04
3694#define CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE 0x05
3716#define CPUID_GUESTTD_RUNTIME_ENVIRONMENT 0x21
3721#define CPUID_GUESTTD_SIGNATURE_GENUINE_INTEL_EBX SIGNATURE_32 ('I', 'n', 't', 'e')
3722#define CPUID_GUESTTD_SIGNATURE_GENUINE_INTEL_ECX SIGNATURE_32 (' ', ' ', ' ', ' ')
3723#define CPUID_GUESTTD_SIGNATURE_GENUINE_INTEL_EDX SIGNATURE_32 ('l', 'T', 'D', 'X')
3745#define CPUID_EXTENDED_FUNCTION 0x80000000
3768#define CPUID_EXTENDED_CPU_SIG 0x80000001
3783 UINT32 Reserved1 : 4;
3788 UINT32 Reserved2 : 2;
3793 UINT32 Reserved3 : 23;
3810 UINT32 Reserved1 : 11;
3815 UINT32 Reserved2 : 8;
3820 UINT32 Reserved3 : 5;
3829 UINT32 Reserved4 : 1;
3834 UINT32 Reserved5 : 2;
3862#define CPUID_BRAND_STRING1 0x80000002
3872 CHAR8 BrandString[4];
3899#define CPUID_BRAND_STRING2 0x80000003
3921#define CPUID_BRAND_STRING3 0x80000004
3941#define CPUID_EXTENDED_CACHE_INFO 0x80000006
3955 UINT32 Reserved : 4;
3976#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_DISABLED 0x00
3977#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_DIRECT_MAPPED 0x01
3978#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_2_WAY 0x02
3979#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_4_WAY 0x04
3980#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_8_WAY 0x06
3981#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_16_WAY 0x08
3982#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_32_WAY 0x0A
3983#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_48_WAY 0x0B
3984#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_64_WAY 0x0C
3985#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_96_WAY 0x0D
3986#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_128_WAY 0x0E
3987#define CPUID_EXTENDED_CACHE_INFO_ECX_L2_ASSOCIATIVITY_FULL 0x0F
4010#define CPUID_EXTENDED_TIME_STAMP_COUNTER 0x80000007
4021 UINT32 Reserved1 : 8;
4026 UINT32 Reserved2 : 23;
4052#define CPUID_VIR_PHY_ADDRESS_SIZE 0x80000008
4075 UINT32 Reserved : 16;
UINT32 PerformanceMonitorCounterWidth
UINT32 EbxBitVectorLength
UINT32 PerformanceMonitorCounters
UINT32 UnhaltedReferenceCycles
UINT32 LastLevelCacheMisses
UINT32 LastLevelCacheReferences
UINT32 BranchInstructionsRetired
UINT32 InstructionsRetired
UINT32 UnhaltedCoreCycles
UINT32 AllBranchMispredictRetired
UINT32 FixedFunctionPerformanceCounters
UINT32 AnyThreadDeprecation
UINT32 FixedFunctionPerformanceCounterWidth
UINT32 SelfInitializingCache
UINT32 MaximumAddressableIdsForLogicalProcessors
UINT32 FullyAssociativeCache
UINT32 MaximumAddressableIdsForProcessorCores
UINT32 CacheInclusiveness
UINT32 ComplexCacheIndexing
UINT32 TranslationCacheType
UINT32 TranslationCacheLevel
UINT32 IpTraceStopFiltering
UINT32 TraceTransportSubsystem
UINT32 ConfigurableAddressRanges
UINT32 MtcPeriodEncodings
UINT32 PsbFrequencyEncodings
UINT32 CycleThresholdEncodings
UINT32 CodeDataPrioritization
UINT32 MaximumMBAThrottling
UINT32 L3CacheTotalBandwidthMonitoring
UINT32 L3CacheLocalBandwidthMonitoring
UINT32 L3CacheOccupancyMonitoring
UINT32 MaxEnclaveSize_Not64
UINT32 LowAddressOfEpcSection
UINT32 HighAddressOfEpcSection
UINT32 LowSizeOfEpcSection
UINT32 HighSizeOfEpcSection
UINT32 SmallestMonitorLineSize
UINT32 LargestMonitorLineSize
UINT32 ExtensionsSupported
UINT32 ProcessorBaseFrequency
UINT32 IntelProcessorTrace
UINT32 EnhancedRepMovsbStosb
UINT32 EnumeratesSupportForSTIBP
UINT32 EnumeratesSupportForIBRSAndIBPB
UINT32 EnumeratesSupportForCapability
UINT32 EnumeratesSupportForL1D_FLUSH
UINT32 EnumeratesSupportForCoreCapabilitiesMsr
UINT32 EnumeratesSupportForSSBD
UINT32 DigitalTemperatureSensor
UINT32 TurboBoostMaxTechnology30
UINT32 HWP_Package_Level_Request
UINT32 TurboBoostTechnology
UINT32 HWP_Activity_Window
UINT32 HWP_Energy_Performance_Preference
UINT32 IgnoringIdleLogicalProcessorHWPRequest
UINT32 InterruptThresholds
UINT32 PerformanceEnergyBias
UINT32 HardwareCoordinationFeedback
UINT32 Reserved1
[Bits 15:14] Reserved
UINT32 ProcessorType
[Bits 13:12] Processor Type
UINT32 Reserved2
Reserved.
UINT32 ExtendedModelId
[Bits 19:16] Extended Model ID
UINT32 FamilyId
[Bits 11:8] Family
UINT32 Model
[Bits 7:4] Model
UINT32 SteppingId
[Bits 3:0] Stepping ID
UINT32 ExtendedFamilyId
[Bits 27:20] Extended Family ID
UINT32 MaximumAddressableIdsForLogicalProcessors
UINT32 InitialLocalApicId
UINT32 xTPR_Update_Control
UINT32 PhysicalAddressBits