]> git.proxmox.com Git - mirror_edk2.git/blob - UefiCpuPkg/Include/Register/Msr/SilvermontMsr.h
4272375ea55fbf601c53aadbce6ea4c71dc11a9b
[mirror_edk2.git] / UefiCpuPkg / Include / Register / Msr / SilvermontMsr.h
1 /** @file
2 MSR Definitions for Intel processors based on the Silvermont 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-4.
21
22 **/
23
24 #ifndef __SILVERMONT_MSR_H__
25 #define __SILVERMONT_MSR_H__
26
27 #include <Register/ArchitecturalMsr.h>
28
29 /**
30 Shared. Model Specific Platform ID (R).
31
32 @param ECX MSR_SILVERMONT_PLATFORM_ID (0x00000017)
33 @param EAX Lower 32-bits of MSR value.
34 Described by the type MSR_SILVERMONT_PLATFORM_ID_REGISTER.
35 @param EDX Upper 32-bits of MSR value.
36 Described by the type MSR_SILVERMONT_PLATFORM_ID_REGISTER.
37
38 <b>Example usage</b>
39 @code
40 MSR_SILVERMONT_PLATFORM_ID_REGISTER Msr;
41
42 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PLATFORM_ID);
43 @endcode
44 **/
45 #define MSR_SILVERMONT_PLATFORM_ID 0x00000017
46
47 /**
48 MSR information returned for MSR index #MSR_SILVERMONT_PLATFORM_ID
49 **/
50 typedef union {
51 ///
52 /// Individual bit fields
53 ///
54 struct {
55 UINT32 Reserved1:8;
56 ///
57 /// [Bits 12:8] Maximum Qualified Ratio (R) The maximum allowed bus ratio.
58 ///
59 UINT32 MaximumQualifiedRatio:5;
60 UINT32 Reserved2:19;
61 UINT32 Reserved3:18;
62 ///
63 /// [Bits 52:50] See Table 35-2.
64 ///
65 UINT32 PlatformId:3;
66 UINT32 Reserved4:11;
67 } Bits;
68 ///
69 /// All bit fields as a 64-bit value
70 ///
71 UINT64 Uint64;
72 } MSR_SILVERMONT_PLATFORM_ID_REGISTER;
73
74
75 /**
76 Shared. Processor Hard Power-On Configuration (R/W) Enables and disables
77 processor features; (R) indicates current processor configuration.
78
79 @param ECX MSR_SILVERMONT_EBL_CR_POWERON (0x0000002A)
80 @param EAX Lower 32-bits of MSR value.
81 Described by the type MSR_SILVERMONT_EBL_CR_POWERON_REGISTER.
82 @param EDX Upper 32-bits of MSR value.
83 Described by the type MSR_SILVERMONT_EBL_CR_POWERON_REGISTER.
84
85 <b>Example usage</b>
86 @code
87 MSR_SILVERMONT_EBL_CR_POWERON_REGISTER Msr;
88
89 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_EBL_CR_POWERON);
90 AsmWriteMsr64 (MSR_SILVERMONT_EBL_CR_POWERON, Msr.Uint64);
91 @endcode
92 **/
93 #define MSR_SILVERMONT_EBL_CR_POWERON 0x0000002A
94
95 /**
96 MSR information returned for MSR index #MSR_SILVERMONT_EBL_CR_POWERON
97 **/
98 typedef union {
99 ///
100 /// Individual bit fields
101 ///
102 struct {
103 UINT32 Reserved1:1;
104 ///
105 /// [Bit 1] Data Error Checking Enable (R/W) 1 = Enabled; 0 = Disabled
106 /// Always 0.
107 ///
108 UINT32 DataErrorCheckingEnable:1;
109 ///
110 /// [Bit 2] Response Error Checking Enable (R/W) 1 = Enabled; 0 = Disabled
111 /// Always 0.
112 ///
113 UINT32 ResponseErrorCheckingEnable:1;
114 ///
115 /// [Bit 3] AERR# Drive Enable (R/W) 1 = Enabled; 0 = Disabled Always 0.
116 ///
117 UINT32 AERR_DriveEnable:1;
118 ///
119 /// [Bit 4] BERR# Enable for initiator bus requests (R/W) 1 = Enabled; 0 =
120 /// Disabled Always 0.
121 ///
122 UINT32 BERR_Enable:1;
123 UINT32 Reserved2:1;
124 UINT32 Reserved3:1;
125 ///
126 /// [Bit 7] BINIT# Driver Enable (R/W) 1 = Enabled; 0 = Disabled Always 0.
127 ///
128 UINT32 BINIT_DriverEnable:1;
129 UINT32 Reserved4:1;
130 ///
131 /// [Bit 9] Execute BIST (R/O) 1 = Enabled; 0 = Disabled.
132 ///
133 UINT32 ExecuteBIST:1;
134 ///
135 /// [Bit 10] AERR# Observation Enabled (R/O) 1 = Enabled; 0 = Disabled
136 /// Always 0.
137 ///
138 UINT32 AERR_ObservationEnabled:1;
139 UINT32 Reserved5:1;
140 ///
141 /// [Bit 12] BINIT# Observation Enabled (R/O) 1 = Enabled; 0 = Disabled
142 /// Always 0.
143 ///
144 UINT32 BINIT_ObservationEnabled:1;
145 UINT32 Reserved6:1;
146 ///
147 /// [Bit 14] 1 MByte Power on Reset Vector (R/O) 1 = 1 MByte; 0 = 4 GBytes.
148 ///
149 UINT32 ResetVector:1;
150 UINT32 Reserved7:1;
151 ///
152 /// [Bits 17:16] APIC Cluster ID (R/O) Always 00B.
153 ///
154 UINT32 APICClusterID:2;
155 UINT32 Reserved8:2;
156 ///
157 /// [Bits 21:20] Symmetric Arbitration ID (R/O) Always 00B.
158 ///
159 UINT32 SymmetricArbitrationID:2;
160 ///
161 /// [Bits 26:22] Integer Bus Frequency Ratio (R/O).
162 ///
163 UINT32 IntegerBusFrequencyRatio:5;
164 UINT32 Reserved9:5;
165 UINT32 Reserved10:32;
166 } Bits;
167 ///
168 /// All bit fields as a 32-bit value
169 ///
170 UINT32 Uint32;
171 ///
172 /// All bit fields as a 64-bit value
173 ///
174 UINT64 Uint64;
175 } MSR_SILVERMONT_EBL_CR_POWERON_REGISTER;
176
177
178 /**
179 Core. SMI Counter (R/O).
180
181 @param ECX MSR_SILVERMONT_SMI_COUNT (0x00000034)
182 @param EAX Lower 32-bits of MSR value.
183 Described by the type MSR_SILVERMONT_SMI_COUNT_REGISTER.
184 @param EDX Upper 32-bits of MSR value.
185 Described by the type MSR_SILVERMONT_SMI_COUNT_REGISTER.
186
187 <b>Example usage</b>
188 @code
189 MSR_SILVERMONT_SMI_COUNT_REGISTER Msr;
190
191 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_SMI_COUNT);
192 @endcode
193 **/
194 #define MSR_SILVERMONT_SMI_COUNT 0x00000034
195
196 /**
197 MSR information returned for MSR index #MSR_SILVERMONT_SMI_COUNT
198 **/
199 typedef union {
200 ///
201 /// Individual bit fields
202 ///
203 struct {
204 ///
205 /// [Bits 31:0] SMI Count (R/O) Running count of SMI events since last
206 /// RESET.
207 ///
208 UINT32 SMICount:32;
209 UINT32 Reserved:32;
210 } Bits;
211 ///
212 /// All bit fields as a 32-bit value
213 ///
214 UINT32 Uint32;
215 ///
216 /// All bit fields as a 64-bit value
217 ///
218 UINT64 Uint64;
219 } MSR_SILVERMONT_SMI_COUNT_REGISTER;
220
221
222 /**
223 Core. Last Branch Record n From IP (R/W) One of eight pairs of last branch
224 record registers on the last branch record stack. This part of the stack
225 contains pointers to the source instruction for one of the last eight
226 branches, exceptions, or interrupts taken by the processor. See also: -
227 Last Branch Record Stack TOS at 1C9H - Section 17.12, "Last Branch,
228 Interrupt, and Exception Recording (Pentium M Processors).".
229
230 @param ECX MSR_SILVERMONT_LASTBRANCH_n_FROM_IP
231 @param EAX Lower 32-bits of MSR value.
232 @param EDX Upper 32-bits of MSR value.
233
234 <b>Example usage</b>
235 @code
236 UINT64 Msr;
237
238 Msr = AsmReadMsr64 (MSR_SILVERMONT_LASTBRANCH_0_FROM_IP);
239 AsmWriteMsr64 (MSR_SILVERMONT_LASTBRANCH_0_FROM_IP, Msr);
240 @endcode
241 @{
242 **/
243 #define MSR_SILVERMONT_LASTBRANCH_0_FROM_IP 0x00000040
244 #define MSR_SILVERMONT_LASTBRANCH_1_FROM_IP 0x00000041
245 #define MSR_SILVERMONT_LASTBRANCH_2_FROM_IP 0x00000042
246 #define MSR_SILVERMONT_LASTBRANCH_3_FROM_IP 0x00000043
247 #define MSR_SILVERMONT_LASTBRANCH_4_FROM_IP 0x00000044
248 #define MSR_SILVERMONT_LASTBRANCH_5_FROM_IP 0x00000045
249 #define MSR_SILVERMONT_LASTBRANCH_6_FROM_IP 0x00000046
250 #define MSR_SILVERMONT_LASTBRANCH_7_FROM_IP 0x00000047
251 /// @}
252
253
254 /**
255 Core. Last Branch Record n To IP (R/W) One of eight pairs of last branch
256 record registers on the last branch record stack. This part of the stack
257 contains pointers to the destination instruction for one of the last eight
258 branches, exceptions, or interrupts taken by the processor.
259
260 @param ECX MSR_SILVERMONT_LASTBRANCH_n_TO_IP
261 @param EAX Lower 32-bits of MSR value.
262 @param EDX Upper 32-bits of MSR value.
263
264 <b>Example usage</b>
265 @code
266 UINT64 Msr;
267
268 Msr = AsmReadMsr64 (MSR_SILVERMONT_LASTBRANCH_0_TO_IP);
269 AsmWriteMsr64 (MSR_SILVERMONT_LASTBRANCH_0_TO_IP, Msr);
270 @endcode
271 @{
272 **/
273 #define MSR_SILVERMONT_LASTBRANCH_0_TO_IP 0x00000060
274 #define MSR_SILVERMONT_LASTBRANCH_1_TO_IP 0x00000061
275 #define MSR_SILVERMONT_LASTBRANCH_2_TO_IP 0x00000062
276 #define MSR_SILVERMONT_LASTBRANCH_3_TO_IP 0x00000063
277 #define MSR_SILVERMONT_LASTBRANCH_4_TO_IP 0x00000064
278 #define MSR_SILVERMONT_LASTBRANCH_5_TO_IP 0x00000065
279 #define MSR_SILVERMONT_LASTBRANCH_6_TO_IP 0x00000066
280 #define MSR_SILVERMONT_LASTBRANCH_7_TO_IP 0x00000067
281 /// @}
282
283
284 /**
285 Shared. Scalable Bus Speed(RO) This field indicates the intended scalable
286 bus clock speed for processors based on Silvermont microarchitecture:.
287
288 @param ECX MSR_SILVERMONT_FSB_FREQ (0x000000CD)
289 @param EAX Lower 32-bits of MSR value.
290 Described by the type MSR_SILVERMONT_FSB_FREQ_REGISTER.
291 @param EDX Upper 32-bits of MSR value.
292 Described by the type MSR_SILVERMONT_FSB_FREQ_REGISTER.
293
294 <b>Example usage</b>
295 @code
296 MSR_SILVERMONT_FSB_FREQ_REGISTER Msr;
297
298 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_FSB_FREQ);
299 @endcode
300 **/
301 #define MSR_SILVERMONT_FSB_FREQ 0x000000CD
302
303 /**
304 MSR information returned for MSR index #MSR_SILVERMONT_FSB_FREQ
305 **/
306 typedef union {
307 ///
308 /// Individual bit fields
309 ///
310 struct {
311 ///
312 /// [Bits 3:0] Scalable Bus Speed
313 ///
314 /// Silvermont Processor Family
315 /// ---------------------------
316 /// 100B: 080.0 MHz
317 /// 000B: 083.3 MHz
318 /// 001B: 100.0 MHz
319 /// 010B: 133.3 MHz
320 /// 011B: 116.7 MHz
321 ///
322 /// Airmont Processor Family
323 /// ---------------------------
324 /// 0000B: 083.3 MHz
325 /// 0001B: 100.0 MHz
326 /// 0010B: 133.3 MHz
327 /// 0011B: 116.7 MHz
328 /// 0100B: 080.0 MHz
329 /// 0101B: 093.3 MHz
330 /// 0110B: 090.0 MHz
331 /// 0111B: 088.9 MHz
332 /// 1000B: 087.5 MHz
333 ///
334 UINT32 ScalableBusSpeed:4;
335 UINT32 Reserved1:28;
336 UINT32 Reserved2:32;
337 } Bits;
338 ///
339 /// All bit fields as a 32-bit value
340 ///
341 UINT32 Uint32;
342 ///
343 /// All bit fields as a 64-bit value
344 ///
345 UINT64 Uint64;
346 } MSR_SILVERMONT_FSB_FREQ_REGISTER;
347
348
349 /**
350 Shared. C-State Configuration Control (R/W) Note: C-state values are
351 processor specific C-state code names, unrelated to MWAIT extension C-state
352 parameters or ACPI CStates. See http://biosbits.org.
353
354 @param ECX MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL (0x000000E2)
355 @param EAX Lower 32-bits of MSR value.
356 Described by the type MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL_REGISTER.
357 @param EDX Upper 32-bits of MSR value.
358 Described by the type MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL_REGISTER.
359
360 <b>Example usage</b>
361 @code
362 MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL_REGISTER Msr;
363
364 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL);
365 AsmWriteMsr64 (MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL, Msr.Uint64);
366 @endcode
367 **/
368 #define MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL 0x000000E2
369
370 /**
371 MSR information returned for MSR index #MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL
372 **/
373 typedef union {
374 ///
375 /// Individual bit fields
376 ///
377 struct {
378 ///
379 /// [Bits 2:0] Package C-State Limit (R/W) Specifies the lowest
380 /// processor-specific C-state code name (consuming the least power). for
381 /// the package. The default is set as factory-configured package C-state
382 /// limit. The following C-state code name encodings are supported: 000b:
383 /// C0 (no package C-sate support) 001b: C1 (Behavior is the same as 000b)
384 /// 100b: C4 110b: C6 111b: C7 (Silvermont only).
385 ///
386 UINT32 Limit:3;
387 UINT32 Reserved1:7;
388 ///
389 /// [Bit 10] I/O MWAIT Redirection Enable (R/W) When set, will map
390 /// IO_read instructions sent to IO register specified by
391 /// MSR_PMG_IO_CAPTURE_BASE to MWAIT instructions.
392 ///
393 UINT32 IO_MWAIT:1;
394 UINT32 Reserved2:4;
395 ///
396 /// [Bit 15] CFG Lock (R/WO) When set, lock bits 15:0 of this register
397 /// until next reset.
398 ///
399 UINT32 CFGLock:1;
400 UINT32 Reserved3:16;
401 UINT32 Reserved4:32;
402 } Bits;
403 ///
404 /// All bit fields as a 32-bit value
405 ///
406 UINT32 Uint32;
407 ///
408 /// All bit fields as a 64-bit value
409 ///
410 UINT64 Uint64;
411 } MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL_REGISTER;
412
413
414 /**
415 Shared. Power Management IO Redirection in C-state (R/W) See
416 http://biosbits.org.
417
418 @param ECX MSR_SILVERMONT_PMG_IO_CAPTURE_BASE (0x000000E4)
419 @param EAX Lower 32-bits of MSR value.
420 Described by the type MSR_SILVERMONT_PMG_IO_CAPTURE_BASE_REGISTER.
421 @param EDX Upper 32-bits of MSR value.
422 Described by the type MSR_SILVERMONT_PMG_IO_CAPTURE_BASE_REGISTER.
423
424 <b>Example usage</b>
425 @code
426 MSR_SILVERMONT_PMG_IO_CAPTURE_BASE_REGISTER Msr;
427
428 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PMG_IO_CAPTURE_BASE);
429 AsmWriteMsr64 (MSR_SILVERMONT_PMG_IO_CAPTURE_BASE, Msr.Uint64);
430 @endcode
431 **/
432 #define MSR_SILVERMONT_PMG_IO_CAPTURE_BASE 0x000000E4
433
434 /**
435 MSR information returned for MSR index #MSR_SILVERMONT_PMG_IO_CAPTURE_BASE
436 **/
437 typedef union {
438 ///
439 /// Individual bit fields
440 ///
441 struct {
442 ///
443 /// [Bits 15:0] LVL_2 Base Address (R/W) Specifies the base address
444 /// visible to software for IO redirection. If IO MWAIT Redirection is
445 /// enabled, reads to this address will be consumed by the power
446 /// management logic and decoded to MWAIT instructions. When IO port
447 /// address redirection is enabled, this is the IO port address reported
448 /// to the OS/software.
449 ///
450 UINT32 Lvl2Base:16;
451 ///
452 /// [Bits 18:16] C-state Range (R/W) Specifies the encoding value of the
453 /// maximum C-State code name to be included when IO read to MWAIT
454 /// redirection is enabled by MSR_PKG_CST_CONFIG_CONTROL[bit10]: 100b - C4
455 /// is the max C-State to include 110b - C6 is the max C-State to include
456 /// 111b - C7 is the max C-State to include.
457 ///
458 UINT32 CStateRange:3;
459 UINT32 Reserved1:13;
460 UINT32 Reserved2:32;
461 } Bits;
462 ///
463 /// All bit fields as a 32-bit value
464 ///
465 UINT32 Uint32;
466 ///
467 /// All bit fields as a 64-bit value
468 ///
469 UINT64 Uint64;
470 } MSR_SILVERMONT_PMG_IO_CAPTURE_BASE_REGISTER;
471
472
473 /**
474 Shared.
475
476 @param ECX MSR_SILVERMONT_BBL_CR_CTL3 (0x0000011E)
477 @param EAX Lower 32-bits of MSR value.
478 Described by the type MSR_SILVERMONT_BBL_CR_CTL3_REGISTER.
479 @param EDX Upper 32-bits of MSR value.
480 Described by the type MSR_SILVERMONT_BBL_CR_CTL3_REGISTER.
481
482 <b>Example usage</b>
483 @code
484 MSR_SILVERMONT_BBL_CR_CTL3_REGISTER Msr;
485
486 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_BBL_CR_CTL3);
487 AsmWriteMsr64 (MSR_SILVERMONT_BBL_CR_CTL3, Msr.Uint64);
488 @endcode
489 **/
490 #define MSR_SILVERMONT_BBL_CR_CTL3 0x0000011E
491
492 /**
493 MSR information returned for MSR index #MSR_SILVERMONT_BBL_CR_CTL3
494 **/
495 typedef union {
496 ///
497 /// Individual bit fields
498 ///
499 struct {
500 ///
501 /// [Bit 0] L2 Hardware Enabled (RO) 1 = If the L2 is hardware-enabled 0 =
502 /// Indicates if the L2 is hardware-disabled.
503 ///
504 UINT32 L2HardwareEnabled:1;
505 UINT32 Reserved1:7;
506 ///
507 /// [Bit 8] L2 Enabled. (R/W) 1 = L2 cache has been initialized 0 =
508 /// Disabled (default) Until this bit is set the processor will not
509 /// respond to the WBINVD instruction or the assertion of the FLUSH# input.
510 ///
511 UINT32 L2Enabled:1;
512 UINT32 Reserved2:14;
513 ///
514 /// [Bit 23] L2 Not Present (RO) 1. = L2 Present 2. = L2 Not Present.
515 ///
516 UINT32 L2NotPresent:1;
517 UINT32 Reserved3:8;
518 UINT32 Reserved4:32;
519 } Bits;
520 ///
521 /// All bit fields as a 32-bit value
522 ///
523 UINT32 Uint32;
524 ///
525 /// All bit fields as a 64-bit value
526 ///
527 UINT64 Uint64;
528 } MSR_SILVERMONT_BBL_CR_CTL3_REGISTER;
529
530
531 /**
532 Core. AES Configuration (RW-L) Privileged post-BIOS agent must provide a #GP
533 handler to handle unsuccessful read of this MSR.
534
535 @param ECX MSR_SILVERMONT_FEATURE_CONFIG (0x0000013C)
536 @param EAX Lower 32-bits of MSR value.
537 Described by the type MSR_SILVERMONT_FEATURE_CONFIG_REGISTER.
538 @param EDX Upper 32-bits of MSR value.
539 Described by the type MSR_SILVERMONT_FEATURE_CONFIG_REGISTER.
540
541 <b>Example usage</b>
542 @code
543 MSR_SILVERMONT_FEATURE_CONFIG_REGISTER Msr;
544
545 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_FEATURE_CONFIG);
546 AsmWriteMsr64 (MSR_SILVERMONT_FEATURE_CONFIG, Msr.Uint64);
547 @endcode
548 **/
549 #define MSR_SILVERMONT_FEATURE_CONFIG 0x0000013C
550
551 /**
552 MSR information returned for MSR index #MSR_SILVERMONT_FEATURE_CONFIG
553 **/
554 typedef union {
555 ///
556 /// Individual bit fields
557 ///
558 struct {
559 ///
560 /// [Bits 1:0] AES Configuration (RW-L) Upon a successful read of this
561 /// MSR, the configuration of AES instruction set availability is as
562 /// follows: 11b: AES instructions are not available until next RESET.
563 /// otherwise, AES instructions are available. Note, AES instruction set
564 /// is not available if read is unsuccessful. If the configuration is not
565 /// 01b, AES instruction can be mis-configured if a privileged agent
566 /// unintentionally writes 11b.
567 ///
568 UINT32 AESConfiguration:2;
569 UINT32 Reserved1:30;
570 UINT32 Reserved2:32;
571 } Bits;
572 ///
573 /// All bit fields as a 32-bit value
574 ///
575 UINT32 Uint32;
576 ///
577 /// All bit fields as a 64-bit value
578 ///
579 UINT64 Uint64;
580 } MSR_SILVERMONT_FEATURE_CONFIG_REGISTER;
581
582
583 /**
584 Enable Misc. Processor Features (R/W) Allows a variety of processor
585 functions to be enabled and disabled.
586
587 @param ECX MSR_SILVERMONT_IA32_MISC_ENABLE (0x000001A0)
588 @param EAX Lower 32-bits of MSR value.
589 Described by the type MSR_SILVERMONT_IA32_MISC_ENABLE_REGISTER.
590 @param EDX Upper 32-bits of MSR value.
591 Described by the type MSR_SILVERMONT_IA32_MISC_ENABLE_REGISTER.
592
593 <b>Example usage</b>
594 @code
595 MSR_SILVERMONT_IA32_MISC_ENABLE_REGISTER Msr;
596
597 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_IA32_MISC_ENABLE);
598 AsmWriteMsr64 (MSR_SILVERMONT_IA32_MISC_ENABLE, Msr.Uint64);
599 @endcode
600 **/
601 #define MSR_SILVERMONT_IA32_MISC_ENABLE 0x000001A0
602
603 /**
604 MSR information returned for MSR index #MSR_SILVERMONT_IA32_MISC_ENABLE
605 **/
606 typedef union {
607 ///
608 /// Individual bit fields
609 ///
610 struct {
611 ///
612 /// [Bit 0] Core. Fast-Strings Enable See Table 35-2.
613 ///
614 UINT32 FastStrings:1;
615 UINT32 Reserved1:2;
616 ///
617 /// [Bit 3] Shared. Automatic Thermal Control Circuit Enable (R/W) See
618 /// Table 35-2.
619 ///
620 UINT32 AutomaticThermalControlCircuit:1;
621 UINT32 Reserved2:3;
622 ///
623 /// [Bit 7] Core. Performance Monitoring Available (R) See Table 35-2.
624 ///
625 UINT32 PerformanceMonitoring:1;
626 UINT32 Reserved3:3;
627 ///
628 /// [Bit 11] Core. Branch Trace Storage Unavailable (RO) See Table 35-2.
629 ///
630 UINT32 BTS:1;
631 ///
632 /// [Bit 12] Core. Precise Event Based Sampling Unavailable (RO) See Table
633 /// 35-2.
634 ///
635 UINT32 PEBS:1;
636 UINT32 Reserved4:3;
637 ///
638 /// [Bit 16] Shared. Enhanced Intel SpeedStep Technology Enable (R/W) See
639 /// Table 35-2.
640 ///
641 UINT32 EIST:1;
642 UINT32 Reserved5:1;
643 ///
644 /// [Bit 18] Core. ENABLE MONITOR FSM (R/W) See Table 35-2.
645 ///
646 UINT32 MONITOR:1;
647 UINT32 Reserved6:3;
648 ///
649 /// [Bit 22] Core. Limit CPUID Maxval (R/W) See Table 35-2.
650 ///
651 UINT32 LimitCpuidMaxval:1;
652 ///
653 /// [Bit 23] Shared. xTPR Message Disable (R/W) See Table 35-2.
654 ///
655 UINT32 xTPR_Message_Disable:1;
656 UINT32 Reserved7:8;
657 UINT32 Reserved8:2;
658 ///
659 /// [Bit 34] Core. XD Bit Disable (R/W) See Table 35-2.
660 ///
661 UINT32 XD:1;
662 UINT32 Reserved9:3;
663 ///
664 /// [Bit 38] Shared. Turbo Mode Disable (R/W) When set to 1 on processors
665 /// that support Intel Turbo Boost Technology, the turbo mode feature is
666 /// disabled and the IDA_Enable feature flag will be clear (CPUID.06H:
667 /// EAX[1]=0). When set to a 0 on processors that support IDA, CPUID.06H:
668 /// EAX[1] reports the processor's support of turbo mode is enabled. Note:
669 /// the power-on default value is used by BIOS to detect hardware support
670 /// of turbo mode. If power-on default value is 1, turbo mode is available
671 /// in the processor. If power-on default value is 0, turbo mode is not
672 /// available.
673 ///
674 UINT32 TurboModeDisable:1;
675 UINT32 Reserved10:25;
676 } Bits;
677 ///
678 /// All bit fields as a 64-bit value
679 ///
680 UINT64 Uint64;
681 } MSR_SILVERMONT_IA32_MISC_ENABLE_REGISTER;
682
683
684 /**
685 Package.
686
687 @param ECX MSR_SILVERMONT_TEMPERATURE_TARGET (0x000001A2)
688 @param EAX Lower 32-bits of MSR value.
689 Described by the type MSR_SILVERMONT_TEMPERATURE_TARGET_REGISTER.
690 @param EDX Upper 32-bits of MSR value.
691 Described by the type MSR_SILVERMONT_TEMPERATURE_TARGET_REGISTER.
692
693 <b>Example usage</b>
694 @code
695 MSR_SILVERMONT_TEMPERATURE_TARGET_REGISTER Msr;
696
697 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_TEMPERATURE_TARGET);
698 AsmWriteMsr64 (MSR_SILVERMONT_TEMPERATURE_TARGET, Msr.Uint64);
699 @endcode
700 **/
701 #define MSR_SILVERMONT_TEMPERATURE_TARGET 0x000001A2
702
703 /**
704 MSR information returned for MSR index #MSR_SILVERMONT_TEMPERATURE_TARGET
705 **/
706 typedef union {
707 ///
708 /// Individual bit fields
709 ///
710 struct {
711 UINT32 Reserved1:16;
712 ///
713 /// [Bits 23:16] Temperature Target (R) The default thermal throttling or
714 /// PROCHOT# activation temperature in degree C, The effective temperature
715 /// for thermal throttling or PROCHOT# activation is "Temperature Target"
716 /// + "Target Offset".
717 ///
718 UINT32 TemperatureTarget:8;
719 ///
720 /// [Bits 29:24] Target Offset (R/W) Specifies an offset in degrees C to
721 /// adjust the throttling and PROCHOT# activation temperature from the
722 /// default target specified in TEMPERATURE_TARGET (bits 23:16).
723 ///
724 UINT32 TargetOffset:6;
725 UINT32 Reserved2:2;
726 UINT32 Reserved3:32;
727 } Bits;
728 ///
729 /// All bit fields as a 32-bit value
730 ///
731 UINT32 Uint32;
732 ///
733 /// All bit fields as a 64-bit value
734 ///
735 UINT64 Uint64;
736 } MSR_SILVERMONT_TEMPERATURE_TARGET_REGISTER;
737
738
739 /**
740 Shared. Offcore Response Event Select Register (R/W).
741
742 @param ECX MSR_SILVERMONT_OFFCORE_RSP_0 (0x000001A6)
743 @param EAX Lower 32-bits of MSR value.
744 @param EDX Upper 32-bits of MSR value.
745
746 <b>Example usage</b>
747 @code
748 UINT64 Msr;
749
750 Msr = AsmReadMsr64 (MSR_SILVERMONT_OFFCORE_RSP_0);
751 AsmWriteMsr64 (MSR_SILVERMONT_OFFCORE_RSP_0, Msr);
752 @endcode
753 **/
754 #define MSR_SILVERMONT_OFFCORE_RSP_0 0x000001A6
755
756
757 /**
758 Shared. Offcore Response Event Select Register (R/W).
759
760 @param ECX MSR_SILVERMONT_OFFCORE_RSP_1 (0x000001A7)
761 @param EAX Lower 32-bits of MSR value.
762 @param EDX Upper 32-bits of MSR value.
763
764 <b>Example usage</b>
765 @code
766 UINT64 Msr;
767
768 Msr = AsmReadMsr64 (MSR_SILVERMONT_OFFCORE_RSP_1);
769 AsmWriteMsr64 (MSR_SILVERMONT_OFFCORE_RSP_1, Msr);
770 @endcode
771 **/
772 #define MSR_SILVERMONT_OFFCORE_RSP_1 0x000001A7
773
774
775 /**
776 Package. Maximum Ratio Limit of Turbo Mode (RW).
777
778 @param ECX MSR_SILVERMONT_TURBO_RATIO_LIMIT (0x000001AD)
779 @param EAX Lower 32-bits of MSR value.
780 Described by the type MSR_SILVERMONT_TURBO_RATIO_LIMIT_REGISTER.
781 @param EDX Upper 32-bits of MSR value.
782 Described by the type MSR_SILVERMONT_TURBO_RATIO_LIMIT_REGISTER.
783
784 <b>Example usage</b>
785 @code
786 MSR_SILVERMONT_TURBO_RATIO_LIMIT_REGISTER Msr;
787
788 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_TURBO_RATIO_LIMIT);
789 AsmWriteMsr64 (MSR_SILVERMONT_TURBO_RATIO_LIMIT, Msr.Uint64);
790 @endcode
791 **/
792 #define MSR_SILVERMONT_TURBO_RATIO_LIMIT 0x000001AD
793
794 /**
795 MSR information returned for MSR index #MSR_SILVERMONT_TURBO_RATIO_LIMIT
796 **/
797 typedef union {
798 ///
799 /// Individual bit fields
800 ///
801 struct {
802 ///
803 /// [Bits 7:0] Package. Maximum Ratio Limit for 1C Maximum turbo ratio
804 /// limit of 1 core active.
805 ///
806 UINT32 Maximum1C:8;
807 ///
808 /// [Bits 15:8] Package. Maximum Ratio Limit for 2C Maximum turbo ratio
809 /// limit of 2 core active.
810 ///
811 UINT32 Maximum2C:8;
812 ///
813 /// [Bits 23:16] Package. Maximum Ratio Limit for 3C Maximum turbo ratio
814 /// limit of 3 core active.
815 ///
816 UINT32 Maximum3C:8;
817 ///
818 /// [Bits 31:24] Package. Maximum Ratio Limit for 4C Maximum turbo ratio
819 /// limit of 4 core active.
820 ///
821 UINT32 Maximum4C:8;
822 ///
823 /// [Bits 39:32] Package. Maximum Ratio Limit for 5C Maximum turbo ratio
824 /// limit of 5 core active.
825 ///
826 UINT32 Maximum5C:8;
827 ///
828 /// [Bits 47:40] Package. Maximum Ratio Limit for 6C Maximum turbo ratio
829 /// limit of 6 core active.
830 ///
831 UINT32 Maximum6C:8;
832 ///
833 /// [Bits 55:48] Package. Maximum Ratio Limit for 7C Maximum turbo ratio
834 /// limit of 7 core active.
835 ///
836 UINT32 Maximum7C:8;
837 ///
838 /// [Bits 63:56] Package. Maximum Ratio Limit for 8C Maximum turbo ratio
839 /// limit of 8 core active.
840 ///
841 UINT32 Maximum8C:8;
842 } Bits;
843 ///
844 /// All bit fields as a 64-bit value
845 ///
846 UINT64 Uint64;
847 } MSR_SILVERMONT_TURBO_RATIO_LIMIT_REGISTER;
848
849
850 /**
851 Core. Last Branch Record Stack TOS (R/W) Contains an index (bits 0-2) that
852 points to the MSR containing the most recent branch record. See
853 MSR_LASTBRANCH_0_FROM_IP (at 40H).
854
855 @param ECX MSR_SILVERMONT_LASTBRANCH_TOS (0x000001C9)
856 @param EAX Lower 32-bits of MSR value.
857 @param EDX Upper 32-bits of MSR value.
858
859 <b>Example usage</b>
860 @code
861 UINT64 Msr;
862
863 Msr = AsmReadMsr64 (MSR_SILVERMONT_LASTBRANCH_TOS);
864 AsmWriteMsr64 (MSR_SILVERMONT_LASTBRANCH_TOS, Msr);
865 @endcode
866 **/
867 #define MSR_SILVERMONT_LASTBRANCH_TOS 0x000001C9
868
869
870 /**
871 Core. Last Exception Record From Linear IP (R) Contains a pointer to the
872 last branch instruction that the processor executed prior to the last
873 exception that was generated or the last interrupt that was handled.
874
875 @param ECX MSR_SILVERMONT_LER_FROM_LIP (0x000001DD)
876 @param EAX Lower 32-bits of MSR value.
877 @param EDX Upper 32-bits of MSR value.
878
879 <b>Example usage</b>
880 @code
881 UINT64 Msr;
882
883 Msr = AsmReadMsr64 (MSR_SILVERMONT_LER_FROM_LIP);
884 @endcode
885 **/
886 #define MSR_SILVERMONT_LER_FROM_LIP 0x000001DD
887
888
889 /**
890 Core. Last Exception Record To Linear IP (R) This area contains a pointer
891 to the target of the last branch instruction that the processor executed
892 prior to the last exception that was generated or the last interrupt that
893 was handled.
894
895 @param ECX MSR_SILVERMONT_LER_TO_LIP (0x000001DE)
896 @param EAX Lower 32-bits of MSR value.
897 @param EDX Upper 32-bits of MSR value.
898
899 <b>Example usage</b>
900 @code
901 UINT64 Msr;
902
903 Msr = AsmReadMsr64 (MSR_SILVERMONT_LER_TO_LIP);
904 @endcode
905 **/
906 #define MSR_SILVERMONT_LER_TO_LIP 0x000001DE
907
908
909 /**
910 Core. See Table 35-2. See Section 18.4.2, "Global Counter Control
911 Facilities.".
912
913 @param ECX MSR_SILVERMONT_IA32_PERF_GLOBAL_STAUS (0x0000038E)
914 @param EAX Lower 32-bits of MSR value.
915 @param EDX Upper 32-bits of MSR value.
916
917 <b>Example usage</b>
918 @code
919 UINT64 Msr;
920
921 Msr = AsmReadMsr64 (MSR_SILVERMONT_IA32_PERF_GLOBAL_STAUS);
922 AsmWriteMsr64 (MSR_SILVERMONT_IA32_PERF_GLOBAL_STAUS, Msr);
923 @endcode
924 **/
925 #define MSR_SILVERMONT_IA32_PERF_GLOBAL_STAUS 0x0000038E
926
927
928 /**
929 Core. See Table 35-2. See Section 18.4.4, "Precise Event Based Sampling
930 (PEBS).".
931
932 @param ECX MSR_SILVERMONT_PEBS_ENABLE (0x000003F1)
933 @param EAX Lower 32-bits of MSR value.
934 Described by the type MSR_SILVERMONT_PEBS_ENABLE_REGISTER.
935 @param EDX Upper 32-bits of MSR value.
936 Described by the type MSR_SILVERMONT_PEBS_ENABLE_REGISTER.
937
938 <b>Example usage</b>
939 @code
940 MSR_SILVERMONT_PEBS_ENABLE_REGISTER Msr;
941
942 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PEBS_ENABLE);
943 AsmWriteMsr64 (MSR_SILVERMONT_PEBS_ENABLE, Msr.Uint64);
944 @endcode
945 **/
946 #define MSR_SILVERMONT_PEBS_ENABLE 0x000003F1
947
948 /**
949 MSR information returned for MSR index #MSR_SILVERMONT_PEBS_ENABLE
950 **/
951 typedef union {
952 ///
953 /// Individual bit fields
954 ///
955 struct {
956 ///
957 /// [Bit 0] Enable PEBS on IA32_PMC0. (R/W).
958 ///
959 UINT32 PEBS:1;
960 UINT32 Reserved1:31;
961 UINT32 Reserved2:32;
962 } Bits;
963 ///
964 /// All bit fields as a 32-bit value
965 ///
966 UINT32 Uint32;
967 ///
968 /// All bit fields as a 64-bit value
969 ///
970 UINT64 Uint64;
971 } MSR_SILVERMONT_PEBS_ENABLE_REGISTER;
972
973
974 /**
975 Package. Note: C-state values are processor specific C-state code names,
976 unrelated to MWAIT extension C-state parameters or ACPI CStates. Package C6
977 Residency Counter. (R/O) Value since last reset that this package is in
978 processor-specific C6 states. Counts at the TSC Frequency.
979
980 @param ECX MSR_SILVERMONT_PKG_C6_RESIDENCY (0x000003FA)
981 @param EAX Lower 32-bits of MSR value.
982 @param EDX Upper 32-bits of MSR value.
983
984 <b>Example usage</b>
985 @code
986 UINT64 Msr;
987
988 Msr = AsmReadMsr64 (MSR_SILVERMONT_PKG_C6_RESIDENCY);
989 AsmWriteMsr64 (MSR_SILVERMONT_PKG_C6_RESIDENCY, Msr);
990 @endcode
991 **/
992 #define MSR_SILVERMONT_PKG_C6_RESIDENCY 0x000003FA
993
994
995 /**
996 Core. Note: C-state values are processor specific C-state code names,
997 unrelated to MWAIT extension C-state parameters or ACPI CStates. CORE C6
998 Residency Counter. (R/O) Value since last reset that this core is in
999 processor-specific C6 states. Counts at the TSC Frequency.
1000
1001 @param ECX MSR_SILVERMONT_CORE_C6_RESIDENCY (0x000003FD)
1002 @param EAX Lower 32-bits of MSR value.
1003 @param EDX Upper 32-bits of MSR value.
1004
1005 <b>Example usage</b>
1006 @code
1007 UINT64 Msr;
1008
1009 Msr = AsmReadMsr64 (MSR_SILVERMONT_CORE_C6_RESIDENCY);
1010 AsmWriteMsr64 (MSR_SILVERMONT_CORE_C6_RESIDENCY, Msr);
1011 @endcode
1012 **/
1013 #define MSR_SILVERMONT_CORE_C6_RESIDENCY 0x000003FD
1014
1015
1016 /**
1017 Core. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
1018
1019 @param ECX MSR_SILVERMONT_MCi_CTL
1020 @param EAX Lower 32-bits of MSR value.
1021 @param EDX Upper 32-bits of MSR value.
1022
1023 <b>Example usage</b>
1024 @code
1025 UINT64 Msr;
1026
1027 Msr = AsmReadMsr64 (MSR_SILVERMONT_MC3_CTL);
1028 AsmWriteMsr64 (MSR_SILVERMONT_MC3_CTL, Msr);
1029 @endcode
1030 @{
1031 **/
1032 #define MSR_SILVERMONT_MC3_CTL 0x0000040C
1033 #define MSR_SILVERMONT_MC4_CTL 0x00000410
1034 #define MSR_SILVERMONT_MC5_CTL 0x00000414
1035 /// @}
1036
1037
1038 /**
1039 Core. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
1040
1041 @param ECX MSR_SILVERMONT_MCi_STATUS
1042 @param EAX Lower 32-bits of MSR value.
1043 @param EDX Upper 32-bits of MSR value.
1044
1045 <b>Example usage</b>
1046 @code
1047 UINT64 Msr;
1048
1049 Msr = AsmReadMsr64 (MSR_SILVERMONT_MC3_STATUS);
1050 AsmWriteMsr64 (MSR_SILVERMONT_MC3_STATUS, Msr);
1051 @endcode
1052 @{
1053 **/
1054 #define MSR_SILVERMONT_MC3_STATUS 0x0000040D
1055 #define MSR_SILVERMONT_MC4_STATUS 0x00000411
1056 #define MSR_SILVERMONT_MC5_STATUS 0x00000415
1057 /// @}
1058
1059
1060 /**
1061 Core. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MCi_ADDR register
1062 is either not implemented or contains no address if the ADDRV flag in the
1063 MSR_MCi_STATUS register is clear. When not implemented in the processor, all
1064 reads and writes to this MSR will cause a general-protection exception.
1065
1066 @param ECX MSR_SILVERMONT_MCi_ADDR
1067 @param EAX Lower 32-bits of MSR value.
1068 @param EDX Upper 32-bits of MSR value.
1069
1070 <b>Example usage</b>
1071 @code
1072 UINT64 Msr;
1073
1074 Msr = AsmReadMsr64 (MSR_SILVERMONT_MC3_ADDR);
1075 AsmWriteMsr64 (MSR_SILVERMONT_MC3_ADDR, Msr);
1076 @endcode
1077 @{
1078 **/
1079 #define MSR_SILVERMONT_MC3_ADDR 0x0000040E
1080 #define MSR_SILVERMONT_MC4_ADDR 0x00000412
1081 #define MSR_SILVERMONT_MC5_ADDR 0x00000416
1082 /// @}
1083
1084
1085 /**
1086 Core. Capability Reporting Register of EPT and VPID (R/O) See Table 35-2.
1087
1088 @param ECX MSR_SILVERMONT_IA32_VMX_EPT_VPID_ENUM (0x0000048C)
1089 @param EAX Lower 32-bits of MSR value.
1090 @param EDX Upper 32-bits of MSR value.
1091
1092 <b>Example usage</b>
1093 @code
1094 UINT64 Msr;
1095
1096 Msr = AsmReadMsr64 (MSR_SILVERMONT_IA32_VMX_EPT_VPID_ENUM);
1097 @endcode
1098 **/
1099 #define MSR_SILVERMONT_IA32_VMX_EPT_VPID_ENUM 0x0000048C
1100
1101
1102 /**
1103 Core. Capability Reporting Register of VM-function Controls (R/O) See Table
1104 35-2.
1105
1106 @param ECX MSR_SILVERMONT_IA32_VMX_FMFUNC (0x00000491)
1107 @param EAX Lower 32-bits of MSR value.
1108 @param EDX Upper 32-bits of MSR value.
1109
1110 <b>Example usage</b>
1111 @code
1112 UINT64 Msr;
1113
1114 Msr = AsmReadMsr64 (MSR_SILVERMONT_IA32_VMX_FMFUNC);
1115 @endcode
1116 **/
1117 #define MSR_SILVERMONT_IA32_VMX_FMFUNC 0x00000491
1118
1119
1120 /**
1121 Core. Note: C-state values are processor specific C-state code names,
1122 unrelated to MWAIT extension C-state parameters or ACPI CStates. CORE C1
1123 Residency Counter. (R/O) Value since last reset that this core is in
1124 processor-specific C1 states. Counts at the TSC frequency.
1125
1126 @param ECX MSR_SILVERMONT_CORE_C1_RESIDENCY (0x00000660)
1127 @param EAX Lower 32-bits of MSR value.
1128 @param EDX Upper 32-bits of MSR value.
1129
1130 <b>Example usage</b>
1131 @code
1132 UINT64 Msr;
1133
1134 Msr = AsmReadMsr64 (MSR_SILVERMONT_CORE_C1_RESIDENCY);
1135 AsmWriteMsr64 (MSR_SILVERMONT_CORE_C1_RESIDENCY, Msr);
1136 @endcode
1137 **/
1138 #define MSR_SILVERMONT_CORE_C1_RESIDENCY 0x00000660
1139
1140
1141 /**
1142 Package. Unit Multipliers used in RAPL Interfaces (R/O) See Section 14.9.1,
1143 "RAPL Interfaces.".
1144
1145 @param ECX MSR_SILVERMONT_RAPL_POWER_UNIT (0x00000606)
1146 @param EAX Lower 32-bits of MSR value.
1147 Described by the type MSR_SILVERMONT_RAPL_POWER_UNIT_REGISTER.
1148 @param EDX Upper 32-bits of MSR value.
1149 Described by the type MSR_SILVERMONT_RAPL_POWER_UNIT_REGISTER.
1150
1151 <b>Example usage</b>
1152 @code
1153 MSR_SILVERMONT_RAPL_POWER_UNIT_REGISTER Msr;
1154
1155 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_RAPL_POWER_UNIT);
1156 @endcode
1157 **/
1158 #define MSR_SILVERMONT_RAPL_POWER_UNIT 0x00000606
1159
1160 /**
1161 MSR information returned for MSR index #MSR_SILVERMONT_RAPL_POWER_UNIT
1162 **/
1163 typedef union {
1164 ///
1165 /// Individual bit fields
1166 ///
1167 struct {
1168 ///
1169 /// [Bits 3:0] Power Units. Power related information (in milliWatts) is
1170 /// based on the multiplier, 2^PU; where PU is an unsigned integer
1171 /// represented by bits 3:0. Default value is 0101b, indicating power unit
1172 /// is in 32 milliWatts increment.
1173 ///
1174 UINT32 PowerUnits:4;
1175 UINT32 Reserved1:4;
1176 ///
1177 /// [Bits 12:8] Energy Status Units. Energy related information (in
1178 /// microJoules) is based on the multiplier, 2^ESU; where ESU is an
1179 /// unsigned integer represented by bits 12:8. Default value is 00101b,
1180 /// indicating energy unit is in 32 microJoules increment.
1181 ///
1182 UINT32 EnergyStatusUnits:5;
1183 UINT32 Reserved2:3;
1184 ///
1185 /// [Bits 19:16] Time Unit. The value is 0000b, indicating time unit is in
1186 /// one second.
1187 ///
1188 UINT32 TimeUnits:4;
1189 UINT32 Reserved3:12;
1190 UINT32 Reserved4:32;
1191 } Bits;
1192 ///
1193 /// All bit fields as a 32-bit value
1194 ///
1195 UINT32 Uint32;
1196 ///
1197 /// All bit fields as a 64-bit value
1198 ///
1199 UINT64 Uint64;
1200 } MSR_SILVERMONT_RAPL_POWER_UNIT_REGISTER;
1201
1202
1203 /**
1204 Package. PKG RAPL Power Limit Control (R/W).
1205
1206 @param ECX MSR_SILVERMONT_PKG_POWER_LIMIT (0x00000610)
1207 @param EAX Lower 32-bits of MSR value.
1208 Described by the type MSR_SILVERMONT_PKG_POWER_LIMIT_REGISTER.
1209 @param EDX Upper 32-bits of MSR value.
1210 Described by the type MSR_SILVERMONT_PKG_POWER_LIMIT_REGISTER.
1211
1212 <b>Example usage</b>
1213 @code
1214 MSR_SILVERMONT_PKG_POWER_LIMIT_REGISTER Msr;
1215
1216 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PKG_POWER_LIMIT);
1217 AsmWriteMsr64 (MSR_SILVERMONT_PKG_POWER_LIMIT, Msr.Uint64);
1218 @endcode
1219 **/
1220 #define MSR_SILVERMONT_PKG_POWER_LIMIT 0x00000610
1221
1222 /**
1223 MSR information returned for MSR index #MSR_SILVERMONT_PKG_POWER_LIMIT
1224 **/
1225 typedef union {
1226 ///
1227 /// Individual bit fields
1228 ///
1229 struct {
1230 ///
1231 /// [Bits 14:0] Package Power Limit #1. (R/W) See Section 14.9.3, "Package
1232 /// RAPL Domain." and MSR_RAPL_POWER_UNIT in Table 35-7.
1233 ///
1234 UINT32 Limit:15;
1235 ///
1236 /// [Bit 15] Enable Power Limit #1. (R/W) See Section 14.9.3, "Package
1237 /// RAPL Domain.".
1238 ///
1239 UINT32 Enable:1;
1240 ///
1241 /// [Bit 16] Package Clamping Limitation #1. (R/W) See Section 14.9.3,
1242 /// "Package RAPL Domain.".
1243 ///
1244 UINT32 ClampingLimit:1;
1245 ///
1246 /// [Bits 23:17] Time Window for Power Limit #1. (R/W) in unit of second.
1247 /// If 0 is specified in bits [23:17], defaults to 1 second window.
1248 ///
1249 UINT32 Time:7;
1250 UINT32 Reserved1:8;
1251 UINT32 Reserved2:32;
1252 } Bits;
1253 ///
1254 /// All bit fields as a 32-bit value
1255 ///
1256 UINT32 Uint32;
1257 ///
1258 /// All bit fields as a 64-bit value
1259 ///
1260 UINT64 Uint64;
1261 } MSR_SILVERMONT_PKG_POWER_LIMIT_REGISTER;
1262
1263
1264 /**
1265 Package. PKG Energy Status (R/O) See Section 14.9.3, "Package RAPL Domain."
1266 and MSR_RAPL_POWER_UNIT in Table 35-7.
1267
1268 @param ECX MSR_SILVERMONT_PKG_ENERGY_STATUS (0x00000611)
1269 @param EAX Lower 32-bits of MSR value.
1270 @param EDX Upper 32-bits of MSR value.
1271
1272 <b>Example usage</b>
1273 @code
1274 UINT64 Msr;
1275
1276 Msr = AsmReadMsr64 (MSR_SILVERMONT_PKG_ENERGY_STATUS);
1277 @endcode
1278 **/
1279 #define MSR_SILVERMONT_PKG_ENERGY_STATUS 0x00000611
1280
1281
1282 /**
1283 Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
1284 Domains." and MSR_RAPL_POWER_UNIT in Table 35-7.
1285
1286 @param ECX MSR_SILVERMONT_PP0_ENERGY_STATUS (0x00000639)
1287 @param EAX Lower 32-bits of MSR value.
1288 @param EDX Upper 32-bits of MSR value.
1289
1290 <b>Example usage</b>
1291 @code
1292 UINT64 Msr;
1293
1294 Msr = AsmReadMsr64 (MSR_SILVERMONT_PP0_ENERGY_STATUS);
1295 @endcode
1296 **/
1297 #define MSR_SILVERMONT_PP0_ENERGY_STATUS 0x00000639
1298
1299
1300 /**
1301 Package. Core C6 demotion policy config MSR. Controls per-core C6 demotion
1302 policy. Writing a value of 0 disables core level HW demotion policy.
1303
1304 @param ECX MSR_SILVERMONT_CC6_DEMOTION_POLICY_CONFIG (0x00000668)
1305 @param EAX Lower 32-bits of MSR value.
1306 @param EDX Upper 32-bits of MSR value.
1307
1308 <b>Example usage</b>
1309 @code
1310 UINT64 Msr;
1311
1312 Msr = AsmReadMsr64 (MSR_SILVERMONT_CC6_DEMOTION_POLICY_CONFIG);
1313 AsmWriteMsr64 (MSR_SILVERMONT_CC6_DEMOTION_POLICY_CONFIG, Msr);
1314 @endcode
1315 **/
1316 #define MSR_SILVERMONT_CC6_DEMOTION_POLICY_CONFIG 0x00000668
1317
1318
1319 /**
1320 Package. Module C6 demotion policy config MSR. Controls module (i.e. two
1321 cores sharing the second-level cache) C6 demotion policy. Writing a value of
1322 0 disables module level HW demotion policy.
1323
1324 @param ECX MSR_SILVERMONT_MC6_DEMOTION_POLICY_CONFIG (0x00000669)
1325 @param EAX Lower 32-bits of MSR value.
1326 @param EDX Upper 32-bits of MSR value.
1327
1328 <b>Example usage</b>
1329 @code
1330 UINT64 Msr;
1331
1332 Msr = AsmReadMsr64 (MSR_SILVERMONT_MC6_DEMOTION_POLICY_CONFIG);
1333 AsmWriteMsr64 (MSR_SILVERMONT_MC6_DEMOTION_POLICY_CONFIG, Msr);
1334 @endcode
1335 **/
1336 #define MSR_SILVERMONT_MC6_DEMOTION_POLICY_CONFIG 0x00000669
1337
1338
1339 /**
1340 Module. Module C6 Residency Counter (R/0) Note: C-state values are processor
1341 specific C-state code names, unrelated to MWAIT extension C-state parameters
1342 or ACPI CStates. Time that this module is in module-specific C6 states since
1343 last reset. Counts at 1 Mhz frequency.
1344
1345 @param ECX MSR_SILVERMONT_MC6_RESIDENCY_COUNTER (0x00000664)
1346 @param EAX Lower 32-bits of MSR value.
1347 @param EDX Upper 32-bits of MSR value.
1348
1349 <b>Example usage</b>
1350 @code
1351 UINT64 Msr;
1352
1353 Msr = AsmReadMsr64 (MSR_SILVERMONT_MC6_RESIDENCY_COUNTER);
1354 @endcode
1355 **/
1356 #define MSR_SILVERMONT_MC6_RESIDENCY_COUNTER 0x00000664
1357
1358
1359 /**
1360 Package. PKG RAPL Parameter (R/0).
1361
1362 @param ECX MSR_SILVERMONT_PKG_POWER_INFO (0x0000066E)
1363 @param EAX Lower 32-bits of MSR value.
1364 Described by the type MSR_SILVERMONT_PKG_POWER_INFO_REGISTER.
1365 @param EDX Upper 32-bits of MSR value.
1366 Described by the type MSR_SILVERMONT_PKG_POWER_INFO_REGISTER.
1367
1368 <b>Example usage</b>
1369 @code
1370 MSR_SILVERMONT_PKG_POWER_INFO_REGISTER Msr;
1371
1372 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PKG_POWER_INFO);
1373 @endcode
1374 **/
1375 #define MSR_SILVERMONT_PKG_POWER_INFO 0x0000066E
1376
1377 /**
1378 MSR information returned for MSR index #MSR_SILVERMONT_PKG_POWER_INFO
1379 **/
1380 typedef union {
1381 ///
1382 /// Individual bit fields
1383 ///
1384 struct {
1385 ///
1386 /// [Bits 14:0] Thermal Spec Power. (R/0) The unsigned integer value is
1387 /// the equivalent of thermal specification power of the package domain.
1388 /// The unit of this field is specified by the "Power Units" field of
1389 /// MSR_RAPL_POWER_UNIT.
1390 ///
1391 UINT32 ThermalSpecPower:15;
1392 UINT32 Reserved1:17;
1393 UINT32 Reserved2:32;
1394 } Bits;
1395 ///
1396 /// All bit fields as a 32-bit value
1397 ///
1398 UINT32 Uint32;
1399 ///
1400 /// All bit fields as a 64-bit value
1401 ///
1402 UINT64 Uint64;
1403 } MSR_SILVERMONT_PKG_POWER_INFO_REGISTER;
1404
1405
1406 /**
1407 Package. PP0 RAPL Power Limit Control (R/W).
1408
1409 @param ECX MSR_SILVERMONT_PP0_POWER_LIMIT (0x00000638)
1410 @param EAX Lower 32-bits of MSR value.
1411 Described by the type MSR_SILVERMONT_PP0_POWER_LIMIT_REGISTER.
1412 @param EDX Upper 32-bits of MSR value.
1413 Described by the type MSR_SILVERMONT_PP0_POWER_LIMIT_REGISTER.
1414
1415 <b>Example usage</b>
1416 @code
1417 MSR_SILVERMONT_PP0_POWER_LIMIT_REGISTER Msr;
1418
1419 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PP0_POWER_LIMIT);
1420 AsmWriteMsr64 (MSR_SILVERMONT_PP0_POWER_LIMIT, Msr.Uint64);
1421 @endcode
1422 **/
1423 #define MSR_SILVERMONT_PP0_POWER_LIMIT 0x00000638
1424
1425 /**
1426 MSR information returned for MSR index #MSR_SILVERMONT_PP0_POWER_LIMIT
1427 **/
1428 typedef union {
1429 ///
1430 /// Individual bit fields
1431 ///
1432 struct {
1433 ///
1434 /// [Bits 14:0] PP0 Power Limit #1. (R/W) See Section 14.9.4, "PP0/PP1
1435 /// RAPL Domains." and MSR_RAPL_POWER_UNIT in Table 35-7.
1436 ///
1437 UINT32 Limit:15;
1438 ///
1439 /// [Bit 15] Enable Power Limit #1. (R/W) See Section 14.9.4, "PP0/PP1
1440 /// RAPL Domains.".
1441 ///
1442 UINT32 Enable:1;
1443 UINT32 Reserved1:1;
1444 ///
1445 /// [Bits 23:17] Time Window for Power Limit #1. (R/W) Specifies the time
1446 /// duration over which the average power must remain below
1447 /// PP0_POWER_LIMIT #1(14:0). Supported Encodings: 0x0: 1 second time
1448 /// duration. 0x1: 5 second time duration (Default). 0x2: 10 second time
1449 /// duration. 0x3: 15 second time duration. 0x4: 20 second time duration.
1450 /// 0x5: 25 second time duration. 0x6: 30 second time duration. 0x7: 35
1451 /// second time duration. 0x8: 40 second time duration. 0x9: 45 second
1452 /// time duration. 0xA: 50 second time duration. 0xB-0x7F - reserved.
1453 ///
1454 UINT32 Time:7;
1455 UINT32 Reserved2:8;
1456 UINT32 Reserved3:32;
1457 } Bits;
1458 ///
1459 /// All bit fields as a 32-bit value
1460 ///
1461 UINT32 Uint32;
1462 ///
1463 /// All bit fields as a 64-bit value
1464 ///
1465 UINT64 Uint64;
1466 } MSR_SILVERMONT_PP0_POWER_LIMIT_REGISTER;
1467
1468 #endif