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