OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
ProcessorInfo.h
Go to the documentation of this file.
1
15#ifndef OC_PROCESSOR_INFO_H
16#define OC_PROCESSOR_INFO_H
17
18// SandyBridge/IvyBridge bus clock is fixed at 100MHz
19
20#define BRIDGE_BCLK 100
21
22#define BASE_NHM_CLOCK_SOURCE 133333333ULL
23
24//
25// Skylake bus clock is fixed at 100MHz
26// This constant is also known as BASE_ART_CLOCK_SOURCE in XNU
27//
28#define CLIENT_ART_CLOCK_SOURCE 24000000ULL
29#define SERVER_ART_CLOCK_SOURCE 25000000ULL
30#define ATOM_ART_CLOCK_SOURCE 19200000ULL
31
32#define DEFAULT_ART_CLOCK_SOURCE CLIENT_ART_CLOCK_SOURCE
33
34#define MSR_PIC_MSG_CONTROL 0x2E
35#define MSR_CORE_THREAD_COUNT 0x35
36
37#define EFI_PLATFORM_INFORMATION 0x000000CE
38#define N_EFI_PLATFORM_INFO_MIN_RATIO 40
39#define B_EFI_PLATFORM_INFO_RATIO_MASK 0xFF
40#define N_EFI_PLATFORM_INFO_MAX_RATIO 8
41#define B_EFI_PLATFORM_INFO_TDC_TDP_LIMIT (1 << 29)
42#define N_EFI_PLATFORM_INFO_RATIO_LIMIT 28
43#define B_EFI_PLATFORM_INFO_RATIO_LIMIT (1 << 28)
44#define B_EFI_PLATFORM_INFO_SMM_SAVE_CONTROL (1 << 16)
45#define N_EFI_PLATFORM_INFO_PROG_TCC_ACTIVATION_OFFSET 30
46#define B_EFI_PLATFORM_INFO_PROG_TCC_ACTIVATION_OFFSET (1 << 30)
47
48// #define PLATFORM_INFO_SET_TDP
49
50#define MSR_PMG_IO_CAPTURE_BASE 0xE4
51#define MSR_IA32_EXT_CONFIG 0xEE
52#define MSR_FEATURE_CONFIG 0x13C
53#define MSR_FLEX_RATIO 0x194
54#define FLEX_RATIO_LOCK (1U << 20U)
55#define FLEX_RATIO_EN (1U << 16U)
56#define MSR_IA32_PERF_CONTROL 0x199
57#define MSR_THERM2_CTL 0x19D
58
59#define TURBO_DISABLE_MASK ((UINT64)1 << 38)
60#define TURBO_MODE_DISABLE_BIT 38
61
62#define MSR_TEMPERATURE_TARGET 0x1A2
63#define MSR_MISC_PWR_MGMT 0x1AA
64#define MISC_PWR_MGMT_EIST_HW_DIS (1 << 0)
65#define MISC_PWR_MGMT_LOCK (1 << 13)
66#define MAX_RATIO_LIMIT_8C_OFFSET 56
67#define MAX_RATIO_LIMIT_7C_OFFSET 48
68#define MAX_RATIO_LIMIT_6C_OFFSET 40
69#define MAX_RATIO_LIMIT_5C_OFFSET 32
70#define MAX_RATIO_LIMIT_4C_OFFSET 24
71#define MAX_RATIO_LIMIT_3C_OFFSET 16
72#define MAX_RATIO_LIMIT_2C_OFFSET 8
73#define MAX_RATIO_LIMIT_1C_OFFSET 0
74#define MAX_RATIO_LIMIT_MASK 0xff
75#define MSR_IA32_ENERGY_PERFORMANCE_BIAS 0x1B0
76#define ENERGY_POLICY_PERFORMANCE 0
77#define ENERGY_POLICY_NORMAL 6
78#define ENERGY_POLICY_POWERSAVE 15
79#define MSR_POWER_CTL 0x1FC
80#define MSR_LT_LOCK_MEMORY 0x2E7
81#define MSR_IA32_CR_PAT 0x277
82
83// Sandy Bridge & JakeTown specific 'Running Average Power Limit' MSR's.
84#define MSR_PP0_CURRENT_CONFIG 0x601
85#define PP0_CURRENT_LIMIT (112 << 3)
86#define MSR_PP1_CURRENT_CONFIG 0x602
87#define PP1_CURRENT_LIMIT (35 << 3)
88#define MSR_PKG_POWER_SKU_UNIT 0x606
89
90#define MSR_PKGC3_IRTL 0x60A
91#define MSR_PKGC6_IRTL 0x60B
92#define MSR_PKGC7_IRTL 0x60C
93#define IRTL_VALID (1 << 15)
94#define IRTL_1_NS (0 << 10)
95#define IRTL_32_NS (1 << 10)
96#define IRTL_1024_NS (2 << 10)
97#define IRTL_32768_NS (3 << 10)
98#define IRTL_1048576_NS (4 << 10)
99#define IRTL_33554432_NS (5 << 10)
100#define IRTL_RESPONSE_MASK (0x3ff)
101
102// long duration in low dword, short duration in high dword
103#define MSR_PKG_POWER_LIMIT 0x610
104#define PKG_POWER_LIMIT_MASK 0x7fff
105#define PKG_POWER_LIMIT_EN (1 << 15)
106#define PKG_POWER_LIMIT_CLAMP (1 << 16)
107#define PKG_POWER_LIMIT_TIME_SHIFT 17
108#define PKG_POWER_LIMIT_TIME_MASK 0x7f
109
110#define MSR_PKG_ENERGY_STATUS 0x611
111#define MSR_PKG_PERF_STATUS 0x613
112#define MSR_PKG_POWER_SKU 0x614
113
114// Sandy Bridge IA (Core) domain MSR's.
115#define MSR_PP0_POWER_LIMIT 0x638
116#define MSR_PP0_ENERGY_STATUS 0x639
117#define MSR_PP0_POLICY 0x63A
118#define MSR_PP0_PERF_STATUS 0x63B
119
120// Sandy Bridge Uncore (IGPU) domain MSR's (Not on JakeTown).
121#define MSR_PP1_POWER_LIMIT 0x640
122#define MSR_PP1_ENERGY_STATUS 0x641
123#define MSR_PP1_POLICY 0x642
124
125// JakeTown only Memory MSR's.
126#define MSR_DRAM_POWER_LIMIT 0x618
127#define MSR_DRAM_ENERGY_STATUS 0x619
128#define MSR_DRAM_PERF_STATUS 0x61B
129#define MSR_DRAM_POWER_INFO 0x61C
130
131//
132// Page Attribute Table (PAT) cache types.
133// Note that the final memory cache type is defined according to the combination (ref. 11.5.2.2) of
134// PAT (ref. 11.12) and MTRR (ref. 11.11) and cannot be derived from either separately.
135// REF: Intel® 64 and IA-32 Architectures Software Developer’s Manual - Volume 3A: System Programming Guide, Part 1
136//
145
146//
147// Mask for one PAT entry in MSR.
148//
149#define PAT_ENTRY_BIT_MASK (0xFFU)
150
151//
152// Number of PAT entries in MSR.
153//
154#define PAT_INDEX_MAX 8
155
156//
157// Specify PAT type at index in PAT MSR.
158//
159#define SET_PAT_N(PatIndex, PatType) (LShiftU64 ((PatType) * 1ULL, (PatIndex) * 8))
160
161//
162// Get PAT type at index in PAT MSR.
163//
164#define GET_PAT_N(PatMsr, PatIndex) (RShiftU64 ((PatMsr), (PatIndex) * 8) & PAT_ENTRY_BIT_MASK)
165
166//
167// Modify PAT type at index in PAT MSR.
168//
169#define MODIFY_PAT_MSR(PatMsr, PatIndex, PatType) (((PatMsr) & ~SET_PAT_N ((PatIndex), PAT_ENTRY_BIT_MASK)) | SET_PAT_N ((PatIndex), (PatType)))
170
171//
172// Intel defined power-on default contents of MSR_IA32_CR_PAT.
173//
174#define PAT_DEFAULTS ( \
175 SET_PAT_N (0, PatWriteBack) | \
176 SET_PAT_N (1, PatWriteThrough) | \
177 SET_PAT_N (2, PatUncached) | \
178 SET_PAT_N (3, PatUncacheable) | \
179 SET_PAT_N (4, PatWriteBack) | \
180 SET_PAT_N (5, PatWriteThrough) | \
181 SET_PAT_N (6, PatUncached) | \
182 SET_PAT_N (7, PatUncacheable) \
183)
184
185#define K8_FIDVID_STATUS 0xC0010042
186#define K10_COFVID_STATUS 0xC0010071
187#define K10_PSTATE_STATUS 0xC0010064
188
189#define CPU_MODEL_WILLAMETTE 0x01
190#define CPU_MODEL_NORTHWOOD 0x02
191#define CPU_MODEL_PRESCOTT 0x03
192#define CPU_MODEL_PRESCOTT_2M 0x04
193#define CPU_MODEL_CEDAR_MILL 0x06
194#define CPU_MODEL_BANIAS 0x09
195#define CPU_MODEL_DOTHAN 0x0D
196#define CPU_MODEL_YONAH 0x0E
197#define CPU_MODEL_MEROM 0x0F
198#define CPU_MODEL_PENRYN 0x17
199#define CPU_MODEL_NEHALEM 0x1A
200#define CPU_MODEL_BONNELL 0x1C
201#define CPU_MODEL_FIELDS 0x1E
202#define CPU_MODEL_DALES 0x1F
203#define CPU_MODEL_NEHALEM_EX 0x2E
204#define CPU_MODEL_DALES_32NM 0x25
205#define CPU_MODEL_BONNELL_MID 0x26
206#define CPU_MODEL_WESTMERE 0x2C
207#define CPU_MODEL_WESTMERE_EX 0x2F
208#define CPU_MODEL_SANDYBRIDGE 0x2A
209#define CPU_MODEL_JAKETOWN 0x2D
210#define CPU_MODEL_SALTWELL 0x36
211#define CPU_MODEL_SILVERMONT 0x37
212#define CPU_MODEL_IVYBRIDGE 0x3A
213#define CPU_MODEL_IVYBRIDGE_EP 0x3E
214#define CPU_MODEL_CRYSTALWELL 0x46
215#define CPU_MODEL_HASWELL 0x3C
216#define CPU_MODEL_HASWELL_EP 0x3F
217#define CPU_MODEL_HASWELL_ULT 0x45
218#define CPU_MODEL_BROADWELL 0x3D
219#define CPU_MODEL_BROADWELL_EP 0x4F
220#define CPU_MODEL_BROADWELL_ULX 0x3D
221#define CPU_MODEL_BROADWELL_ULT 0x3D
222#define CPU_MODEL_BRYSTALWELL 0x47
223#define CPU_MODEL_AIRMONT 0x4C
224#define CPU_MODEL_AVOTON 0x4D
225#define CPU_MODEL_SKYLAKE 0x4E
226#define CPU_MODEL_SKYLAKE_ULT 0x4E
227#define CPU_MODEL_SKYLAKE_ULX 0x4E
228#define CPU_MODEL_SKYLAKE_DT 0x5E
229#define CPU_MODEL_SKYLAKE_W 0x55
230#define CPU_MODEL_GOLDMONT 0x5C
231#define CPU_MODEL_DENVERTON 0x5F
232#define CPU_MODEL_CANNONLAKE 0x66
233#define CPU_MODEL_XEON_MILL 0x85
234#define CPU_MODEL_KABYLAKE 0x8E
235#define CPU_MODEL_KABYLAKE_ULT 0x8E
236#define CPU_MODEL_KABYLAKE_ULX 0x8E
237#define CPU_MODEL_KABYLAKE_DT 0x9E
238#define CPU_MODEL_COFFEELAKE 0x9E
239#define CPU_MODEL_COFFEELAKE_ULT 0x9E
240#define CPU_MODEL_COFFEELAKE_ULX 0x9E
241#define CPU_MODEL_COFFEELAKE_DT 0x9E
242#define CPU_MODEL_ICELAKE_Y 0x7D
243#define CPU_MODEL_ICELAKE_U 0x7E
244#define CPU_MODEL_ICELAKE_SP 0x9F
245#define CPU_MODEL_COMETLAKE_S 0xA5
246#define CPU_MODEL_COMETLAKE_Y 0xA5
247#define CPU_MODEL_COMETLAKE_U 0xA6
248#define CPU_MODEL_ROCKETLAKE_S 0xA7
249#define CPU_MODEL_TIGERLAKE_U 0x8C
250#define CPU_MODEL_ALDERLAKE_S 0x97
251#define CPU_MODEL_RAPTORLAKE_S 0xB7
252#define CPU_MODEL_RAPTORLAKE_HX 0xBF
253#define CPU_MODEL_ARROWLAKE_S 0xC6
254#define CPU_MODEL_ARROWLAKE_HX 0xC5
255#define CPU_MODEL_ARROWLAKE_U 0xB5
256
257#define AMD_CPU_FAMILY 0xF
258#define AMD_CPU_EXT_FAMILY_0FH 0x0
259#define AMD_CPU_EXT_FAMILY_10H 0x1
260#define AMD_CPU_EXT_FAMILY_15H 0x6
261#define AMD_CPU_EXT_FAMILY_16H 0x7
262#define AMD_CPU_EXT_FAMILY_17H 0x8
263#define AMD_CPU_EXT_FAMILY_19H 0xA
264#define AMD_CPU_EXT_FAMILY_1AH 0xB
265
266// CPU_P_STATE_COORDINATION
282
283#endif // OC_PROCESSOR_INFO_H
PAT_MEMORY_CACHE_TYPE
@ PatUncached
@ PatWriteThrough
@ PatWriteProtected
@ PatUncacheable
@ PatWriteCombining
Special hardware burst mode (not L1-L3) intended for graphics memory (ref. 11.3.1).
@ PatWriteBack
CPU_P_STATE_COORDINATION
P-State Coordination.
@ CpuPStateCoordinationSoftwareAll
@ CpuPStateCoordinationHardwareAll
@ CpuPStateCoordinationSoftwareAny