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