]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Register/Intel/Msr/HaswellMsr.h
MdePkg: Apply uncrustify changes
[mirror_edk2.git] / MdePkg / Include / Register / Intel / Msr / HaswellMsr.h
CommitLineData
7ae88a62
MK
1/** @file\r
2 MSR Definitions for Intel processors based on the Haswell microarchitecture.\r
3\r
4 Provides defines for Machine Specific Registers(MSR) indexes. Data structures\r
5 are provided for MSRs that contain one or more bit fields. If the MSR value\r
6 returned is a single 32-bit or 64-bit value, then a data structure is not\r
7 provided for that MSR.\r
8\r
e057908f 9 Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>\r
0acd8697 10 SPDX-License-Identifier: BSD-2-Clause-Patent\r
7ae88a62
MK
11\r
12 @par Specification Reference:\r
ba1a2d11
ED
13 Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 4,\r
14 May 2018, Volume 4: Model-Specific-Registers (MSR)\r
7ae88a62
MK
15\r
16**/\r
17\r
18#ifndef __HASWELL_MSR_H__\r
19#define __HASWELL_MSR_H__\r
20\r
e057908f 21#include <Register/Intel/ArchitecturalMsr.h>\r
7ae88a62 22\r
f4c982bf
JF
23/**\r
24 Is Intel processors based on the Haswell microarchitecture?\r
25\r
26 @param DisplayFamily Display Family ID\r
27 @param DisplayModel Display Model ID\r
28\r
29 @retval TRUE Yes, it is.\r
30 @retval FALSE No, it isn't.\r
31**/\r
32#define IS_HASWELL_PROCESSOR(DisplayFamily, DisplayModel) \\r
33 (DisplayFamily == 0x06 && \\r
34 ( \\r
35 DisplayModel == 0x3C || \\r
36 DisplayModel == 0x45 || \\r
37 DisplayModel == 0x46 \\r
38 ) \\r
39 )\r
40\r
7ae88a62
MK
41/**\r
42 Package.\r
43\r
44 @param ECX MSR_HASWELL_PLATFORM_INFO (0x000000CE)\r
45 @param EAX Lower 32-bits of MSR value.\r
46 Described by the type MSR_HASWELL_PLATFORM_INFO_REGISTER.\r
47 @param EDX Upper 32-bits of MSR value.\r
48 Described by the type MSR_HASWELL_PLATFORM_INFO_REGISTER.\r
49\r
50 <b>Example usage</b>\r
51 @code\r
52 MSR_HASWELL_PLATFORM_INFO_REGISTER Msr;\r
53\r
54 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_PLATFORM_INFO);\r
55 AsmWriteMsr64 (MSR_HASWELL_PLATFORM_INFO, Msr.Uint64);\r
56 @endcode\r
e108c3f6 57 @note MSR_HASWELL_PLATFORM_INFO is defined as MSR_PLATFORM_INFO in SDM.\r
7ae88a62 58**/\r
2f88bd3a 59#define MSR_HASWELL_PLATFORM_INFO 0x000000CE\r
7ae88a62
MK
60\r
61/**\r
62 MSR information returned for MSR index #MSR_HASWELL_PLATFORM_INFO\r
63**/\r
64typedef union {\r
65 ///\r
66 /// Individual bit fields\r
67 ///\r
68 struct {\r
2f88bd3a 69 UINT32 Reserved1 : 8;\r
7ae88a62
MK
70 ///\r
71 /// [Bits 15:8] Package. Maximum Non-Turbo Ratio (R/O) The is the ratio\r
72 /// of the frequency that invariant TSC runs at. Frequency = ratio * 100\r
73 /// MHz.\r
74 ///\r
2f88bd3a
MK
75 UINT32 MaximumNonTurboRatio : 8;\r
76 UINT32 Reserved2 : 12;\r
7ae88a62
MK
77 ///\r
78 /// [Bit 28] Package. Programmable Ratio Limit for Turbo Mode (R/O) When\r
79 /// set to 1, indicates that Programmable Ratio Limits for Turbo mode is\r
80 /// enabled, and when set to 0, indicates Programmable Ratio Limits for\r
81 /// Turbo mode is disabled.\r
82 ///\r
2f88bd3a 83 UINT32 RatioLimit : 1;\r
7ae88a62
MK
84 ///\r
85 /// [Bit 29] Package. Programmable TDP Limit for Turbo Mode (R/O) When\r
86 /// set to 1, indicates that TDP Limits for Turbo mode are programmable,\r
87 /// and when set to 0, indicates TDP Limit for Turbo mode is not\r
88 /// programmable.\r
89 ///\r
2f88bd3a
MK
90 UINT32 TDPLimit : 1;\r
91 UINT32 Reserved3 : 2;\r
7ae88a62
MK
92 ///\r
93 /// [Bit 32] Package. Low Power Mode Support (LPM) (R/O) When set to 1,\r
94 /// indicates that LPM is supported, and when set to 0, indicates LPM is\r
95 /// not supported.\r
96 ///\r
2f88bd3a 97 UINT32 LowPowerModeSupport : 1;\r
7ae88a62
MK
98 ///\r
99 /// [Bits 34:33] Package. Number of ConfigTDP Levels (R/O) 00: Only Base\r
100 /// TDP level available. 01: One additional TDP level available. 02: Two\r
101 /// additional TDP level available. 11: Reserved.\r
102 ///\r
2f88bd3a
MK
103 UINT32 ConfigTDPLevels : 2;\r
104 UINT32 Reserved4 : 5;\r
7ae88a62
MK
105 ///\r
106 /// [Bits 47:40] Package. Maximum Efficiency Ratio (R/O) The is the\r
107 /// minimum ratio (maximum efficiency) that the processor can operates, in\r
108 /// units of 100MHz.\r
109 ///\r
2f88bd3a 110 UINT32 MaximumEfficiencyRatio : 8;\r
7ae88a62
MK
111 ///\r
112 /// [Bits 55:48] Package. Minimum Operating Ratio (R/O) Contains the\r
113 /// minimum supported operating ratio in units of 100 MHz.\r
114 ///\r
2f88bd3a
MK
115 UINT32 MinimumOperatingRatio : 8;\r
116 UINT32 Reserved5 : 8;\r
7ae88a62
MK
117 } Bits;\r
118 ///\r
119 /// All bit fields as a 64-bit value\r
120 ///\r
2f88bd3a 121 UINT64 Uint64;\r
7ae88a62
MK
122} MSR_HASWELL_PLATFORM_INFO_REGISTER;\r
123\r
7ae88a62 124/**\r
ba1a2d11
ED
125 Thread. Performance Event Select for Counter n (R/W) Supports all fields\r
126 described inTable 2-2 and the fields below.\r
7ae88a62
MK
127\r
128 @param ECX MSR_HASWELL_IA32_PERFEVTSELn\r
129 @param EAX Lower 32-bits of MSR value.\r
130 Described by the type MSR_HASWELL_IA32_PERFEVTSEL_REGISTER.\r
131 @param EDX Upper 32-bits of MSR value.\r
132 Described by the type MSR_HASWELL_IA32_PERFEVTSEL_REGISTER.\r
133\r
134 <b>Example usage</b>\r
135 @code\r
136 MSR_HASWELL_IA32_PERFEVTSEL_REGISTER Msr;\r
137\r
138 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_IA32_PERFEVTSEL0);\r
139 AsmWriteMsr64 (MSR_HASWELL_IA32_PERFEVTSEL0, Msr.Uint64);\r
140 @endcode\r
e108c3f6
JF
141 @note MSR_HASWELL_IA32_PERFEVTSEL0 is defined as IA32_PERFEVTSEL0 in SDM.\r
142 MSR_HASWELL_IA32_PERFEVTSEL1 is defined as IA32_PERFEVTSEL1 in SDM.\r
143 MSR_HASWELL_IA32_PERFEVTSEL3 is defined as IA32_PERFEVTSEL3 in SDM.\r
7ae88a62
MK
144 @{\r
145**/\r
2f88bd3a
MK
146#define MSR_HASWELL_IA32_PERFEVTSEL0 0x00000186\r
147#define MSR_HASWELL_IA32_PERFEVTSEL1 0x00000187\r
148#define MSR_HASWELL_IA32_PERFEVTSEL3 0x00000189\r
7ae88a62
MK
149/// @}\r
150\r
151/**\r
152 MSR information returned for MSR indexes #MSR_HASWELL_IA32_PERFEVTSEL0,\r
153 #MSR_HASWELL_IA32_PERFEVTSEL1, and #MSR_HASWELL_IA32_PERFEVTSEL3.\r
154**/\r
155typedef union {\r
156 ///\r
157 /// Individual bit fields\r
158 ///\r
159 struct {\r
160 ///\r
161 /// [Bits 7:0] Event Select: Selects a performance event logic unit.\r
162 ///\r
2f88bd3a 163 UINT32 EventSelect : 8;\r
7ae88a62
MK
164 ///\r
165 /// [Bits 15:8] UMask: Qualifies the microarchitectural condition to\r
166 /// detect on the selected event logic.\r
167 ///\r
2f88bd3a 168 UINT32 UMASK : 8;\r
7ae88a62
MK
169 ///\r
170 /// [Bit 16] USR: Counts while in privilege level is not ring 0.\r
171 ///\r
2f88bd3a 172 UINT32 USR : 1;\r
7ae88a62
MK
173 ///\r
174 /// [Bit 17] OS: Counts while in privilege level is ring 0.\r
175 ///\r
2f88bd3a 176 UINT32 OS : 1;\r
7ae88a62
MK
177 ///\r
178 /// [Bit 18] Edge: Enables edge detection if set.\r
179 ///\r
2f88bd3a 180 UINT32 E : 1;\r
7ae88a62
MK
181 ///\r
182 /// [Bit 19] PC: enables pin control.\r
183 ///\r
2f88bd3a 184 UINT32 PC : 1;\r
7ae88a62
MK
185 ///\r
186 /// [Bit 20] INT: enables interrupt on counter overflow.\r
187 ///\r
2f88bd3a 188 UINT32 INT : 1;\r
7ae88a62
MK
189 ///\r
190 /// [Bit 21] AnyThread: When set to 1, it enables counting the associated\r
191 /// event conditions occurring across all logical processors sharing a\r
192 /// processor core. When set to 0, the counter only increments the\r
193 /// associated event conditions occurring in the logical processor which\r
194 /// programmed the MSR.\r
195 ///\r
2f88bd3a 196 UINT32 ANY : 1;\r
7ae88a62
MK
197 ///\r
198 /// [Bit 22] EN: enables the corresponding performance counter to commence\r
199 /// counting when this bit is set.\r
200 ///\r
2f88bd3a 201 UINT32 EN : 1;\r
7ae88a62
MK
202 ///\r
203 /// [Bit 23] INV: invert the CMASK.\r
204 ///\r
2f88bd3a 205 UINT32 INV : 1;\r
7ae88a62
MK
206 ///\r
207 /// [Bits 31:24] CMASK: When CMASK is not zero, the corresponding\r
208 /// performance counter increments each cycle if the event count is\r
209 /// greater than or equal to the CMASK.\r
210 ///\r
2f88bd3a
MK
211 UINT32 CMASK : 8;\r
212 UINT32 Reserved : 32;\r
7ae88a62 213 ///\r
ba1a2d11 214 /// [Bit 32] IN_TX: see Section 18.3.6.5.1 When IN_TX (bit 32) is set,\r
7ae88a62
MK
215 /// AnyThread (bit 21) should be cleared to prevent incorrect results.\r
216 ///\r
2f88bd3a
MK
217 UINT32 IN_TX : 1;\r
218 UINT32 Reserved2 : 31;\r
7ae88a62
MK
219 } Bits;\r
220 ///\r
221 /// All bit fields as a 64-bit value\r
222 ///\r
2f88bd3a 223 UINT64 Uint64;\r
7ae88a62
MK
224} MSR_HASWELL_IA32_PERFEVTSEL_REGISTER;\r
225\r
7ae88a62 226/**\r
ba1a2d11
ED
227 Thread. Performance Event Select for Counter 2 (R/W) Supports all fields\r
228 described inTable 2-2 and the fields below.\r
7ae88a62
MK
229\r
230 @param ECX MSR_HASWELL_IA32_PERFEVTSEL2 (0x00000188)\r
231 @param EAX Lower 32-bits of MSR value.\r
232 Described by the type MSR_HASWELL_IA32_PERFEVTSEL2_REGISTER.\r
233 @param EDX Upper 32-bits of MSR value.\r
234 Described by the type MSR_HASWELL_IA32_PERFEVTSEL2_REGISTER.\r
235\r
236 <b>Example usage</b>\r
237 @code\r
238 MSR_HASWELL_IA32_PERFEVTSEL2_REGISTER Msr;\r
239\r
240 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_IA32_PERFEVTSEL2);\r
241 AsmWriteMsr64 (MSR_HASWELL_IA32_PERFEVTSEL2, Msr.Uint64);\r
242 @endcode\r
e108c3f6 243 @note MSR_HASWELL_IA32_PERFEVTSEL2 is defined as IA32_PERFEVTSEL2 in SDM.\r
7ae88a62 244**/\r
2f88bd3a 245#define MSR_HASWELL_IA32_PERFEVTSEL2 0x00000188\r
7ae88a62
MK
246\r
247/**\r
248 MSR information returned for MSR index #MSR_HASWELL_IA32_PERFEVTSEL2\r
249**/\r
250typedef union {\r
251 ///\r
252 /// Individual bit fields\r
253 ///\r
254 struct {\r
255 ///\r
256 /// [Bits 7:0] Event Select: Selects a performance event logic unit.\r
257 ///\r
2f88bd3a 258 UINT32 EventSelect : 8;\r
7ae88a62
MK
259 ///\r
260 /// [Bits 15:8] UMask: Qualifies the microarchitectural condition to\r
261 /// detect on the selected event logic.\r
262 ///\r
2f88bd3a 263 UINT32 UMASK : 8;\r
7ae88a62
MK
264 ///\r
265 /// [Bit 16] USR: Counts while in privilege level is not ring 0.\r
266 ///\r
2f88bd3a 267 UINT32 USR : 1;\r
7ae88a62
MK
268 ///\r
269 /// [Bit 17] OS: Counts while in privilege level is ring 0.\r
270 ///\r
2f88bd3a 271 UINT32 OS : 1;\r
7ae88a62
MK
272 ///\r
273 /// [Bit 18] Edge: Enables edge detection if set.\r
274 ///\r
2f88bd3a 275 UINT32 E : 1;\r
7ae88a62
MK
276 ///\r
277 /// [Bit 19] PC: enables pin control.\r
278 ///\r
2f88bd3a 279 UINT32 PC : 1;\r
7ae88a62
MK
280 ///\r
281 /// [Bit 20] INT: enables interrupt on counter overflow.\r
282 ///\r
2f88bd3a 283 UINT32 INT : 1;\r
7ae88a62
MK
284 ///\r
285 /// [Bit 21] AnyThread: When set to 1, it enables counting the associated\r
286 /// event conditions occurring across all logical processors sharing a\r
287 /// processor core. When set to 0, the counter only increments the\r
288 /// associated event conditions occurring in the logical processor which\r
289 /// programmed the MSR.\r
290 ///\r
2f88bd3a 291 UINT32 ANY : 1;\r
7ae88a62
MK
292 ///\r
293 /// [Bit 22] EN: enables the corresponding performance counter to commence\r
294 /// counting when this bit is set.\r
295 ///\r
2f88bd3a 296 UINT32 EN : 1;\r
7ae88a62
MK
297 ///\r
298 /// [Bit 23] INV: invert the CMASK.\r
299 ///\r
2f88bd3a 300 UINT32 INV : 1;\r
7ae88a62
MK
301 ///\r
302 /// [Bits 31:24] CMASK: When CMASK is not zero, the corresponding\r
303 /// performance counter increments each cycle if the event count is\r
304 /// greater than or equal to the CMASK.\r
305 ///\r
2f88bd3a
MK
306 UINT32 CMASK : 8;\r
307 UINT32 Reserved : 32;\r
7ae88a62 308 ///\r
ba1a2d11 309 /// [Bit 32] IN_TX: see Section 18.3.6.5.1 When IN_TX (bit 32) is set,\r
7ae88a62
MK
310 /// AnyThread (bit 21) should be cleared to prevent incorrect results.\r
311 ///\r
2f88bd3a 312 UINT32 IN_TX : 1;\r
7ae88a62 313 ///\r
ba1a2d11 314 /// [Bit 33] IN_TXCP: see Section 18.3.6.5.1 When IN_TXCP=1 & IN_TX=1 and\r
7ae88a62
MK
315 /// in sampling, spurious PMI may occur and transactions may continuously\r
316 /// abort near overflow conditions. Software should favor using IN_TXCP\r
317 /// for counting over sampling. If sampling, software should use large\r
318 /// "sample-after" value after clearing the counter configured to use\r
319 /// IN_TXCP and also always reset the counter even when no overflow\r
320 /// condition was reported.\r
321 ///\r
2f88bd3a
MK
322 UINT32 IN_TXCP : 1;\r
323 UINT32 Reserved2 : 30;\r
7ae88a62
MK
324 } Bits;\r
325 ///\r
326 /// All bit fields as a 64-bit value\r
327 ///\r
2f88bd3a 328 UINT64 Uint64;\r
7ae88a62
MK
329} MSR_HASWELL_IA32_PERFEVTSEL2_REGISTER;\r
330\r
7ae88a62
MK
331/**\r
332 Thread. Last Branch Record Filtering Select Register (R/W).\r
333\r
334 @param ECX MSR_HASWELL_LBR_SELECT (0x000001C8)\r
335 @param EAX Lower 32-bits of MSR value.\r
336 Described by the type MSR_HASWELL_LBR_SELECT_REGISTER.\r
337 @param EDX Upper 32-bits of MSR value.\r
338 Described by the type MSR_HASWELL_LBR_SELECT_REGISTER.\r
339\r
340 <b>Example usage</b>\r
341 @code\r
342 MSR_HASWELL_LBR_SELECT_REGISTER Msr;\r
343\r
344 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_LBR_SELECT);\r
345 AsmWriteMsr64 (MSR_HASWELL_LBR_SELECT, Msr.Uint64);\r
346 @endcode\r
e108c3f6 347 @note MSR_HASWELL_LBR_SELECT is defined as MSR_LBR_SELECT in SDM.\r
7ae88a62 348**/\r
2f88bd3a 349#define MSR_HASWELL_LBR_SELECT 0x000001C8\r
7ae88a62
MK
350\r
351/**\r
352 MSR information returned for MSR index #MSR_HASWELL_LBR_SELECT\r
353**/\r
354typedef union {\r
355 ///\r
356 /// Individual bit fields\r
357 ///\r
358 struct {\r
359 ///\r
360 /// [Bit 0] CPL_EQ_0.\r
361 ///\r
2f88bd3a 362 UINT32 CPL_EQ_0 : 1;\r
7ae88a62
MK
363 ///\r
364 /// [Bit 1] CPL_NEQ_0.\r
365 ///\r
2f88bd3a 366 UINT32 CPL_NEQ_0 : 1;\r
7ae88a62
MK
367 ///\r
368 /// [Bit 2] JCC.\r
369 ///\r
2f88bd3a 370 UINT32 JCC : 1;\r
7ae88a62
MK
371 ///\r
372 /// [Bit 3] NEAR_REL_CALL.\r
373 ///\r
2f88bd3a 374 UINT32 NEAR_REL_CALL : 1;\r
7ae88a62
MK
375 ///\r
376 /// [Bit 4] NEAR_IND_CALL.\r
377 ///\r
2f88bd3a 378 UINT32 NEAR_IND_CALL : 1;\r
7ae88a62
MK
379 ///\r
380 /// [Bit 5] NEAR_RET.\r
381 ///\r
2f88bd3a 382 UINT32 NEAR_RET : 1;\r
7ae88a62
MK
383 ///\r
384 /// [Bit 6] NEAR_IND_JMP.\r
385 ///\r
2f88bd3a 386 UINT32 NEAR_IND_JMP : 1;\r
7ae88a62
MK
387 ///\r
388 /// [Bit 7] NEAR_REL_JMP.\r
389 ///\r
2f88bd3a 390 UINT32 NEAR_REL_JMP : 1;\r
7ae88a62
MK
391 ///\r
392 /// [Bit 8] FAR_BRANCH.\r
393 ///\r
2f88bd3a 394 UINT32 FAR_BRANCH : 1;\r
7ae88a62
MK
395 ///\r
396 /// [Bit 9] EN_CALL_STACK.\r
397 ///\r
2f88bd3a
MK
398 UINT32 EN_CALL_STACK : 1;\r
399 UINT32 Reserved1 : 22;\r
400 UINT32 Reserved2 : 32;\r
7ae88a62
MK
401 } Bits;\r
402 ///\r
403 /// All bit fields as a 32-bit value\r
404 ///\r
2f88bd3a 405 UINT32 Uint32;\r
7ae88a62
MK
406 ///\r
407 /// All bit fields as a 64-bit value\r
408 ///\r
2f88bd3a 409 UINT64 Uint64;\r
7ae88a62
MK
410} MSR_HASWELL_LBR_SELECT_REGISTER;\r
411\r
7ae88a62
MK
412/**\r
413 Package. Package C6/C7 Interrupt Response Limit 1 (R/W) This MSR defines\r
414 the interrupt response time limit used by the processor to manage transition\r
415 to package C6 or C7 state. The latency programmed in this register is for\r
416 the shorter-latency sub C-states used by an MWAIT hint to C6 or C7 state.\r
417 Note: C-state values are processor specific C-state code names, unrelated to\r
418 MWAIT extension C-state parameters or ACPI C-States.\r
419\r
420 @param ECX MSR_HASWELL_PKGC_IRTL1 (0x0000060B)\r
421 @param EAX Lower 32-bits of MSR value.\r
422 Described by the type MSR_HASWELL_PKGC_IRTL1_REGISTER.\r
423 @param EDX Upper 32-bits of MSR value.\r
424 Described by the type MSR_HASWELL_PKGC_IRTL1_REGISTER.\r
425\r
426 <b>Example usage</b>\r
427 @code\r
428 MSR_HASWELL_PKGC_IRTL1_REGISTER Msr;\r
429\r
430 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_PKGC_IRTL1);\r
431 AsmWriteMsr64 (MSR_HASWELL_PKGC_IRTL1, Msr.Uint64);\r
432 @endcode\r
e108c3f6 433 @note MSR_HASWELL_PKGC_IRTL1 is defined as MSR_PKGC_IRTL1 in SDM.\r
7ae88a62 434**/\r
2f88bd3a 435#define MSR_HASWELL_PKGC_IRTL1 0x0000060B\r
7ae88a62
MK
436\r
437/**\r
438 MSR information returned for MSR index #MSR_HASWELL_PKGC_IRTL1\r
439**/\r
440typedef union {\r
441 ///\r
442 /// Individual bit fields\r
443 ///\r
444 struct {\r
445 ///\r
446 /// [Bits 9:0] Interrupt response time limit (R/W) Specifies the limit\r
447 /// that should be used to decide if the package should be put into a\r
448 /// package C6 or C7 state.\r
449 ///\r
2f88bd3a 450 UINT32 InterruptResponseTimeLimit : 10;\r
7ae88a62 451 ///\r
ba1a2d11
ED
452 /// [Bits 12:10] Time Unit (R/W) Specifies the encoding value of time unit\r
453 /// of the interrupt response time limit. See Table 2-19 for supported\r
454 /// time unit encodings.\r
7ae88a62 455 ///\r
2f88bd3a
MK
456 UINT32 TimeUnit : 3;\r
457 UINT32 Reserved1 : 2;\r
7ae88a62
MK
458 ///\r
459 /// [Bit 15] Valid (R/W) Indicates whether the values in bits 12:0 are\r
460 /// valid and can be used by the processor for package C-sate management.\r
461 ///\r
2f88bd3a
MK
462 UINT32 Valid : 1;\r
463 UINT32 Reserved2 : 16;\r
464 UINT32 Reserved3 : 32;\r
7ae88a62
MK
465 } Bits;\r
466 ///\r
467 /// All bit fields as a 32-bit value\r
468 ///\r
2f88bd3a 469 UINT32 Uint32;\r
7ae88a62
MK
470 ///\r
471 /// All bit fields as a 64-bit value\r
472 ///\r
2f88bd3a 473 UINT64 Uint64;\r
7ae88a62
MK
474} MSR_HASWELL_PKGC_IRTL1_REGISTER;\r
475\r
7ae88a62
MK
476/**\r
477 Package. Package C6/C7 Interrupt Response Limit 2 (R/W) This MSR defines\r
478 the interrupt response time limit used by the processor to manage transition\r
479 to package C6 or C7 state. The latency programmed in this register is for\r
480 the longer-latency sub Cstates used by an MWAIT hint to C6 or C7 state.\r
481 Note: C-state values are processor specific C-state code names, unrelated to\r
482 MWAIT extension C-state parameters or ACPI C-States.\r
483\r
484 @param ECX MSR_HASWELL_PKGC_IRTL2 (0x0000060C)\r
485 @param EAX Lower 32-bits of MSR value.\r
486 Described by the type MSR_HASWELL_PKGC_IRTL2_REGISTER.\r
487 @param EDX Upper 32-bits of MSR value.\r
488 Described by the type MSR_HASWELL_PKGC_IRTL2_REGISTER.\r
489\r
490 <b>Example usage</b>\r
491 @code\r
492 MSR_HASWELL_PKGC_IRTL2_REGISTER Msr;\r
493\r
494 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_PKGC_IRTL2);\r
495 AsmWriteMsr64 (MSR_HASWELL_PKGC_IRTL2, Msr.Uint64);\r
496 @endcode\r
e108c3f6 497 @note MSR_HASWELL_PKGC_IRTL2 is defined as MSR_PKGC_IRTL2 in SDM.\r
7ae88a62 498**/\r
2f88bd3a 499#define MSR_HASWELL_PKGC_IRTL2 0x0000060C\r
7ae88a62
MK
500\r
501/**\r
502 MSR information returned for MSR index #MSR_HASWELL_PKGC_IRTL2\r
503**/\r
504typedef union {\r
505 ///\r
506 /// Individual bit fields\r
507 ///\r
508 struct {\r
509 ///\r
ba1a2d11 510 /// [Bits 9:0] Interrupt response time limit (R/W) Specifies the limit\r
7ae88a62
MK
511 /// that should be used to decide if the package should be put into a\r
512 /// package C6 or C7 state.\r
513 ///\r
2f88bd3a 514 UINT32 InterruptResponseTimeLimit : 10;\r
7ae88a62 515 ///\r
ba1a2d11
ED
516 /// [Bits 12:10] Time Unit (R/W) Specifies the encoding value of time unit\r
517 /// of the interrupt response time limit. See Table 2-19 for supported\r
518 /// time unit encodings.\r
7ae88a62 519 ///\r
2f88bd3a
MK
520 UINT32 TimeUnit : 3;\r
521 UINT32 Reserved1 : 2;\r
7ae88a62
MK
522 ///\r
523 /// [Bit 15] Valid (R/W) Indicates whether the values in bits 12:0 are\r
524 /// valid and can be used by the processor for package C-sate management.\r
525 ///\r
2f88bd3a
MK
526 UINT32 Valid : 1;\r
527 UINT32 Reserved2 : 16;\r
528 UINT32 Reserved3 : 32;\r
7ae88a62
MK
529 } Bits;\r
530 ///\r
531 /// All bit fields as a 32-bit value\r
532 ///\r
2f88bd3a 533 UINT32 Uint32;\r
7ae88a62
MK
534 ///\r
535 /// All bit fields as a 64-bit value\r
536 ///\r
2f88bd3a 537 UINT64 Uint64;\r
7ae88a62
MK
538} MSR_HASWELL_PKGC_IRTL2_REGISTER;\r
539\r
7ae88a62
MK
540/**\r
541 Package. PKG Perf Status (R/O) See Section 14.9.3, "Package RAPL Domain.".\r
542\r
543 @param ECX MSR_HASWELL_PKG_PERF_STATUS (0x00000613)\r
544 @param EAX Lower 32-bits of MSR value.\r
545 @param EDX Upper 32-bits of MSR value.\r
546\r
547 <b>Example usage</b>\r
548 @code\r
549 UINT64 Msr;\r
550\r
551 Msr = AsmReadMsr64 (MSR_HASWELL_PKG_PERF_STATUS);\r
552 @endcode\r
e108c3f6 553 @note MSR_HASWELL_PKG_PERF_STATUS is defined as MSR_PKG_PERF_STATUS in SDM.\r
7ae88a62 554**/\r
2f88bd3a 555#define MSR_HASWELL_PKG_PERF_STATUS 0x00000613\r
7ae88a62
MK
556\r
557/**\r
558 Package. DRAM Energy Status (R/O) See Section 14.9.5, "DRAM RAPL Domain.".\r
559\r
560 @param ECX MSR_HASWELL_DRAM_ENERGY_STATUS (0x00000619)\r
561 @param EAX Lower 32-bits of MSR value.\r
562 @param EDX Upper 32-bits of MSR value.\r
563\r
564 <b>Example usage</b>\r
565 @code\r
566 UINT64 Msr;\r
567\r
568 Msr = AsmReadMsr64 (MSR_HASWELL_DRAM_ENERGY_STATUS);\r
569 @endcode\r
e108c3f6 570 @note MSR_HASWELL_DRAM_ENERGY_STATUS is defined as MSR_DRAM_ENERGY_STATUS in SDM.\r
7ae88a62 571**/\r
2f88bd3a 572#define MSR_HASWELL_DRAM_ENERGY_STATUS 0x00000619\r
7ae88a62
MK
573\r
574/**\r
575 Package. DRAM Performance Throttling Status (R/O) See Section 14.9.5, "DRAM\r
576 RAPL Domain.".\r
577\r
578 @param ECX MSR_HASWELL_DRAM_PERF_STATUS (0x0000061B)\r
579 @param EAX Lower 32-bits of MSR value.\r
580 @param EDX Upper 32-bits of MSR value.\r
581\r
582 <b>Example usage</b>\r
583 @code\r
584 UINT64 Msr;\r
585\r
586 Msr = AsmReadMsr64 (MSR_HASWELL_DRAM_PERF_STATUS);\r
587 @endcode\r
e108c3f6 588 @note MSR_HASWELL_DRAM_PERF_STATUS is defined as MSR_DRAM_PERF_STATUS in SDM.\r
7ae88a62 589**/\r
2f88bd3a 590#define MSR_HASWELL_DRAM_PERF_STATUS 0x0000061B\r
7ae88a62
MK
591\r
592/**\r
593 Package. Base TDP Ratio (R/O).\r
594\r
595 @param ECX MSR_HASWELL_CONFIG_TDP_NOMINAL (0x00000648)\r
596 @param EAX Lower 32-bits of MSR value.\r
597 Described by the type MSR_HASWELL_CONFIG_TDP_NOMINAL_REGISTER.\r
598 @param EDX Upper 32-bits of MSR value.\r
599 Described by the type MSR_HASWELL_CONFIG_TDP_NOMINAL_REGISTER.\r
600\r
601 <b>Example usage</b>\r
602 @code\r
603 MSR_HASWELL_CONFIG_TDP_NOMINAL_REGISTER Msr;\r
604\r
605 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_CONFIG_TDP_NOMINAL);\r
606 @endcode\r
e108c3f6 607 @note MSR_HASWELL_CONFIG_TDP_NOMINAL is defined as MSR_CONFIG_TDP_NOMINAL in SDM.\r
7ae88a62 608**/\r
2f88bd3a 609#define MSR_HASWELL_CONFIG_TDP_NOMINAL 0x00000648\r
7ae88a62
MK
610\r
611/**\r
612 MSR information returned for MSR index #MSR_HASWELL_CONFIG_TDP_NOMINAL\r
613**/\r
614typedef union {\r
615 ///\r
616 /// Individual bit fields\r
617 ///\r
618 struct {\r
619 ///\r
620 /// [Bits 7:0] Config_TDP_Base Base TDP level ratio to be used for this\r
621 /// specific processor (in units of 100 MHz).\r
622 ///\r
2f88bd3a
MK
623 UINT32 Config_TDP_Base : 8;\r
624 UINT32 Reserved1 : 24;\r
625 UINT32 Reserved2 : 32;\r
7ae88a62
MK
626 } Bits;\r
627 ///\r
628 /// All bit fields as a 32-bit value\r
629 ///\r
2f88bd3a 630 UINT32 Uint32;\r
7ae88a62
MK
631 ///\r
632 /// All bit fields as a 64-bit value\r
633 ///\r
2f88bd3a 634 UINT64 Uint64;\r
7ae88a62
MK
635} MSR_HASWELL_CONFIG_TDP_NOMINAL_REGISTER;\r
636\r
7ae88a62
MK
637/**\r
638 Package. ConfigTDP Level 1 ratio and power level (R/O).\r
639\r
640 @param ECX MSR_HASWELL_CONFIG_TDP_LEVEL1 (0x00000649)\r
641 @param EAX Lower 32-bits of MSR value.\r
642 Described by the type MSR_HASWELL_CONFIG_TDP_LEVEL1_REGISTER.\r
643 @param EDX Upper 32-bits of MSR value.\r
644 Described by the type MSR_HASWELL_CONFIG_TDP_LEVEL1_REGISTER.\r
645\r
646 <b>Example usage</b>\r
647 @code\r
648 MSR_HASWELL_CONFIG_TDP_LEVEL1_REGISTER Msr;\r
649\r
650 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_CONFIG_TDP_LEVEL1);\r
651 @endcode\r
e108c3f6 652 @note MSR_HASWELL_CONFIG_TDP_LEVEL1 is defined as MSR_CONFIG_TDP_LEVEL1 in SDM.\r
7ae88a62 653**/\r
2f88bd3a 654#define MSR_HASWELL_CONFIG_TDP_LEVEL1 0x00000649\r
7ae88a62
MK
655\r
656/**\r
657 MSR information returned for MSR index #MSR_HASWELL_CONFIG_TDP_LEVEL1\r
658**/\r
659typedef union {\r
660 ///\r
661 /// Individual bit fields\r
662 ///\r
663 struct {\r
664 ///\r
665 /// [Bits 14:0] PKG_TDP_LVL1. Power setting for ConfigTDP Level 1.\r
666 ///\r
2f88bd3a
MK
667 UINT32 PKG_TDP_LVL1 : 15;\r
668 UINT32 Reserved1 : 1;\r
7ae88a62
MK
669 ///\r
670 /// [Bits 23:16] Config_TDP_LVL1_Ratio. ConfigTDP level 1 ratio to be used\r
671 /// for this specific processor.\r
672 ///\r
2f88bd3a
MK
673 UINT32 Config_TDP_LVL1_Ratio : 8;\r
674 UINT32 Reserved2 : 8;\r
7ae88a62
MK
675 ///\r
676 /// [Bits 46:32] PKG_MAX_PWR_LVL1. Max Power setting allowed for ConfigTDP\r
677 /// Level 1.\r
678 ///\r
2f88bd3a 679 UINT32 PKG_MAX_PWR_LVL1 : 15;\r
7ae88a62
MK
680 ///\r
681 /// [Bits 62:47] PKG_MIN_PWR_LVL1. MIN Power setting allowed for ConfigTDP\r
682 /// Level 1.\r
683 ///\r
2f88bd3a
MK
684 UINT32 PKG_MIN_PWR_LVL1 : 16;\r
685 UINT32 Reserved3 : 1;\r
7ae88a62
MK
686 } Bits;\r
687 ///\r
688 /// All bit fields as a 64-bit value\r
689 ///\r
2f88bd3a 690 UINT64 Uint64;\r
7ae88a62
MK
691} MSR_HASWELL_CONFIG_TDP_LEVEL1_REGISTER;\r
692\r
7ae88a62
MK
693/**\r
694 Package. ConfigTDP Level 2 ratio and power level (R/O).\r
695\r
696 @param ECX MSR_HASWELL_CONFIG_TDP_LEVEL2 (0x0000064A)\r
697 @param EAX Lower 32-bits of MSR value.\r
698 Described by the type MSR_HASWELL_CONFIG_TDP_LEVEL2_REGISTER.\r
699 @param EDX Upper 32-bits of MSR value.\r
700 Described by the type MSR_HASWELL_CONFIG_TDP_LEVEL2_REGISTER.\r
701\r
702 <b>Example usage</b>\r
703 @code\r
704 MSR_HASWELL_CONFIG_TDP_LEVEL2_REGISTER Msr;\r
705\r
706 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_CONFIG_TDP_LEVEL2);\r
707 @endcode\r
e108c3f6 708 @note MSR_HASWELL_CONFIG_TDP_LEVEL2 is defined as MSR_CONFIG_TDP_LEVEL2 in SDM.\r
7ae88a62 709**/\r
2f88bd3a 710#define MSR_HASWELL_CONFIG_TDP_LEVEL2 0x0000064A\r
7ae88a62
MK
711\r
712/**\r
713 MSR information returned for MSR index #MSR_HASWELL_CONFIG_TDP_LEVEL2\r
714**/\r
715typedef union {\r
716 ///\r
717 /// Individual bit fields\r
718 ///\r
719 struct {\r
720 ///\r
721 /// [Bits 14:0] PKG_TDP_LVL2. Power setting for ConfigTDP Level 2.\r
722 ///\r
2f88bd3a
MK
723 UINT32 PKG_TDP_LVL2 : 15;\r
724 UINT32 Reserved1 : 1;\r
7ae88a62
MK
725 ///\r
726 /// [Bits 23:16] Config_TDP_LVL2_Ratio. ConfigTDP level 2 ratio to be used\r
727 /// for this specific processor.\r
728 ///\r
2f88bd3a
MK
729 UINT32 Config_TDP_LVL2_Ratio : 8;\r
730 UINT32 Reserved2 : 8;\r
7ae88a62
MK
731 ///\r
732 /// [Bits 46:32] PKG_MAX_PWR_LVL2. Max Power setting allowed for ConfigTDP\r
733 /// Level 2.\r
734 ///\r
2f88bd3a 735 UINT32 PKG_MAX_PWR_LVL2 : 15;\r
7ae88a62
MK
736 ///\r
737 /// [Bits 62:47] PKG_MIN_PWR_LVL2. MIN Power setting allowed for ConfigTDP\r
738 /// Level 2.\r
739 ///\r
2f88bd3a
MK
740 UINT32 PKG_MIN_PWR_LVL2 : 16;\r
741 UINT32 Reserved3 : 1;\r
7ae88a62
MK
742 } Bits;\r
743 ///\r
744 /// All bit fields as a 64-bit value\r
745 ///\r
2f88bd3a 746 UINT64 Uint64;\r
7ae88a62
MK
747} MSR_HASWELL_CONFIG_TDP_LEVEL2_REGISTER;\r
748\r
7ae88a62
MK
749/**\r
750 Package. ConfigTDP Control (R/W).\r
751\r
752 @param ECX MSR_HASWELL_CONFIG_TDP_CONTROL (0x0000064B)\r
753 @param EAX Lower 32-bits of MSR value.\r
754 Described by the type MSR_HASWELL_CONFIG_TDP_CONTROL_REGISTER.\r
755 @param EDX Upper 32-bits of MSR value.\r
756 Described by the type MSR_HASWELL_CONFIG_TDP_CONTROL_REGISTER.\r
757\r
758 <b>Example usage</b>\r
759 @code\r
760 MSR_HASWELL_CONFIG_TDP_CONTROL_REGISTER Msr;\r
761\r
762 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_CONFIG_TDP_CONTROL);\r
763 AsmWriteMsr64 (MSR_HASWELL_CONFIG_TDP_CONTROL, Msr.Uint64);\r
764 @endcode\r
e108c3f6 765 @note MSR_HASWELL_CONFIG_TDP_CONTROL is defined as MSR_CONFIG_TDP_CONTROL in SDM.\r
7ae88a62 766**/\r
2f88bd3a 767#define MSR_HASWELL_CONFIG_TDP_CONTROL 0x0000064B\r
7ae88a62
MK
768\r
769/**\r
770 MSR information returned for MSR index #MSR_HASWELL_CONFIG_TDP_CONTROL\r
771**/\r
772typedef union {\r
773 ///\r
774 /// Individual bit fields\r
775 ///\r
776 struct {\r
777 ///\r
778 /// [Bits 1:0] TDP_LEVEL (RW/L) System BIOS can program this field.\r
779 ///\r
2f88bd3a
MK
780 UINT32 TDP_LEVEL : 2;\r
781 UINT32 Reserved1 : 29;\r
7ae88a62
MK
782 ///\r
783 /// [Bit 31] Config_TDP_Lock (RW/L) When this bit is set, the content of\r
784 /// this register is locked until a reset.\r
785 ///\r
2f88bd3a
MK
786 UINT32 Config_TDP_Lock : 1;\r
787 UINT32 Reserved2 : 32;\r
7ae88a62
MK
788 } Bits;\r
789 ///\r
790 /// All bit fields as a 32-bit value\r
791 ///\r
2f88bd3a 792 UINT32 Uint32;\r
7ae88a62
MK
793 ///\r
794 /// All bit fields as a 64-bit value\r
795 ///\r
2f88bd3a 796 UINT64 Uint64;\r
7ae88a62
MK
797} MSR_HASWELL_CONFIG_TDP_CONTROL_REGISTER;\r
798\r
7ae88a62
MK
799/**\r
800 Package. ConfigTDP Control (R/W).\r
801\r
802 @param ECX MSR_HASWELL_TURBO_ACTIVATION_RATIO (0x0000064C)\r
803 @param EAX Lower 32-bits of MSR value.\r
804 Described by the type MSR_HASWELL_TURBO_ACTIVATION_RATIO_REGISTER.\r
805 @param EDX Upper 32-bits of MSR value.\r
806 Described by the type MSR_HASWELL_TURBO_ACTIVATION_RATIO_REGISTER.\r
807\r
808 <b>Example usage</b>\r
809 @code\r
810 MSR_HASWELL_TURBO_ACTIVATION_RATIO_REGISTER Msr;\r
811\r
812 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_TURBO_ACTIVATION_RATIO);\r
813 AsmWriteMsr64 (MSR_HASWELL_TURBO_ACTIVATION_RATIO, Msr.Uint64);\r
814 @endcode\r
e108c3f6 815 @note MSR_HASWELL_TURBO_ACTIVATION_RATIO is defined as MSR_TURBO_ACTIVATION_RATIO in SDM.\r
7ae88a62 816**/\r
2f88bd3a 817#define MSR_HASWELL_TURBO_ACTIVATION_RATIO 0x0000064C\r
7ae88a62
MK
818\r
819/**\r
820 MSR information returned for MSR index #MSR_HASWELL_TURBO_ACTIVATION_RATIO\r
821**/\r
822typedef union {\r
823 ///\r
824 /// Individual bit fields\r
825 ///\r
826 struct {\r
827 ///\r
828 /// [Bits 7:0] MAX_NON_TURBO_RATIO (RW/L) System BIOS can program this\r
829 /// field.\r
830 ///\r
2f88bd3a
MK
831 UINT32 MAX_NON_TURBO_RATIO : 8;\r
832 UINT32 Reserved1 : 23;\r
7ae88a62
MK
833 ///\r
834 /// [Bit 31] TURBO_ACTIVATION_RATIO_Lock (RW/L) When this bit is set, the\r
835 /// content of this register is locked until a reset.\r
836 ///\r
2f88bd3a
MK
837 UINT32 TURBO_ACTIVATION_RATIO_Lock : 1;\r
838 UINT32 Reserved2 : 32;\r
7ae88a62
MK
839 } Bits;\r
840 ///\r
841 /// All bit fields as a 32-bit value\r
842 ///\r
2f88bd3a 843 UINT32 Uint32;\r
7ae88a62
MK
844 ///\r
845 /// All bit fields as a 64-bit value\r
846 ///\r
2f88bd3a 847 UINT64 Uint64;\r
7ae88a62
MK
848} MSR_HASWELL_TURBO_ACTIVATION_RATIO_REGISTER;\r
849\r
7ae88a62
MK
850/**\r
851 Core. C-State Configuration Control (R/W) Note: C-state values are processor\r
852 specific C-state code names, unrelated to MWAIT extension C-state parameters\r
853 or ACPI Cstates. `See http://biosbits.org. <http://biosbits.org>`__.\r
854\r
855 @param ECX MSR_HASWELL_PKG_CST_CONFIG_CONTROL (0x000000E2)\r
856 @param EAX Lower 32-bits of MSR value.\r
857 Described by the type MSR_HASWELL_PKG_CST_CONFIG_CONTROL_REGISTER.\r
858 @param EDX Upper 32-bits of MSR value.\r
859 Described by the type MSR_HASWELL_PKG_CST_CONFIG_CONTROL_REGISTER.\r
860\r
861 <b>Example usage</b>\r
862 @code\r
863 MSR_HASWELL_PKG_CST_CONFIG_CONTROL_REGISTER Msr;\r
864\r
865 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_PKG_CST_CONFIG_CONTROL);\r
866 AsmWriteMsr64 (MSR_HASWELL_PKG_CST_CONFIG_CONTROL, Msr.Uint64);\r
867 @endcode\r
e108c3f6 868 @note MSR_HASWELL_PKG_CST_CONFIG_CONTROL is defined as MSR_PKG_CST_CONFIG_CONTROL in SDM.\r
7ae88a62 869**/\r
2f88bd3a 870#define MSR_HASWELL_PKG_CST_CONFIG_CONTROL 0x000000E2\r
7ae88a62
MK
871\r
872/**\r
873 MSR information returned for MSR index #MSR_HASWELL_PKG_CST_CONFIG_CONTROL\r
874**/\r
875typedef union {\r
876 ///\r
877 /// Individual bit fields\r
878 ///\r
879 struct {\r
880 ///\r
881 /// [Bits 3:0] Package C-State Limit (R/W) Specifies the lowest\r
882 /// processor-specific C-state code name (consuming the least power) for\r
883 /// the package. The default is set as factory-configured package C-state\r
884 /// limit. The following C-state code name encodings are supported: 0000b:\r
885 /// C0/C1 (no package C-state support) 0001b: C2 0010b: C3 0011b: C6\r
886 /// 0100b: C7 0101b: C7s Package C states C7 are not available to\r
887 /// processor with signature 06_3CH.\r
888 ///\r
2f88bd3a
MK
889 UINT32 Limit : 4;\r
890 UINT32 Reserved1 : 6;\r
7ae88a62
MK
891 ///\r
892 /// [Bit 10] I/O MWAIT Redirection Enable (R/W).\r
893 ///\r
2f88bd3a
MK
894 UINT32 IO_MWAIT : 1;\r
895 UINT32 Reserved2 : 4;\r
7ae88a62
MK
896 ///\r
897 /// [Bit 15] CFG Lock (R/WO).\r
898 ///\r
2f88bd3a
MK
899 UINT32 CFGLock : 1;\r
900 UINT32 Reserved3 : 9;\r
7ae88a62
MK
901 ///\r
902 /// [Bit 25] C3 State Auto Demotion Enable (R/W).\r
903 ///\r
2f88bd3a 904 UINT32 C3AutoDemotion : 1;\r
7ae88a62
MK
905 ///\r
906 /// [Bit 26] C1 State Auto Demotion Enable (R/W).\r
907 ///\r
2f88bd3a 908 UINT32 C1AutoDemotion : 1;\r
7ae88a62
MK
909 ///\r
910 /// [Bit 27] Enable C3 Undemotion (R/W).\r
911 ///\r
2f88bd3a 912 UINT32 C3Undemotion : 1;\r
7ae88a62
MK
913 ///\r
914 /// [Bit 28] Enable C1 Undemotion (R/W).\r
915 ///\r
2f88bd3a
MK
916 UINT32 C1Undemotion : 1;\r
917 UINT32 Reserved4 : 3;\r
918 UINT32 Reserved5 : 32;\r
7ae88a62
MK
919 } Bits;\r
920 ///\r
921 /// All bit fields as a 32-bit value\r
922 ///\r
2f88bd3a 923 UINT32 Uint32;\r
7ae88a62
MK
924 ///\r
925 /// All bit fields as a 64-bit value\r
926 ///\r
2f88bd3a 927 UINT64 Uint64;\r
7ae88a62
MK
928} MSR_HASWELL_PKG_CST_CONFIG_CONTROL_REGISTER;\r
929\r
7ae88a62
MK
930/**\r
931 THREAD. Enhanced SMM Capabilities (SMM-RO) Reports SMM capability\r
932 Enhancement. Accessible only while in SMM.\r
933\r
934 @param ECX MSR_HASWELL_SMM_MCA_CAP (0x0000017D)\r
935 @param EAX Lower 32-bits of MSR value.\r
936 Described by the type MSR_HASWELL_SMM_MCA_CAP_REGISTER.\r
937 @param EDX Upper 32-bits of MSR value.\r
938 Described by the type MSR_HASWELL_SMM_MCA_CAP_REGISTER.\r
939\r
940 <b>Example usage</b>\r
941 @code\r
942 MSR_HASWELL_SMM_MCA_CAP_REGISTER Msr;\r
943\r
944 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_SMM_MCA_CAP);\r
945 AsmWriteMsr64 (MSR_HASWELL_SMM_MCA_CAP, Msr.Uint64);\r
946 @endcode\r
e108c3f6 947 @note MSR_HASWELL_SMM_MCA_CAP is defined as MSR_SMM_MCA_CAP in SDM.\r
7ae88a62 948**/\r
2f88bd3a 949#define MSR_HASWELL_SMM_MCA_CAP 0x0000017D\r
7ae88a62
MK
950\r
951/**\r
952 MSR information returned for MSR index #MSR_HASWELL_SMM_MCA_CAP\r
953**/\r
954typedef union {\r
955 ///\r
956 /// Individual bit fields\r
957 ///\r
958 struct {\r
2f88bd3a
MK
959 UINT32 Reserved1 : 32;\r
960 UINT32 Reserved2 : 26;\r
7ae88a62
MK
961 ///\r
962 /// [Bit 58] SMM_Code_Access_Chk (SMM-RO) If set to 1 indicates that the\r
963 /// SMM code access restriction is supported and the\r
964 /// MSR_SMM_FEATURE_CONTROL is supported.\r
965 ///\r
2f88bd3a 966 UINT32 SMM_Code_Access_Chk : 1;\r
7ae88a62
MK
967 ///\r
968 /// [Bit 59] Long_Flow_Indication (SMM-RO) If set to 1 indicates that the\r
969 /// SMM long flow indicator is supported and the MSR_SMM_DELAYED is\r
970 /// supported.\r
971 ///\r
2f88bd3a
MK
972 UINT32 Long_Flow_Indication : 1;\r
973 UINT32 Reserved3 : 4;\r
7ae88a62
MK
974 } Bits;\r
975 ///\r
976 /// All bit fields as a 64-bit value\r
977 ///\r
2f88bd3a 978 UINT64 Uint64;\r
7ae88a62
MK
979} MSR_HASWELL_SMM_MCA_CAP_REGISTER;\r
980\r
7ae88a62
MK
981/**\r
982 Package. Maximum Ratio Limit of Turbo Mode RO if MSR_PLATFORM_INFO.[28] = 0,\r
983 RW if MSR_PLATFORM_INFO.[28] = 1.\r
984\r
985 @param ECX MSR_HASWELL_TURBO_RATIO_LIMIT (0x000001AD)\r
986 @param EAX Lower 32-bits of MSR value.\r
987 Described by the type MSR_HASWELL_TURBO_RATIO_LIMIT_REGISTER.\r
988 @param EDX Upper 32-bits of MSR value.\r
989 Described by the type MSR_HASWELL_TURBO_RATIO_LIMIT_REGISTER.\r
990\r
991 <b>Example usage</b>\r
992 @code\r
993 MSR_HASWELL_TURBO_RATIO_LIMIT_REGISTER Msr;\r
994\r
995 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_TURBO_RATIO_LIMIT);\r
996 @endcode\r
e108c3f6 997 @note MSR_HASWELL_TURBO_RATIO_LIMIT is defined as MSR_TURBO_RATIO_LIMIT in SDM.\r
7ae88a62 998**/\r
2f88bd3a 999#define MSR_HASWELL_TURBO_RATIO_LIMIT 0x000001AD\r
7ae88a62
MK
1000\r
1001/**\r
1002 MSR information returned for MSR index #MSR_HASWELL_TURBO_RATIO_LIMIT\r
1003**/\r
1004typedef union {\r
1005 ///\r
1006 /// Individual bit fields\r
1007 ///\r
1008 struct {\r
1009 ///\r
1010 /// [Bits 7:0] Package. Maximum Ratio Limit for 1C Maximum turbo ratio\r
1011 /// limit of 1 core active.\r
1012 ///\r
2f88bd3a 1013 UINT32 Maximum1C : 8;\r
7ae88a62
MK
1014 ///\r
1015 /// [Bits 15:8] Package. Maximum Ratio Limit for 2C Maximum turbo ratio\r
1016 /// limit of 2 core active.\r
1017 ///\r
2f88bd3a 1018 UINT32 Maximum2C : 8;\r
7ae88a62
MK
1019 ///\r
1020 /// [Bits 23:16] Package. Maximum Ratio Limit for 3C Maximum turbo ratio\r
1021 /// limit of 3 core active.\r
1022 ///\r
2f88bd3a 1023 UINT32 Maximum3C : 8;\r
7ae88a62
MK
1024 ///\r
1025 /// [Bits 31:24] Package. Maximum Ratio Limit for 4C Maximum turbo ratio\r
1026 /// limit of 4 core active.\r
1027 ///\r
2f88bd3a
MK
1028 UINT32 Maximum4C : 8;\r
1029 UINT32 Reserved : 32;\r
7ae88a62
MK
1030 } Bits;\r
1031 ///\r
1032 /// All bit fields as a 32-bit value\r
1033 ///\r
2f88bd3a 1034 UINT32 Uint32;\r
7ae88a62
MK
1035 ///\r
1036 /// All bit fields as a 64-bit value\r
1037 ///\r
2f88bd3a 1038 UINT64 Uint64;\r
7ae88a62
MK
1039} MSR_HASWELL_TURBO_RATIO_LIMIT_REGISTER;\r
1040\r
7ae88a62
MK
1041/**\r
1042 Package. Uncore PMU global control.\r
1043\r
1044 @param ECX MSR_HASWELL_UNC_PERF_GLOBAL_CTRL (0x00000391)\r
1045 @param EAX Lower 32-bits of MSR value.\r
1046 Described by the type MSR_HASWELL_UNC_PERF_GLOBAL_CTRL_REGISTER.\r
1047 @param EDX Upper 32-bits of MSR value.\r
1048 Described by the type MSR_HASWELL_UNC_PERF_GLOBAL_CTRL_REGISTER.\r
1049\r
1050 <b>Example usage</b>\r
1051 @code\r
1052 MSR_HASWELL_UNC_PERF_GLOBAL_CTRL_REGISTER Msr;\r
1053\r
1054 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_UNC_PERF_GLOBAL_CTRL);\r
1055 AsmWriteMsr64 (MSR_HASWELL_UNC_PERF_GLOBAL_CTRL, Msr.Uint64);\r
1056 @endcode\r
e108c3f6 1057 @note MSR_HASWELL_UNC_PERF_GLOBAL_CTRL is defined as MSR_UNC_PERF_GLOBAL_CTRL in SDM.\r
7ae88a62 1058**/\r
2f88bd3a 1059#define MSR_HASWELL_UNC_PERF_GLOBAL_CTRL 0x00000391\r
7ae88a62
MK
1060\r
1061/**\r
1062 MSR information returned for MSR index #MSR_HASWELL_UNC_PERF_GLOBAL_CTRL\r
1063**/\r
1064typedef union {\r
1065 ///\r
1066 /// Individual bit fields\r
1067 ///\r
1068 struct {\r
1069 ///\r
1070 /// [Bit 0] Core 0 select.\r
1071 ///\r
2f88bd3a 1072 UINT32 PMI_Sel_Core0 : 1;\r
7ae88a62
MK
1073 ///\r
1074 /// [Bit 1] Core 1 select.\r
1075 ///\r
2f88bd3a 1076 UINT32 PMI_Sel_Core1 : 1;\r
7ae88a62
MK
1077 ///\r
1078 /// [Bit 2] Core 2 select.\r
1079 ///\r
2f88bd3a 1080 UINT32 PMI_Sel_Core2 : 1;\r
7ae88a62
MK
1081 ///\r
1082 /// [Bit 3] Core 3 select.\r
1083 ///\r
2f88bd3a
MK
1084 UINT32 PMI_Sel_Core3 : 1;\r
1085 UINT32 Reserved1 : 15;\r
1086 UINT32 Reserved2 : 10;\r
7ae88a62
MK
1087 ///\r
1088 /// [Bit 29] Enable all uncore counters.\r
1089 ///\r
2f88bd3a 1090 UINT32 EN : 1;\r
7ae88a62
MK
1091 ///\r
1092 /// [Bit 30] Enable wake on PMI.\r
1093 ///\r
2f88bd3a 1094 UINT32 WakePMI : 1;\r
7ae88a62
MK
1095 ///\r
1096 /// [Bit 31] Enable Freezing counter when overflow.\r
1097 ///\r
2f88bd3a
MK
1098 UINT32 FREEZE : 1;\r
1099 UINT32 Reserved3 : 32;\r
7ae88a62
MK
1100 } Bits;\r
1101 ///\r
1102 /// All bit fields as a 32-bit value\r
1103 ///\r
2f88bd3a 1104 UINT32 Uint32;\r
7ae88a62
MK
1105 ///\r
1106 /// All bit fields as a 64-bit value\r
1107 ///\r
2f88bd3a 1108 UINT64 Uint64;\r
7ae88a62
MK
1109} MSR_HASWELL_UNC_PERF_GLOBAL_CTRL_REGISTER;\r
1110\r
7ae88a62
MK
1111/**\r
1112 Package. Uncore PMU main status.\r
1113\r
1114 @param ECX MSR_HASWELL_UNC_PERF_GLOBAL_STATUS (0x00000392)\r
1115 @param EAX Lower 32-bits of MSR value.\r
1116 Described by the type MSR_HASWELL_UNC_PERF_GLOBAL_STATUS_REGISTER.\r
1117 @param EDX Upper 32-bits of MSR value.\r
1118 Described by the type MSR_HASWELL_UNC_PERF_GLOBAL_STATUS_REGISTER.\r
1119\r
1120 <b>Example usage</b>\r
1121 @code\r
1122 MSR_HASWELL_UNC_PERF_GLOBAL_STATUS_REGISTER Msr;\r
1123\r
1124 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_UNC_PERF_GLOBAL_STATUS);\r
1125 AsmWriteMsr64 (MSR_HASWELL_UNC_PERF_GLOBAL_STATUS, Msr.Uint64);\r
1126 @endcode\r
e108c3f6 1127 @note MSR_HASWELL_UNC_PERF_GLOBAL_STATUS is defined as MSR_UNC_PERF_GLOBAL_STATUS in SDM.\r
7ae88a62 1128**/\r
2f88bd3a 1129#define MSR_HASWELL_UNC_PERF_GLOBAL_STATUS 0x00000392\r
7ae88a62
MK
1130\r
1131/**\r
1132 MSR information returned for MSR index #MSR_HASWELL_UNC_PERF_GLOBAL_STATUS\r
1133**/\r
1134typedef union {\r
1135 ///\r
1136 /// Individual bit fields\r
1137 ///\r
1138 struct {\r
1139 ///\r
1140 /// [Bit 0] Fixed counter overflowed.\r
1141 ///\r
2f88bd3a 1142 UINT32 Fixed : 1;\r
7ae88a62
MK
1143 ///\r
1144 /// [Bit 1] An ARB counter overflowed.\r
1145 ///\r
2f88bd3a
MK
1146 UINT32 ARB : 1;\r
1147 UINT32 Reserved1 : 1;\r
7ae88a62
MK
1148 ///\r
1149 /// [Bit 3] A CBox counter overflowed (on any slice).\r
1150 ///\r
2f88bd3a
MK
1151 UINT32 CBox : 1;\r
1152 UINT32 Reserved2 : 28;\r
1153 UINT32 Reserved3 : 32;\r
7ae88a62
MK
1154 } Bits;\r
1155 ///\r
1156 /// All bit fields as a 32-bit value\r
1157 ///\r
2f88bd3a 1158 UINT32 Uint32;\r
7ae88a62
MK
1159 ///\r
1160 /// All bit fields as a 64-bit value\r
1161 ///\r
2f88bd3a 1162 UINT64 Uint64;\r
7ae88a62
MK
1163} MSR_HASWELL_UNC_PERF_GLOBAL_STATUS_REGISTER;\r
1164\r
7ae88a62
MK
1165/**\r
1166 Package. Uncore fixed counter control (R/W).\r
1167\r
1168 @param ECX MSR_HASWELL_UNC_PERF_FIXED_CTRL (0x00000394)\r
1169 @param EAX Lower 32-bits of MSR value.\r
1170 Described by the type MSR_HASWELL_UNC_PERF_FIXED_CTRL_REGISTER.\r
1171 @param EDX Upper 32-bits of MSR value.\r
1172 Described by the type MSR_HASWELL_UNC_PERF_FIXED_CTRL_REGISTER.\r
1173\r
1174 <b>Example usage</b>\r
1175 @code\r
1176 MSR_HASWELL_UNC_PERF_FIXED_CTRL_REGISTER Msr;\r
1177\r
1178 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_UNC_PERF_FIXED_CTRL);\r
1179 AsmWriteMsr64 (MSR_HASWELL_UNC_PERF_FIXED_CTRL, Msr.Uint64);\r
1180 @endcode\r
e108c3f6 1181 @note MSR_HASWELL_UNC_PERF_FIXED_CTRL is defined as MSR_UNC_PERF_FIXED_CTRL in SDM.\r
7ae88a62 1182**/\r
2f88bd3a 1183#define MSR_HASWELL_UNC_PERF_FIXED_CTRL 0x00000394\r
7ae88a62
MK
1184\r
1185/**\r
1186 MSR information returned for MSR index #MSR_HASWELL_UNC_PERF_FIXED_CTRL\r
1187**/\r
1188typedef union {\r
1189 ///\r
1190 /// Individual bit fields\r
1191 ///\r
1192 struct {\r
2f88bd3a 1193 UINT32 Reserved1 : 20;\r
7ae88a62
MK
1194 ///\r
1195 /// [Bit 20] Enable overflow propagation.\r
1196 ///\r
2f88bd3a
MK
1197 UINT32 EnableOverflow : 1;\r
1198 UINT32 Reserved2 : 1;\r
7ae88a62
MK
1199 ///\r
1200 /// [Bit 22] Enable counting.\r
1201 ///\r
2f88bd3a
MK
1202 UINT32 EnableCounting : 1;\r
1203 UINT32 Reserved3 : 9;\r
1204 UINT32 Reserved4 : 32;\r
7ae88a62
MK
1205 } Bits;\r
1206 ///\r
1207 /// All bit fields as a 32-bit value\r
1208 ///\r
2f88bd3a 1209 UINT32 Uint32;\r
7ae88a62
MK
1210 ///\r
1211 /// All bit fields as a 64-bit value\r
1212 ///\r
2f88bd3a 1213 UINT64 Uint64;\r
7ae88a62
MK
1214} MSR_HASWELL_UNC_PERF_FIXED_CTRL_REGISTER;\r
1215\r
7ae88a62
MK
1216/**\r
1217 Package. Uncore fixed counter.\r
1218\r
1219 @param ECX MSR_HASWELL_UNC_PERF_FIXED_CTR (0x00000395)\r
1220 @param EAX Lower 32-bits of MSR value.\r
1221 Described by the type MSR_HASWELL_UNC_PERF_FIXED_CTR_REGISTER.\r
1222 @param EDX Upper 32-bits of MSR value.\r
1223 Described by the type MSR_HASWELL_UNC_PERF_FIXED_CTR_REGISTER.\r
1224\r
1225 <b>Example usage</b>\r
1226 @code\r
1227 MSR_HASWELL_UNC_PERF_FIXED_CTR_REGISTER Msr;\r
1228\r
1229 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_UNC_PERF_FIXED_CTR);\r
1230 AsmWriteMsr64 (MSR_HASWELL_UNC_PERF_FIXED_CTR, Msr.Uint64);\r
1231 @endcode\r
e108c3f6 1232 @note MSR_HASWELL_UNC_PERF_FIXED_CTR is defined as MSR_UNC_PERF_FIXED_CTR in SDM.\r
7ae88a62 1233**/\r
2f88bd3a 1234#define MSR_HASWELL_UNC_PERF_FIXED_CTR 0x00000395\r
7ae88a62
MK
1235\r
1236/**\r
1237 MSR information returned for MSR index #MSR_HASWELL_UNC_PERF_FIXED_CTR\r
1238**/\r
1239typedef union {\r
1240 ///\r
1241 /// Individual bit fields\r
1242 ///\r
1243 struct {\r
1244 ///\r
1245 /// [Bits 31:0] Current count.\r
1246 ///\r
2f88bd3a 1247 UINT32 CurrentCount : 32;\r
7ae88a62
MK
1248 ///\r
1249 /// [Bits 47:32] Current count.\r
1250 ///\r
2f88bd3a
MK
1251 UINT32 CurrentCountHi : 16;\r
1252 UINT32 Reserved : 16;\r
7ae88a62
MK
1253 } Bits;\r
1254 ///\r
1255 /// All bit fields as a 64-bit value\r
1256 ///\r
2f88bd3a 1257 UINT64 Uint64;\r
7ae88a62
MK
1258} MSR_HASWELL_UNC_PERF_FIXED_CTR_REGISTER;\r
1259\r
7ae88a62
MK
1260/**\r
1261 Package. Uncore C-Box configuration information (R/O).\r
1262\r
1263 @param ECX MSR_HASWELL_UNC_CBO_CONFIG (0x00000396)\r
1264 @param EAX Lower 32-bits of MSR value.\r
1265 Described by the type MSR_HASWELL_UNC_CBO_CONFIG_REGISTER.\r
1266 @param EDX Upper 32-bits of MSR value.\r
1267 Described by the type MSR_HASWELL_UNC_CBO_CONFIG_REGISTER.\r
1268\r
1269 <b>Example usage</b>\r
1270 @code\r
1271 MSR_HASWELL_UNC_CBO_CONFIG_REGISTER Msr;\r
1272\r
1273 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_CONFIG);\r
1274 @endcode\r
e108c3f6 1275 @note MSR_HASWELL_UNC_CBO_CONFIG is defined as MSR_UNC_CBO_CONFIG in SDM.\r
7ae88a62 1276**/\r
2f88bd3a 1277#define MSR_HASWELL_UNC_CBO_CONFIG 0x00000396\r
7ae88a62
MK
1278\r
1279/**\r
1280 MSR information returned for MSR index #MSR_HASWELL_UNC_CBO_CONFIG\r
1281**/\r
1282typedef union {\r
1283 ///\r
1284 /// Individual bit fields\r
1285 ///\r
1286 struct {\r
1287 ///\r
1288 /// [Bits 3:0] Encoded number of C-Box, derive value by "-1".\r
1289 ///\r
2f88bd3a
MK
1290 UINT32 CBox : 4;\r
1291 UINT32 Reserved1 : 28;\r
1292 UINT32 Reserved2 : 32;\r
7ae88a62
MK
1293 } Bits;\r
1294 ///\r
1295 /// All bit fields as a 32-bit value\r
1296 ///\r
2f88bd3a 1297 UINT32 Uint32;\r
7ae88a62
MK
1298 ///\r
1299 /// All bit fields as a 64-bit value\r
1300 ///\r
2f88bd3a 1301 UINT64 Uint64;\r
7ae88a62
MK
1302} MSR_HASWELL_UNC_CBO_CONFIG_REGISTER;\r
1303\r
7ae88a62
MK
1304/**\r
1305 Package. Uncore Arb unit, performance counter 0.\r
1306\r
1307 @param ECX MSR_HASWELL_UNC_ARB_PERFCTR0 (0x000003B0)\r
1308 @param EAX Lower 32-bits of MSR value.\r
1309 @param EDX Upper 32-bits of MSR value.\r
1310\r
1311 <b>Example usage</b>\r
1312 @code\r
1313 UINT64 Msr;\r
1314\r
1315 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_ARB_PERFCTR0);\r
1316 AsmWriteMsr64 (MSR_HASWELL_UNC_ARB_PERFCTR0, Msr);\r
1317 @endcode\r
e108c3f6 1318 @note MSR_HASWELL_UNC_ARB_PERFCTR0 is defined as MSR_UNC_ARB_PERFCTR0 in SDM.\r
7ae88a62 1319**/\r
2f88bd3a 1320#define MSR_HASWELL_UNC_ARB_PERFCTR0 0x000003B0\r
7ae88a62
MK
1321\r
1322/**\r
1323 Package. Uncore Arb unit, performance counter 1.\r
1324\r
1325 @param ECX MSR_HASWELL_UNC_ARB_PERFCTR1 (0x000003B1)\r
1326 @param EAX Lower 32-bits of MSR value.\r
1327 @param EDX Upper 32-bits of MSR value.\r
1328\r
1329 <b>Example usage</b>\r
1330 @code\r
1331 UINT64 Msr;\r
1332\r
1333 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_ARB_PERFCTR1);\r
1334 AsmWriteMsr64 (MSR_HASWELL_UNC_ARB_PERFCTR1, Msr);\r
1335 @endcode\r
e108c3f6 1336 @note MSR_HASWELL_UNC_ARB_PERFCTR1 is defined as MSR_UNC_ARB_PERFCTR1 in SDM.\r
7ae88a62 1337**/\r
2f88bd3a 1338#define MSR_HASWELL_UNC_ARB_PERFCTR1 0x000003B1\r
7ae88a62
MK
1339\r
1340/**\r
1341 Package. Uncore Arb unit, counter 0 event select MSR.\r
1342\r
1343 @param ECX MSR_HASWELL_UNC_ARB_PERFEVTSEL0 (0x000003B2)\r
1344 @param EAX Lower 32-bits of MSR value.\r
1345 @param EDX Upper 32-bits of MSR value.\r
1346\r
1347 <b>Example usage</b>\r
1348 @code\r
1349 UINT64 Msr;\r
1350\r
1351 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_ARB_PERFEVTSEL0);\r
1352 AsmWriteMsr64 (MSR_HASWELL_UNC_ARB_PERFEVTSEL0, Msr);\r
1353 @endcode\r
e108c3f6 1354 @note MSR_HASWELL_UNC_ARB_PERFEVTSEL0 is defined as MSR_UNC_ARB_PERFEVTSEL0 in SDM.\r
7ae88a62 1355**/\r
2f88bd3a 1356#define MSR_HASWELL_UNC_ARB_PERFEVTSEL0 0x000003B2\r
7ae88a62
MK
1357\r
1358/**\r
1359 Package. Uncore Arb unit, counter 1 event select MSR.\r
1360\r
1361 @param ECX MSR_HASWELL_UNC_ARB_PERFEVTSEL1 (0x000003B3)\r
1362 @param EAX Lower 32-bits of MSR value.\r
1363 @param EDX Upper 32-bits of MSR value.\r
1364\r
1365 <b>Example usage</b>\r
1366 @code\r
1367 UINT64 Msr;\r
1368\r
1369 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_ARB_PERFEVTSEL1);\r
1370 AsmWriteMsr64 (MSR_HASWELL_UNC_ARB_PERFEVTSEL1, Msr);\r
1371 @endcode\r
e108c3f6 1372 @note MSR_HASWELL_UNC_ARB_PERFEVTSEL1 is defined as MSR_UNC_ARB_PERFEVTSEL1 in SDM.\r
7ae88a62 1373**/\r
2f88bd3a 1374#define MSR_HASWELL_UNC_ARB_PERFEVTSEL1 0x000003B3\r
7ae88a62
MK
1375\r
1376/**\r
1377 Package. Enhanced SMM Feature Control (SMM-RW) Reports SMM capability\r
1378 Enhancement. Accessible only while in SMM.\r
1379\r
1380 @param ECX MSR_HASWELL_SMM_FEATURE_CONTROL (0x000004E0)\r
1381 @param EAX Lower 32-bits of MSR value.\r
1382 Described by the type MSR_HASWELL_SMM_FEATURE_CONTROL_REGISTER.\r
1383 @param EDX Upper 32-bits of MSR value.\r
1384 Described by the type MSR_HASWELL_SMM_FEATURE_CONTROL_REGISTER.\r
1385\r
1386 <b>Example usage</b>\r
1387 @code\r
1388 MSR_HASWELL_SMM_FEATURE_CONTROL_REGISTER Msr;\r
1389\r
1390 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_SMM_FEATURE_CONTROL);\r
1391 AsmWriteMsr64 (MSR_HASWELL_SMM_FEATURE_CONTROL, Msr.Uint64);\r
1392 @endcode\r
e108c3f6 1393 @note MSR_HASWELL_SMM_FEATURE_CONTROL is defined as MSR_SMM_FEATURE_CONTROL in SDM.\r
7ae88a62 1394**/\r
2f88bd3a 1395#define MSR_HASWELL_SMM_FEATURE_CONTROL 0x000004E0\r
7ae88a62
MK
1396\r
1397/**\r
1398 MSR information returned for MSR index #MSR_HASWELL_SMM_FEATURE_CONTROL\r
1399**/\r
1400typedef union {\r
1401 ///\r
1402 /// Individual bit fields\r
1403 ///\r
1404 struct {\r
1405 ///\r
1406 /// [Bit 0] Lock (SMM-RWO) When set to '1' locks this register from\r
1407 /// further changes.\r
1408 ///\r
2f88bd3a
MK
1409 UINT32 Lock : 1;\r
1410 UINT32 Reserved1 : 1;\r
7ae88a62
MK
1411 ///\r
1412 /// [Bit 2] SMM_Code_Chk_En (SMM-RW) This control bit is available only if\r
1413 /// MSR_SMM_MCA_CAP[58] == 1. When set to '0' (default) none of the\r
1414 /// logical processors are prevented from executing SMM code outside the\r
1415 /// ranges defined by the SMRR. When set to '1' any logical processor in\r
1416 /// the package that attempts to execute SMM code not within the ranges\r
1417 /// defined by the SMRR will assert an unrecoverable MCE.\r
1418 ///\r
2f88bd3a
MK
1419 UINT32 SMM_Code_Chk_En : 1;\r
1420 UINT32 Reserved2 : 29;\r
1421 UINT32 Reserved3 : 32;\r
7ae88a62
MK
1422 } Bits;\r
1423 ///\r
1424 /// All bit fields as a 32-bit value\r
1425 ///\r
2f88bd3a 1426 UINT32 Uint32;\r
7ae88a62
MK
1427 ///\r
1428 /// All bit fields as a 64-bit value\r
1429 ///\r
2f88bd3a 1430 UINT64 Uint64;\r
7ae88a62
MK
1431} MSR_HASWELL_SMM_FEATURE_CONTROL_REGISTER;\r
1432\r
7ae88a62
MK
1433/**\r
1434 Package. SMM Delayed (SMM-RO) Reports the interruptible state of all logical\r
1435 processors in the package. Available only while in SMM and\r
1436 MSR_SMM_MCA_CAP[LONG_FLOW_INDICATION] == 1.\r
1437\r
1438 [Bits 31:0] LOG_PROC_STATE (SMM-RO) Each bit represents a logical\r
1439 processor of its state in a long flow of internal operation which\r
1440 delays servicing an interrupt. The corresponding bit will be set at\r
1441 the start of long events such as: Microcode Update Load, C6, WBINVD,\r
1442 Ratio Change, Throttle. The bit is automatically cleared at the end of\r
1443 each long event. The reset value of this field is 0. Only bit\r
1444 positions below N = CPUID.(EAX=0BH, ECX=PKG_LVL):EBX[15:0] can be\r
1445 updated.\r
1446\r
1447 [Bits 63:32] LOG_PROC_STATE (SMM-RO) Each bit represents a logical\r
1448 processor of its state in a long flow of internal operation which\r
1449 delays servicing an interrupt. The corresponding bit will be set at\r
1450 the start of long events such as: Microcode Update Load, C6, WBINVD,\r
1451 Ratio Change, Throttle. The bit is automatically cleared at the end of\r
1452 each long event. The reset value of this field is 0. Only bit\r
1453 positions below N = CPUID.(EAX=0BH, ECX=PKG_LVL):EBX[15:0] can be\r
1454 updated.\r
1455\r
1456 @param ECX MSR_HASWELL_SMM_DELAYED (0x000004E2)\r
1457 @param EAX Lower 32-bits of MSR value.\r
1458 @param EDX Upper 32-bits of MSR value.\r
1459\r
1460 <b>Example usage</b>\r
1461 @code\r
1462 UINT64 Msr;\r
1463\r
1464 Msr = AsmReadMsr64 (MSR_HASWELL_SMM_DELAYED);\r
1465 @endcode\r
e108c3f6 1466 @note MSR_HASWELL_SMM_DELAYED is defined as MSR_SMM_DELAYED in SDM.\r
7ae88a62 1467**/\r
2f88bd3a 1468#define MSR_HASWELL_SMM_DELAYED 0x000004E2\r
7ae88a62
MK
1469\r
1470/**\r
1471 Package. SMM Blocked (SMM-RO) Reports the blocked state of all logical\r
1472 processors in the package. Available only while in SMM.\r
1473\r
1474 [Bits 31:0] LOG_PROC_STATE (SMM-RO) Each bit represents a logical\r
1475 processor of its blocked state to service an SMI. The corresponding\r
1476 bit will be set if the logical processor is in one of the following\r
1477 states: Wait For SIPI or SENTER Sleep. The reset value of this field\r
1478 is 0FFFH. Only bit positions below N = CPUID.(EAX=0BH,\r
1479 ECX=PKG_LVL):EBX[15:0] can be updated.\r
1480\r
1481\r
1482 [Bits 63:32] LOG_PROC_STATE (SMM-RO) Each bit represents a logical\r
1483 processor of its blocked state to service an SMI. The corresponding\r
1484 bit will be set if the logical processor is in one of the following\r
1485 states: Wait For SIPI or SENTER Sleep. The reset value of this field\r
1486 is 0FFFH. Only bit positions below N = CPUID.(EAX=0BH,\r
1487 ECX=PKG_LVL):EBX[15:0] can be updated.\r
1488\r
1489 @param ECX MSR_HASWELL_SMM_BLOCKED (0x000004E3)\r
1490 @param EAX Lower 32-bits of MSR value.\r
1491 @param EDX Upper 32-bits of MSR value.\r
1492\r
1493 <b>Example usage</b>\r
1494 @code\r
1495 UINT64 Msr;\r
1496\r
1497 Msr = AsmReadMsr64 (MSR_HASWELL_SMM_BLOCKED);\r
1498 @endcode\r
e108c3f6 1499 @note MSR_HASWELL_SMM_BLOCKED is defined as MSR_SMM_BLOCKED in SDM.\r
7ae88a62 1500**/\r
2f88bd3a 1501#define MSR_HASWELL_SMM_BLOCKED 0x000004E3\r
7ae88a62
MK
1502\r
1503/**\r
1504 Package. Unit Multipliers used in RAPL Interfaces (R/O).\r
1505\r
1506 @param ECX MSR_HASWELL_RAPL_POWER_UNIT (0x00000606)\r
1507 @param EAX Lower 32-bits of MSR value.\r
1508 Described by the type MSR_HASWELL_RAPL_POWER_UNIT_REGISTER.\r
1509 @param EDX Upper 32-bits of MSR value.\r
1510 Described by the type MSR_HASWELL_RAPL_POWER_UNIT_REGISTER.\r
1511\r
1512 <b>Example usage</b>\r
1513 @code\r
1514 MSR_HASWELL_RAPL_POWER_UNIT_REGISTER Msr;\r
1515\r
1516 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_RAPL_POWER_UNIT);\r
1517 @endcode\r
e108c3f6 1518 @note MSR_HASWELL_RAPL_POWER_UNIT is defined as MSR_RAPL_POWER_UNIT in SDM.\r
7ae88a62 1519**/\r
2f88bd3a 1520#define MSR_HASWELL_RAPL_POWER_UNIT 0x00000606\r
7ae88a62
MK
1521\r
1522/**\r
1523 MSR information returned for MSR index #MSR_HASWELL_RAPL_POWER_UNIT\r
1524**/\r
1525typedef union {\r
1526 ///\r
1527 /// Individual bit fields\r
1528 ///\r
1529 struct {\r
1530 ///\r
1531 /// [Bits 3:0] Package. Power Units See Section 14.9.1, "RAPL Interfaces.".\r
1532 ///\r
2f88bd3a
MK
1533 UINT32 PowerUnits : 4;\r
1534 UINT32 Reserved1 : 4;\r
7ae88a62
MK
1535 ///\r
1536 /// [Bits 12:8] Package. Energy Status Units Energy related information\r
1537 /// (in Joules) is based on the multiplier, 1/2^ESU; where ESU is an\r
1538 /// unsigned integer represented by bits 12:8. Default value is 0EH (or 61\r
1539 /// micro-joules).\r
1540 ///\r
2f88bd3a
MK
1541 UINT32 EnergyStatusUnits : 5;\r
1542 UINT32 Reserved2 : 3;\r
7ae88a62
MK
1543 ///\r
1544 /// [Bits 19:16] Package. Time Units See Section 14.9.1, "RAPL\r
1545 /// Interfaces.".\r
1546 ///\r
2f88bd3a
MK
1547 UINT32 TimeUnits : 4;\r
1548 UINT32 Reserved3 : 12;\r
1549 UINT32 Reserved4 : 32;\r
7ae88a62
MK
1550 } Bits;\r
1551 ///\r
1552 /// All bit fields as a 32-bit value\r
1553 ///\r
2f88bd3a 1554 UINT32 Uint32;\r
7ae88a62
MK
1555 ///\r
1556 /// All bit fields as a 64-bit value\r
1557 ///\r
2f88bd3a 1558 UINT64 Uint64;\r
7ae88a62
MK
1559} MSR_HASWELL_RAPL_POWER_UNIT_REGISTER;\r
1560\r
0f16be6d
HW
1561/**\r
1562 Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL\r
1563 Domains.".\r
1564\r
1565 @param ECX MSR_HASWELL_PP0_ENERGY_STATUS (0x00000639)\r
1566 @param EAX Lower 32-bits of MSR value.\r
1567 @param EDX Upper 32-bits of MSR value.\r
1568\r
1569 <b>Example usage</b>\r
1570 @code\r
1571 UINT64 Msr;\r
1572\r
1573 Msr = AsmReadMsr64 (MSR_HASWELL_PP0_ENERGY_STATUS);\r
1574 @endcode\r
1575 @note MSR_HASWELL_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.\r
1576**/\r
2f88bd3a 1577#define MSR_HASWELL_PP0_ENERGY_STATUS 0x00000639\r
0f16be6d 1578\r
7ae88a62
MK
1579/**\r
1580 Package. PP1 RAPL Power Limit Control (R/W) See Section 14.9.4, "PP0/PP1\r
1581 RAPL Domains.".\r
1582\r
1583 @param ECX MSR_HASWELL_PP1_POWER_LIMIT (0x00000640)\r
1584 @param EAX Lower 32-bits of MSR value.\r
1585 @param EDX Upper 32-bits of MSR value.\r
1586\r
1587 <b>Example usage</b>\r
1588 @code\r
1589 UINT64 Msr;\r
1590\r
1591 Msr = AsmReadMsr64 (MSR_HASWELL_PP1_POWER_LIMIT);\r
1592 AsmWriteMsr64 (MSR_HASWELL_PP1_POWER_LIMIT, Msr);\r
1593 @endcode\r
e108c3f6 1594 @note MSR_HASWELL_PP1_POWER_LIMIT is defined as MSR_PP1_POWER_LIMIT in SDM.\r
7ae88a62 1595**/\r
2f88bd3a 1596#define MSR_HASWELL_PP1_POWER_LIMIT 0x00000640\r
7ae88a62
MK
1597\r
1598/**\r
1599 Package. PP1 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL\r
1600 Domains.".\r
1601\r
1602 @param ECX MSR_HASWELL_PP1_ENERGY_STATUS (0x00000641)\r
1603 @param EAX Lower 32-bits of MSR value.\r
1604 @param EDX Upper 32-bits of MSR value.\r
1605\r
1606 <b>Example usage</b>\r
1607 @code\r
1608 UINT64 Msr;\r
1609\r
1610 Msr = AsmReadMsr64 (MSR_HASWELL_PP1_ENERGY_STATUS);\r
1611 @endcode\r
e108c3f6 1612 @note MSR_HASWELL_PP1_ENERGY_STATUS is defined as MSR_PP1_ENERGY_STATUS in SDM.\r
7ae88a62 1613**/\r
2f88bd3a 1614#define MSR_HASWELL_PP1_ENERGY_STATUS 0x00000641\r
7ae88a62
MK
1615\r
1616/**\r
1617 Package. PP1 Balance Policy (R/W) See Section 14.9.4, "PP0/PP1 RAPL\r
1618 Domains.".\r
1619\r
1620 @param ECX MSR_HASWELL_PP1_POLICY (0x00000642)\r
1621 @param EAX Lower 32-bits of MSR value.\r
1622 @param EDX Upper 32-bits of MSR value.\r
1623\r
1624 <b>Example usage</b>\r
1625 @code\r
1626 UINT64 Msr;\r
1627\r
1628 Msr = AsmReadMsr64 (MSR_HASWELL_PP1_POLICY);\r
1629 AsmWriteMsr64 (MSR_HASWELL_PP1_POLICY, Msr);\r
1630 @endcode\r
e108c3f6 1631 @note MSR_HASWELL_PP1_POLICY is defined as MSR_PP1_POLICY in SDM.\r
7ae88a62 1632**/\r
2f88bd3a 1633#define MSR_HASWELL_PP1_POLICY 0x00000642\r
7ae88a62
MK
1634\r
1635/**\r
1636 Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency\r
1637 refers to processor core frequency).\r
1638\r
1639 @param ECX MSR_HASWELL_CORE_PERF_LIMIT_REASONS (0x00000690)\r
1640 @param EAX Lower 32-bits of MSR value.\r
1641 Described by the type MSR_HASWELL_CORE_PERF_LIMIT_REASONS_REGISTER.\r
1642 @param EDX Upper 32-bits of MSR value.\r
1643 Described by the type MSR_HASWELL_CORE_PERF_LIMIT_REASONS_REGISTER.\r
1644\r
1645 <b>Example usage</b>\r
1646 @code\r
1647 MSR_HASWELL_CORE_PERF_LIMIT_REASONS_REGISTER Msr;\r
1648\r
1649 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_CORE_PERF_LIMIT_REASONS);\r
1650 AsmWriteMsr64 (MSR_HASWELL_CORE_PERF_LIMIT_REASONS, Msr.Uint64);\r
1651 @endcode\r
e108c3f6 1652 @note MSR_HASWELL_CORE_PERF_LIMIT_REASONS is defined as MSR_CORE_PERF_LIMIT_REASONS in SDM.\r
7ae88a62 1653**/\r
2f88bd3a 1654#define MSR_HASWELL_CORE_PERF_LIMIT_REASONS 0x00000690\r
7ae88a62
MK
1655\r
1656/**\r
1657 MSR information returned for MSR index #MSR_HASWELL_CORE_PERF_LIMIT_REASONS\r
1658**/\r
1659typedef union {\r
1660 ///\r
1661 /// Individual bit fields\r
1662 ///\r
1663 struct {\r
1664 ///\r
1665 /// [Bit 0] PROCHOT Status (R0) When set, processor core frequency is\r
1666 /// reduced below the operating system request due to assertion of\r
1667 /// external PROCHOT.\r
1668 ///\r
2f88bd3a 1669 UINT32 PROCHOT_Status : 1;\r
7ae88a62
MK
1670 ///\r
1671 /// [Bit 1] Thermal Status (R0) When set, frequency is reduced below the\r
1672 /// operating system request due to a thermal event.\r
1673 ///\r
2f88bd3a
MK
1674 UINT32 ThermalStatus : 1;\r
1675 UINT32 Reserved1 : 2;\r
7ae88a62
MK
1676 ///\r
1677 /// [Bit 4] Graphics Driver Status (R0) When set, frequency is reduced\r
1678 /// below the operating system request due to Processor Graphics driver\r
1679 /// override.\r
1680 ///\r
2f88bd3a 1681 UINT32 GraphicsDriverStatus : 1;\r
7ae88a62
MK
1682 ///\r
1683 /// [Bit 5] Autonomous Utilization-Based Frequency Control Status (R0)\r
1684 /// When set, frequency is reduced below the operating system request\r
1685 /// because the processor has detected that utilization is low.\r
1686 ///\r
2f88bd3a 1687 UINT32 AutonomousUtilizationBasedFrequencyControlStatus : 1;\r
7ae88a62
MK
1688 ///\r
1689 /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced\r
1690 /// below the operating system request due to a thermal alert from the\r
1691 /// Voltage Regulator.\r
1692 ///\r
2f88bd3a
MK
1693 UINT32 VRThermAlertStatus : 1;\r
1694 UINT32 Reserved2 : 1;\r
7ae88a62
MK
1695 ///\r
1696 /// [Bit 8] Electrical Design Point Status (R0) When set, frequency is\r
1697 /// reduced below the operating system request due to electrical design\r
1698 /// point constraints (e.g. maximum electrical current consumption).\r
1699 ///\r
2f88bd3a 1700 UINT32 ElectricalDesignPointStatus : 1;\r
7ae88a62
MK
1701 ///\r
1702 /// [Bit 9] Core Power Limiting Status (R0) When set, frequency is reduced\r
1703 /// below the operating system request due to domain-level power limiting.\r
1704 ///\r
2f88bd3a 1705 UINT32 PLStatus : 1;\r
7ae88a62
MK
1706 ///\r
1707 /// [Bit 10] Package-Level Power Limiting PL1 Status (R0) When set,\r
1708 /// frequency is reduced below the operating system request due to\r
1709 /// package-level power limiting PL1.\r
1710 ///\r
2f88bd3a 1711 UINT32 PL1Status : 1;\r
7ae88a62
MK
1712 ///\r
1713 /// [Bit 11] Package-Level PL2 Power Limiting Status (R0) When set,\r
1714 /// frequency is reduced below the operating system request due to\r
1715 /// package-level power limiting PL2.\r
1716 ///\r
2f88bd3a 1717 UINT32 PL2Status : 1;\r
7ae88a62
MK
1718 ///\r
1719 /// [Bit 12] Max Turbo Limit Status (R0) When set, frequency is reduced\r
1720 /// below the operating system request due to multi-core turbo limits.\r
1721 ///\r
2f88bd3a 1722 UINT32 MaxTurboLimitStatus : 1;\r
7ae88a62
MK
1723 ///\r
1724 /// [Bit 13] Turbo Transition Attenuation Status (R0) When set, frequency\r
1725 /// is reduced below the operating system request due to Turbo transition\r
1726 /// attenuation. This prevents performance degradation due to frequent\r
1727 /// operating ratio changes.\r
1728 ///\r
2f88bd3a
MK
1729 UINT32 TurboTransitionAttenuationStatus : 1;\r
1730 UINT32 Reserved3 : 2;\r
7ae88a62
MK
1731 ///\r
1732 /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit\r
1733 /// has asserted since the log bit was last cleared. This log bit will\r
1734 /// remain set until cleared by software writing 0.\r
1735 ///\r
2f88bd3a 1736 UINT32 PROCHOT_Log : 1;\r
7ae88a62
MK
1737 ///\r
1738 /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit\r
1739 /// has asserted since the log bit was last cleared. This log bit will\r
1740 /// remain set until cleared by software writing 0.\r
1741 ///\r
2f88bd3a
MK
1742 UINT32 ThermalLog : 1;\r
1743 UINT32 Reserved4 : 2;\r
7ae88a62
MK
1744 ///\r
1745 /// [Bit 20] Graphics Driver Log When set, indicates that the Graphics\r
1746 /// Driver Status bit has asserted since the log bit was last cleared.\r
1747 /// This log bit will remain set until cleared by software writing 0.\r
1748 ///\r
2f88bd3a 1749 UINT32 GraphicsDriverLog : 1;\r
7ae88a62
MK
1750 ///\r
1751 /// [Bit 21] Autonomous Utilization-Based Frequency Control Log When set,\r
1752 /// indicates that the Autonomous Utilization-Based Frequency Control\r
1753 /// Status bit has asserted since the log bit was last cleared. This log\r
1754 /// bit will remain set until cleared by software writing 0.\r
1755 ///\r
2f88bd3a 1756 UINT32 AutonomousUtilizationBasedFrequencyControlLog : 1;\r
7ae88a62
MK
1757 ///\r
1758 /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm\r
1759 /// Alert Status bit has asserted since the log bit was last cleared. This\r
1760 /// log bit will remain set until cleared by software writing 0.\r
1761 ///\r
2f88bd3a
MK
1762 UINT32 VRThermAlertLog : 1;\r
1763 UINT32 Reserved5 : 1;\r
7ae88a62
MK
1764 ///\r
1765 /// [Bit 24] Electrical Design Point Log When set, indicates that the EDP\r
1766 /// Status bit has asserted since the log bit was last cleared. This log\r
1767 /// bit will remain set until cleared by software writing 0.\r
1768 ///\r
2f88bd3a 1769 UINT32 ElectricalDesignPointLog : 1;\r
7ae88a62
MK
1770 ///\r
1771 /// [Bit 25] Core Power Limiting Log When set, indicates that the Core\r
1772 /// Power Limiting Status bit has asserted since the log bit was last\r
1773 /// cleared. This log bit will remain set until cleared by software\r
1774 /// writing 0.\r
1775 ///\r
2f88bd3a 1776 UINT32 PLLog : 1;\r
7ae88a62
MK
1777 ///\r
1778 /// [Bit 26] Package-Level PL1 Power Limiting Log When set, indicates\r
1779 /// that the Package Level PL1 Power Limiting Status bit has asserted\r
1780 /// since the log bit was last cleared. This log bit will remain set until\r
1781 /// cleared by software writing 0.\r
1782 ///\r
2f88bd3a 1783 UINT32 PL1Log : 1;\r
7ae88a62
MK
1784 ///\r
1785 /// [Bit 27] Package-Level PL2 Power Limiting Log When set, indicates that\r
1786 /// the Package Level PL2 Power Limiting Status bit has asserted since the\r
1787 /// log bit was last cleared. This log bit will remain set until cleared\r
1788 /// by software writing 0.\r
1789 ///\r
2f88bd3a 1790 UINT32 PL2Log : 1;\r
7ae88a62
MK
1791 ///\r
1792 /// [Bit 28] Max Turbo Limit Log When set, indicates that the Max Turbo\r
1793 /// Limit Status bit has asserted since the log bit was last cleared. This\r
1794 /// log bit will remain set until cleared by software writing 0.\r
1795 ///\r
2f88bd3a 1796 UINT32 MaxTurboLimitLog : 1;\r
7ae88a62
MK
1797 ///\r
1798 /// [Bit 29] Turbo Transition Attenuation Log When set, indicates that the\r
1799 /// Turbo Transition Attenuation Status bit has asserted since the log bit\r
1800 /// was last cleared. This log bit will remain set until cleared by\r
1801 /// software writing 0.\r
1802 ///\r
2f88bd3a
MK
1803 UINT32 TurboTransitionAttenuationLog : 1;\r
1804 UINT32 Reserved6 : 2;\r
1805 UINT32 Reserved7 : 32;\r
7ae88a62
MK
1806 } Bits;\r
1807 ///\r
1808 /// All bit fields as a 32-bit value\r
1809 ///\r
2f88bd3a 1810 UINT32 Uint32;\r
7ae88a62
MK
1811 ///\r
1812 /// All bit fields as a 64-bit value\r
1813 ///\r
2f88bd3a 1814 UINT64 Uint64;\r
7ae88a62
MK
1815} MSR_HASWELL_CORE_PERF_LIMIT_REASONS_REGISTER;\r
1816\r
7ae88a62
MK
1817/**\r
1818 Package. Indicator of Frequency Clipping in the Processor Graphics (R/W)\r
1819 (frequency refers to processor graphics frequency).\r
1820\r
1821 @param ECX MSR_HASWELL_GRAPHICS_PERF_LIMIT_REASONS (0x000006B0)\r
1822 @param EAX Lower 32-bits of MSR value.\r
1823 Described by the type MSR_HASWELL_GRAPHICS_PERF_LIMIT_REASONS_REGISTER.\r
1824 @param EDX Upper 32-bits of MSR value.\r
1825 Described by the type MSR_HASWELL_GRAPHICS_PERF_LIMIT_REASONS_REGISTER.\r
1826\r
1827 <b>Example usage</b>\r
1828 @code\r
1829 MSR_HASWELL_GRAPHICS_PERF_LIMIT_REASONS_REGISTER Msr;\r
1830\r
1831 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_GRAPHICS_PERF_LIMIT_REASONS);\r
1832 AsmWriteMsr64 (MSR_HASWELL_GRAPHICS_PERF_LIMIT_REASONS, Msr.Uint64);\r
1833 @endcode\r
e108c3f6 1834 @note MSR_HASWELL_GRAPHICS_PERF_LIMIT_REASONS is defined as MSR_GRAPHICS_PERF_LIMIT_REASONS in SDM.\r
7ae88a62
MK
1835**/\r
1836#define MSR_HASWELL_GRAPHICS_PERF_LIMIT_REASONS 0x000006B0\r
1837\r
1838/**\r
1839 MSR information returned for MSR index\r
1840 #MSR_HASWELL_GRAPHICS_PERF_LIMIT_REASONS\r
1841**/\r
1842typedef union {\r
1843 ///\r
1844 /// Individual bit fields\r
1845 ///\r
1846 struct {\r
1847 ///\r
1848 /// [Bit 0] PROCHOT Status (R0) When set, frequency is reduced below the\r
1849 /// operating system request due to assertion of external PROCHOT.\r
1850 ///\r
2f88bd3a 1851 UINT32 PROCHOT_Status : 1;\r
7ae88a62
MK
1852 ///\r
1853 /// [Bit 1] Thermal Status (R0) When set, frequency is reduced below the\r
1854 /// operating system request due to a thermal event.\r
1855 ///\r
2f88bd3a
MK
1856 UINT32 ThermalStatus : 1;\r
1857 UINT32 Reserved1 : 2;\r
7ae88a62
MK
1858 ///\r
1859 /// [Bit 4] Graphics Driver Status (R0) When set, frequency is reduced\r
1860 /// below the operating system request due to Processor Graphics driver\r
1861 /// override.\r
1862 ///\r
2f88bd3a 1863 UINT32 GraphicsDriverStatus : 1;\r
7ae88a62
MK
1864 ///\r
1865 /// [Bit 5] Autonomous Utilization-Based Frequency Control Status (R0)\r
1866 /// When set, frequency is reduced below the operating system request\r
1867 /// because the processor has detected that utilization is low.\r
1868 ///\r
2f88bd3a 1869 UINT32 AutonomousUtilizationBasedFrequencyControlStatus : 1;\r
7ae88a62
MK
1870 ///\r
1871 /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced\r
1872 /// below the operating system request due to a thermal alert from the\r
1873 /// Voltage Regulator.\r
1874 ///\r
2f88bd3a
MK
1875 UINT32 VRThermAlertStatus : 1;\r
1876 UINT32 Reserved2 : 1;\r
7ae88a62
MK
1877 ///\r
1878 /// [Bit 8] Electrical Design Point Status (R0) When set, frequency is\r
1879 /// reduced below the operating system request due to electrical design\r
1880 /// point constraints (e.g. maximum electrical current consumption).\r
1881 ///\r
2f88bd3a 1882 UINT32 ElectricalDesignPointStatus : 1;\r
7ae88a62
MK
1883 ///\r
1884 /// [Bit 9] Graphics Power Limiting Status (R0) When set, frequency is\r
1885 /// reduced below the operating system request due to domain-level power\r
1886 /// limiting.\r
1887 ///\r
2f88bd3a 1888 UINT32 GraphicsPowerLimitingStatus : 1;\r
7ae88a62
MK
1889 ///\r
1890 /// [Bit 10] Package-Level Power Limiting PL1 Status (R0) When set,\r
1891 /// frequency is reduced below the operating system request due to\r
1892 /// package-level power limiting PL1.\r
1893 ///\r
2f88bd3a 1894 UINT32 PL1STatus : 1;\r
7ae88a62
MK
1895 ///\r
1896 /// [Bit 11] Package-Level PL2 Power Limiting Status (R0) When set,\r
1897 /// frequency is reduced below the operating system request due to\r
1898 /// package-level power limiting PL2.\r
1899 ///\r
2f88bd3a
MK
1900 UINT32 PL2Status : 1;\r
1901 UINT32 Reserved3 : 4;\r
7ae88a62
MK
1902 ///\r
1903 /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit\r
1904 /// has asserted since the log bit was last cleared. This log bit will\r
1905 /// remain set until cleared by software writing 0.\r
1906 ///\r
2f88bd3a 1907 UINT32 PROCHOT_Log : 1;\r
7ae88a62
MK
1908 ///\r
1909 /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit\r
1910 /// has asserted since the log bit was last cleared. This log bit will\r
1911 /// remain set until cleared by software writing 0.\r
1912 ///\r
2f88bd3a
MK
1913 UINT32 ThermalLog : 1;\r
1914 UINT32 Reserved4 : 2;\r
7ae88a62
MK
1915 ///\r
1916 /// [Bit 20] Graphics Driver Log When set, indicates that the Graphics\r
1917 /// Driver Status bit has asserted since the log bit was last cleared.\r
1918 /// This log bit will remain set until cleared by software writing 0.\r
1919 ///\r
2f88bd3a 1920 UINT32 GraphicsDriverLog : 1;\r
7ae88a62
MK
1921 ///\r
1922 /// [Bit 21] Autonomous Utilization-Based Frequency Control Log When set,\r
1923 /// indicates that the Autonomous Utilization-Based Frequency Control\r
1924 /// Status bit has asserted since the log bit was last cleared. This log\r
1925 /// bit will remain set until cleared by software writing 0.\r
1926 ///\r
2f88bd3a 1927 UINT32 AutonomousUtilizationBasedFrequencyControlLog : 1;\r
7ae88a62
MK
1928 ///\r
1929 /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm\r
1930 /// Alert Status bit has asserted since the log bit was last cleared. This\r
1931 /// log bit will remain set until cleared by software writing 0.\r
1932 ///\r
2f88bd3a
MK
1933 UINT32 VRThermAlertLog : 1;\r
1934 UINT32 Reserved5 : 1;\r
7ae88a62
MK
1935 ///\r
1936 /// [Bit 24] Electrical Design Point Log When set, indicates that the EDP\r
1937 /// Status bit has asserted since the log bit was last cleared. This log\r
1938 /// bit will remain set until cleared by software writing 0.\r
1939 ///\r
2f88bd3a 1940 UINT32 ElectricalDesignPointLog : 1;\r
7ae88a62
MK
1941 ///\r
1942 /// [Bit 25] Core Power Limiting Log When set, indicates that the Core\r
1943 /// Power Limiting Status bit has asserted since the log bit was last\r
1944 /// cleared. This log bit will remain set until cleared by software\r
1945 /// writing 0.\r
1946 ///\r
2f88bd3a 1947 UINT32 CorePowerLimitingLog : 1;\r
7ae88a62
MK
1948 ///\r
1949 /// [Bit 26] Package-Level PL1 Power Limiting Log When set, indicates\r
1950 /// that the Package Level PL1 Power Limiting Status bit has asserted\r
1951 /// since the log bit was last cleared. This log bit will remain set until\r
1952 /// cleared by software writing 0.\r
1953 ///\r
2f88bd3a 1954 UINT32 PL1Log : 1;\r
7ae88a62
MK
1955 ///\r
1956 /// [Bit 27] Package-Level PL2 Power Limiting Log When set, indicates that\r
1957 /// the Package Level PL2 Power Limiting Status bit has asserted since the\r
1958 /// log bit was last cleared. This log bit will remain set until cleared\r
1959 /// by software writing 0.\r
1960 ///\r
2f88bd3a 1961 UINT32 PL2Log : 1;\r
7ae88a62
MK
1962 ///\r
1963 /// [Bit 28] Max Turbo Limit Log When set, indicates that the Max Turbo\r
1964 /// Limit Status bit has asserted since the log bit was last cleared. This\r
1965 /// log bit will remain set until cleared by software writing 0.\r
1966 ///\r
2f88bd3a 1967 UINT32 MaxTurboLimitLog : 1;\r
7ae88a62
MK
1968 ///\r
1969 /// [Bit 29] Turbo Transition Attenuation Log When set, indicates that the\r
1970 /// Turbo Transition Attenuation Status bit has asserted since the log bit\r
1971 /// was last cleared. This log bit will remain set until cleared by\r
1972 /// software writing 0.\r
1973 ///\r
2f88bd3a
MK
1974 UINT32 TurboTransitionAttenuationLog : 1;\r
1975 UINT32 Reserved6 : 2;\r
1976 UINT32 Reserved7 : 32;\r
7ae88a62
MK
1977 } Bits;\r
1978 ///\r
1979 /// All bit fields as a 32-bit value\r
1980 ///\r
2f88bd3a 1981 UINT32 Uint32;\r
7ae88a62
MK
1982 ///\r
1983 /// All bit fields as a 64-bit value\r
1984 ///\r
2f88bd3a 1985 UINT64 Uint64;\r
7ae88a62
MK
1986} MSR_HASWELL_GRAPHICS_PERF_LIMIT_REASONS_REGISTER;\r
1987\r
7ae88a62
MK
1988/**\r
1989 Package. Indicator of Frequency Clipping in the Ring Interconnect (R/W)\r
1990 (frequency refers to ring interconnect in the uncore).\r
1991\r
1992 @param ECX MSR_HASWELL_RING_PERF_LIMIT_REASONS (0x000006B1)\r
1993 @param EAX Lower 32-bits of MSR value.\r
1994 Described by the type MSR_HASWELL_RING_PERF_LIMIT_REASONS_REGISTER.\r
1995 @param EDX Upper 32-bits of MSR value.\r
1996 Described by the type MSR_HASWELL_RING_PERF_LIMIT_REASONS_REGISTER.\r
1997\r
1998 <b>Example usage</b>\r
1999 @code\r
2000 MSR_HASWELL_RING_PERF_LIMIT_REASONS_REGISTER Msr;\r
2001\r
2002 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_RING_PERF_LIMIT_REASONS);\r
2003 AsmWriteMsr64 (MSR_HASWELL_RING_PERF_LIMIT_REASONS, Msr.Uint64);\r
2004 @endcode\r
e108c3f6 2005 @note MSR_HASWELL_RING_PERF_LIMIT_REASONS is defined as MSR_RING_PERF_LIMIT_REASONS in SDM.\r
7ae88a62 2006**/\r
2f88bd3a 2007#define MSR_HASWELL_RING_PERF_LIMIT_REASONS 0x000006B1\r
7ae88a62
MK
2008\r
2009/**\r
2010 MSR information returned for MSR index #MSR_HASWELL_RING_PERF_LIMIT_REASONS\r
2011**/\r
2012typedef union {\r
2013 ///\r
2014 /// Individual bit fields\r
2015 ///\r
2016 struct {\r
2017 ///\r
2018 /// [Bit 0] PROCHOT Status (R0) When set, frequency is reduced below the\r
2019 /// operating system request due to assertion of external PROCHOT.\r
2020 ///\r
2f88bd3a 2021 UINT32 PROCHOT_Status : 1;\r
7ae88a62
MK
2022 ///\r
2023 /// [Bit 1] Thermal Status (R0) When set, frequency is reduced below the\r
2024 /// operating system request due to a thermal event.\r
2025 ///\r
2f88bd3a
MK
2026 UINT32 ThermalStatus : 1;\r
2027 UINT32 Reserved1 : 4;\r
7ae88a62
MK
2028 ///\r
2029 /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced\r
2030 /// below the operating system request due to a thermal alert from the\r
2031 /// Voltage Regulator.\r
2032 ///\r
2f88bd3a
MK
2033 UINT32 VRThermAlertStatus : 1;\r
2034 UINT32 Reserved2 : 1;\r
7ae88a62
MK
2035 ///\r
2036 /// [Bit 8] Electrical Design Point Status (R0) When set, frequency is\r
2037 /// reduced below the operating system request due to electrical design\r
2038 /// point constraints (e.g. maximum electrical current consumption).\r
2039 ///\r
2f88bd3a
MK
2040 UINT32 ElectricalDesignPointStatus : 1;\r
2041 UINT32 Reserved3 : 1;\r
7ae88a62
MK
2042 ///\r
2043 /// [Bit 10] Package-Level Power Limiting PL1 Status (R0) When set,\r
2044 /// frequency is reduced below the operating system request due to\r
2045 /// package-level power limiting PL1.\r
2046 ///\r
2f88bd3a 2047 UINT32 PL1STatus : 1;\r
7ae88a62
MK
2048 ///\r
2049 /// [Bit 11] Package-Level PL2 Power Limiting Status (R0) When set,\r
2050 /// frequency is reduced below the operating system request due to\r
2051 /// package-level power limiting PL2.\r
2052 ///\r
2f88bd3a
MK
2053 UINT32 PL2Status : 1;\r
2054 UINT32 Reserved4 : 4;\r
7ae88a62
MK
2055 ///\r
2056 /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit\r
2057 /// has asserted since the log bit was last cleared. This log bit will\r
2058 /// remain set until cleared by software writing 0.\r
2059 ///\r
2f88bd3a 2060 UINT32 PROCHOT_Log : 1;\r
7ae88a62
MK
2061 ///\r
2062 /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit\r
2063 /// has asserted since the log bit was last cleared. This log bit will\r
2064 /// remain set until cleared by software writing 0.\r
2065 ///\r
2f88bd3a
MK
2066 UINT32 ThermalLog : 1;\r
2067 UINT32 Reserved5 : 2;\r
7ae88a62
MK
2068 ///\r
2069 /// [Bit 20] Graphics Driver Log When set, indicates that the Graphics\r
2070 /// Driver Status bit has asserted since the log bit was last cleared.\r
2071 /// This log bit will remain set until cleared by software writing 0.\r
2072 ///\r
2f88bd3a 2073 UINT32 GraphicsDriverLog : 1;\r
7ae88a62
MK
2074 ///\r
2075 /// [Bit 21] Autonomous Utilization-Based Frequency Control Log When set,\r
2076 /// indicates that the Autonomous Utilization-Based Frequency Control\r
2077 /// Status bit has asserted since the log bit was last cleared. This log\r
2078 /// bit will remain set until cleared by software writing 0.\r
2079 ///\r
2f88bd3a 2080 UINT32 AutonomousUtilizationBasedFrequencyControlLog : 1;\r
7ae88a62
MK
2081 ///\r
2082 /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm\r
2083 /// Alert Status bit has asserted since the log bit was last cleared. This\r
2084 /// log bit will remain set until cleared by software writing 0.\r
2085 ///\r
2f88bd3a
MK
2086 UINT32 VRThermAlertLog : 1;\r
2087 UINT32 Reserved6 : 1;\r
7ae88a62
MK
2088 ///\r
2089 /// [Bit 24] Electrical Design Point Log When set, indicates that the EDP\r
2090 /// Status bit has asserted since the log bit was last cleared. This log\r
2091 /// bit will remain set until cleared by software writing 0.\r
2092 ///\r
2f88bd3a 2093 UINT32 ElectricalDesignPointLog : 1;\r
7ae88a62
MK
2094 ///\r
2095 /// [Bit 25] Core Power Limiting Log When set, indicates that the Core\r
2096 /// Power Limiting Status bit has asserted since the log bit was last\r
2097 /// cleared. This log bit will remain set until cleared by software\r
2098 /// writing 0.\r
2099 ///\r
2f88bd3a 2100 UINT32 CorePowerLimitingLog : 1;\r
7ae88a62
MK
2101 ///\r
2102 /// [Bit 26] Package-Level PL1 Power Limiting Log When set, indicates\r
2103 /// that the Package Level PL1 Power Limiting Status bit has asserted\r
2104 /// since the log bit was last cleared. This log bit will remain set until\r
2105 /// cleared by software writing 0.\r
2106 ///\r
2f88bd3a 2107 UINT32 PL1Log : 1;\r
7ae88a62
MK
2108 ///\r
2109 /// [Bit 27] Package-Level PL2 Power Limiting Log When set, indicates that\r
2110 /// the Package Level PL2 Power Limiting Status bit has asserted since the\r
2111 /// log bit was last cleared. This log bit will remain set until cleared\r
2112 /// by software writing 0.\r
2113 ///\r
2f88bd3a 2114 UINT32 PL2Log : 1;\r
7ae88a62
MK
2115 ///\r
2116 /// [Bit 28] Max Turbo Limit Log When set, indicates that the Max Turbo\r
2117 /// Limit Status bit has asserted since the log bit was last cleared. This\r
2118 /// log bit will remain set until cleared by software writing 0.\r
2119 ///\r
2f88bd3a 2120 UINT32 MaxTurboLimitLog : 1;\r
7ae88a62
MK
2121 ///\r
2122 /// [Bit 29] Turbo Transition Attenuation Log When set, indicates that the\r
2123 /// Turbo Transition Attenuation Status bit has asserted since the log bit\r
2124 /// was last cleared. This log bit will remain set until cleared by\r
2125 /// software writing 0.\r
2126 ///\r
2f88bd3a
MK
2127 UINT32 TurboTransitionAttenuationLog : 1;\r
2128 UINT32 Reserved7 : 2;\r
2129 UINT32 Reserved8 : 32;\r
7ae88a62
MK
2130 } Bits;\r
2131 ///\r
2132 /// All bit fields as a 32-bit value\r
2133 ///\r
2f88bd3a 2134 UINT32 Uint32;\r
7ae88a62
MK
2135 ///\r
2136 /// All bit fields as a 64-bit value\r
2137 ///\r
2f88bd3a 2138 UINT64 Uint64;\r
7ae88a62
MK
2139} MSR_HASWELL_RING_PERF_LIMIT_REASONS_REGISTER;\r
2140\r
7ae88a62
MK
2141/**\r
2142 Package. Uncore C-Box 0, counter 0 event select MSR.\r
2143\r
2144 @param ECX MSR_HASWELL_UNC_CBO_0_PERFEVTSEL0 (0x00000700)\r
2145 @param EAX Lower 32-bits of MSR value.\r
2146 @param EDX Upper 32-bits of MSR value.\r
2147\r
2148 <b>Example usage</b>\r
2149 @code\r
2150 UINT64 Msr;\r
2151\r
2152 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_0_PERFEVTSEL0);\r
2153 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_0_PERFEVTSEL0, Msr);\r
2154 @endcode\r
e108c3f6 2155 @note MSR_HASWELL_UNC_CBO_0_PERFEVTSEL0 is defined as MSR_UNC_CBO_0_PERFEVTSEL0 in SDM.\r
7ae88a62 2156**/\r
2f88bd3a 2157#define MSR_HASWELL_UNC_CBO_0_PERFEVTSEL0 0x00000700\r
7ae88a62
MK
2158\r
2159/**\r
2160 Package. Uncore C-Box 0, counter 1 event select MSR.\r
2161\r
2162 @param ECX MSR_HASWELL_UNC_CBO_0_PERFEVTSEL1 (0x00000701)\r
2163 @param EAX Lower 32-bits of MSR value.\r
2164 @param EDX Upper 32-bits of MSR value.\r
2165\r
2166 <b>Example usage</b>\r
2167 @code\r
2168 UINT64 Msr;\r
2169\r
2170 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_0_PERFEVTSEL1);\r
2171 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_0_PERFEVTSEL1, Msr);\r
2172 @endcode\r
e108c3f6 2173 @note MSR_HASWELL_UNC_CBO_0_PERFEVTSEL1 is defined as MSR_UNC_CBO_0_PERFEVTSEL1 in SDM.\r
7ae88a62 2174**/\r
2f88bd3a 2175#define MSR_HASWELL_UNC_CBO_0_PERFEVTSEL1 0x00000701\r
7ae88a62
MK
2176\r
2177/**\r
2178 Package. Uncore C-Box 0, performance counter 0.\r
2179\r
2180 @param ECX MSR_HASWELL_UNC_CBO_0_PERFCTR0 (0x00000706)\r
2181 @param EAX Lower 32-bits of MSR value.\r
2182 @param EDX Upper 32-bits of MSR value.\r
2183\r
2184 <b>Example usage</b>\r
2185 @code\r
2186 UINT64 Msr;\r
2187\r
2188 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_0_PERFCTR0);\r
2189 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_0_PERFCTR0, Msr);\r
2190 @endcode\r
e108c3f6 2191 @note MSR_HASWELL_UNC_CBO_0_PERFCTR0 is defined as MSR_UNC_CBO_0_PERFCTR0 in SDM.\r
7ae88a62 2192**/\r
2f88bd3a 2193#define MSR_HASWELL_UNC_CBO_0_PERFCTR0 0x00000706\r
7ae88a62
MK
2194\r
2195/**\r
2196 Package. Uncore C-Box 0, performance counter 1.\r
2197\r
2198 @param ECX MSR_HASWELL_UNC_CBO_0_PERFCTR1 (0x00000707)\r
2199 @param EAX Lower 32-bits of MSR value.\r
2200 @param EDX Upper 32-bits of MSR value.\r
2201\r
2202 <b>Example usage</b>\r
2203 @code\r
2204 UINT64 Msr;\r
2205\r
2206 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_0_PERFCTR1);\r
2207 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_0_PERFCTR1, Msr);\r
2208 @endcode\r
e108c3f6 2209 @note MSR_HASWELL_UNC_CBO_0_PERFCTR1 is defined as MSR_UNC_CBO_0_PERFCTR1 in SDM.\r
7ae88a62 2210**/\r
2f88bd3a 2211#define MSR_HASWELL_UNC_CBO_0_PERFCTR1 0x00000707\r
7ae88a62
MK
2212\r
2213/**\r
2214 Package. Uncore C-Box 1, counter 0 event select MSR.\r
2215\r
2216 @param ECX MSR_HASWELL_UNC_CBO_1_PERFEVTSEL0 (0x00000710)\r
2217 @param EAX Lower 32-bits of MSR value.\r
2218 @param EDX Upper 32-bits of MSR value.\r
2219\r
2220 <b>Example usage</b>\r
2221 @code\r
2222 UINT64 Msr;\r
2223\r
2224 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_1_PERFEVTSEL0);\r
2225 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_1_PERFEVTSEL0, Msr);\r
2226 @endcode\r
e108c3f6 2227 @note MSR_HASWELL_UNC_CBO_1_PERFEVTSEL0 is defined as MSR_UNC_CBO_1_PERFEVTSEL0 in SDM.\r
7ae88a62 2228**/\r
2f88bd3a 2229#define MSR_HASWELL_UNC_CBO_1_PERFEVTSEL0 0x00000710\r
7ae88a62
MK
2230\r
2231/**\r
2232 Package. Uncore C-Box 1, counter 1 event select MSR.\r
2233\r
2234 @param ECX MSR_HASWELL_UNC_CBO_1_PERFEVTSEL1 (0x00000711)\r
2235 @param EAX Lower 32-bits of MSR value.\r
2236 @param EDX Upper 32-bits of MSR value.\r
2237\r
2238 <b>Example usage</b>\r
2239 @code\r
2240 UINT64 Msr;\r
2241\r
2242 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_1_PERFEVTSEL1);\r
2243 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_1_PERFEVTSEL1, Msr);\r
2244 @endcode\r
e108c3f6 2245 @note MSR_HASWELL_UNC_CBO_1_PERFEVTSEL1 is defined as MSR_UNC_CBO_1_PERFEVTSEL1 in SDM.\r
7ae88a62 2246**/\r
2f88bd3a 2247#define MSR_HASWELL_UNC_CBO_1_PERFEVTSEL1 0x00000711\r
7ae88a62
MK
2248\r
2249/**\r
2250 Package. Uncore C-Box 1, performance counter 0.\r
2251\r
2252 @param ECX MSR_HASWELL_UNC_CBO_1_PERFCTR0 (0x00000716)\r
2253 @param EAX Lower 32-bits of MSR value.\r
2254 @param EDX Upper 32-bits of MSR value.\r
2255\r
2256 <b>Example usage</b>\r
2257 @code\r
2258 UINT64 Msr;\r
2259\r
2260 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_1_PERFCTR0);\r
2261 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_1_PERFCTR0, Msr);\r
2262 @endcode\r
e108c3f6 2263 @note MSR_HASWELL_UNC_CBO_1_PERFCTR0 is defined as MSR_UNC_CBO_1_PERFCTR0 in SDM.\r
7ae88a62 2264**/\r
2f88bd3a 2265#define MSR_HASWELL_UNC_CBO_1_PERFCTR0 0x00000716\r
7ae88a62
MK
2266\r
2267/**\r
2268 Package. Uncore C-Box 1, performance counter 1.\r
2269\r
2270 @param ECX MSR_HASWELL_UNC_CBO_1_PERFCTR1 (0x00000717)\r
2271 @param EAX Lower 32-bits of MSR value.\r
2272 @param EDX Upper 32-bits of MSR value.\r
2273\r
2274 <b>Example usage</b>\r
2275 @code\r
2276 UINT64 Msr;\r
2277\r
2278 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_1_PERFCTR1);\r
2279 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_1_PERFCTR1, Msr);\r
2280 @endcode\r
e108c3f6 2281 @note MSR_HASWELL_UNC_CBO_1_PERFCTR1 is defined as MSR_UNC_CBO_1_PERFCTR1 in SDM.\r
7ae88a62 2282**/\r
2f88bd3a 2283#define MSR_HASWELL_UNC_CBO_1_PERFCTR1 0x00000717\r
7ae88a62
MK
2284\r
2285/**\r
2286 Package. Uncore C-Box 2, counter 0 event select MSR.\r
2287\r
2288 @param ECX MSR_HASWELL_UNC_CBO_2_PERFEVTSEL0 (0x00000720)\r
2289 @param EAX Lower 32-bits of MSR value.\r
2290 @param EDX Upper 32-bits of MSR value.\r
2291\r
2292 <b>Example usage</b>\r
2293 @code\r
2294 UINT64 Msr;\r
2295\r
2296 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_2_PERFEVTSEL0);\r
2297 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_2_PERFEVTSEL0, Msr);\r
2298 @endcode\r
e108c3f6 2299 @note MSR_HASWELL_UNC_CBO_2_PERFEVTSEL0 is defined as MSR_UNC_CBO_2_PERFEVTSEL0 in SDM.\r
7ae88a62 2300**/\r
2f88bd3a 2301#define MSR_HASWELL_UNC_CBO_2_PERFEVTSEL0 0x00000720\r
7ae88a62
MK
2302\r
2303/**\r
2304 Package. Uncore C-Box 2, counter 1 event select MSR.\r
2305\r
2306 @param ECX MSR_HASWELL_UNC_CBO_2_PERFEVTSEL1 (0x00000721)\r
2307 @param EAX Lower 32-bits of MSR value.\r
2308 @param EDX Upper 32-bits of MSR value.\r
2309\r
2310 <b>Example usage</b>\r
2311 @code\r
2312 UINT64 Msr;\r
2313\r
2314 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_2_PERFEVTSEL1);\r
2315 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_2_PERFEVTSEL1, Msr);\r
2316 @endcode\r
e108c3f6 2317 @note MSR_HASWELL_UNC_CBO_2_PERFEVTSEL1 is defined as MSR_UNC_CBO_2_PERFEVTSEL1 in SDM.\r
7ae88a62 2318**/\r
2f88bd3a 2319#define MSR_HASWELL_UNC_CBO_2_PERFEVTSEL1 0x00000721\r
7ae88a62
MK
2320\r
2321/**\r
2322 Package. Uncore C-Box 2, performance counter 0.\r
2323\r
2324 @param ECX MSR_HASWELL_UNC_CBO_2_PERFCTR0 (0x00000726)\r
2325 @param EAX Lower 32-bits of MSR value.\r
2326 @param EDX Upper 32-bits of MSR value.\r
2327\r
2328 <b>Example usage</b>\r
2329 @code\r
2330 UINT64 Msr;\r
2331\r
2332 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_2_PERFCTR0);\r
2333 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_2_PERFCTR0, Msr);\r
2334 @endcode\r
e108c3f6 2335 @note MSR_HASWELL_UNC_CBO_2_PERFCTR0 is defined as MSR_UNC_CBO_2_PERFCTR0 in SDM.\r
7ae88a62 2336**/\r
2f88bd3a 2337#define MSR_HASWELL_UNC_CBO_2_PERFCTR0 0x00000726\r
7ae88a62
MK
2338\r
2339/**\r
2340 Package. Uncore C-Box 2, performance counter 1.\r
2341\r
2342 @param ECX MSR_HASWELL_UNC_CBO_2_PERFCTR1 (0x00000727)\r
2343 @param EAX Lower 32-bits of MSR value.\r
2344 @param EDX Upper 32-bits of MSR value.\r
2345\r
2346 <b>Example usage</b>\r
2347 @code\r
2348 UINT64 Msr;\r
2349\r
2350 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_2_PERFCTR1);\r
2351 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_2_PERFCTR1, Msr);\r
2352 @endcode\r
e108c3f6 2353 @note MSR_HASWELL_UNC_CBO_2_PERFCTR1 is defined as MSR_UNC_CBO_2_PERFCTR1 in SDM.\r
7ae88a62 2354**/\r
2f88bd3a 2355#define MSR_HASWELL_UNC_CBO_2_PERFCTR1 0x00000727\r
7ae88a62
MK
2356\r
2357/**\r
2358 Package. Uncore C-Box 3, counter 0 event select MSR.\r
2359\r
2360 @param ECX MSR_HASWELL_UNC_CBO_3_PERFEVTSEL0 (0x00000730)\r
2361 @param EAX Lower 32-bits of MSR value.\r
2362 @param EDX Upper 32-bits of MSR value.\r
2363\r
2364 <b>Example usage</b>\r
2365 @code\r
2366 UINT64 Msr;\r
2367\r
2368 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_3_PERFEVTSEL0);\r
2369 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_3_PERFEVTSEL0, Msr);\r
2370 @endcode\r
e108c3f6 2371 @note MSR_HASWELL_UNC_CBO_3_PERFEVTSEL0 is defined as MSR_UNC_CBO_3_PERFEVTSEL0 in SDM.\r
7ae88a62 2372**/\r
2f88bd3a 2373#define MSR_HASWELL_UNC_CBO_3_PERFEVTSEL0 0x00000730\r
7ae88a62
MK
2374\r
2375/**\r
2376 Package. Uncore C-Box 3, counter 1 event select MSR.\r
2377\r
2378 @param ECX MSR_HASWELL_UNC_CBO_3_PERFEVTSEL1 (0x00000731)\r
2379 @param EAX Lower 32-bits of MSR value.\r
2380 @param EDX Upper 32-bits of MSR value.\r
2381\r
2382 <b>Example usage</b>\r
2383 @code\r
2384 UINT64 Msr;\r
2385\r
2386 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_3_PERFEVTSEL1);\r
2387 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_3_PERFEVTSEL1, Msr);\r
2388 @endcode\r
e108c3f6 2389 @note MSR_HASWELL_UNC_CBO_3_PERFEVTSEL1 is defined as MSR_UNC_CBO_3_PERFEVTSEL1 in SDM.\r
7ae88a62 2390**/\r
2f88bd3a 2391#define MSR_HASWELL_UNC_CBO_3_PERFEVTSEL1 0x00000731\r
7ae88a62
MK
2392\r
2393/**\r
2394 Package. Uncore C-Box 3, performance counter 0.\r
2395\r
2396 @param ECX MSR_HASWELL_UNC_CBO_3_PERFCTR0 (0x00000736)\r
2397 @param EAX Lower 32-bits of MSR value.\r
2398 @param EDX Upper 32-bits of MSR value.\r
2399\r
2400 <b>Example usage</b>\r
2401 @code\r
2402 UINT64 Msr;\r
2403\r
2404 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_3_PERFCTR0);\r
2405 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_3_PERFCTR0, Msr);\r
2406 @endcode\r
e108c3f6 2407 @note MSR_HASWELL_UNC_CBO_3_PERFCTR0 is defined as MSR_UNC_CBO_3_PERFCTR0 in SDM.\r
7ae88a62 2408**/\r
2f88bd3a 2409#define MSR_HASWELL_UNC_CBO_3_PERFCTR0 0x00000736\r
7ae88a62
MK
2410\r
2411/**\r
2412 Package. Uncore C-Box 3, performance counter 1.\r
2413\r
2414 @param ECX MSR_HASWELL_UNC_CBO_3_PERFCTR1 (0x00000737)\r
2415 @param EAX Lower 32-bits of MSR value.\r
2416 @param EDX Upper 32-bits of MSR value.\r
2417\r
2418 <b>Example usage</b>\r
2419 @code\r
2420 UINT64 Msr;\r
2421\r
2422 Msr = AsmReadMsr64 (MSR_HASWELL_UNC_CBO_3_PERFCTR1);\r
2423 AsmWriteMsr64 (MSR_HASWELL_UNC_CBO_3_PERFCTR1, Msr);\r
2424 @endcode\r
e108c3f6 2425 @note MSR_HASWELL_UNC_CBO_3_PERFCTR1 is defined as MSR_UNC_CBO_3_PERFCTR1 in SDM.\r
7ae88a62 2426**/\r
2f88bd3a 2427#define MSR_HASWELL_UNC_CBO_3_PERFCTR1 0x00000737\r
7ae88a62
MK
2428\r
2429/**\r
2430 Package. Note: C-state values are processor specific C-state code names,\r
2431 unrelated to MWAIT extension C-state parameters or ACPI C-States.\r
2432\r
2433 @param ECX MSR_HASWELL_PKG_C8_RESIDENCY (0x00000630)\r
2434 @param EAX Lower 32-bits of MSR value.\r
2435 Described by the type MSR_HASWELL_PKG_C8_RESIDENCY_REGISTER.\r
2436 @param EDX Upper 32-bits of MSR value.\r
2437 Described by the type MSR_HASWELL_PKG_C8_RESIDENCY_REGISTER.\r
2438\r
2439 <b>Example usage</b>\r
2440 @code\r
2441 MSR_HASWELL_PKG_C8_RESIDENCY_REGISTER Msr;\r
2442\r
2443 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_PKG_C8_RESIDENCY);\r
2444 AsmWriteMsr64 (MSR_HASWELL_PKG_C8_RESIDENCY, Msr.Uint64);\r
2445 @endcode\r
e108c3f6 2446 @note MSR_HASWELL_PKG_C8_RESIDENCY is defined as MSR_PKG_C8_RESIDENCY in SDM.\r
7ae88a62 2447**/\r
2f88bd3a 2448#define MSR_HASWELL_PKG_C8_RESIDENCY 0x00000630\r
7ae88a62
MK
2449\r
2450/**\r
2451 MSR information returned for MSR index #MSR_HASWELL_PKG_C8_RESIDENCY\r
2452**/\r
2453typedef union {\r
2454 ///\r
2455 /// Individual bit fields\r
2456 ///\r
2457 struct {\r
2458 ///\r
2459 /// [Bits 31:0] Package C8 Residency Counter. (R/O) Value since last reset\r
2460 /// that this package is in processor-specific C8 states. Count at the\r
2461 /// same frequency as the TSC.\r
2462 ///\r
2f88bd3a 2463 UINT32 C8ResidencyCounter : 32;\r
7ae88a62
MK
2464 ///\r
2465 /// [Bits 59:32] Package C8 Residency Counter. (R/O) Value since last\r
2466 /// reset that this package is in processor-specific C8 states. Count at\r
2467 /// the same frequency as the TSC.\r
2468 ///\r
2f88bd3a
MK
2469 UINT32 C8ResidencyCounterHi : 28;\r
2470 UINT32 Reserved : 4;\r
7ae88a62
MK
2471 } Bits;\r
2472 ///\r
2473 /// All bit fields as a 64-bit value\r
2474 ///\r
2f88bd3a 2475 UINT64 Uint64;\r
7ae88a62
MK
2476} MSR_HASWELL_PKG_C8_RESIDENCY_REGISTER;\r
2477\r
7ae88a62
MK
2478/**\r
2479 Package. Note: C-state values are processor specific C-state code names,\r
2480 unrelated to MWAIT extension C-state parameters or ACPI C-States.\r
2481\r
2482 @param ECX MSR_HASWELL_PKG_C9_RESIDENCY (0x00000631)\r
2483 @param EAX Lower 32-bits of MSR value.\r
2484 Described by the type MSR_HASWELL_PKG_C9_RESIDENCY_REGISTER.\r
2485 @param EDX Upper 32-bits of MSR value.\r
2486 Described by the type MSR_HASWELL_PKG_C9_RESIDENCY_REGISTER.\r
2487\r
2488 <b>Example usage</b>\r
2489 @code\r
2490 MSR_HASWELL_PKG_C9_RESIDENCY_REGISTER Msr;\r
2491\r
2492 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_PKG_C9_RESIDENCY);\r
2493 AsmWriteMsr64 (MSR_HASWELL_PKG_C9_RESIDENCY, Msr.Uint64);\r
2494 @endcode\r
e108c3f6 2495 @note MSR_HASWELL_PKG_C9_RESIDENCY is defined as MSR_PKG_C9_RESIDENCY in SDM.\r
7ae88a62 2496**/\r
2f88bd3a 2497#define MSR_HASWELL_PKG_C9_RESIDENCY 0x00000631\r
7ae88a62
MK
2498\r
2499/**\r
2500 MSR information returned for MSR index #MSR_HASWELL_PKG_C9_RESIDENCY\r
2501**/\r
2502typedef union {\r
2503 ///\r
2504 /// Individual bit fields\r
2505 ///\r
2506 struct {\r
2507 ///\r
2508 /// [Bits 31:0] Package C9 Residency Counter. (R/O) Value since last reset\r
2509 /// that this package is in processor-specific C9 states. Count at the\r
2510 /// same frequency as the TSC.\r
2511 ///\r
2f88bd3a 2512 UINT32 C9ResidencyCounter : 32;\r
7ae88a62
MK
2513 ///\r
2514 /// [Bits 59:32] Package C9 Residency Counter. (R/O) Value since last\r
2515 /// reset that this package is in processor-specific C9 states. Count at\r
2516 /// the same frequency as the TSC.\r
2517 ///\r
2f88bd3a
MK
2518 UINT32 C9ResidencyCounterHi : 28;\r
2519 UINT32 Reserved : 4;\r
7ae88a62
MK
2520 } Bits;\r
2521 ///\r
2522 /// All bit fields as a 64-bit value\r
2523 ///\r
2f88bd3a 2524 UINT64 Uint64;\r
7ae88a62
MK
2525} MSR_HASWELL_PKG_C9_RESIDENCY_REGISTER;\r
2526\r
7ae88a62
MK
2527/**\r
2528 Package. Note: C-state values are processor specific C-state code names,\r
2529 unrelated to MWAIT extension C-state parameters or ACPI C-States.\r
2530\r
2531 @param ECX MSR_HASWELL_PKG_C10_RESIDENCY (0x00000632)\r
2532 @param EAX Lower 32-bits of MSR value.\r
2533 Described by the type MSR_HASWELL_PKG_C10_RESIDENCY_REGISTER.\r
2534 @param EDX Upper 32-bits of MSR value.\r
2535 Described by the type MSR_HASWELL_PKG_C10_RESIDENCY_REGISTER.\r
2536\r
2537 <b>Example usage</b>\r
2538 @code\r
2539 MSR_HASWELL_PKG_C10_RESIDENCY_REGISTER Msr;\r
2540\r
2541 Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_PKG_C10_RESIDENCY);\r
2542 AsmWriteMsr64 (MSR_HASWELL_PKG_C10_RESIDENCY, Msr.Uint64);\r
2543 @endcode\r
e108c3f6 2544 @note MSR_HASWELL_PKG_C10_RESIDENCY is defined as MSR_PKG_C10_RESIDENCY in SDM.\r
7ae88a62 2545**/\r
2f88bd3a 2546#define MSR_HASWELL_PKG_C10_RESIDENCY 0x00000632\r
7ae88a62
MK
2547\r
2548/**\r
2549 MSR information returned for MSR index #MSR_HASWELL_PKG_C10_RESIDENCY\r
2550**/\r
2551typedef union {\r
2552 ///\r
2553 /// Individual bit fields\r
2554 ///\r
2555 struct {\r
2556 ///\r
2557 /// [Bits 31:0] Package C10 Residency Counter. (R/O) Value since last\r
2558 /// reset that this package is in processor-specific C10 states. Count at\r
2559 /// the same frequency as the TSC.\r
2560 ///\r
2f88bd3a 2561 UINT32 C10ResidencyCounter : 32;\r
7ae88a62
MK
2562 ///\r
2563 /// [Bits 59:32] Package C10 Residency Counter. (R/O) Value since last\r
2564 /// reset that this package is in processor-specific C10 states. Count at\r
2565 /// the same frequency as the TSC.\r
2566 ///\r
2f88bd3a
MK
2567 UINT32 C10ResidencyCounterHi : 28;\r
2568 UINT32 Reserved : 4;\r
7ae88a62
MK
2569 } Bits;\r
2570 ///\r
2571 /// All bit fields as a 64-bit value\r
2572 ///\r
2f88bd3a 2573 UINT64 Uint64;\r
7ae88a62
MK
2574} MSR_HASWELL_PKG_C10_RESIDENCY_REGISTER;\r
2575\r
2576#endif\r