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