]> git.proxmox.com Git - mirror_edk2.git/blob - UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h
UefiCpuPkg/Msr: Add CPUID signature check MACROs
[mirror_edk2.git] / UefiCpuPkg / Include / Register / Msr / GoldmontMsr.h
1 /** @file
2 MSR Definitions for Intel Atom processors based on the Goldmont microarchitecture.
3
4 Provides defines for Machine Specific Registers(MSR) indexes. Data structures
5 are provided for MSRs that contain one or more bit fields. If the MSR value
6 returned is a single 32-bit or 64-bit value, then a data structure is not
7 provided for that MSR.
8
9 Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>
10 This program and the accompanying materials
11 are licensed and made available under the terms and conditions of the BSD License
12 which accompanies this distribution. The full text of the license may be found at
13 http://opensource.org/licenses/bsd-license.php
14
15 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
16 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17
18 @par Specification Reference:
19 Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
20 September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.5.
21
22 **/
23
24 #ifndef __GOLDMONT_MSR_H__
25 #define __GOLDMONT_MSR_H__
26
27 #include <Register/ArchitecturalMsr.h>
28
29 /**
30 Is Intel Atom processors based on the Goldmont microarchitecture?
31
32 @param DisplayFamily Display Family ID
33 @param DisplayModel Display Model ID
34
35 @retval TRUE Yes, it is.
36 @retval FALSE No, it isn't.
37 **/
38 #define IS_GOLDMONT_PROCESSOR(DisplayFamily, DisplayModel) \
39 (DisplayFamily == 0x06 && \
40 ( \
41 DisplayModel == 0x5C \
42 ) \
43 )
44
45 /**
46 Core. Control Features in Intel 64Processor (R/W).
47
48 @param ECX MSR_GOLDMONT_FEATURE_CONTROL (0x0000003A)
49 @param EAX Lower 32-bits of MSR value.
50 Described by the type MSR_GOLDMONT_FEATURE_CONTROL_REGISTER.
51 @param EDX Upper 32-bits of MSR value.
52 Described by the type MSR_GOLDMONT_FEATURE_CONTROL_REGISTER.
53
54 <b>Example usage</b>
55 @code
56 MSR_GOLDMONT_FEATURE_CONTROL_REGISTER Msr;
57
58 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_FEATURE_CONTROL);
59 AsmWriteMsr64 (MSR_GOLDMONT_FEATURE_CONTROL, Msr.Uint64);
60 @endcode
61 @note MSR_GOLDMONT_FEATURE_CONTROL is defined as IA32_FEATURE_CONTROL in SDM.
62 **/
63 #define MSR_GOLDMONT_FEATURE_CONTROL 0x0000003A
64
65 /**
66 MSR information returned for MSR index #MSR_GOLDMONT_FEATURE_CONTROL
67 **/
68 typedef union {
69 ///
70 /// Individual bit fields
71 ///
72 struct {
73 ///
74 /// [Bit 0] Lock bit (R/WL)
75 ///
76 UINT32 Lock:1;
77 ///
78 /// [Bit 1] Enable VMX inside SMX operation (R/WL)
79 ///
80 UINT32 EnableVmxInsideSmx:1;
81 ///
82 /// [Bit 2] Enable VMX outside SMX operation (R/WL)
83 ///
84 UINT32 EnableVmxOutsideSmx:1;
85 UINT32 Reserved1:5;
86 ///
87 /// [Bits 14:8] SENTER local function enables (R/WL)
88 ///
89 UINT32 SenterLocalFunctionEnables:7;
90 ///
91 /// [Bit 15] SENTER global functions enable (R/WL)
92 ///
93 UINT32 SenterGlobalEnable:1;
94 UINT32 Reserved2:2;
95 ///
96 /// [Bit 18] SGX global functions enable (R/WL)
97 ///
98 UINT32 SgxEnable:1;
99 UINT32 Reserved3:13;
100 UINT32 Reserved4:32;
101 } Bits;
102 ///
103 /// All bit fields as a 32-bit value
104 ///
105 UINT32 Uint32;
106 ///
107 /// All bit fields as a 64-bit value
108 ///
109 UINT64 Uint64;
110 } MSR_GOLDMONT_FEATURE_CONTROL_REGISTER;
111
112
113 /**
114 Package. See http://biosbits.org.
115
116 @param ECX MSR_GOLDMONT_PLATFORM_INFO (0x000000CE)
117 @param EAX Lower 32-bits of MSR value.
118 Described by the type MSR_GOLDMONT_PLATFORM_INFO_REGISTER.
119 @param EDX Upper 32-bits of MSR value.
120 Described by the type MSR_GOLDMONT_PLATFORM_INFO_REGISTER.
121
122 <b>Example usage</b>
123 @code
124 MSR_GOLDMONT_PLATFORM_INFO_REGISTER Msr;
125
126 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PLATFORM_INFO);
127 AsmWriteMsr64 (MSR_GOLDMONT_PLATFORM_INFO, Msr.Uint64);
128 @endcode
129 @note MSR_GOLDMONT_PLATFORM_INFO is defined as MSR_PLATFORM_INFO in SDM.
130 **/
131 #define MSR_GOLDMONT_PLATFORM_INFO 0x000000CE
132
133 /**
134 MSR information returned for MSR index #MSR_GOLDMONT_PLATFORM_INFO
135 **/
136 typedef union {
137 ///
138 /// Individual bit fields
139 ///
140 struct {
141 UINT32 Reserved1:8;
142 ///
143 /// [Bits 15:8] Package. Maximum Non-Turbo Ratio (R/O) The is the ratio
144 /// of the frequency that invariant TSC runs at. Frequency = ratio * 100
145 /// MHz.
146 ///
147 UINT32 MaximumNonTurboRatio:8;
148 UINT32 Reserved2:12;
149 ///
150 /// [Bit 28] Package. Programmable Ratio Limit for Turbo Mode (R/O) When
151 /// set to 1, indicates that Programmable Ratio Limits for Turbo mode is
152 /// enabled, and when set to 0, indicates Programmable Ratio Limits for
153 /// Turbo mode is disabled.
154 ///
155 UINT32 RatioLimit:1;
156 ///
157 /// [Bit 29] Package. Programmable TDP Limit for Turbo Mode (R/O) When
158 /// set to 1, indicates that TDP Limits for Turbo mode are programmable,
159 /// and when set to 0, indicates TDP Limit for Turbo mode is not
160 /// programmable.
161 ///
162 UINT32 TDPLimit:1;
163 ///
164 /// [Bit 30] Package. Programmable TJ OFFSET (R/O) When set to 1,
165 /// indicates that MSR_TEMPERATURE_TARGET.[27:24] is valid and writable to
166 /// specify an temperature offset.
167 ///
168 UINT32 TJOFFSET:1;
169 UINT32 Reserved3:1;
170 UINT32 Reserved4:8;
171 ///
172 /// [Bits 47:40] Package. Maximum Efficiency Ratio (R/O) The is the
173 /// minimum ratio (maximum efficiency) that the processor can operates, in
174 /// units of 100MHz.
175 ///
176 UINT32 MaximumEfficiencyRatio:8;
177 UINT32 Reserved5:16;
178 } Bits;
179 ///
180 /// All bit fields as a 64-bit value
181 ///
182 UINT64 Uint64;
183 } MSR_GOLDMONT_PLATFORM_INFO_REGISTER;
184
185
186 /**
187 Core. C-State Configuration Control (R/W) Note: C-state values are
188 processor specific C-state code names, unrelated to MWAIT extension C-state
189 parameters or ACPI CStates. See http://biosbits.org.
190
191 @param ECX MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL (0x000000E2)
192 @param EAX Lower 32-bits of MSR value.
193 Described by the type
194 MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER.
195 @param EDX Upper 32-bits of MSR value.
196 Described by the type
197 MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER.
198
199 <b>Example usage</b>
200 @code
201 MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER Msr;
202
203 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL);
204 AsmWriteMsr64 (MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL, Msr.Uint64);
205 @endcode
206 @note MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL is defined as MSR_PKG_CST_CONFIG_CONTROL in SDM.
207 **/
208 #define MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL 0x000000E2
209
210 /**
211 MSR information returned for MSR index #MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL
212 **/
213 typedef union {
214 ///
215 /// Individual bit fields
216 ///
217 struct {
218 ///
219 /// [Bits 3:0] Package C-State Limit (R/W) Specifies the lowest
220 /// processor-specific C-state code name (consuming the least power). for
221 /// the package. The default is set as factory-configured package C-state
222 /// limit. The following C-state code name encodings are supported: 0000b:
223 /// No limit 0001b: C1 0010b: C3 0011b: C6 0100b: C7 0101b: C7S 0110b: C8
224 /// 0111b: C9 1000b: C10.
225 ///
226 UINT32 Limit:4;
227 UINT32 Reserved1:6;
228 ///
229 /// [Bit 10] I/O MWAIT Redirection Enable (R/W) When set, will map
230 /// IO_read instructions sent to IO register specified by
231 /// MSR_PMG_IO_CAPTURE_BASE to MWAIT instructions.
232 ///
233 UINT32 IO_MWAIT:1;
234 UINT32 Reserved2:4;
235 ///
236 /// [Bit 15] CFG Lock (R/WO) When set, lock bits 15:0 of this register
237 /// until next reset.
238 ///
239 UINT32 CFGLock:1;
240 UINT32 Reserved3:16;
241 UINT32 Reserved4:32;
242 } Bits;
243 ///
244 /// All bit fields as a 32-bit value
245 ///
246 UINT32 Uint32;
247 ///
248 /// All bit fields as a 64-bit value
249 ///
250 UINT64 Uint64;
251 } MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER;
252
253
254 /**
255 Core. Enhanced SMM Capabilities (SMM-RO) Reports SMM capability Enhancement.
256 Accessible only while in SMM.
257
258 @param ECX MSR_GOLDMONT_SMM_MCA_CAP (0x0000017D)
259 @param EAX Lower 32-bits of MSR value.
260 Described by the type MSR_GOLDMONT_SMM_MCA_CAP_REGISTER.
261 @param EDX Upper 32-bits of MSR value.
262 Described by the type MSR_GOLDMONT_SMM_MCA_CAP_REGISTER.
263
264 <b>Example usage</b>
265 @code
266 MSR_GOLDMONT_SMM_MCA_CAP_REGISTER Msr;
267
268 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_MCA_CAP);
269 AsmWriteMsr64 (MSR_GOLDMONT_SMM_MCA_CAP, Msr.Uint64);
270 @endcode
271 @note MSR_GOLDMONT_SMM_MCA_CAP is defined as MSR_SMM_MCA_CAP in SDM.
272 **/
273 #define MSR_GOLDMONT_SMM_MCA_CAP 0x0000017D
274
275 /**
276 MSR information returned for MSR index #MSR_GOLDMONT_SMM_MCA_CAP
277 **/
278 typedef union {
279 ///
280 /// Individual bit fields
281 ///
282 struct {
283 UINT32 Reserved1:32;
284 UINT32 Reserved2:26;
285 ///
286 /// [Bit 58] SMM_Code_Access_Chk (SMM-RO) If set to 1 indicates that the
287 /// SMM code access restriction is supported and the
288 /// MSR_SMM_FEATURE_CONTROL is supported.
289 ///
290 UINT32 SMM_Code_Access_Chk:1;
291 ///
292 /// [Bit 59] Long_Flow_Indication (SMM-RO) If set to 1 indicates that the
293 /// SMM long flow indicator is supported and the MSR_SMM_DELAYED is
294 /// supported.
295 ///
296 UINT32 Long_Flow_Indication:1;
297 UINT32 Reserved3:4;
298 } Bits;
299 ///
300 /// All bit fields as a 64-bit value
301 ///
302 UINT64 Uint64;
303 } MSR_GOLDMONT_SMM_MCA_CAP_REGISTER;
304
305
306 /**
307 Enable Misc. Processor Features (R/W) Allows a variety of processor
308 functions to be enabled and disabled.
309
310 @param ECX MSR_GOLDMONT_IA32_MISC_ENABLE (0x000001A0)
311 @param EAX Lower 32-bits of MSR value.
312 Described by the type MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER.
313 @param EDX Upper 32-bits of MSR value.
314 Described by the type MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER.
315
316 <b>Example usage</b>
317 @code
318 MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER Msr;
319
320 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_MISC_ENABLE);
321 AsmWriteMsr64 (MSR_GOLDMONT_IA32_MISC_ENABLE, Msr.Uint64);
322 @endcode
323 @note MSR_GOLDMONT_IA32_MISC_ENABLE is defined as IA32_MISC_ENABLE in SDM.
324 **/
325 #define MSR_GOLDMONT_IA32_MISC_ENABLE 0x000001A0
326
327 /**
328 MSR information returned for MSR index #MSR_GOLDMONT_IA32_MISC_ENABLE
329 **/
330 typedef union {
331 ///
332 /// Individual bit fields
333 ///
334 struct {
335 ///
336 /// [Bit 0] Core. Fast-Strings Enable See Table 35-2.
337 ///
338 UINT32 FastStrings:1;
339 UINT32 Reserved1:2;
340 ///
341 /// [Bit 3] Package. Automatic Thermal Control Circuit Enable (R/W) See
342 /// Table 35-2. Default value is 1.
343 ///
344 UINT32 AutomaticThermalControlCircuit:1;
345 UINT32 Reserved2:3;
346 ///
347 /// [Bit 7] Core. Performance Monitoring Available (R) See Table 35-2.
348 ///
349 UINT32 PerformanceMonitoring:1;
350 UINT32 Reserved3:3;
351 ///
352 /// [Bit 11] Core. Branch Trace Storage Unavailable (RO) See Table 35-2.
353 ///
354 UINT32 BTS:1;
355 ///
356 /// [Bit 12] Core. Processor Event Based Sampling Unavailable (RO) See
357 /// Table 35-2.
358 ///
359 UINT32 PEBS:1;
360 UINT32 Reserved4:3;
361 ///
362 /// [Bit 16] Package. Enhanced Intel SpeedStep Technology Enable (R/W) See
363 /// Table 35-2.
364 ///
365 UINT32 EIST:1;
366 UINT32 Reserved5:1;
367 ///
368 /// [Bit 18] Core. ENABLE MONITOR FSM (R/W) See Table 35-2.
369 ///
370 UINT32 MONITOR:1;
371 UINT32 Reserved6:3;
372 ///
373 /// [Bit 22] Core. Limit CPUID Maxval (R/W) See Table 35-2.
374 ///
375 UINT32 LimitCpuidMaxval:1;
376 ///
377 /// [Bit 23] Package. xTPR Message Disable (R/W) See Table 35-2.
378 ///
379 UINT32 xTPR_Message_Disable:1;
380 UINT32 Reserved7:8;
381 UINT32 Reserved8:2;
382 ///
383 /// [Bit 34] Core. XD Bit Disable (R/W) See Table 35-2.
384 ///
385 UINT32 XD:1;
386 UINT32 Reserved9:3;
387 ///
388 /// [Bit 38] Package. Turbo Mode Disable (R/W) When set to 1 on processors
389 /// that support Intel Turbo Boost Technology, the turbo mode feature is
390 /// disabled and the IDA_Enable feature flag will be clear (CPUID.06H:
391 /// EAX[1]=0). When set to a 0 on processors that support IDA, CPUID.06H:
392 /// EAX[1] reports the processor's support of turbo mode is enabled. Note:
393 /// the power-on default value is used by BIOS to detect hardware support
394 /// of turbo mode. If power-on default value is 1, turbo mode is available
395 /// in the processor. If power-on default value is 0, turbo mode is not
396 /// available.
397 ///
398 UINT32 TurboModeDisable:1;
399 UINT32 Reserved10:25;
400 } Bits;
401 ///
402 /// All bit fields as a 64-bit value
403 ///
404 UINT64 Uint64;
405 } MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER;
406
407
408 /**
409 Miscellaneous Feature Control (R/W).
410
411 @param ECX MSR_GOLDMONT_MISC_FEATURE_CONTROL (0x000001A4)
412 @param EAX Lower 32-bits of MSR value.
413 Described by the type MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER.
414 @param EDX Upper 32-bits of MSR value.
415 Described by the type MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER.
416
417 <b>Example usage</b>
418 @code
419 MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER Msr;
420
421 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_MISC_FEATURE_CONTROL);
422 AsmWriteMsr64 (MSR_GOLDMONT_MISC_FEATURE_CONTROL, Msr.Uint64);
423 @endcode
424 @note MSR_GOLDMONT_MISC_FEATURE_CONTROL is defined as MSR_MISC_FEATURE_CONTROL in SDM.
425 **/
426 #define MSR_GOLDMONT_MISC_FEATURE_CONTROL 0x000001A4
427
428 /**
429 MSR information returned for MSR index #MSR_GOLDMONT_MISC_FEATURE_CONTROL
430 **/
431 typedef union {
432 ///
433 /// Individual bit fields
434 ///
435 struct {
436 ///
437 /// [Bit 0] Core. L2 Hardware Prefetcher Disable (R/W) If 1, disables the
438 /// L2 hardware prefetcher, which fetches additional lines of code or data
439 /// into the L2 cache.
440 ///
441 UINT32 L2HardwarePrefetcherDisable:1;
442 UINT32 Reserved1:1;
443 ///
444 /// [Bit 2] Core. DCU Hardware Prefetcher Disable (R/W) If 1, disables
445 /// the L1 data cache prefetcher, which fetches the next cache line into
446 /// L1 data cache.
447 ///
448 UINT32 DCUHardwarePrefetcherDisable:1;
449 UINT32 Reserved2:29;
450 UINT32 Reserved3:32;
451 } Bits;
452 ///
453 /// All bit fields as a 32-bit value
454 ///
455 UINT32 Uint32;
456 ///
457 /// All bit fields as a 64-bit value
458 ///
459 UINT64 Uint64;
460 } MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER;
461
462
463 /**
464 Package. See http://biosbits.org.
465
466 @param ECX MSR_GOLDMONT_MISC_PWR_MGMT (0x000001AA)
467 @param EAX Lower 32-bits of MSR value.
468 Described by the type MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER.
469 @param EDX Upper 32-bits of MSR value.
470 Described by the type MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER.
471
472 <b>Example usage</b>
473 @code
474 MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER Msr;
475
476 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_MISC_PWR_MGMT);
477 AsmWriteMsr64 (MSR_GOLDMONT_MISC_PWR_MGMT, Msr.Uint64);
478 @endcode
479 @note MSR_GOLDMONT_MISC_PWR_MGMT is defined as MSR_MISC_PWR_MGMT in SDM.
480 **/
481 #define MSR_GOLDMONT_MISC_PWR_MGMT 0x000001AA
482
483 /**
484 MSR information returned for MSR index #MSR_GOLDMONT_MISC_PWR_MGMT
485 **/
486 typedef union {
487 ///
488 /// Individual bit fields
489 ///
490 struct {
491 ///
492 /// [Bit 0] EIST Hardware Coordination Disable (R/W) When 0, enables
493 /// hardware coordination of Enhanced Intel Speedstep Technology request
494 /// from processor cores; When 1, disables hardware coordination of
495 /// Enhanced Intel Speedstep Technology requests.
496 ///
497 UINT32 EISTHardwareCoordinationDisable:1;
498 UINT32 Reserved1:21;
499 ///
500 /// [Bit 22] Thermal Interrupt Coordination Enable (R/W) If set, then
501 /// thermal interrupt on one core is routed to all cores.
502 ///
503 UINT32 ThermalInterruptCoordinationEnable:1;
504 UINT32 Reserved2:9;
505 UINT32 Reserved3:32;
506 } Bits;
507 ///
508 /// All bit fields as a 32-bit value
509 ///
510 UINT32 Uint32;
511 ///
512 /// All bit fields as a 64-bit value
513 ///
514 UINT64 Uint64;
515 } MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER;
516
517
518 /**
519 Package. Maximum Ratio Limit of Turbo Mode by Core Groups (RW) Specifies
520 Maximum Ratio Limit for each Core Group. Max ratio for groups with more
521 cores must decrease monotonically. For groups with less than 4 cores, the
522 max ratio must be 32 or less. For groups with 4-5 cores, the max ratio must
523 be 22 or less. For groups with more than 5 cores, the max ratio must be 16
524 or less..
525
526 @param ECX MSR_GOLDMONT_TURBO_RATIO_LIMIT (0x000001AD)
527 @param EAX Lower 32-bits of MSR value.
528 Described by the type MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER.
529 @param EDX Upper 32-bits of MSR value.
530 Described by the type MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER.
531
532 <b>Example usage</b>
533 @code
534 MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER Msr;
535
536 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_TURBO_RATIO_LIMIT);
537 AsmWriteMsr64 (MSR_GOLDMONT_TURBO_RATIO_LIMIT, Msr.Uint64);
538 @endcode
539 @note MSR_GOLDMONT_TURBO_RATIO_LIMIT is defined as MSR_TURBO_RATIO_LIMIT in SDM.
540 **/
541 #define MSR_GOLDMONT_TURBO_RATIO_LIMIT 0x000001AD
542
543 /**
544 MSR information returned for MSR index #MSR_GOLDMONT_TURBO_RATIO_LIMIT
545 **/
546 typedef union {
547 ///
548 /// Individual bit fields
549 ///
550 struct {
551 ///
552 /// [Bits 7:0] Package. Maximum Ratio Limit for Active cores in Group 0
553 /// Maximum turbo ratio limit when number of active cores is less or equal
554 /// to Group 0 threshold.
555 ///
556 UINT32 MaxRatioLimitGroup0:8;
557 ///
558 /// [Bits 15:8] Package. Maximum Ratio Limit for Active cores in Group 1
559 /// Maximum turbo ratio limit when number of active cores is less or equal
560 /// to Group 1 threshold and greater than Group 0 threshold.
561 ///
562 UINT32 MaxRatioLimitGroup1:8;
563 ///
564 /// [Bits 23:16] Package. Maximum Ratio Limit for Active cores in Group 2
565 /// Maximum turbo ratio limit when number of active cores is less or equal
566 /// to Group 2 threshold and greater than Group 1 threshold.
567 ///
568 UINT32 MaxRatioLimitGroup2:8;
569 ///
570 /// [Bits 31:24] Package. Maximum Ratio Limit for Active cores in Group 3
571 /// Maximum turbo ratio limit when number of active cores is less or equal
572 /// to Group 3 threshold and greater than Group 2 threshold.
573 ///
574 UINT32 MaxRatioLimitGroup3:8;
575 ///
576 /// [Bits 39:32] Package. Maximum Ratio Limit for Active cores in Group 4
577 /// Maximum turbo ratio limit when number of active cores is less or equal
578 /// to Group 4 threshold and greater than Group 3 threshold.
579 ///
580 UINT32 MaxRatioLimitGroup4:8;
581 ///
582 /// [Bits 47:40] Package. Maximum Ratio Limit for Active cores in Group 5
583 /// Maximum turbo ratio limit when number of active cores is less or equal
584 /// to Group 5 threshold and greater than Group 4 threshold.
585 ///
586 UINT32 MaxRatioLimitGroup5:8;
587 ///
588 /// [Bits 55:48] Package. Maximum Ratio Limit for Active cores in Group 6
589 /// Maximum turbo ratio limit when number of active cores is less or equal
590 /// to Group 6 threshold and greater than Group 5 threshold.
591 ///
592 UINT32 MaxRatioLimitGroup6:8;
593 ///
594 /// [Bits 63:56] Package. Maximum Ratio Limit for Active cores in Group 7
595 /// Maximum turbo ratio limit when number of active cores is less or equal
596 /// to Group 7 threshold and greater than Group 6 threshold.
597 ///
598 UINT32 MaxRatioLimitGroup7:8;
599 } Bits;
600 ///
601 /// All bit fields as a 64-bit value
602 ///
603 UINT64 Uint64;
604 } MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER;
605
606
607 /**
608 Package. Group Size of Active Cores for Turbo Mode Operation (RW) Writes of
609 0 threshold is ignored.
610
611 @param ECX MSR_GOLDMONT_TURBO_GROUP_CORECNT (0x000001AE)
612 @param EAX Lower 32-bits of MSR value.
613 Described by the type MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER.
614 @param EDX Upper 32-bits of MSR value.
615 Described by the type MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER.
616
617 <b>Example usage</b>
618 @code
619 MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER Msr;
620
621 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_TURBO_GROUP_CORECNT);
622 AsmWriteMsr64 (MSR_GOLDMONT_TURBO_GROUP_CORECNT, Msr.Uint64);
623 @endcode
624 @note MSR_GOLDMONT_TURBO_GROUP_CORECNT is defined as MSR_TURBO_GROUP_CORECNT in SDM.
625 **/
626 #define MSR_GOLDMONT_TURBO_GROUP_CORECNT 0x000001AE
627
628 /**
629 MSR information returned for MSR index #MSR_GOLDMONT_TURBO_GROUP_CORECNT
630 **/
631 typedef union {
632 ///
633 /// Individual bit fields
634 ///
635 struct {
636 ///
637 /// [Bits 7:0] Package. Group 0 Core Count Threshold Maximum number of
638 /// active cores to operate under Group 0 Max Turbo Ratio limit.
639 ///
640 UINT32 CoreCountThresholdGroup0:8;
641 ///
642 /// [Bits 15:8] Package. Group 1 Core Count Threshold Maximum number of
643 /// active cores to operate under Group 1 Max Turbo Ratio limit. Must be
644 /// greater than Group 0 Core Count.
645 ///
646 UINT32 CoreCountThresholdGroup1:8;
647 ///
648 /// [Bits 23:16] Package. Group 2 Core Count Threshold Maximum number of
649 /// active cores to operate under Group 2 Max Turbo Ratio limit. Must be
650 /// greater than Group 1 Core Count.
651 ///
652 UINT32 CoreCountThresholdGroup2:8;
653 ///
654 /// [Bits 31:24] Package. Group 3 Core Count Threshold Maximum number of
655 /// active cores to operate under Group 3 Max Turbo Ratio limit. Must be
656 /// greater than Group 2 Core Count.
657 ///
658 UINT32 CoreCountThresholdGroup3:8;
659 ///
660 /// [Bits 39:32] Package. Group 4 Core Count Threshold Maximum number of
661 /// active cores to operate under Group 4 Max Turbo Ratio limit. Must be
662 /// greater than Group 3 Core Count.
663 ///
664 UINT32 CoreCountThresholdGroup4:8;
665 ///
666 /// [Bits 47:40] Package. Group 5 Core Count Threshold Maximum number of
667 /// active cores to operate under Group 5 Max Turbo Ratio limit. Must be
668 /// greater than Group 4 Core Count.
669 ///
670 UINT32 CoreCountThresholdGroup5:8;
671 ///
672 /// [Bits 55:48] Package. Group 6 Core Count Threshold Maximum number of
673 /// active cores to operate under Group 6 Max Turbo Ratio limit. Must be
674 /// greater than Group 5 Core Count.
675 ///
676 UINT32 CoreCountThresholdGroup6:8;
677 ///
678 /// [Bits 63:56] Package. Group 7 Core Count Threshold Maximum number of
679 /// active cores to operate under Group 7 Max Turbo Ratio limit. Must be
680 /// greater than Group 6 Core Count and not less than the total number of
681 /// processor cores in the package. E.g. specify 255.
682 ///
683 UINT32 CoreCountThresholdGroup7:8;
684 } Bits;
685 ///
686 /// All bit fields as a 64-bit value
687 ///
688 UINT64 Uint64;
689 } MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER;
690
691
692 /**
693 Core. Last Branch Record Filtering Select Register (R/W) See Section
694 17.7.2, "Filtering of Last Branch Records.".
695
696 @param ECX MSR_GOLDMONT_LBR_SELECT (0x000001C8)
697 @param EAX Lower 32-bits of MSR value.
698 Described by the type MSR_GOLDMONT_LBR_SELECT_REGISTER.
699 @param EDX Upper 32-bits of MSR value.
700 Described by the type MSR_GOLDMONT_LBR_SELECT_REGISTER.
701
702 <b>Example usage</b>
703 @code
704 MSR_GOLDMONT_LBR_SELECT_REGISTER Msr;
705
706 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_LBR_SELECT);
707 AsmWriteMsr64 (MSR_GOLDMONT_LBR_SELECT, Msr.Uint64);
708 @endcode
709 @note MSR_GOLDMONT_LBR_SELECT is defined as MSR_LBR_SELECT in SDM.
710 **/
711 #define MSR_GOLDMONT_LBR_SELECT 0x000001C8
712
713 /**
714 MSR information returned for MSR index #MSR_GOLDMONT_LBR_SELECT
715 **/
716 typedef union {
717 ///
718 /// Individual bit fields
719 ///
720 struct {
721 ///
722 /// [Bit 0] CPL_EQ_0.
723 ///
724 UINT32 CPL_EQ_0:1;
725 ///
726 /// [Bit 1] CPL_NEQ_0.
727 ///
728 UINT32 CPL_NEQ_0:1;
729 ///
730 /// [Bit 2] JCC.
731 ///
732 UINT32 JCC:1;
733 ///
734 /// [Bit 3] NEAR_REL_CALL.
735 ///
736 UINT32 NEAR_REL_CALL:1;
737 ///
738 /// [Bit 4] NEAR_IND_CALL.
739 ///
740 UINT32 NEAR_IND_CALL:1;
741 ///
742 /// [Bit 5] NEAR_RET.
743 ///
744 UINT32 NEAR_RET:1;
745 ///
746 /// [Bit 6] NEAR_IND_JMP.
747 ///
748 UINT32 NEAR_IND_JMP:1;
749 ///
750 /// [Bit 7] NEAR_REL_JMP.
751 ///
752 UINT32 NEAR_REL_JMP:1;
753 ///
754 /// [Bit 8] FAR_BRANCH.
755 ///
756 UINT32 FAR_BRANCH:1;
757 ///
758 /// [Bit 9] EN_CALL_STACK.
759 ///
760 UINT32 EN_CALL_STACK:1;
761 UINT32 Reserved1:22;
762 UINT32 Reserved2:32;
763 } Bits;
764 ///
765 /// All bit fields as a 32-bit value
766 ///
767 UINT32 Uint32;
768 ///
769 /// All bit fields as a 64-bit value
770 ///
771 UINT64 Uint64;
772 } MSR_GOLDMONT_LBR_SELECT_REGISTER;
773
774
775 /**
776 Core. Last Branch Record Stack TOS (R/W) Contains an index (bits 0-4) that
777 points to the MSR containing the most recent branch record. See
778 MSR_LASTBRANCH_0_FROM_IP.
779
780 @param ECX MSR_GOLDMONT_LASTBRANCH_TOS (0x000001C9)
781 @param EAX Lower 32-bits of MSR value.
782 @param EDX Upper 32-bits of MSR value.
783
784 <b>Example usage</b>
785 @code
786 UINT64 Msr;
787
788 Msr = AsmReadMsr64 (MSR_GOLDMONT_LASTBRANCH_TOS);
789 AsmWriteMsr64 (MSR_GOLDMONT_LASTBRANCH_TOS, Msr);
790 @endcode
791 @note MSR_GOLDMONT_LASTBRANCH_TOS is defined as MSR_LASTBRANCH_TOS in SDM.
792 **/
793 #define MSR_GOLDMONT_LASTBRANCH_TOS 0x000001C9
794
795
796 /**
797 Core. Power Control Register. See http://biosbits.org.
798
799 @param ECX MSR_GOLDMONT_POWER_CTL (0x000001FC)
800 @param EAX Lower 32-bits of MSR value.
801 Described by the type MSR_GOLDMONT_POWER_CTL_REGISTER.
802 @param EDX Upper 32-bits of MSR value.
803 Described by the type MSR_GOLDMONT_POWER_CTL_REGISTER.
804
805 <b>Example usage</b>
806 @code
807 MSR_GOLDMONT_POWER_CTL_REGISTER Msr;
808
809 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_POWER_CTL);
810 AsmWriteMsr64 (MSR_GOLDMONT_POWER_CTL, Msr.Uint64);
811 @endcode
812 @note MSR_GOLDMONT_POWER_CTL is defined as MSR_POWER_CTL in SDM.
813 **/
814 #define MSR_GOLDMONT_POWER_CTL 0x000001FC
815
816 /**
817 MSR information returned for MSR index #MSR_GOLDMONT_POWER_CTL
818 **/
819 typedef union {
820 ///
821 /// Individual bit fields
822 ///
823 struct {
824 UINT32 Reserved1:1;
825 ///
826 /// [Bit 1] Package. C1E Enable (R/W) When set to '1', will enable the
827 /// CPU to switch to the Minimum Enhanced Intel SpeedStep Technology
828 /// operating point when all execution cores enter MWAIT (C1).
829 ///
830 UINT32 C1EEnable:1;
831 UINT32 Reserved2:30;
832 UINT32 Reserved3:32;
833 } Bits;
834 ///
835 /// All bit fields as a 32-bit value
836 ///
837 UINT32 Uint32;
838 ///
839 /// All bit fields as a 64-bit value
840 ///
841 UINT64 Uint64;
842 } MSR_GOLDMONT_POWER_CTL_REGISTER;
843
844
845 /**
846 Package. Lower 64 Bit OwnerEpoch Component of SGX Key (RO). Low 64 bits of
847 an 128-bit external entropy value for key derivation of an enclave.
848
849 @param ECX MSR_GOLDMONT_SGXOWNER0 (0x00000300)
850 @param EAX Lower 32-bits of MSR value.
851 @param EDX Upper 32-bits of MSR value.
852
853 <b>Example usage</b>
854 @code
855 UINT64 Msr;
856
857 Msr = AsmReadMsr64 (MSR_GOLDMONT_SGXOWNER0);
858 @endcode
859 @note MSR_GOLDMONT_SGXOWNER0 is defined as MSR_SGXOWNER0 in SDM.
860 **/
861 #define MSR_GOLDMONT_SGXOWNER0 0x00000300
862
863
864 /**
865 Package. Upper 64 Bit OwnerEpoch Component of SGX Key (RO). Upper 64 bits of
866 an 128-bit external entropy value for key derivation of an enclave.
867
868 @param ECX MSR_GOLDMONT_SGXOWNER1 (0x00000301)
869 @param EAX Lower 32-bits of MSR value.
870 @param EDX Upper 32-bits of MSR value.
871
872 <b>Example usage</b>
873 @code
874 UINT64 Msr;
875
876 Msr = AsmReadMsr64 (MSR_GOLDMONT_SGXOWNER1);
877 @endcode
878 @note MSR_GOLDMONT_SGXOWNER1 is defined as MSR_SGXOWNER1 in SDM.
879 **/
880 #define MSR_GOLDMONT_SGXOWNER1 0x00000301
881
882
883 /**
884 Core. See Table 35-2. See Section 18.2.4, "Architectural Performance
885 Monitoring Version 4.".
886
887 @param ECX MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET (0x00000390)
888 @param EAX Lower 32-bits of MSR value.
889 Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER.
890 @param EDX Upper 32-bits of MSR value.
891 Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER.
892
893 <b>Example usage</b>
894 @code
895 MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER Msr;
896
897 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET);
898 AsmWriteMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET, Msr.Uint64);
899 @endcode
900 @note MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET is defined as IA32_PERF_GLOBAL_STATUS_RESET in SDM.
901 **/
902 #define MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET 0x00000390
903
904 /**
905 MSR information returned for MSR index
906 #MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET
907 **/
908 typedef union {
909 ///
910 /// Individual bit fields
911 ///
912 struct {
913 ///
914 /// [Bit 0] Set 1 to clear Ovf_PMC0.
915 ///
916 UINT32 Ovf_PMC0:1;
917 ///
918 /// [Bit 1] Set 1 to clear Ovf_PMC1.
919 ///
920 UINT32 Ovf_PMC1:1;
921 ///
922 /// [Bit 2] Set 1 to clear Ovf_PMC2.
923 ///
924 UINT32 Ovf_PMC2:1;
925 ///
926 /// [Bit 3] Set 1 to clear Ovf_PMC3.
927 ///
928 UINT32 Ovf_PMC3:1;
929 UINT32 Reserved1:28;
930 ///
931 /// [Bit 32] Set 1 to clear Ovf_FixedCtr0.
932 ///
933 UINT32 Ovf_FixedCtr0:1;
934 ///
935 /// [Bit 33] Set 1 to clear Ovf_FixedCtr1.
936 ///
937 UINT32 Ovf_FixedCtr1:1;
938 ///
939 /// [Bit 34] Set 1 to clear Ovf_FixedCtr2.
940 ///
941 UINT32 Ovf_FixedCtr2:1;
942 UINT32 Reserved2:20;
943 ///
944 /// [Bit 55] Set 1 to clear Trace_ToPA_PMI.
945 ///
946 UINT32 Trace_ToPA_PMI:1;
947 UINT32 Reserved3:2;
948 ///
949 /// [Bit 58] Set 1 to clear LBR_Frz.
950 ///
951 UINT32 LBR_Frz:1;
952 ///
953 /// [Bit 59] Set 1 to clear CTR_Frz.
954 ///
955 UINT32 CTR_Frz:1;
956 ///
957 /// [Bit 60] Set 1 to clear ASCI.
958 ///
959 UINT32 ASCI:1;
960 ///
961 /// [Bit 61] Set 1 to clear Ovf_Uncore.
962 ///
963 UINT32 Ovf_Uncore:1;
964 ///
965 /// [Bit 62] Set 1 to clear Ovf_BufDSSAVE.
966 ///
967 UINT32 Ovf_BufDSSAVE:1;
968 ///
969 /// [Bit 63] Set 1 to clear CondChgd.
970 ///
971 UINT32 CondChgd:1;
972 } Bits;
973 ///
974 /// All bit fields as a 64-bit value
975 ///
976 UINT64 Uint64;
977 } MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER;
978
979
980 /**
981 Core. See Table 35-2. See Section 18.2.4, "Architectural Performance
982 Monitoring Version 4.".
983
984 @param ECX MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET (0x00000391)
985 @param EAX Lower 32-bits of MSR value.
986 Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER.
987 @param EDX Upper 32-bits of MSR value.
988 Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER.
989
990 <b>Example usage</b>
991 @code
992 MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER Msr;
993
994 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET);
995 AsmWriteMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET, Msr.Uint64);
996 @endcode
997 @note MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET is defined as IA32_PERF_GLOBAL_STATUS_SET in SDM.
998 **/
999 #define MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET 0x00000391
1000
1001 /**
1002 MSR information returned for MSR index
1003 #MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET
1004 **/
1005 typedef union {
1006 ///
1007 /// Individual bit fields
1008 ///
1009 struct {
1010 ///
1011 /// [Bit 0] Set 1 to cause Ovf_PMC0 = 1.
1012 ///
1013 UINT32 Ovf_PMC0:1;
1014 ///
1015 /// [Bit 1] Set 1 to cause Ovf_PMC1 = 1.
1016 ///
1017 UINT32 Ovf_PMC1:1;
1018 ///
1019 /// [Bit 2] Set 1 to cause Ovf_PMC2 = 1.
1020 ///
1021 UINT32 Ovf_PMC2:1;
1022 ///
1023 /// [Bit 3] Set 1 to cause Ovf_PMC3 = 1.
1024 ///
1025 UINT32 Ovf_PMC3:1;
1026 UINT32 Reserved1:28;
1027 ///
1028 /// [Bit 32] Set 1 to cause Ovf_FixedCtr0 = 1.
1029 ///
1030 UINT32 Ovf_FixedCtr0:1;
1031 ///
1032 /// [Bit 33] Set 1 to cause Ovf_FixedCtr1 = 1.
1033 ///
1034 UINT32 Ovf_FixedCtr1:1;
1035 ///
1036 /// [Bit 34] Set 1 to cause Ovf_FixedCtr2 = 1.
1037 ///
1038 UINT32 Ovf_FixedCtr2:1;
1039 UINT32 Reserved2:20;
1040 ///
1041 /// [Bit 55] Set 1 to cause Trace_ToPA_PMI = 1.
1042 ///
1043 UINT32 Trace_ToPA_PMI:1;
1044 UINT32 Reserved3:2;
1045 ///
1046 /// [Bit 58] Set 1 to cause LBR_Frz = 1.
1047 ///
1048 UINT32 LBR_Frz:1;
1049 ///
1050 /// [Bit 59] Set 1 to cause CTR_Frz = 1.
1051 ///
1052 UINT32 CTR_Frz:1;
1053 ///
1054 /// [Bit 60] Set 1 to cause ASCI = 1.
1055 ///
1056 UINT32 ASCI:1;
1057 ///
1058 /// [Bit 61] Set 1 to cause Ovf_Uncore.
1059 ///
1060 UINT32 Ovf_Uncore:1;
1061 ///
1062 /// [Bit 62] Set 1 to cause Ovf_BufDSSAVE.
1063 ///
1064 UINT32 Ovf_BufDSSAVE:1;
1065 UINT32 Reserved4:1;
1066 } Bits;
1067 ///
1068 /// All bit fields as a 64-bit value
1069 ///
1070 UINT64 Uint64;
1071 } MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER;
1072
1073
1074 /**
1075 Core. See Table 35-2. See Section 18.4.4, "Processor Event Based Sampling
1076 (PEBS).".
1077
1078 @param ECX MSR_GOLDMONT_PEBS_ENABLE (0x000003F1)
1079 @param EAX Lower 32-bits of MSR value.
1080 Described by the type MSR_GOLDMONT_PEBS_ENABLE_REGISTER.
1081 @param EDX Upper 32-bits of MSR value.
1082 Described by the type MSR_GOLDMONT_PEBS_ENABLE_REGISTER.
1083
1084 <b>Example usage</b>
1085 @code
1086 MSR_GOLDMONT_PEBS_ENABLE_REGISTER Msr;
1087
1088 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PEBS_ENABLE);
1089 AsmWriteMsr64 (MSR_GOLDMONT_PEBS_ENABLE, Msr.Uint64);
1090 @endcode
1091 @note MSR_GOLDMONT_PEBS_ENABLE is defined as MSR_PEBS_ENABLE in SDM.
1092 **/
1093 #define MSR_GOLDMONT_PEBS_ENABLE 0x000003F1
1094
1095 /**
1096 MSR information returned for MSR index #MSR_GOLDMONT_PEBS_ENABLE
1097 **/
1098 typedef union {
1099 ///
1100 /// Individual bit fields
1101 ///
1102 struct {
1103 ///
1104 /// [Bit 0] Enable PEBS trigger and recording for the programmed event
1105 /// (precise or otherwise) on IA32_PMC0. (R/W).
1106 ///
1107 UINT32 Enable:1;
1108 UINT32 Reserved1:31;
1109 UINT32 Reserved2:32;
1110 } Bits;
1111 ///
1112 /// All bit fields as a 32-bit value
1113 ///
1114 UINT32 Uint32;
1115 ///
1116 /// All bit fields as a 64-bit value
1117 ///
1118 UINT64 Uint64;
1119 } MSR_GOLDMONT_PEBS_ENABLE_REGISTER;
1120
1121
1122 /**
1123 Package. Note: C-state values are processor specific C-state code names,
1124 unrelated to MWAIT extension C-state parameters or ACPI CStates. Package C3
1125 Residency Counter. (R/O) Value since last reset that this package is in
1126 processor-specific C3 states. Count at the same frequency as the TSC.
1127
1128 @param ECX MSR_GOLDMONT_PKG_C3_RESIDENCY (0x000003F8)
1129 @param EAX Lower 32-bits of MSR value.
1130 @param EDX Upper 32-bits of MSR value.
1131
1132 <b>Example usage</b>
1133 @code
1134 UINT64 Msr;
1135
1136 Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C3_RESIDENCY);
1137 AsmWriteMsr64 (MSR_GOLDMONT_PKG_C3_RESIDENCY, Msr);
1138 @endcode
1139 @note MSR_GOLDMONT_PKG_C3_RESIDENCY is defined as MSR_PKG_C3_RESIDENCY in SDM.
1140 **/
1141 #define MSR_GOLDMONT_PKG_C3_RESIDENCY 0x000003F8
1142
1143
1144 /**
1145 Package. Note: C-state values are processor specific C-state code names,
1146 unrelated to MWAIT extension C-state parameters or ACPI CStates. Package C6
1147 Residency Counter. (R/O) Value since last reset that this package is in
1148 processor-specific C6 states. Count at the same frequency as the TSC.
1149
1150 @param ECX MSR_GOLDMONT_PKG_C6_RESIDENCY (0x000003F9)
1151 @param EAX Lower 32-bits of MSR value.
1152 @param EDX Upper 32-bits of MSR value.
1153
1154 <b>Example usage</b>
1155 @code
1156 UINT64 Msr;
1157
1158 Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C6_RESIDENCY);
1159 AsmWriteMsr64 (MSR_GOLDMONT_PKG_C6_RESIDENCY, Msr);
1160 @endcode
1161 @note MSR_GOLDMONT_PKG_C6_RESIDENCY is defined as MSR_PKG_C6_RESIDENCY in SDM.
1162 **/
1163 #define MSR_GOLDMONT_PKG_C6_RESIDENCY 0x000003F9
1164
1165
1166 /**
1167 Core. Note: C-state values are processor specific C-state code names,
1168 unrelated to MWAIT extension C-state parameters or ACPI CStates. CORE C3
1169 Residency Counter. (R/O) Value since last reset that this core is in
1170 processor-specific C3 states. Count at the same frequency as the TSC.
1171
1172 @param ECX MSR_GOLDMONT_CORE_C3_RESIDENCY (0x000003FC)
1173 @param EAX Lower 32-bits of MSR value.
1174 @param EDX Upper 32-bits of MSR value.
1175
1176 <b>Example usage</b>
1177 @code
1178 UINT64 Msr;
1179
1180 Msr = AsmReadMsr64 (MSR_GOLDMONT_CORE_C3_RESIDENCY);
1181 AsmWriteMsr64 (MSR_GOLDMONT_CORE_C3_RESIDENCY, Msr);
1182 @endcode
1183 @note MSR_GOLDMONT_CORE_C3_RESIDENCY is defined as MSR_CORE_C3_RESIDENCY in SDM.
1184 **/
1185 #define MSR_GOLDMONT_CORE_C3_RESIDENCY 0x000003FC
1186
1187
1188 /**
1189 Package. Enhanced SMM Feature Control (SMM-RW) Reports SMM capability
1190 Enhancement. Accessible only while in SMM.
1191
1192 @param ECX MSR_GOLDMONT_SMM_FEATURE_CONTROL (0x000004E0)
1193 @param EAX Lower 32-bits of MSR value.
1194 Described by the type MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER.
1195 @param EDX Upper 32-bits of MSR value.
1196 Described by the type MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER.
1197
1198 <b>Example usage</b>
1199 @code
1200 MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER Msr;
1201
1202 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_FEATURE_CONTROL);
1203 AsmWriteMsr64 (MSR_GOLDMONT_SMM_FEATURE_CONTROL, Msr.Uint64);
1204 @endcode
1205 @note MSR_GOLDMONT_SMM_FEATURE_CONTROL is defined as MSR_SMM_FEATURE_CONTROL in SDM.
1206 **/
1207 #define MSR_GOLDMONT_SMM_FEATURE_CONTROL 0x000004E0
1208
1209 /**
1210 MSR information returned for MSR index #MSR_GOLDMONT_SMM_FEATURE_CONTROL
1211 **/
1212 typedef union {
1213 ///
1214 /// Individual bit fields
1215 ///
1216 struct {
1217 ///
1218 /// [Bit 0] Lock (SMM-RWO) When set to '1' locks this register from
1219 /// further changes.
1220 ///
1221 UINT32 Lock:1;
1222 UINT32 Reserved1:1;
1223 ///
1224 /// [Bit 2] SMM_Code_Chk_En (SMM-RW) This control bit is available only if
1225 /// MSR_SMM_MCA_CAP[58] == 1. When set to '0' (default) none of the
1226 /// logical processors are prevented from executing SMM code outside the
1227 /// ranges defined by the SMRR. When set to '1' any logical processor in
1228 /// the package that attempts to execute SMM code not within the ranges
1229 /// defined by the SMRR will assert an unrecoverable MCE.
1230 ///
1231 UINT32 SMM_Code_Chk_En:1;
1232 UINT32 Reserved2:29;
1233 UINT32 Reserved3:32;
1234 } Bits;
1235 ///
1236 /// All bit fields as a 32-bit value
1237 ///
1238 UINT32 Uint32;
1239 ///
1240 /// All bit fields as a 64-bit value
1241 ///
1242 UINT64 Uint64;
1243 } MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER;
1244
1245
1246 /**
1247 Package. SMM Delayed (SMM-RO) Reports the interruptible state of all logical
1248 processors in the package. Available only while in SMM and
1249 MSR_SMM_MCA_CAP[LONG_FLOW_INDICATION] == 1.
1250
1251 @param ECX MSR_GOLDMONT_SMM_DELAYED (0x000004E2)
1252 @param EAX Lower 32-bits of MSR value.
1253 Described by the type MSR_GOLDMONT_SMM_DELAYED_REGISTER.
1254 @param EDX Upper 32-bits of MSR value.
1255 Described by the type MSR_GOLDMONT_SMM_DELAYED_REGISTER.
1256
1257 <b>Example usage</b>
1258 @code
1259 MSR_GOLDMONT_SMM_DELAYED_REGISTER Msr;
1260
1261 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_DELAYED);
1262 AsmWriteMsr64 (MSR_GOLDMONT_SMM_DELAYED, Msr.Uint64);
1263 @endcode
1264 @note MSR_GOLDMONT_SMM_DELAYED is defined as MSR_SMM_DELAYED in SDM.
1265 **/
1266 #define MSR_GOLDMONT_SMM_DELAYED 0x000004E2
1267
1268
1269 /**
1270 Package. SMM Blocked (SMM-RO) Reports the blocked state of all logical
1271 processors in the package. Available only while in SMM.
1272
1273 @param ECX MSR_GOLDMONT_SMM_BLOCKED (0x000004E3)
1274 @param EAX Lower 32-bits of MSR value.
1275 Described by the type MSR_GOLDMONT_SMM_BLOCKED_REGISTER.
1276 @param EDX Upper 32-bits of MSR value.
1277 Described by the type MSR_GOLDMONT_SMM_BLOCKED_REGISTER.
1278
1279 <b>Example usage</b>
1280 @code
1281 MSR_GOLDMONT_SMM_BLOCKED_REGISTER Msr;
1282
1283 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_BLOCKED);
1284 AsmWriteMsr64 (MSR_GOLDMONT_SMM_BLOCKED, Msr.Uint64);
1285 @endcode
1286 @note MSR_GOLDMONT_SMM_BLOCKED is defined as MSR_SMM_BLOCKED in SDM.
1287 **/
1288 #define MSR_GOLDMONT_SMM_BLOCKED 0x000004E3
1289
1290
1291 /**
1292 Core. Trace Control Register (R/W).
1293
1294 @param ECX MSR_GOLDMONT_IA32_RTIT_CTL (0x00000570)
1295 @param EAX Lower 32-bits of MSR value.
1296 Described by the type MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER.
1297 @param EDX Upper 32-bits of MSR value.
1298 Described by the type MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER.
1299
1300 <b>Example usage</b>
1301 @code
1302 MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER Msr;
1303
1304 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_RTIT_CTL);
1305 AsmWriteMsr64 (MSR_GOLDMONT_IA32_RTIT_CTL, Msr.Uint64);
1306 @endcode
1307 @note MSR_GOLDMONT_IA32_RTIT_CTL is defined as IA32_RTIT_CTL in SDM.
1308 **/
1309 #define MSR_IA32_RTIT_CTL 0x00000570
1310
1311 /**
1312 MSR information returned for MSR index #MSR_IA32_RTIT_CTL
1313 **/
1314 typedef union {
1315 ///
1316 /// Individual bit fields
1317 ///
1318 struct {
1319 ///
1320 /// [Bit 0] TraceEn.
1321 ///
1322 UINT32 TraceEn:1;
1323 ///
1324 /// [Bit 1] CYCEn.
1325 ///
1326 UINT32 CYCEn:1;
1327 ///
1328 /// [Bit 2] OS.
1329 ///
1330 UINT32 OS:1;
1331 ///
1332 /// [Bit 3] User.
1333 ///
1334 UINT32 User:1;
1335 UINT32 Reserved1:3;
1336 ///
1337 /// [Bit 7] CR3 filter.
1338 ///
1339 UINT32 CR3:1;
1340 ///
1341 /// [Bit 8] ToPA. Writing 0 will #GP if also setting TraceEn.
1342 ///
1343 UINT32 ToPA:1;
1344 ///
1345 /// [Bit 9] MTCEn.
1346 ///
1347 UINT32 MTCEn:1;
1348 ///
1349 /// [Bit 10] TSCEn.
1350 ///
1351 UINT32 TSCEn:1;
1352 ///
1353 /// [Bit 11] DisRETC.
1354 ///
1355 UINT32 DisRETC:1;
1356 UINT32 Reserved2:1;
1357 ///
1358 /// [Bit 13] BranchEn.
1359 ///
1360 UINT32 BranchEn:1;
1361 ///
1362 /// [Bits 17:14] MTCFreq.
1363 ///
1364 UINT32 MTCFreq:4;
1365 UINT32 Reserved3:1;
1366 ///
1367 /// [Bits 22:19] CYCThresh.
1368 ///
1369 UINT32 CYCThresh:4;
1370 UINT32 Reserved4:1;
1371 ///
1372 /// [Bits 27:24] PSBFreq.
1373 ///
1374 UINT32 PSBFreq:4;
1375 UINT32 Reserved5:4;
1376 ///
1377 /// [Bits 35:32] ADDR0_CFG.
1378 ///
1379 UINT32 ADDR0_CFG:4;
1380 ///
1381 /// [Bits 39:36] ADDR1_CFG.
1382 ///
1383 UINT32 ADDR1_CFG:4;
1384 UINT32 Reserved6:24;
1385 } Bits;
1386 ///
1387 /// All bit fields as a 64-bit value
1388 ///
1389 UINT64 Uint64;
1390 } MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER;
1391
1392
1393 /**
1394 Package. Unit Multipliers used in RAPL Interfaces (R/O) See Section 14.9.1,
1395 "RAPL Interfaces.".
1396
1397 @param ECX MSR_GOLDMONT_RAPL_POWER_UNIT (0x00000606)
1398 @param EAX Lower 32-bits of MSR value.
1399 Described by the type MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER.
1400 @param EDX Upper 32-bits of MSR value.
1401 Described by the type MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER.
1402
1403 <b>Example usage</b>
1404 @code
1405 MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER Msr;
1406
1407 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_RAPL_POWER_UNIT);
1408 @endcode
1409 @note MSR_GOLDMONT_RAPL_POWER_UNIT is defined as MSR_RAPL_POWER_UNIT in SDM.
1410 **/
1411 #define MSR_GOLDMONT_RAPL_POWER_UNIT 0x00000606
1412
1413 /**
1414 MSR information returned for MSR index #MSR_GOLDMONT_RAPL_POWER_UNIT
1415 **/
1416 typedef union {
1417 ///
1418 /// Individual bit fields
1419 ///
1420 struct {
1421 ///
1422 /// [Bits 3:0] Power Units. Power related information (in Watts) is in
1423 /// unit of, 1W/2^PU; where PU is an unsigned integer represented by bits
1424 /// 3:0. Default value is 1000b, indicating power unit is in 3.9
1425 /// milliWatts increment.
1426 ///
1427 UINT32 PowerUnits:4;
1428 UINT32 Reserved1:4;
1429 ///
1430 /// [Bits 12:8] Energy Status Units. Energy related information (in
1431 /// Joules) is in unit of, 1Joule/ (2^ESU); where ESU is an unsigned
1432 /// integer represented by bits 12:8. Default value is 01110b, indicating
1433 /// energy unit is in 61 microJoules.
1434 ///
1435 UINT32 EnergyStatusUnits:5;
1436 UINT32 Reserved2:3;
1437 ///
1438 /// [Bits 19:16] Time Unit. Time related information (in seconds) is in
1439 /// unit of, 1S/2^TU; where TU is an unsigned integer represented by bits
1440 /// 19:16. Default value is 1010b, indicating power unit is in 0.977
1441 /// millisecond.
1442 ///
1443 UINT32 TimeUnit:4;
1444 UINT32 Reserved3:12;
1445 UINT32 Reserved4:32;
1446 } Bits;
1447 ///
1448 /// All bit fields as a 32-bit value
1449 ///
1450 UINT32 Uint32;
1451 ///
1452 /// All bit fields as a 64-bit value
1453 ///
1454 UINT64 Uint64;
1455 } MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER;
1456
1457
1458 /**
1459 Package. Package C3 Interrupt Response Limit (R/W) Note: C-state values are
1460 processor specific C-state code names, unrelated to MWAIT extension C-state
1461 parameters or ACPI CStates.
1462
1463 @param ECX MSR_GOLDMONT_PKGC3_IRTL (0x0000060A)
1464 @param EAX Lower 32-bits of MSR value.
1465 Described by the type MSR_GOLDMONT_PKGC3_IRTL_REGISTER.
1466 @param EDX Upper 32-bits of MSR value.
1467 Described by the type MSR_GOLDMONT_PKGC3_IRTL_REGISTER.
1468
1469 <b>Example usage</b>
1470 @code
1471 MSR_GOLDMONT_PKGC3_IRTL_REGISTER Msr;
1472
1473 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKGC3_IRTL);
1474 AsmWriteMsr64 (MSR_GOLDMONT_PKGC3_IRTL, Msr.Uint64);
1475 @endcode
1476 @note MSR_GOLDMONT_PKGC3_IRTL is defined as MSR_PKGC3_IRTL in SDM.
1477 **/
1478 #define MSR_GOLDMONT_PKGC3_IRTL 0x0000060A
1479
1480 /**
1481 MSR information returned for MSR index #MSR_GOLDMONT_PKGC3_IRTL
1482 **/
1483 typedef union {
1484 ///
1485 /// Individual bit fields
1486 ///
1487 struct {
1488 ///
1489 /// [Bits 9:0] Interrupt response time limit (R/W) Specifies the limit
1490 /// that should be used to decide if the package should be put into a
1491 /// package C3 state.
1492 ///
1493 UINT32 InterruptResponseTimeLimit:10;
1494 ///
1495 /// [Bits 12:10] Time Unit (R/W) Specifies the encoding value of time
1496 /// unit of the interrupt response time limit. See Table 35-18 for
1497 /// supported time unit encodings.
1498 ///
1499 UINT32 TimeUnit:3;
1500 UINT32 Reserved1:2;
1501 ///
1502 /// [Bit 15] Valid (R/W) Indicates whether the values in bits 12:0 are
1503 /// valid and can be used by the processor for package C-sate management.
1504 ///
1505 UINT32 Valid:1;
1506 UINT32 Reserved2:16;
1507 UINT32 Reserved3:32;
1508 } Bits;
1509 ///
1510 /// All bit fields as a 32-bit value
1511 ///
1512 UINT32 Uint32;
1513 ///
1514 /// All bit fields as a 64-bit value
1515 ///
1516 UINT64 Uint64;
1517 } MSR_GOLDMONT_PKGC3_IRTL_REGISTER;
1518
1519
1520 /**
1521 Package. Package C6/C7S Interrupt Response Limit 1 (R/W) This MSR defines
1522 the interrupt response time limit used by the processor to manage transition
1523 to package C6 or C7S state. Note: C-state values are processor specific
1524 C-state code names, unrelated to MWAIT extension C-state parameters or ACPI
1525 CStates.
1526
1527 @param ECX MSR_GOLDMONT_PKGC_IRTL1 (0x0000060B)
1528 @param EAX Lower 32-bits of MSR value.
1529 Described by the type MSR_GOLDMONT_PKGC_IRTL1_REGISTER.
1530 @param EDX Upper 32-bits of MSR value.
1531 Described by the type MSR_GOLDMONT_PKGC_IRTL1_REGISTER.
1532
1533 <b>Example usage</b>
1534 @code
1535 MSR_GOLDMONT_PKGC_IRTL1_REGISTER Msr;
1536
1537 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKGC_IRTL1);
1538 AsmWriteMsr64 (MSR_GOLDMONT_PKGC_IRTL1, Msr.Uint64);
1539 @endcode
1540 @note MSR_GOLDMONT_PKGC_IRTL1 is defined as MSR_PKGC_IRTL1 in SDM.
1541 **/
1542 #define MSR_GOLDMONT_PKGC_IRTL1 0x0000060B
1543
1544 /**
1545 MSR information returned for MSR index #MSR_GOLDMONT_PKGC_IRTL1
1546 **/
1547 typedef union {
1548 ///
1549 /// Individual bit fields
1550 ///
1551 struct {
1552 ///
1553 /// [Bits 9:0] Interrupt response time limit (R/W) Specifies the limit
1554 /// that should be used to decide if the package should be put into a
1555 /// package C6 or C7S state.
1556 ///
1557 UINT32 InterruptResponseTimeLimit:10;
1558 ///
1559 /// [Bits 12:10] Time Unit (R/W) Specifies the encoding value of time
1560 /// unit of the interrupt response time limit. See Table 35-18 for
1561 /// supported time unit encodings.
1562 ///
1563 UINT32 TimeUnit:3;
1564 UINT32 Reserved1:2;
1565 ///
1566 /// [Bit 15] Valid (R/W) Indicates whether the values in bits 12:0 are
1567 /// valid and can be used by the processor for package C-sate management.
1568 ///
1569 UINT32 Valid:1;
1570 UINT32 Reserved2:16;
1571 UINT32 Reserved3:32;
1572 } Bits;
1573 ///
1574 /// All bit fields as a 32-bit value
1575 ///
1576 UINT32 Uint32;
1577 ///
1578 /// All bit fields as a 64-bit value
1579 ///
1580 UINT64 Uint64;
1581 } MSR_GOLDMONT_PKGC_IRTL1_REGISTER;
1582
1583
1584 /**
1585 Package. Package C7 Interrupt Response Limit 2 (R/W) This MSR defines the
1586 interrupt response time limit used by the processor to manage transition to
1587 package C7 state. Note: C-state values are processor specific C-state code
1588 names, unrelated to MWAIT extension C-state parameters or ACPI CStates.
1589
1590 @param ECX MSR_GOLDMONT_PKGC_IRTL2 (0x0000060C)
1591 @param EAX Lower 32-bits of MSR value.
1592 Described by the type MSR_GOLDMONT_PKGC_IRTL2_REGISTER.
1593 @param EDX Upper 32-bits of MSR value.
1594 Described by the type MSR_GOLDMONT_PKGC_IRTL2_REGISTER.
1595
1596 <b>Example usage</b>
1597 @code
1598 MSR_GOLDMONT_PKGC_IRTL2_REGISTER Msr;
1599
1600 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKGC_IRTL2);
1601 AsmWriteMsr64 (MSR_GOLDMONT_PKGC_IRTL2, Msr.Uint64);
1602 @endcode
1603 @note MSR_GOLDMONT_PKGC_IRTL2 is defined as MSR_PKGC_IRTL2 in SDM.
1604 **/
1605 #define MSR_GOLDMONT_PKGC_IRTL2 0x0000060C
1606
1607 /**
1608 MSR information returned for MSR index #MSR_GOLDMONT_PKGC_IRTL2
1609 **/
1610 typedef union {
1611 ///
1612 /// Individual bit fields
1613 ///
1614 struct {
1615 ///
1616 /// [Bits 9:0] Interrupt response time limit (R/W) Specifies the limit
1617 /// that should be used to decide if the package should be put into a
1618 /// package C7 state.
1619 ///
1620 UINT32 InterruptResponseTimeLimit:10;
1621 ///
1622 /// [Bits 12:10] Time Unit (R/W) Specifies the encoding value of time
1623 /// unit of the interrupt response time limit. See Table 35-18 for
1624 /// supported time unit encodings.
1625 ///
1626 UINT32 TimeUnit:3;
1627 UINT32 Reserved1:2;
1628 ///
1629 /// [Bit 15] Valid (R/W) Indicates whether the values in bits 12:0 are
1630 /// valid and can be used by the processor for package C-sate management.
1631 ///
1632 UINT32 Valid:1;
1633 UINT32 Reserved2:16;
1634 UINT32 Reserved3:32;
1635 } Bits;
1636 ///
1637 /// All bit fields as a 32-bit value
1638 ///
1639 UINT32 Uint32;
1640 ///
1641 /// All bit fields as a 64-bit value
1642 ///
1643 UINT64 Uint64;
1644 } MSR_GOLDMONT_PKGC_IRTL2_REGISTER;
1645
1646
1647 /**
1648 Package. Note: C-state values are processor specific C-state code names,
1649 unrelated to MWAIT extension C-state parameters or ACPI CStates. Package C2
1650 Residency Counter. (R/O) Value since last reset that this package is in
1651 processor-specific C2 states. Count at the same frequency as the TSC.
1652
1653 @param ECX MSR_GOLDMONT_PKG_C2_RESIDENCY (0x0000060D)
1654 @param EAX Lower 32-bits of MSR value.
1655 @param EDX Upper 32-bits of MSR value.
1656
1657 <b>Example usage</b>
1658 @code
1659 UINT64 Msr;
1660
1661 Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C2_RESIDENCY);
1662 AsmWriteMsr64 (MSR_GOLDMONT_PKG_C2_RESIDENCY, Msr);
1663 @endcode
1664 @note MSR_GOLDMONT_PKG_C2_RESIDENCY is defined as MSR_PKG_C2_RESIDENCY in SDM.
1665 **/
1666 #define MSR_GOLDMONT_PKG_C2_RESIDENCY 0x0000060D
1667
1668
1669 /**
1670 Package. PKG RAPL Power Limit Control (R/W) See Section 14.9.3, "Package
1671 RAPL Domain.".
1672
1673 @param ECX MSR_GOLDMONT_PKG_POWER_LIMIT (0x00000610)
1674 @param EAX Lower 32-bits of MSR value.
1675 @param EDX Upper 32-bits of MSR value.
1676
1677 <b>Example usage</b>
1678 @code
1679 UINT64 Msr;
1680
1681 Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_POWER_LIMIT);
1682 AsmWriteMsr64 (MSR_GOLDMONT_PKG_POWER_LIMIT, Msr);
1683 @endcode
1684 @note MSR_GOLDMONT_PKG_POWER_LIMIT is defined as MSR_PKG_POWER_LIMIT in SDM.
1685 **/
1686 #define MSR_GOLDMONT_PKG_POWER_LIMIT 0x00000610
1687
1688
1689 /**
1690 Package. PKG Energy Status (R/O) See Section 14.9.3, "Package RAPL Domain.".
1691
1692 @param ECX MSR_GOLDMONT_PKG_ENERGY_STATUS (0x00000611)
1693 @param EAX Lower 32-bits of MSR value.
1694 @param EDX Upper 32-bits of MSR value.
1695
1696 <b>Example usage</b>
1697 @code
1698 UINT64 Msr;
1699
1700 Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_ENERGY_STATUS);
1701 @endcode
1702 @note MSR_GOLDMONT_PKG_ENERGY_STATUS is defined as MSR_PKG_ENERGY_STATUS in SDM.
1703 **/
1704 #define MSR_GOLDMONT_PKG_ENERGY_STATUS 0x00000611
1705
1706
1707 /**
1708 Package. PKG Perf Status (R/O) See Section 14.9.3, "Package RAPL Domain.".
1709
1710 @param ECX MSR_GOLDMONT_PKG_PERF_STATUS (0x00000613)
1711 @param EAX Lower 32-bits of MSR value.
1712 @param EDX Upper 32-bits of MSR value.
1713
1714 <b>Example usage</b>
1715 @code
1716 UINT64 Msr;
1717
1718 Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_PERF_STATUS);
1719 @endcode
1720 @note MSR_GOLDMONT_PKG_PERF_STATUS is defined as MSR_PKG_PERF_STATUS in SDM.
1721 **/
1722 #define MSR_GOLDMONT_PKG_PERF_STATUS 0x00000613
1723
1724
1725 /**
1726 Package. PKG RAPL Parameters (R/W).
1727
1728 @param ECX MSR_GOLDMONT_PKG_POWER_INFO (0x00000614)
1729 @param EAX Lower 32-bits of MSR value.
1730 Described by the type MSR_GOLDMONT_PKG_POWER_INFO_REGISTER.
1731 @param EDX Upper 32-bits of MSR value.
1732 Described by the type MSR_GOLDMONT_PKG_POWER_INFO_REGISTER.
1733
1734 <b>Example usage</b>
1735 @code
1736 MSR_GOLDMONT_PKG_POWER_INFO_REGISTER Msr;
1737
1738 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKG_POWER_INFO);
1739 AsmWriteMsr64 (MSR_GOLDMONT_PKG_POWER_INFO, Msr.Uint64);
1740 @endcode
1741 @note MSR_GOLDMONT_PKG_POWER_INFO is defined as MSR_PKG_POWER_INFO in SDM.
1742 **/
1743 #define MSR_GOLDMONT_PKG_POWER_INFO 0x00000614
1744
1745 /**
1746 MSR information returned for MSR index #MSR_GOLDMONT_PKG_POWER_INFO
1747 **/
1748 typedef union {
1749 ///
1750 /// Individual bit fields
1751 ///
1752 struct {
1753 ///
1754 /// [Bits 14:0] Thermal Spec Power (R/W) See Section 14.9.3, "Package
1755 /// RAPL Domain.".
1756 ///
1757 UINT32 ThermalSpecPower:15;
1758 UINT32 Reserved1:1;
1759 ///
1760 /// [Bits 30:16] Minimum Power (R/W) See Section 14.9.3, "Package RAPL
1761 /// Domain.".
1762 ///
1763 UINT32 MinimumPower:15;
1764 UINT32 Reserved2:1;
1765 ///
1766 /// [Bits 46:32] Maximum Power (R/W) See Section 14.9.3, "Package RAPL
1767 /// Domain.".
1768 ///
1769 UINT32 MaximumPower:15;
1770 UINT32 Reserved3:1;
1771 ///
1772 /// [Bits 54:48] Maximum Time Window (R/W) Specified by 2^Y * (1.0 +
1773 /// Z/4.0) * Time_Unit, where "Y" is the unsigned integer value
1774 /// represented. by bits 52:48, "Z" is an unsigned integer represented by
1775 /// bits 54:53. "Time_Unit" is specified by the "Time Units" field of
1776 /// MSR_RAPL_POWER_UNIT.
1777 ///
1778 UINT32 MaximumTimeWindow:7;
1779 UINT32 Reserved4:9;
1780 } Bits;
1781 ///
1782 /// All bit fields as a 64-bit value
1783 ///
1784 UINT64 Uint64;
1785 } MSR_GOLDMONT_PKG_POWER_INFO_REGISTER;
1786
1787
1788 /**
1789 Package. DRAM RAPL Power Limit Control (R/W) See Section 14.9.5, "DRAM RAPL
1790 Domain.".
1791
1792 @param ECX MSR_GOLDMONT_DRAM_POWER_LIMIT (0x00000618)
1793 @param EAX Lower 32-bits of MSR value.
1794 @param EDX Upper 32-bits of MSR value.
1795
1796 <b>Example usage</b>
1797 @code
1798 UINT64 Msr;
1799
1800 Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_POWER_LIMIT);
1801 AsmWriteMsr64 (MSR_GOLDMONT_DRAM_POWER_LIMIT, Msr);
1802 @endcode
1803 @note MSR_GOLDMONT_DRAM_POWER_LIMIT is defined as MSR_DRAM_POWER_LIMIT in SDM.
1804 **/
1805 #define MSR_GOLDMONT_DRAM_POWER_LIMIT 0x00000618
1806
1807
1808 /**
1809 Package. DRAM Energy Status (R/O) See Section 14.9.5, "DRAM RAPL Domain.".
1810
1811 @param ECX MSR_GOLDMONT_DRAM_ENERGY_STATUS (0x00000619)
1812 @param EAX Lower 32-bits of MSR value.
1813 @param EDX Upper 32-bits of MSR value.
1814
1815 <b>Example usage</b>
1816 @code
1817 UINT64 Msr;
1818
1819 Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_ENERGY_STATUS);
1820 @endcode
1821 @note MSR_GOLDMONT_DRAM_ENERGY_STATUS is defined as MSR_DRAM_ENERGY_STATUS in SDM.
1822 **/
1823 #define MSR_GOLDMONT_DRAM_ENERGY_STATUS 0x00000619
1824
1825
1826 /**
1827 Package. DRAM Performance Throttling Status (R/O) See Section 14.9.5, "DRAM
1828 RAPL Domain.".
1829
1830 @param ECX MSR_GOLDMONT_DRAM_PERF_STATUS (0x0000061B)
1831 @param EAX Lower 32-bits of MSR value.
1832 @param EDX Upper 32-bits of MSR value.
1833
1834 <b>Example usage</b>
1835 @code
1836 UINT64 Msr;
1837
1838 Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_PERF_STATUS);
1839 @endcode
1840 @note MSR_GOLDMONT_DRAM_PERF_STATUS is defined as MSR_DRAM_PERF_STATUS in SDM.
1841 **/
1842 #define MSR_GOLDMONT_DRAM_PERF_STATUS 0x0000061B
1843
1844
1845 /**
1846 Package. DRAM RAPL Parameters (R/W) See Section 14.9.5, "DRAM RAPL Domain.".
1847
1848 @param ECX MSR_GOLDMONT_DRAM_POWER_INFO (0x0000061C)
1849 @param EAX Lower 32-bits of MSR value.
1850 @param EDX Upper 32-bits of MSR value.
1851
1852 <b>Example usage</b>
1853 @code
1854 UINT64 Msr;
1855
1856 Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_POWER_INFO);
1857 AsmWriteMsr64 (MSR_GOLDMONT_DRAM_POWER_INFO, Msr);
1858 @endcode
1859 @note MSR_GOLDMONT_DRAM_POWER_INFO is defined as MSR_DRAM_POWER_INFO in SDM.
1860 **/
1861 #define MSR_GOLDMONT_DRAM_POWER_INFO 0x0000061C
1862
1863
1864 /**
1865 Package. Note: C-state values are processor specific C-state code names,.
1866 Package C10 Residency Counter. (R/O) Value since last reset that the entire
1867 SOC is in an S0i3 state. Count at the same frequency as the TSC.
1868
1869 @param ECX MSR_GOLDMONT_PKG_C10_RESIDENCY (0x00000632)
1870 @param EAX Lower 32-bits of MSR value.
1871 @param EDX Upper 32-bits of MSR value.
1872
1873 <b>Example usage</b>
1874 @code
1875 UINT64 Msr;
1876
1877 Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C10_RESIDENCY);
1878 AsmWriteMsr64 (MSR_GOLDMONT_PKG_C10_RESIDENCY, Msr);
1879 @endcode
1880 @note MSR_GOLDMONT_PKG_C10_RESIDENCY is defined as MSR_PKG_C10_RESIDENCY in SDM.
1881 **/
1882 #define MSR_GOLDMONT_PKG_C10_RESIDENCY 0x00000632
1883
1884
1885 /**
1886 Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
1887 Domains.".
1888
1889 @param ECX MSR_GOLDMONT_PP0_ENERGY_STATUS (0x00000639)
1890 @param EAX Lower 32-bits of MSR value.
1891 @param EDX Upper 32-bits of MSR value.
1892
1893 <b>Example usage</b>
1894 @code
1895 UINT64 Msr;
1896
1897 Msr = AsmReadMsr64 (MSR_GOLDMONT_PP0_ENERGY_STATUS);
1898 @endcode
1899 @note MSR_GOLDMONT_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.
1900 **/
1901 #define MSR_GOLDMONT_PP0_ENERGY_STATUS 0x00000639
1902
1903
1904 /**
1905 Package. PP1 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
1906 Domains.".
1907
1908 @param ECX MSR_GOLDMONT_PP1_ENERGY_STATUS (0x00000641)
1909 @param EAX Lower 32-bits of MSR value.
1910 @param EDX Upper 32-bits of MSR value.
1911
1912 <b>Example usage</b>
1913 @code
1914 UINT64 Msr;
1915
1916 Msr = AsmReadMsr64 (MSR_GOLDMONT_PP1_ENERGY_STATUS);
1917 @endcode
1918 @note MSR_GOLDMONT_PP1_ENERGY_STATUS is defined as MSR_PP1_ENERGY_STATUS in SDM.
1919 **/
1920 #define MSR_GOLDMONT_PP1_ENERGY_STATUS 0x00000641
1921
1922
1923 /**
1924 Package. ConfigTDP Control (R/W).
1925
1926 @param ECX MSR_GOLDMONT_TURBO_ACTIVATION_RATIO (0x0000064C)
1927 @param EAX Lower 32-bits of MSR value.
1928 Described by the type MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER.
1929 @param EDX Upper 32-bits of MSR value.
1930 Described by the type MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER.
1931
1932 <b>Example usage</b>
1933 @code
1934 MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER Msr;
1935
1936 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_TURBO_ACTIVATION_RATIO);
1937 AsmWriteMsr64 (MSR_GOLDMONT_TURBO_ACTIVATION_RATIO, Msr.Uint64);
1938 @endcode
1939 @note MSR_GOLDMONT_TURBO_ACTIVATION_RATIO is defined as MSR_TURBO_ACTIVATION_RATIO in SDM.
1940 **/
1941 #define MSR_GOLDMONT_TURBO_ACTIVATION_RATIO 0x0000064C
1942
1943 /**
1944 MSR information returned for MSR index #MSR_GOLDMONT_TURBO_ACTIVATION_RATIO
1945 **/
1946 typedef union {
1947 ///
1948 /// Individual bit fields
1949 ///
1950 struct {
1951 ///
1952 /// [Bits 7:0] MAX_NON_TURBO_RATIO (RW/L) System BIOS can program this
1953 /// field.
1954 ///
1955 UINT32 MAX_NON_TURBO_RATIO:8;
1956 UINT32 Reserved1:23;
1957 ///
1958 /// [Bit 31] TURBO_ACTIVATION_RATIO_Lock (RW/L) When this bit is set, the
1959 /// content of this register is locked until a reset.
1960 ///
1961 UINT32 TURBO_ACTIVATION_RATIO_Lock:1;
1962 UINT32 Reserved2:32;
1963 } Bits;
1964 ///
1965 /// All bit fields as a 32-bit value
1966 ///
1967 UINT32 Uint32;
1968 ///
1969 /// All bit fields as a 64-bit value
1970 ///
1971 UINT64 Uint64;
1972 } MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER;
1973
1974
1975 /**
1976 Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency
1977 refers to processor core frequency).
1978
1979 @param ECX MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS (0x0000064F)
1980 @param EAX Lower 32-bits of MSR value.
1981 Described by the type MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER.
1982 @param EDX Upper 32-bits of MSR value.
1983 Described by the type MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER.
1984
1985 <b>Example usage</b>
1986 @code
1987 MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER Msr;
1988
1989 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS);
1990 AsmWriteMsr64 (MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS, Msr.Uint64);
1991 @endcode
1992 @note MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS is defined as MSR_CORE_PERF_LIMIT_REASONS in SDM.
1993 **/
1994 #define MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS 0x0000064F
1995
1996 /**
1997 MSR information returned for MSR index #MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS
1998 **/
1999 typedef union {
2000 ///
2001 /// Individual bit fields
2002 ///
2003 struct {
2004 ///
2005 /// [Bit 0] PROCHOT Status (R0) When set, processor core frequency is
2006 /// reduced below the operating system request due to assertion of
2007 /// external PROCHOT.
2008 ///
2009 UINT32 PROCHOTStatus:1;
2010 ///
2011 /// [Bit 1] Thermal Status (R0) When set, frequency is reduced below the
2012 /// operating system request due to a thermal event.
2013 ///
2014 UINT32 ThermalStatus:1;
2015 ///
2016 /// [Bit 2] Package-Level Power Limiting PL1 Status (R0) When set,
2017 /// frequency is reduced below the operating system request due to
2018 /// package-level power limiting PL1.
2019 ///
2020 UINT32 PL1Status:1;
2021 ///
2022 /// [Bit 3] Package-Level PL2 Power Limiting Status (R0) When set,
2023 /// frequency is reduced below the operating system request due to
2024 /// package-level power limiting PL2.
2025 ///
2026 UINT32 PL2Status:1;
2027 UINT32 Reserved1:5;
2028 ///
2029 /// [Bit 9] Core Power Limiting Status (R0) When set, frequency is reduced
2030 /// below the operating system request due to domain-level power limiting.
2031 ///
2032 UINT32 PowerLimitingStatus:1;
2033 ///
2034 /// [Bit 10] VR Therm Alert Status (R0) When set, frequency is reduced
2035 /// below the operating system request due to a thermal alert from the
2036 /// Voltage Regulator.
2037 ///
2038 UINT32 VRThermAlertStatus:1;
2039 ///
2040 /// [Bit 11] Max Turbo Limit Status (R0) When set, frequency is reduced
2041 /// below the operating system request due to multi-core turbo limits.
2042 ///
2043 UINT32 MaxTurboLimitStatus:1;
2044 ///
2045 /// [Bit 12] Electrical Design Point Status (R0) When set, frequency is
2046 /// reduced below the operating system request due to electrical design
2047 /// point constraints (e.g. maximum electrical current consumption).
2048 ///
2049 UINT32 ElectricalDesignPointStatus:1;
2050 ///
2051 /// [Bit 13] Turbo Transition Attenuation Status (R0) When set, frequency
2052 /// is reduced below the operating system request due to Turbo transition
2053 /// attenuation. This prevents performance degradation due to frequent
2054 /// operating ratio changes.
2055 ///
2056 UINT32 TurboTransitionAttenuationStatus:1;
2057 ///
2058 /// [Bit 14] Maximum Efficiency Frequency Status (R0) When set, frequency
2059 /// is reduced below the maximum efficiency frequency.
2060 ///
2061 UINT32 MaximumEfficiencyFrequencyStatus:1;
2062 UINT32 Reserved2:1;
2063 ///
2064 /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit
2065 /// has asserted since the log bit was last cleared. This log bit will
2066 /// remain set until cleared by software writing 0.
2067 ///
2068 UINT32 PROCHOT:1;
2069 ///
2070 /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit
2071 /// has asserted since the log bit was last cleared. This log bit will
2072 /// remain set until cleared by software writing 0.
2073 ///
2074 UINT32 ThermalLog:1;
2075 ///
2076 /// [Bit 18] Package-Level PL1 Power Limiting Log When set, indicates
2077 /// that the Package Level PL1 Power Limiting Status bit has asserted
2078 /// since the log bit was last cleared. This log bit will remain set until
2079 /// cleared by software writing 0.
2080 ///
2081 UINT32 PL1Log:1;
2082 ///
2083 /// [Bit 19] Package-Level PL2 Power Limiting Log When set, indicates that
2084 /// the Package Level PL2 Power Limiting Status bit has asserted since the
2085 /// log bit was last cleared. This log bit will remain set until cleared
2086 /// by software writing 0.
2087 ///
2088 UINT32 PL2Log:1;
2089 UINT32 Reserved3:5;
2090 ///
2091 /// [Bit 25] Core Power Limiting Log When set, indicates that the Core
2092 /// Power Limiting Status bit has asserted since the log bit was last
2093 /// cleared. This log bit will remain set until cleared by software
2094 /// writing 0.
2095 ///
2096 UINT32 CorePowerLimitingLog:1;
2097 ///
2098 /// [Bit 26] VR Therm Alert Log When set, indicates that the VR Therm
2099 /// Alert Status bit has asserted since the log bit was last cleared. This
2100 /// log bit will remain set until cleared by software writing 0.
2101 ///
2102 UINT32 VRThermAlertLog:1;
2103 ///
2104 /// [Bit 27] Max Turbo Limit Log When set, indicates that the Max Turbo
2105 /// Limit Status bit has asserted since the log bit was last cleared. This
2106 /// log bit will remain set until cleared by software writing 0.
2107 ///
2108 UINT32 MaxTurboLimitLog:1;
2109 ///
2110 /// [Bit 28] Electrical Design Point Log When set, indicates that the EDP
2111 /// Status bit has asserted since the log bit was last cleared. This log
2112 /// bit will remain set until cleared by software writing 0.
2113 ///
2114 UINT32 ElectricalDesignPointLog:1;
2115 ///
2116 /// [Bit 29] Turbo Transition Attenuation Log When set, indicates that the
2117 /// Turbo Transition Attenuation Status bit has asserted since the log bit
2118 /// was last cleared. This log bit will remain set until cleared by
2119 /// software writing 0.
2120 ///
2121 UINT32 TurboTransitionAttenuationLog:1;
2122 ///
2123 /// [Bit 30] Maximum Efficiency Frequency Log When set, indicates that
2124 /// the Maximum Efficiency Frequency Status bit has asserted since the log
2125 /// bit was last cleared. This log bit will remain set until cleared by
2126 /// software writing 0.
2127 ///
2128 UINT32 MaximumEfficiencyFrequencyLog:1;
2129 UINT32 Reserved4:1;
2130 UINT32 Reserved5:32;
2131 } Bits;
2132 ///
2133 /// All bit fields as a 32-bit value
2134 ///
2135 UINT32 Uint32;
2136 ///
2137 /// All bit fields as a 64-bit value
2138 ///
2139 UINT64 Uint64;
2140 } MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER;
2141
2142
2143 /**
2144 Core. Last Branch Record n From IP (R/W) One of 32 pairs of last branch
2145 record registers on the last branch record stack. The From_IP part of the
2146 stack contains pointers to the source instruction . See also: - Last Branch
2147 Record Stack TOS at 1C9H - Section 17.6 and record format in Section
2148 17.4.8.1.
2149
2150 @param ECX MSR_GOLDMONT_LASTBRANCH_n_FROM_IP
2151 @param EAX Lower 32-bits of MSR value.
2152 Described by the type MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER.
2153 @param EDX Upper 32-bits of MSR value.
2154 Described by the type MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER.
2155
2156 <b>Example usage</b>
2157 @code
2158 MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER Msr;
2159
2160 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_LASTBRANCH_n_FROM_IP);
2161 AsmWriteMsr64 (MSR_GOLDMONT_LASTBRANCH_n_FROM_IP, Msr.Uint64);
2162 @endcode
2163 @note MSR_GOLDMONT_LASTBRANCH_0_FROM_IP is defined as MSR_LASTBRANCH_0_FROM_IP in SDM.
2164 MSR_GOLDMONT_LASTBRANCH_1_FROM_IP is defined as MSR_LASTBRANCH_1_FROM_IP in SDM.
2165 MSR_GOLDMONT_LASTBRANCH_2_FROM_IP is defined as MSR_LASTBRANCH_2_FROM_IP in SDM.
2166 MSR_GOLDMONT_LASTBRANCH_3_FROM_IP is defined as MSR_LASTBRANCH_3_FROM_IP in SDM.
2167 MSR_GOLDMONT_LASTBRANCH_4_FROM_IP is defined as MSR_LASTBRANCH_4_FROM_IP in SDM.
2168 MSR_GOLDMONT_LASTBRANCH_5_FROM_IP is defined as MSR_LASTBRANCH_5_FROM_IP in SDM.
2169 MSR_GOLDMONT_LASTBRANCH_6_FROM_IP is defined as MSR_LASTBRANCH_6_FROM_IP in SDM.
2170 MSR_GOLDMONT_LASTBRANCH_7_FROM_IP is defined as MSR_LASTBRANCH_7_FROM_IP in SDM.
2171 MSR_GOLDMONT_LASTBRANCH_8_FROM_IP is defined as MSR_LASTBRANCH_8_FROM_IP in SDM.
2172 MSR_GOLDMONT_LASTBRANCH_9_FROM_IP is defined as MSR_LASTBRANCH_9_FROM_IP in SDM.
2173 MSR_GOLDMONT_LASTBRANCH_10_FROM_IP is defined as MSR_LASTBRANCH_10_FROM_IP in SDM.
2174 MSR_GOLDMONT_LASTBRANCH_11_FROM_IP is defined as MSR_LASTBRANCH_11_FROM_IP in SDM.
2175 MSR_GOLDMONT_LASTBRANCH_12_FROM_IP is defined as MSR_LASTBRANCH_12_FROM_IP in SDM.
2176 MSR_GOLDMONT_LASTBRANCH_13_FROM_IP is defined as MSR_LASTBRANCH_13_FROM_IP in SDM.
2177 MSR_GOLDMONT_LASTBRANCH_14_FROM_IP is defined as MSR_LASTBRANCH_14_FROM_IP in SDM.
2178 MSR_GOLDMONT_LASTBRANCH_15_FROM_IP is defined as MSR_LASTBRANCH_15_FROM_IP in SDM.
2179 MSR_GOLDMONT_LASTBRANCH_16_FROM_IP is defined as MSR_LASTBRANCH_16_FROM_IP in SDM.
2180 MSR_GOLDMONT_LASTBRANCH_17_FROM_IP is defined as MSR_LASTBRANCH_17_FROM_IP in SDM.
2181 MSR_GOLDMONT_LASTBRANCH_18_FROM_IP is defined as MSR_LASTBRANCH_18_FROM_IP in SDM.
2182 MSR_GOLDMONT_LASTBRANCH_19_FROM_IP is defined as MSR_LASTBRANCH_19_FROM_IP in SDM.
2183 MSR_GOLDMONT_LASTBRANCH_20_FROM_IP is defined as MSR_LASTBRANCH_20_FROM_IP in SDM.
2184 MSR_GOLDMONT_LASTBRANCH_21_FROM_IP is defined as MSR_LASTBRANCH_21_FROM_IP in SDM.
2185 MSR_GOLDMONT_LASTBRANCH_22_FROM_IP is defined as MSR_LASTBRANCH_22_FROM_IP in SDM.
2186 MSR_GOLDMONT_LASTBRANCH_23_FROM_IP is defined as MSR_LASTBRANCH_23_FROM_IP in SDM.
2187 MSR_GOLDMONT_LASTBRANCH_24_FROM_IP is defined as MSR_LASTBRANCH_24_FROM_IP in SDM.
2188 MSR_GOLDMONT_LASTBRANCH_25_FROM_IP is defined as MSR_LASTBRANCH_25_FROM_IP in SDM.
2189 MSR_GOLDMONT_LASTBRANCH_26_FROM_IP is defined as MSR_LASTBRANCH_26_FROM_IP in SDM.
2190 MSR_GOLDMONT_LASTBRANCH_27_FROM_IP is defined as MSR_LASTBRANCH_27_FROM_IP in SDM.
2191 MSR_GOLDMONT_LASTBRANCH_28_FROM_IP is defined as MSR_LASTBRANCH_28_FROM_IP in SDM.
2192 MSR_GOLDMONT_LASTBRANCH_29_FROM_IP is defined as MSR_LASTBRANCH_29_FROM_IP in SDM.
2193 MSR_GOLDMONT_LASTBRANCH_30_FROM_IP is defined as MSR_LASTBRANCH_30_FROM_IP in SDM.
2194 MSR_GOLDMONT_LASTBRANCH_31_FROM_IP is defined as MSR_LASTBRANCH_31_FROM_IP in SDM.
2195 @{
2196 **/
2197 #define MSR_GOLDMONT_LASTBRANCH_0_FROM_IP 0x00000680
2198 #define MSR_GOLDMONT_LASTBRANCH_1_FROM_IP 0x00000681
2199 #define MSR_GOLDMONT_LASTBRANCH_2_FROM_IP 0x00000682
2200 #define MSR_GOLDMONT_LASTBRANCH_3_FROM_IP 0x00000683
2201 #define MSR_GOLDMONT_LASTBRANCH_4_FROM_IP 0x00000684
2202 #define MSR_GOLDMONT_LASTBRANCH_5_FROM_IP 0x00000685
2203 #define MSR_GOLDMONT_LASTBRANCH_6_FROM_IP 0x00000686
2204 #define MSR_GOLDMONT_LASTBRANCH_7_FROM_IP 0x00000687
2205 #define MSR_GOLDMONT_LASTBRANCH_8_FROM_IP 0x00000688
2206 #define MSR_GOLDMONT_LASTBRANCH_9_FROM_IP 0x00000689
2207 #define MSR_GOLDMONT_LASTBRANCH_10_FROM_IP 0x0000068A
2208 #define MSR_GOLDMONT_LASTBRANCH_11_FROM_IP 0x0000068B
2209 #define MSR_GOLDMONT_LASTBRANCH_12_FROM_IP 0x0000068C
2210 #define MSR_GOLDMONT_LASTBRANCH_13_FROM_IP 0x0000068D
2211 #define MSR_GOLDMONT_LASTBRANCH_14_FROM_IP 0x0000068E
2212 #define MSR_GOLDMONT_LASTBRANCH_15_FROM_IP 0x0000068F
2213 #define MSR_GOLDMONT_LASTBRANCH_16_FROM_IP 0x00000690
2214 #define MSR_GOLDMONT_LASTBRANCH_17_FROM_IP 0x00000691
2215 #define MSR_GOLDMONT_LASTBRANCH_18_FROM_IP 0x00000692
2216 #define MSR_GOLDMONT_LASTBRANCH_19_FROM_IP 0x00000693
2217 #define MSR_GOLDMONT_LASTBRANCH_20_FROM_IP 0x00000694
2218 #define MSR_GOLDMONT_LASTBRANCH_21_FROM_IP 0x00000695
2219 #define MSR_GOLDMONT_LASTBRANCH_22_FROM_IP 0x00000696
2220 #define MSR_GOLDMONT_LASTBRANCH_23_FROM_IP 0x00000697
2221 #define MSR_GOLDMONT_LASTBRANCH_24_FROM_IP 0x00000698
2222 #define MSR_GOLDMONT_LASTBRANCH_25_FROM_IP 0x00000699
2223 #define MSR_GOLDMONT_LASTBRANCH_26_FROM_IP 0x0000069A
2224 #define MSR_GOLDMONT_LASTBRANCH_27_FROM_IP 0x0000069B
2225 #define MSR_GOLDMONT_LASTBRANCH_28_FROM_IP 0x0000069C
2226 #define MSR_GOLDMONT_LASTBRANCH_29_FROM_IP 0x0000069D
2227 #define MSR_GOLDMONT_LASTBRANCH_30_FROM_IP 0x0000069E
2228 #define MSR_GOLDMONT_LASTBRANCH_31_FROM_IP 0x0000069F
2229 /// @}
2230
2231 /**
2232 MSR information returned for MSR indexes #MSR_GOLDMONT_LASTBRANCH_0_FROM_IP
2233 to #MSR_GOLDMONT_LASTBRANCH_31_FROM_IP.
2234 **/
2235 typedef union {
2236 ///
2237 /// Individual bit fields
2238 ///
2239 struct {
2240 ///
2241 /// [Bit 31:0] From Linear Address (R/W).
2242 ///
2243 UINT32 FromLinearAddress:32;
2244 ///
2245 /// [Bit 47:32] From Linear Address (R/W).
2246 ///
2247 UINT32 FromLinearAddressHi:16;
2248 ///
2249 /// [Bits 62:48] Signed extension of bits 47:0.
2250 ///
2251 UINT32 SignedExtension:15;
2252 ///
2253 /// [Bit 63] Mispred.
2254 ///
2255 UINT32 Mispred:1;
2256 } Bits;
2257 ///
2258 /// All bit fields as a 32-bit value
2259 ///
2260 UINT32 Uint32;
2261 ///
2262 /// All bit fields as a 64-bit value
2263 ///
2264 UINT64 Uint64;
2265 } MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER;
2266
2267
2268 /**
2269 Core. Last Branch Record n To IP (R/W) One of 32 pairs of last branch record
2270 registers on the last branch record stack. The To_IP part of the stack
2271 contains pointers to the Destination instruction and elapsed cycles from
2272 last LBR update. See also: - Section 17.6.
2273
2274 @param ECX MSR_GOLDMONT_LASTBRANCH_n_TO_IP
2275 @param EAX Lower 32-bits of MSR value.
2276 Described by the type MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER.
2277 @param EDX Upper 32-bits of MSR value.
2278 Described by the type MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER.
2279
2280 <b>Example usage</b>
2281 @code
2282 MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER Msr;
2283
2284 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_LASTBRANCH_0_TO_IP);
2285 AsmWriteMsr64 (MSR_GOLDMONT_LASTBRANCH_0_TO_IP, Msr.Uint64);
2286 @endcode
2287 @note MSR_GOLDMONT_LASTBRANCH_0_TO_IP is defined as MSR_LASTBRANCH_0_TO_IP in SDM.
2288 MSR_GOLDMONT_LASTBRANCH_1_TO_IP is defined as MSR_LASTBRANCH_1_TO_IP in SDM.
2289 MSR_GOLDMONT_LASTBRANCH_2_TO_IP is defined as MSR_LASTBRANCH_2_TO_IP in SDM.
2290 MSR_GOLDMONT_LASTBRANCH_3_TO_IP is defined as MSR_LASTBRANCH_3_TO_IP in SDM.
2291 MSR_GOLDMONT_LASTBRANCH_4_TO_IP is defined as MSR_LASTBRANCH_4_TO_IP in SDM.
2292 MSR_GOLDMONT_LASTBRANCH_5_TO_IP is defined as MSR_LASTBRANCH_5_TO_IP in SDM.
2293 MSR_GOLDMONT_LASTBRANCH_6_TO_IP is defined as MSR_LASTBRANCH_6_TO_IP in SDM.
2294 MSR_GOLDMONT_LASTBRANCH_7_TO_IP is defined as MSR_LASTBRANCH_7_TO_IP in SDM.
2295 MSR_GOLDMONT_LASTBRANCH_8_TO_IP is defined as MSR_LASTBRANCH_8_TO_IP in SDM.
2296 MSR_GOLDMONT_LASTBRANCH_9_TO_IP is defined as MSR_LASTBRANCH_9_TO_IP in SDM.
2297 MSR_GOLDMONT_LASTBRANCH_10_TO_IP is defined as MSR_LASTBRANCH_10_TO_IP in SDM.
2298 MSR_GOLDMONT_LASTBRANCH_11_TO_IP is defined as MSR_LASTBRANCH_11_TO_IP in SDM.
2299 MSR_GOLDMONT_LASTBRANCH_12_TO_IP is defined as MSR_LASTBRANCH_12_TO_IP in SDM.
2300 MSR_GOLDMONT_LASTBRANCH_13_TO_IP is defined as MSR_LASTBRANCH_13_TO_IP in SDM.
2301 MSR_GOLDMONT_LASTBRANCH_14_TO_IP is defined as MSR_LASTBRANCH_14_TO_IP in SDM.
2302 MSR_GOLDMONT_LASTBRANCH_15_TO_IP is defined as MSR_LASTBRANCH_15_TO_IP in SDM.
2303 MSR_GOLDMONT_LASTBRANCH_16_TO_IP is defined as MSR_LASTBRANCH_16_TO_IP in SDM.
2304 MSR_GOLDMONT_LASTBRANCH_17_TO_IP is defined as MSR_LASTBRANCH_17_TO_IP in SDM.
2305 MSR_GOLDMONT_LASTBRANCH_18_TO_IP is defined as MSR_LASTBRANCH_18_TO_IP in SDM.
2306 MSR_GOLDMONT_LASTBRANCH_19_TO_IP is defined as MSR_LASTBRANCH_19_TO_IP in SDM.
2307 MSR_GOLDMONT_LASTBRANCH_20_TO_IP is defined as MSR_LASTBRANCH_20_TO_IP in SDM.
2308 MSR_GOLDMONT_LASTBRANCH_21_TO_IP is defined as MSR_LASTBRANCH_21_TO_IP in SDM.
2309 MSR_GOLDMONT_LASTBRANCH_22_TO_IP is defined as MSR_LASTBRANCH_22_TO_IP in SDM.
2310 MSR_GOLDMONT_LASTBRANCH_23_TO_IP is defined as MSR_LASTBRANCH_23_TO_IP in SDM.
2311 MSR_GOLDMONT_LASTBRANCH_24_TO_IP is defined as MSR_LASTBRANCH_24_TO_IP in SDM.
2312 MSR_GOLDMONT_LASTBRANCH_25_TO_IP is defined as MSR_LASTBRANCH_25_TO_IP in SDM.
2313 MSR_GOLDMONT_LASTBRANCH_26_TO_IP is defined as MSR_LASTBRANCH_26_TO_IP in SDM.
2314 MSR_GOLDMONT_LASTBRANCH_27_TO_IP is defined as MSR_LASTBRANCH_27_TO_IP in SDM.
2315 MSR_GOLDMONT_LASTBRANCH_28_TO_IP is defined as MSR_LASTBRANCH_28_TO_IP in SDM.
2316 MSR_GOLDMONT_LASTBRANCH_29_TO_IP is defined as MSR_LASTBRANCH_29_TO_IP in SDM.
2317 MSR_GOLDMONT_LASTBRANCH_30_TO_IP is defined as MSR_LASTBRANCH_30_TO_IP in SDM.
2318 MSR_GOLDMONT_LASTBRANCH_31_TO_IP is defined as MSR_LASTBRANCH_31_TO_IP in SDM.
2319 @{
2320 **/
2321 #define MSR_GOLDMONT_LASTBRANCH_0_TO_IP 0x000006C0
2322 #define MSR_GOLDMONT_LASTBRANCH_1_TO_IP 0x000006C1
2323 #define MSR_GOLDMONT_LASTBRANCH_2_TO_IP 0x000006C2
2324 #define MSR_GOLDMONT_LASTBRANCH_3_TO_IP 0x000006C3
2325 #define MSR_GOLDMONT_LASTBRANCH_4_TO_IP 0x000006C4
2326 #define MSR_GOLDMONT_LASTBRANCH_5_TO_IP 0x000006C5
2327 #define MSR_GOLDMONT_LASTBRANCH_6_TO_IP 0x000006C6
2328 #define MSR_GOLDMONT_LASTBRANCH_7_TO_IP 0x000006C7
2329 #define MSR_GOLDMONT_LASTBRANCH_8_TO_IP 0x000006C8
2330 #define MSR_GOLDMONT_LASTBRANCH_9_TO_IP 0x000006C9
2331 #define MSR_GOLDMONT_LASTBRANCH_10_TO_IP 0x000006CA
2332 #define MSR_GOLDMONT_LASTBRANCH_11_TO_IP 0x000006CB
2333 #define MSR_GOLDMONT_LASTBRANCH_12_TO_IP 0x000006CC
2334 #define MSR_GOLDMONT_LASTBRANCH_13_TO_IP 0x000006CD
2335 #define MSR_GOLDMONT_LASTBRANCH_14_TO_IP 0x000006CE
2336 #define MSR_GOLDMONT_LASTBRANCH_15_TO_IP 0x000006CF
2337 #define MSR_GOLDMONT_LASTBRANCH_16_TO_IP 0x000006D0
2338 #define MSR_GOLDMONT_LASTBRANCH_17_TO_IP 0x000006D1
2339 #define MSR_GOLDMONT_LASTBRANCH_18_TO_IP 0x000006D2
2340 #define MSR_GOLDMONT_LASTBRANCH_19_TO_IP 0x000006D3
2341 #define MSR_GOLDMONT_LASTBRANCH_20_TO_IP 0x000006D4
2342 #define MSR_GOLDMONT_LASTBRANCH_21_TO_IP 0x000006D5
2343 #define MSR_GOLDMONT_LASTBRANCH_22_TO_IP 0x000006D6
2344 #define MSR_GOLDMONT_LASTBRANCH_23_TO_IP 0x000006D7
2345 #define MSR_GOLDMONT_LASTBRANCH_24_TO_IP 0x000006D8
2346 #define MSR_GOLDMONT_LASTBRANCH_25_TO_IP 0x000006D9
2347 #define MSR_GOLDMONT_LASTBRANCH_26_TO_IP 0x000006DA
2348 #define MSR_GOLDMONT_LASTBRANCH_27_TO_IP 0x000006DB
2349 #define MSR_GOLDMONT_LASTBRANCH_28_TO_IP 0x000006DC
2350 #define MSR_GOLDMONT_LASTBRANCH_29_TO_IP 0x000006DD
2351 #define MSR_GOLDMONT_LASTBRANCH_30_TO_IP 0x000006DE
2352 #define MSR_GOLDMONT_LASTBRANCH_31_TO_IP 0x000006DF
2353 /// @}
2354
2355 /**
2356 MSR information returned for MSR indexes #MSR_GOLDMONT_LASTBRANCH_0_TO_IP to
2357 #MSR_GOLDMONT_LASTBRANCH_31_TO_IP.
2358 **/
2359 typedef union {
2360 ///
2361 /// Individual bit fields
2362 ///
2363 struct {
2364 ///
2365 /// [Bit 31:0] Target Linear Address (R/W).
2366 ///
2367 UINT32 TargetLinearAddress:32;
2368 ///
2369 /// [Bit 47:32] Target Linear Address (R/W).
2370 ///
2371 UINT32 TargetLinearAddressHi:16;
2372 ///
2373 /// [Bits 63:48] Elapsed cycles from last update to the LBR.
2374 ///
2375 UINT32 ElapsedCycles:16;
2376 } Bits;
2377 ///
2378 /// All bit fields as a 32-bit value
2379 ///
2380 UINT32 Uint32;
2381 ///
2382 /// All bit fields as a 64-bit value
2383 ///
2384 UINT64 Uint64;
2385 } MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER;
2386
2387
2388 /**
2389 Core. Resource Association Register (R/W).
2390
2391 @param ECX MSR_GOLDMONT_IA32_PQR_ASSOC (0x00000C8F)
2392 @param EAX Lower 32-bits of MSR value.
2393 Described by the type MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER.
2394 @param EDX Upper 32-bits of MSR value.
2395 Described by the type MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER.
2396
2397 <b>Example usage</b>
2398 @code
2399 MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER Msr;
2400
2401 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_PQR_ASSOC);
2402 AsmWriteMsr64 (MSR_GOLDMONT_IA32_PQR_ASSOC, Msr.Uint64);
2403 @endcode
2404 @note MSR_GOLDMONT_IA32_PQR_ASSOC is defined as IA32_PQR_ASSOC in SDM.
2405 **/
2406 #define MSR_GOLDMONT_IA32_PQR_ASSOC 0x00000C8F
2407
2408 /**
2409 MSR information returned for MSR index #MSR_GOLDMONT_IA32_PQR_ASSOC
2410 **/
2411 typedef union {
2412 ///
2413 /// Individual bit fields
2414 ///
2415 struct {
2416 UINT32 Reserved1:32;
2417 ///
2418 /// [Bits 33:32] COS (R/W).
2419 ///
2420 UINT32 COS:2;
2421 UINT32 Reserved2:30;
2422 } Bits;
2423 ///
2424 /// All bit fields as a 64-bit value
2425 ///
2426 UINT64 Uint64;
2427 } MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER;
2428
2429
2430 /**
2431 Module. L2 Class Of Service Mask - COS n (R/W) if CPUID.(EAX=10H,
2432 ECX=1):EDX.COS_MAX[15:0] >=n.
2433
2434 @param ECX MSR_GOLDMONT_IA32_L2_QOS_MASK_n
2435 @param EAX Lower 32-bits of MSR value.
2436 Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER.
2437 @param EDX Upper 32-bits of MSR value.
2438 Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER.
2439
2440 <b>Example usage</b>
2441 @code
2442 MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER Msr;
2443
2444 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_n);
2445 AsmWriteMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_n, Msr.Uint64);
2446 @endcode
2447 @note MSR_GOLDMONT_IA32_L2_QOS_MASK_0 is defined as IA32_L2_QOS_MASK_0 in SDM.
2448 MSR_GOLDMONT_IA32_L2_QOS_MASK_1 is defined as IA32_L2_QOS_MASK_1 in SDM.
2449 MSR_GOLDMONT_IA32_L2_QOS_MASK_2 is defined as IA32_L2_QOS_MASK_2 in SDM.
2450 @{
2451 **/
2452 #define MSR_GOLDMONT_IA32_L2_QOS_MASK_0 0x00000D10
2453 #define MSR_GOLDMONT_IA32_L2_QOS_MASK_1 0x00000D11
2454 #define MSR_GOLDMONT_IA32_L2_QOS_MASK_2 0x00000D12
2455 /// @}
2456
2457 /**
2458 MSR information returned for MSR indexes #MSR_GOLDMONT_IA32_L2_QOS_MASK_0 to
2459 #MSR_GOLDMONT_IA32_L2_QOS_MASK_2.
2460 **/
2461 typedef union {
2462 ///
2463 /// Individual bit fields
2464 ///
2465 struct {
2466 ///
2467 /// [Bits 7:0] CBM: Bit vector of available L2 ways for COS 0 enforcement
2468 ///
2469 UINT32 CBM:8;
2470 UINT32 Reserved1:24;
2471 UINT32 Reserved2:32;
2472 } Bits;
2473 ///
2474 /// All bit fields as a 32-bit value
2475 ///
2476 UINT32 Uint32;
2477 ///
2478 /// All bit fields as a 64-bit value
2479 ///
2480 UINT64 Uint64;
2481 } MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER;
2482
2483
2484 /**
2485 Package. L2 Class Of Service Mask - COS 3 (R/W) if CPUID.(EAX=10H,
2486 ECX=1):EDX.COS_MAX[15:0] >=3.
2487
2488 @param ECX MSR_GOLDMONT_IA32_L2_QOS_MASK_3
2489 @param EAX Lower 32-bits of MSR value.
2490 Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER.
2491 @param EDX Upper 32-bits of MSR value.
2492 Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER.
2493
2494 <b>Example usage</b>
2495 @code
2496 MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER Msr;
2497
2498 Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_3);
2499 AsmWriteMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_3, Msr.Uint64);
2500 @endcode
2501 @note MSR_GOLDMONT_IA32_L2_QOS_MASK_3 is defined as IA32_L2_QOS_MASK_3 in SDM.
2502 **/
2503 #define MSR_GOLDMONT_IA32_L2_QOS_MASK_3 0x00000D13
2504
2505 /**
2506 MSR information returned for MSR index #MSR_GOLDMONT_IA32_L2_QOS_MASK_3.
2507 **/
2508 typedef union {
2509 ///
2510 /// Individual bit fields
2511 ///
2512 struct {
2513 ///
2514 /// [Bits 19:0] CBM: Bit vector of available L2 ways for COS 0 enforcement
2515 ///
2516 UINT32 CBM:20;
2517 UINT32 Reserved1:12;
2518 UINT32 Reserved2:32;
2519 } Bits;
2520 ///
2521 /// All bit fields as a 32-bit value
2522 ///
2523 UINT32 Uint32;
2524 ///
2525 /// All bit fields as a 64-bit value
2526 ///
2527 UINT64 Uint64;
2528 } MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER;
2529
2530
2531 #endif