blob: b680fbf9763aaa2575ded5738ca65fa03ff8bccd [file] [log] [blame]
Ronak Kanabar1ae366f2023-06-07 01:21:56 +05301/** @file
2 MSR Definitions for Intel processors based on the Skylake/Kabylake/Coffeelake/Cannonlake 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 __SKYLAKE_MSR_H__
19#define __SKYLAKE_MSR_H__
20
21#include <Register/Intel/ArchitecturalMsr.h>
22
23/**
24 Is Intel processors based on the Skylake 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_SKYLAKE_PROCESSOR(DisplayFamily, DisplayModel) \
33 (DisplayFamily == 0x06 && \
34 ( \
35 DisplayModel == 0x4E || \
36 DisplayModel == 0x5E || \
37 DisplayModel == 0x55 || \
38 DisplayModel == 0x8E || \
39 DisplayModel == 0x9E || \
40 DisplayModel == 0x66 \
41 ) \
42 )
43
44/**
45 Package. Maximum Ratio Limit of Turbo Mode RO if MSR_PLATFORM_INFO.[28] = 0,
46 RW if MSR_PLATFORM_INFO.[28] = 1.
47
48 @param ECX MSR_SKYLAKE_TURBO_RATIO_LIMIT (0x000001AD)
49 @param EAX Lower 32-bits of MSR value.
50 Described by the type MSR_SKYLAKE_TURBO_RATIO_LIMIT_REGISTER.
51 @param EDX Upper 32-bits of MSR value.
52 Described by the type MSR_SKYLAKE_TURBO_RATIO_LIMIT_REGISTER.
53
54 <b>Example usage</b>
55 @code
56 MSR_SKYLAKE_TURBO_RATIO_LIMIT_REGISTER Msr;
57
58 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_TURBO_RATIO_LIMIT);
59 @endcode
60 @note MSR_SKYLAKE_TURBO_RATIO_LIMIT is defined as MSR_TURBO_RATIO_LIMIT in SDM.
61**/
62#define MSR_SKYLAKE_TURBO_RATIO_LIMIT 0x000001AD
63
64/**
65 MSR information returned for MSR index #MSR_SKYLAKE_TURBO_RATIO_LIMIT
66**/
67typedef union {
68 ///
69 /// Individual bit fields
70 ///
71 struct {
72 ///
73 /// [Bits 7:0] Package. Maximum Ratio Limit for 1C Maximum turbo ratio
74 /// limit of 1 core active.
75 ///
76 UINT32 Maximum1C : 8;
77 ///
78 /// [Bits 15:8] Package. Maximum Ratio Limit for 2C Maximum turbo ratio
79 /// limit of 2 core active.
80 ///
81 UINT32 Maximum2C : 8;
82 ///
83 /// [Bits 23:16] Package. Maximum Ratio Limit for 3C Maximum turbo ratio
84 /// limit of 3 core active.
85 ///
86 UINT32 Maximum3C : 8;
87 ///
88 /// [Bits 31:24] Package. Maximum Ratio Limit for 4C Maximum turbo ratio
89 /// limit of 4 core active.
90 ///
91 UINT32 Maximum4C : 8;
92 UINT32 Reserved : 32;
93 } Bits;
94 ///
95 /// All bit fields as a 32-bit value
96 ///
97 UINT32 Uint32;
98 ///
99 /// All bit fields as a 64-bit value
100 ///
101 UINT64 Uint64;
102} MSR_SKYLAKE_TURBO_RATIO_LIMIT_REGISTER;
103
104/**
105 Thread. Last Branch Record Stack TOS (R/W) Contains an index (bits 0-4)
106 that points to the MSR containing the most recent branch record.
107
108 @param ECX MSR_SKYLAKE_LASTBRANCH_TOS (0x000001C9)
109 @param EAX Lower 32-bits of MSR value.
110 @param EDX Upper 32-bits of MSR value.
111
112 <b>Example usage</b>
113 @code
114 UINT64 Msr;
115
116 Msr = AsmReadMsr64 (MSR_SKYLAKE_LASTBRANCH_TOS);
117 AsmWriteMsr64 (MSR_SKYLAKE_LASTBRANCH_TOS, Msr);
118 @endcode
119 @note MSR_SKYLAKE_LASTBRANCH_TOS is defined as MSR_LASTBRANCH_TOS in SDM.
120**/
121#define MSR_SKYLAKE_LASTBRANCH_TOS 0x000001C9
122
123/**
124 Core. Power Control Register See http://biosbits.org.
125
126 @param ECX MSR_SKYLAKE_POWER_CTL (0x000001FC)
127 @param EAX Lower 32-bits of MSR value.
128 Described by the type MSR_SKYLAKE_POWER_CTL_REGISTER.
129 @param EDX Upper 32-bits of MSR value.
130 Described by the type MSR_SKYLAKE_POWER_CTL_REGISTER.
131
132 <b>Example usage</b>
133 @code
134 MSR_SKYLAKE_POWER_CTL_REGISTER Msr;
135
136 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_POWER_CTL);
137 AsmWriteMsr64 (MSR_SKYLAKE_POWER_CTL, Msr.Uint64);
138 @endcode
139**/
140#define MSR_SKYLAKE_POWER_CTL 0x000001FC
141
142/**
143 MSR information returned for MSR index #MSR_SKYLAKE_POWER_CTL
144**/
145typedef union {
146 ///
147 /// Individual bit fields
148 ///
149 struct {
150 UINT32 Reserved1 : 1;
151 ///
152 /// [Bit 1] Package. C1E Enable (R/W) When set to '1', will enable the CPU
153 /// to switch to the Minimum Enhanced Intel SpeedStep Technology operating
154 /// point when all execution cores enter MWAIT (C1).
155 ///
156 UINT32 C1EEnable : 1;
157 UINT32 Reserved2 : 17;
158 ///
159 /// [Bit 19] Disable Race to Halt Optimization (R/W) Setting this bit
160 /// disables the Race to Halt optimization and avoids this optimization
161 /// limitation to execute below the most efficient frequency ratio.
162 /// Default value is 0 for processors that support Race to Halt
163 /// optimization. Default value is 1 for processors that do not support
164 /// Race to Halt optimization.
165 ///
166 UINT32 Fix_Me_1 : 1;
167 ///
168 /// [Bit 20] Disable Energy Efficiency Optimization (R/W) Setting this bit
169 /// disables the P-States energy efficiency optimization. Default value is
170 /// 0. Disable/enable the energy efficiency optimization in P-State legacy
171 /// mode (when IA32_PM_ENABLE[HWP_ENABLE] = 0), has an effect only in the
172 /// turbo range or into PERF_MIN_CTL value if it is not zero set. In HWP
173 /// mode (IA32_PM_ENABLE[HWP_ENABLE] == 1), has an effect between the OS
174 /// desired or OS maximize to the OS minimize performance setting.
175 ///
176 UINT32 DisableEnergyEfficiencyOptimization : 1;
177 UINT32 Reserved3 : 11;
178 UINT32 Reserved4 : 32;
179 } Bits;
180 ///
181 /// All bit fields as a 32-bit value
182 ///
183 UINT32 Uint32;
184 ///
185 /// All bit fields as a 64-bit value
186 ///
187 UINT64 Uint64;
188} MSR_SKYLAKE_POWER_CTL_REGISTER;
189
190/**
191 Package. Lower 64 Bit CR_SGXOWNEREPOCH (W) Writes do not update
192 CR_SGXOWNEREPOCH if CPUID.(EAX=12H, ECX=0):EAX.SGX1 is 1 on any thread in
193 the package. Lower 64 bits of an 128-bit external entropy value for key
194 derivation of an enclave.
195
196 @param ECX MSR_SKYLAKE_SGXOWNEREPOCH0 (0x00000300)
197 @param EAX Lower 32-bits of MSR value.
198 @param EDX Upper 32-bits of MSR value.
199
200 <b>Example usage</b>
201 @code
202 UINT64 Msr;
203
204 Msr = 0;
205 AsmWriteMsr64 (MSR_SKYLAKE_SGXOWNEREPOCH0, Msr);
206 @endcode
207 @note MSR_SKYLAKE_SGXOWNEREPOCH0 is defined as MSR_SGXOWNER0 in SDM.
208**/
209#define MSR_SKYLAKE_SGXOWNEREPOCH0 0x00000300
210
211//
212// Define MSR_SKYLAKE_SGXOWNER0 for compatibility due to name change in the SDM.
213//
214#define MSR_SKYLAKE_SGXOWNER0 MSR_SKYLAKE_SGXOWNEREPOCH0
215
216/**
217 Package. Upper 64 Bit CR_SGXOWNEREPOCH (W) Writes do not update
218 CR_SGXOWNEREPOCH if CPUID.(EAX=12H, ECX=0):EAX.SGX1 is 1 on any thread in
219 the package. Upper 64 bits of an 128-bit external entropy value for key
220 derivation of an enclave.
221
222 @param ECX MSR_SKYLAKE_SGXOWNEREPOCH1 (0x00000301)
223 @param EAX Lower 32-bits of MSR value.
224 @param EDX Upper 32-bits of MSR value.
225
226 <b>Example usage</b>
227 @code
228 UINT64 Msr;
229
230 Msr = 0;
231 AsmWriteMsr64 (MSR_SKYLAKE_SGXOWNEREPOCH1, Msr);
232 @endcode
233 @note MSR_SKYLAKE_SGXOWNEREPOCH1 is defined as MSR_SGXOWNER1 in SDM.
234**/
235#define MSR_SKYLAKE_SGXOWNEREPOCH1 0x00000301
236
237//
238// Define MSR_SKYLAKE_SGXOWNER1 for compatibility due to name change in the SDM.
239//
240#define MSR_SKYLAKE_SGXOWNER1 MSR_SKYLAKE_SGXOWNEREPOCH1
241
242/**
243 See Table 2-2. See Section 18.2.4, "Architectural Performance Monitoring
244 Version 4.".
245
246 @param ECX MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS (0x0000038E)
247 @param EAX Lower 32-bits of MSR value.
248 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER.
249 @param EDX Upper 32-bits of MSR value.
250 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER.
251
252 <b>Example usage</b>
253 @code
254 MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER Msr;
255
256 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS);
257 AsmWriteMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS, Msr.Uint64);
258 @endcode
259 @note MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS is defined as IA32_PERF_GLOBAL_STATUS in SDM.
260**/
261#define MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS 0x0000038E
262
263/**
264 MSR information returned for MSR index #MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS
265**/
266typedef union {
267 ///
268 /// Individual bit fields
269 ///
270 struct {
271 ///
272 /// [Bit 0] Thread. Ovf_PMC0.
273 ///
274 UINT32 Ovf_PMC0 : 1;
275 ///
276 /// [Bit 1] Thread. Ovf_PMC1.
277 ///
278 UINT32 Ovf_PMC1 : 1;
279 ///
280 /// [Bit 2] Thread. Ovf_PMC2.
281 ///
282 UINT32 Ovf_PMC2 : 1;
283 ///
284 /// [Bit 3] Thread. Ovf_PMC3.
285 ///
286 UINT32 Ovf_PMC3 : 1;
287 ///
288 /// [Bit 4] Thread. Ovf_PMC4 (if CPUID.0AH:EAX[15:8] > 4).
289 ///
290 UINT32 Ovf_PMC4 : 1;
291 ///
292 /// [Bit 5] Thread. Ovf_PMC5 (if CPUID.0AH:EAX[15:8] > 5).
293 ///
294 UINT32 Ovf_PMC5 : 1;
295 ///
296 /// [Bit 6] Thread. Ovf_PMC6 (if CPUID.0AH:EAX[15:8] > 6).
297 ///
298 UINT32 Ovf_PMC6 : 1;
299 ///
300 /// [Bit 7] Thread. Ovf_PMC7 (if CPUID.0AH:EAX[15:8] > 7).
301 ///
302 UINT32 Ovf_PMC7 : 1;
303 UINT32 Reserved1 : 24;
304 ///
305 /// [Bit 32] Thread. Ovf_FixedCtr0.
306 ///
307 UINT32 Ovf_FixedCtr0 : 1;
308 ///
309 /// [Bit 33] Thread. Ovf_FixedCtr1.
310 ///
311 UINT32 Ovf_FixedCtr1 : 1;
312 ///
313 /// [Bit 34] Thread. Ovf_FixedCtr2.
314 ///
315 UINT32 Ovf_FixedCtr2 : 1;
316 UINT32 Reserved2 : 20;
317 ///
318 /// [Bit 55] Thread. Trace_ToPA_PMI.
319 ///
320 UINT32 Trace_ToPA_PMI : 1;
321 UINT32 Reserved3 : 2;
322 ///
323 /// [Bit 58] Thread. LBR_Frz.
324 ///
325 UINT32 LBR_Frz : 1;
326 ///
327 /// [Bit 59] Thread. CTR_Frz.
328 ///
329 UINT32 CTR_Frz : 1;
330 ///
331 /// [Bit 60] Thread. ASCI.
332 ///
333 UINT32 ASCI : 1;
334 ///
335 /// [Bit 61] Thread. Ovf_Uncore.
336 ///
337 UINT32 Ovf_Uncore : 1;
338 ///
339 /// [Bit 62] Thread. Ovf_BufDSSAVE.
340 ///
341 UINT32 Ovf_BufDSSAVE : 1;
342 ///
343 /// [Bit 63] Thread. CondChgd.
344 ///
345 UINT32 CondChgd : 1;
346 } Bits;
347 ///
348 /// All bit fields as a 64-bit value
349 ///
350 UINT64 Uint64;
351} MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER;
352
353/**
354 See Table 2-2. See Section 18.2.4, "Architectural Performance Monitoring
355 Version 4.".
356
357 @param ECX MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET (0x00000390)
358 @param EAX Lower 32-bits of MSR value.
359 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER.
360 @param EDX Upper 32-bits of MSR value.
361 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER.
362
363 <b>Example usage</b>
364 @code
365 MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER Msr;
366
367 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET);
368 AsmWriteMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET, Msr.Uint64);
369 @endcode
370 @note MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET is defined as IA32_PERF_GLOBAL_STATUS_RESET in SDM.
371**/
372#define MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET 0x00000390
373
374/**
375 MSR information returned for MSR index
376 #MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET
377**/
378typedef union {
379 ///
380 /// Individual bit fields
381 ///
382 struct {
383 ///
384 /// [Bit 0] Thread. Set 1 to clear Ovf_PMC0.
385 ///
386 UINT32 Ovf_PMC0 : 1;
387 ///
388 /// [Bit 1] Thread. Set 1 to clear Ovf_PMC1.
389 ///
390 UINT32 Ovf_PMC1 : 1;
391 ///
392 /// [Bit 2] Thread. Set 1 to clear Ovf_PMC2.
393 ///
394 UINT32 Ovf_PMC2 : 1;
395 ///
396 /// [Bit 3] Thread. Set 1 to clear Ovf_PMC3.
397 ///
398 UINT32 Ovf_PMC3 : 1;
399 ///
400 /// [Bit 4] Thread. Set 1 to clear Ovf_PMC4 (if CPUID.0AH:EAX[15:8] > 4).
401 ///
402 UINT32 Ovf_PMC4 : 1;
403 ///
404 /// [Bit 5] Thread. Set 1 to clear Ovf_PMC5 (if CPUID.0AH:EAX[15:8] > 5).
405 ///
406 UINT32 Ovf_PMC5 : 1;
407 ///
408 /// [Bit 6] Thread. Set 1 to clear Ovf_PMC6 (if CPUID.0AH:EAX[15:8] > 6).
409 ///
410 UINT32 Ovf_PMC6 : 1;
411 ///
412 /// [Bit 7] Thread. Set 1 to clear Ovf_PMC7 (if CPUID.0AH:EAX[15:8] > 7).
413 ///
414 UINT32 Ovf_PMC7 : 1;
415 UINT32 Reserved1 : 24;
416 ///
417 /// [Bit 32] Thread. Set 1 to clear Ovf_FixedCtr0.
418 ///
419 UINT32 Ovf_FixedCtr0 : 1;
420 ///
421 /// [Bit 33] Thread. Set 1 to clear Ovf_FixedCtr1.
422 ///
423 UINT32 Ovf_FixedCtr1 : 1;
424 ///
425 /// [Bit 34] Thread. Set 1 to clear Ovf_FixedCtr2.
426 ///
427 UINT32 Ovf_FixedCtr2 : 1;
428 UINT32 Reserved2 : 20;
429 ///
430 /// [Bit 55] Thread. Set 1 to clear Trace_ToPA_PMI.
431 ///
432 UINT32 Trace_ToPA_PMI : 1;
433 UINT32 Reserved3 : 2;
434 ///
435 /// [Bit 58] Thread. Set 1 to clear LBR_Frz.
436 ///
437 UINT32 LBR_Frz : 1;
438 ///
439 /// [Bit 59] Thread. Set 1 to clear CTR_Frz.
440 ///
441 UINT32 CTR_Frz : 1;
442 ///
443 /// [Bit 60] Thread. Set 1 to clear ASCI.
444 ///
445 UINT32 ASCI : 1;
446 ///
447 /// [Bit 61] Thread. Set 1 to clear Ovf_Uncore.
448 ///
449 UINT32 Ovf_Uncore : 1;
450 ///
451 /// [Bit 62] Thread. Set 1 to clear Ovf_BufDSSAVE.
452 ///
453 UINT32 Ovf_BufDSSAVE : 1;
454 ///
455 /// [Bit 63] Thread. Set 1 to clear CondChgd.
456 ///
457 UINT32 CondChgd : 1;
458 } Bits;
459 ///
460 /// All bit fields as a 64-bit value
461 ///
462 UINT64 Uint64;
463} MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER;
464
465/**
466 See Table 2-2. See Section 18.2.4, "Architectural Performance Monitoring
467 Version 4.".
468
469 @param ECX MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET (0x00000391)
470 @param EAX Lower 32-bits of MSR value.
471 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET_REGISTER.
472 @param EDX Upper 32-bits of MSR value.
473 Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET_REGISTER.
474
475 <b>Example usage</b>
476 @code
477 MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET_REGISTER Msr;
478
479 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET);
480 AsmWriteMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET, Msr.Uint64);
481 @endcode
482 @note MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET is defined as IA32_PERF_GLOBAL_STATUS_SET in SDM.
483**/
484#define MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET 0x00000391
485
486/**
487 MSR information returned for MSR index
488 #MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET
489**/
490typedef union {
491 ///
492 /// Individual bit fields
493 ///
494 struct {
495 ///
496 /// [Bit 0] Thread. Set 1 to cause Ovf_PMC0 = 1.
497 ///
498 UINT32 Ovf_PMC0 : 1;
499 ///
500 /// [Bit 1] Thread. Set 1 to cause Ovf_PMC1 = 1.
501 ///
502 UINT32 Ovf_PMC1 : 1;
503 ///
504 /// [Bit 2] Thread. Set 1 to cause Ovf_PMC2 = 1.
505 ///
506 UINT32 Ovf_PMC2 : 1;
507 ///
508 /// [Bit 3] Thread. Set 1 to cause Ovf_PMC3 = 1.
509 ///
510 UINT32 Ovf_PMC3 : 1;
511 ///
512 /// [Bit 4] Thread. Set 1 to cause Ovf_PMC4=1 (if CPUID.0AH:EAX[15:8] > 4).
513 ///
514 UINT32 Ovf_PMC4 : 1;
515 ///
516 /// [Bit 5] Thread. Set 1 to cause Ovf_PMC5=1 (if CPUID.0AH:EAX[15:8] > 5).
517 ///
518 UINT32 Ovf_PMC5 : 1;
519 ///
520 /// [Bit 6] Thread. Set 1 to cause Ovf_PMC6=1 (if CPUID.0AH:EAX[15:8] > 6).
521 ///
522 UINT32 Ovf_PMC6 : 1;
523 ///
524 /// [Bit 7] Thread. Set 1 to cause Ovf_PMC7=1 (if CPUID.0AH:EAX[15:8] > 7).
525 ///
526 UINT32 Ovf_PMC7 : 1;
527 UINT32 Reserved1 : 24;
528 ///
529 /// [Bit 32] Thread. Set 1 to cause Ovf_FixedCtr0 = 1.
530 ///
531 UINT32 Ovf_FixedCtr0 : 1;
532 ///
533 /// [Bit 33] Thread. Set 1 to cause Ovf_FixedCtr1 = 1.
534 ///
535 UINT32 Ovf_FixedCtr1 : 1;
536 ///
537 /// [Bit 34] Thread. Set 1 to cause Ovf_FixedCtr2 = 1.
538 ///
539 UINT32 Ovf_FixedCtr2 : 1;
540 UINT32 Reserved2 : 20;
541 ///
542 /// [Bit 55] Thread. Set 1 to cause Trace_ToPA_PMI = 1.
543 ///
544 UINT32 Trace_ToPA_PMI : 1;
545 UINT32 Reserved3 : 2;
546 ///
547 /// [Bit 58] Thread. Set 1 to cause LBR_Frz = 1.
548 ///
549 UINT32 LBR_Frz : 1;
550 ///
551 /// [Bit 59] Thread. Set 1 to cause CTR_Frz = 1.
552 ///
553 UINT32 CTR_Frz : 1;
554 ///
555 /// [Bit 60] Thread. Set 1 to cause ASCI = 1.
556 ///
557 UINT32 ASCI : 1;
558 ///
559 /// [Bit 61] Thread. Set 1 to cause Ovf_Uncore.
560 ///
561 UINT32 Ovf_Uncore : 1;
562 ///
563 /// [Bit 62] Thread. Set 1 to cause Ovf_BufDSSAVE.
564 ///
565 UINT32 Ovf_BufDSSAVE : 1;
566 UINT32 Reserved4 : 1;
567 } Bits;
568 ///
569 /// All bit fields as a 64-bit value
570 ///
571 UINT64 Uint64;
572} MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET_REGISTER;
573
574/**
575 Thread. FrontEnd Precise Event Condition Select (R/W).
576
577 @param ECX MSR_SKYLAKE_PEBS_FRONTEND (0x000003F7)
578 @param EAX Lower 32-bits of MSR value.
579 Described by the type MSR_SKYLAKE_PEBS_FRONTEND_REGISTER.
580 @param EDX Upper 32-bits of MSR value.
581 Described by the type MSR_SKYLAKE_PEBS_FRONTEND_REGISTER.
582
583 <b>Example usage</b>
584 @code
585 MSR_SKYLAKE_PEBS_FRONTEND_REGISTER Msr;
586
587 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PEBS_FRONTEND);
588 AsmWriteMsr64 (MSR_SKYLAKE_PEBS_FRONTEND, Msr.Uint64);
589 @endcode
590 @note MSR_SKYLAKE_PEBS_FRONTEND is defined as MSR_PEBS_FRONTEND in SDM.
591**/
592#define MSR_SKYLAKE_PEBS_FRONTEND 0x000003F7
593
594/**
595 MSR information returned for MSR index #MSR_SKYLAKE_PEBS_FRONTEND
596**/
597typedef union {
598 ///
599 /// Individual bit fields
600 ///
601 struct {
602 ///
603 /// [Bits 2:0] Event Code Select.
604 ///
605 UINT32 EventCodeSelect : 3;
606 UINT32 Reserved1 : 1;
607 ///
608 /// [Bit 4] Event Code Select High.
609 ///
610 UINT32 EventCodeSelectHigh : 1;
611 UINT32 Reserved2 : 3;
612 ///
613 /// [Bits 19:8] IDQ_Bubble_Length Specifier.
614 ///
615 UINT32 IDQ_Bubble_Length : 12;
616 ///
617 /// [Bits 22:20] IDQ_Bubble_Width Specifier.
618 ///
619 UINT32 IDQ_Bubble_Width : 3;
620 UINT32 Reserved3 : 9;
621 UINT32 Reserved4 : 32;
622 } Bits;
623 ///
624 /// All bit fields as a 32-bit value
625 ///
626 UINT32 Uint32;
627 ///
628 /// All bit fields as a 64-bit value
629 ///
630 UINT64 Uint64;
631} MSR_SKYLAKE_PEBS_FRONTEND_REGISTER;
632
633/**
634 Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
635 Domains.".
636
637 @param ECX MSR_SKYLAKE_PP0_ENERGY_STATUS (0x00000639)
638 @param EAX Lower 32-bits of MSR value.
639 @param EDX Upper 32-bits of MSR value.
640
641 <b>Example usage</b>
642 @code
643 UINT64 Msr;
644
645 Msr = AsmReadMsr64 (MSR_SKYLAKE_PP0_ENERGY_STATUS);
646 @endcode
647 @note MSR_SKYLAKE_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.
648**/
649#define MSR_SKYLAKE_PP0_ENERGY_STATUS 0x00000639
650
651/**
652 Platform*. Platform Energy Counter. (R/O). This MSR is valid only if both
653 platform vendor hardware implementation and BIOS enablement support it. This
654 MSR will read 0 if not valid.
655
656 @param ECX MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER (0x0000064D)
657 @param EAX Lower 32-bits of MSR value.
658 Described by the type MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER_REGISTER.
659 @param EDX Upper 32-bits of MSR value.
660 Described by the type MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER_REGISTER.
661
662 <b>Example usage</b>
663 @code
664 MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER_REGISTER Msr;
665
666 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER);
667 @endcode
668 @note MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER is defined as MSR_PLATFORM_ENERGY_COUNTER in SDM.
669**/
670#define MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER 0x0000064D
671
672/**
673 MSR information returned for MSR index #MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER
674**/
675typedef union {
676 ///
677 /// Individual bit fields
678 ///
679 struct {
680 ///
681 /// [Bits 31:0] Total energy consumed by all devices in the platform that
682 /// receive power from integrated power delivery mechanism, Included
683 /// platform devices are processor cores, SOC, memory, add-on or
684 /// peripheral devices that get powered directly from the platform power
685 /// delivery means. The energy units are specified in the
686 /// MSR_RAPL_POWER_UNIT.Enery_Status_Unit.
687 ///
688 UINT32 TotalEnergy : 32;
689 UINT32 Reserved : 32;
690 } Bits;
691 ///
692 /// All bit fields as a 32-bit value
693 ///
694 UINT32 Uint32;
695 ///
696 /// All bit fields as a 64-bit value
697 ///
698 UINT64 Uint64;
699} MSR_SKYLAKE_PLATFORM_ENERGY_COUNTER_REGISTER;
700
701/**
702 Thread. Productive Performance Count. (R/O). Hardware's view of workload
703 scalability. See Section 14.4.5.1.
704
705 @param ECX MSR_SKYLAKE_PPERF (0x0000064E)
706 @param EAX Lower 32-bits of MSR value.
707 @param EDX Upper 32-bits of MSR value.
708
709 <b>Example usage</b>
710 @code
711 UINT64 Msr;
712
713 Msr = AsmReadMsr64 (MSR_SKYLAKE_PPERF);
714 @endcode
715 @note MSR_SKYLAKE_PPERF is defined as MSR_PPERF in SDM.
716**/
717#define MSR_SKYLAKE_PPERF 0x0000064E
718
719/**
720 Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency
721 refers to processor core frequency).
722
723 @param ECX MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS (0x0000064F)
724 @param EAX Lower 32-bits of MSR value.
725 Described by the type MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER.
726 @param EDX Upper 32-bits of MSR value.
727 Described by the type MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER.
728
729 <b>Example usage</b>
730 @code
731 MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER Msr;
732
733 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS);
734 AsmWriteMsr64 (MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS, Msr.Uint64);
735 @endcode
736 @note MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS is defined as MSR_CORE_PERF_LIMIT_REASONS in SDM.
737**/
738#define MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS 0x0000064F
739
740/**
741 MSR information returned for MSR index #MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS
742**/
743typedef union {
744 ///
745 /// Individual bit fields
746 ///
747 struct {
748 ///
749 /// [Bit 0] PROCHOT Status (R0) When set, frequency is reduced below the
750 /// operating system request due to assertion of external PROCHOT.
751 ///
752 UINT32 PROCHOT_Status : 1;
753 ///
754 /// [Bit 1] Thermal Status (R0) When set, frequency is reduced below the
755 /// operating system request due to a thermal event.
756 ///
757 UINT32 ThermalStatus : 1;
758 UINT32 Reserved1 : 2;
759 ///
760 /// [Bit 4] Residency State Regulation Status (R0) When set, frequency is
761 /// reduced below the operating system request due to residency state
762 /// regulation limit.
763 ///
764 UINT32 ResidencyStateRegulationStatus : 1;
765 ///
766 /// [Bit 5] Running Average Thermal Limit Status (R0) When set, frequency
767 /// is reduced below the operating system request due to Running Average
768 /// Thermal Limit (RATL).
769 ///
770 UINT32 RunningAverageThermalLimitStatus : 1;
771 ///
772 /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced
773 /// below the operating system request due to a thermal alert from a
774 /// processor Voltage Regulator (VR).
775 ///
776 UINT32 VRThermAlertStatus : 1;
777 ///
778 /// [Bit 7] VR Therm Design Current Status (R0) When set, frequency is
779 /// reduced below the operating system request due to VR thermal design
780 /// current limit.
781 ///
782 UINT32 VRThermDesignCurrentStatus : 1;
783 ///
784 /// [Bit 8] Other Status (R0) When set, frequency is reduced below the
785 /// operating system request due to electrical or other constraints.
786 ///
787 UINT32 OtherStatus : 1;
788 UINT32 Reserved2 : 1;
789 ///
790 /// [Bit 10] Package/Platform-Level Power Limiting PL1 Status (R0) When
791 /// set, frequency is reduced below the operating system request due to
792 /// package/platform-level power limiting PL1.
793 ///
794 UINT32 PL1Status : 1;
795 ///
796 /// [Bit 11] Package/Platform-Level PL2 Power Limiting Status (R0) When
797 /// set, frequency is reduced below the operating system request due to
798 /// package/platform-level power limiting PL2/PL3.
799 ///
800 UINT32 PL2Status : 1;
801 ///
802 /// [Bit 12] Max Turbo Limit Status (R0) When set, frequency is reduced
803 /// below the operating system request due to multi-core turbo limits.
804 ///
805 UINT32 MaxTurboLimitStatus : 1;
806 ///
807 /// [Bit 13] Turbo Transition Attenuation Status (R0) When set, frequency
808 /// is reduced below the operating system request due to Turbo transition
809 /// attenuation. This prevents performance degradation due to frequent
810 /// operating ratio changes.
811 ///
812 UINT32 TurboTransitionAttenuationStatus : 1;
813 UINT32 Reserved3 : 2;
814 ///
815 /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit
816 /// has asserted since the log bit was last cleared. This log bit will
817 /// remain set until cleared by software writing 0.
818 ///
819 UINT32 PROCHOT_Log : 1;
820 ///
821 /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit
822 /// has asserted since the log bit was last cleared. This log bit will
823 /// remain set until cleared by software writing 0.
824 ///
825 UINT32 ThermalLog : 1;
826 UINT32 Reserved4 : 2;
827 ///
828 /// [Bit 20] Residency State Regulation Log When set, indicates that the
829 /// Residency State Regulation Status bit has asserted since the log bit
830 /// was last cleared. This log bit will remain set until cleared by
831 /// software writing 0.
832 ///
833 UINT32 ResidencyStateRegulationLog : 1;
834 ///
835 /// [Bit 21] Running Average Thermal Limit Log When set, indicates that
836 /// the RATL Status bit has asserted since the log bit was last cleared.
837 /// This log bit will remain set until cleared by software writing 0.
838 ///
839 UINT32 RunningAverageThermalLimitLog : 1;
840 ///
841 /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm
842 /// Alert Status bit has asserted since the log bit was last cleared. This
843 /// log bit will remain set until cleared by software writing 0.
844 ///
845 UINT32 VRThermAlertLog : 1;
846 ///
847 /// [Bit 23] VR Thermal Design Current Log When set, indicates that the
848 /// VR TDC Status bit has asserted since the log bit was last cleared.
849 /// This log bit will remain set until cleared by software writing 0.
850 ///
851 UINT32 VRThermalDesignCurrentLog : 1;
852 ///
853 /// [Bit 24] Other Log When set, indicates that the Other Status bit has
854 /// asserted since the log bit was last cleared. This log bit will remain
855 /// set until cleared by software writing 0.
856 ///
857 UINT32 OtherLog : 1;
858 UINT32 Reserved5 : 1;
859 ///
860 /// [Bit 26] Package/Platform-Level PL1 Power Limiting Log When set,
861 /// indicates that the Package or Platform Level PL1 Power Limiting Status
862 /// bit has asserted since the log bit was last cleared. This log bit will
863 /// remain set until cleared by software writing 0.
864 ///
865 UINT32 PL1Log : 1;
866 ///
867 /// [Bit 27] Package/Platform-Level PL2 Power Limiting Log When set,
868 /// indicates that the Package or Platform Level PL2/PL3 Power Limiting
869 /// Status bit has asserted since the log bit was last cleared. This log
870 /// bit will remain set until cleared by software writing 0.
871 ///
872 UINT32 PL2Log : 1;
873 ///
874 /// [Bit 28] Max Turbo Limit Log When set, indicates that the Max Turbo
875 /// Limit Status bit has asserted since the log bit was last cleared. This
876 /// log bit will remain set until cleared by software writing 0.
877 ///
878 UINT32 MaxTurboLimitLog : 1;
879 ///
880 /// [Bit 29] Turbo Transition Attenuation Log When set, indicates that the
881 /// Turbo Transition Attenuation Status bit has asserted since the log bit
882 /// was last cleared. This log bit will remain set until cleared by
883 /// software writing 0.
884 ///
885 UINT32 TurboTransitionAttenuationLog : 1;
886 UINT32 Reserved6 : 2;
887 UINT32 Reserved7 : 32;
888 } Bits;
889 ///
890 /// All bit fields as a 32-bit value
891 ///
892 UINT32 Uint32;
893 ///
894 /// All bit fields as a 64-bit value
895 ///
896 UINT64 Uint64;
897} MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER;
898
899/**
900 Package. HDC Configuration (R/W)..
901
902 @param ECX MSR_SKYLAKE_PKG_HDC_CONFIG (0x00000652)
903 @param EAX Lower 32-bits of MSR value.
904 Described by the type MSR_SKYLAKE_PKG_HDC_CONFIG_REGISTER.
905 @param EDX Upper 32-bits of MSR value.
906 Described by the type MSR_SKYLAKE_PKG_HDC_CONFIG_REGISTER.
907
908 <b>Example usage</b>
909 @code
910 MSR_SKYLAKE_PKG_HDC_CONFIG_REGISTER Msr;
911
912 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PKG_HDC_CONFIG);
913 AsmWriteMsr64 (MSR_SKYLAKE_PKG_HDC_CONFIG, Msr.Uint64);
914 @endcode
915 @note MSR_SKYLAKE_PKG_HDC_CONFIG is defined as MSR_PKG_HDC_CONFIG in SDM.
916**/
917#define MSR_SKYLAKE_PKG_HDC_CONFIG 0x00000652
918
919/**
920 MSR information returned for MSR index #MSR_SKYLAKE_PKG_HDC_CONFIG
921**/
922typedef union {
923 ///
924 /// Individual bit fields
925 ///
926 struct {
927 ///
928 /// [Bits 2:0] PKG_Cx_Monitor. Configures Package Cx state threshold for
929 /// MSR_PKG_HDC_DEEP_RESIDENCY.
930 ///
931 UINT32 PKG_Cx_Monitor : 3;
932 UINT32 Reserved1 : 29;
933 UINT32 Reserved2 : 32;
934 } Bits;
935 ///
936 /// All bit fields as a 32-bit value
937 ///
938 UINT32 Uint32;
939 ///
940 /// All bit fields as a 64-bit value
941 ///
942 UINT64 Uint64;
943} MSR_SKYLAKE_PKG_HDC_CONFIG_REGISTER;
944
945/**
946 Core. Core HDC Idle Residency. (R/O). Core_Cx_Duty_Cycle_Cnt.
947
948 @param ECX MSR_SKYLAKE_CORE_HDC_RESIDENCY (0x00000653)
949 @param EAX Lower 32-bits of MSR value.
950 @param EDX Upper 32-bits of MSR value.
951
952 <b>Example usage</b>
953 @code
954 UINT64 Msr;
955
956 Msr = AsmReadMsr64 (MSR_SKYLAKE_CORE_HDC_RESIDENCY);
957 @endcode
958 @note MSR_SKYLAKE_CORE_HDC_RESIDENCY is defined as MSR_CORE_HDC_RESIDENCY in SDM.
959**/
960#define MSR_SKYLAKE_CORE_HDC_RESIDENCY 0x00000653
961
962/**
963 Package. Accumulate the cycles the package was in C2 state and at least one
964 logical processor was in forced idle. (R/O). Pkg_C2_Duty_Cycle_Cnt.
965
966 @param ECX MSR_SKYLAKE_PKG_HDC_SHALLOW_RESIDENCY (0x00000655)
967 @param EAX Lower 32-bits of MSR value.
968 @param EDX Upper 32-bits of MSR value.
969
970 <b>Example usage</b>
971 @code
972 UINT64 Msr;
973
974 Msr = AsmReadMsr64 (MSR_SKYLAKE_PKG_HDC_SHALLOW_RESIDENCY);
975 @endcode
976 @note MSR_SKYLAKE_PKG_HDC_SHALLOW_RESIDENCY is defined as MSR_PKG_HDC_SHALLOW_RESIDENCY in SDM.
977**/
978#define MSR_SKYLAKE_PKG_HDC_SHALLOW_RESIDENCY 0x00000655
979
980/**
981 Package. Package Cx HDC Idle Residency. (R/O). Pkg_Cx_Duty_Cycle_Cnt.
982
983 @param ECX MSR_SKYLAKE_PKG_HDC_DEEP_RESIDENCY (0x00000656)
984 @param EAX Lower 32-bits of MSR value.
985 @param EDX Upper 32-bits of MSR value.
986
987 <b>Example usage</b>
988 @code
989 UINT64 Msr;
990
991 Msr = AsmReadMsr64 (MSR_SKYLAKE_PKG_HDC_DEEP_RESIDENCY);
992 @endcode
993 @note MSR_SKYLAKE_PKG_HDC_DEEP_RESIDENCY is defined as MSR_PKG_HDC_DEEP_RESIDENCY in SDM.
994**/
995#define MSR_SKYLAKE_PKG_HDC_DEEP_RESIDENCY 0x00000656
996
997/**
998 Package. Core-count Weighted C0 Residency. (R/O). Increment at the same rate
999 as the TSC. The increment each cycle is weighted by the number of processor
1000 cores in the package that reside in C0. If N cores are simultaneously in C0,
1001 then each cycle the counter increments by N.
1002
1003 @param ECX MSR_SKYLAKE_WEIGHTED_CORE_C0 (0x00000658)
1004 @param EAX Lower 32-bits of MSR value.
1005 @param EDX Upper 32-bits of MSR value.
1006
1007 <b>Example usage</b>
1008 @code
1009 UINT64 Msr;
1010
1011 Msr = AsmReadMsr64 (MSR_SKYLAKE_WEIGHTED_CORE_C0);
1012 @endcode
1013 @note MSR_SKYLAKE_WEIGHTED_CORE_C0 is defined as MSR_WEIGHTED_CORE_C0 in SDM.
1014**/
1015#define MSR_SKYLAKE_WEIGHTED_CORE_C0 0x00000658
1016
1017/**
1018 Package. Any Core C0 Residency. (R/O). Increment at the same rate as the
1019 TSC. The increment each cycle is one if any processor core in the package is
1020 in C0.
1021
1022 @param ECX MSR_SKYLAKE_ANY_CORE_C0 (0x00000659)
1023 @param EAX Lower 32-bits of MSR value.
1024 @param EDX Upper 32-bits of MSR value.
1025
1026 <b>Example usage</b>
1027 @code
1028 UINT64 Msr;
1029
1030 Msr = AsmReadMsr64 (MSR_SKYLAKE_ANY_CORE_C0);
1031 @endcode
1032 @note MSR_SKYLAKE_ANY_CORE_C0 is defined as MSR_ANY_CORE_C0 in SDM.
1033**/
1034#define MSR_SKYLAKE_ANY_CORE_C0 0x00000659
1035
1036/**
1037 Package. Any Graphics Engine C0 Residency. (R/O). Increment at the same rate
1038 as the TSC. The increment each cycle is one if any processor graphic
1039 device's compute engines are in C0.
1040
1041 @param ECX MSR_SKYLAKE_ANY_GFXE_C0 (0x0000065A)
1042 @param EAX Lower 32-bits of MSR value.
1043 @param EDX Upper 32-bits of MSR value.
1044
1045 <b>Example usage</b>
1046 @code
1047 UINT64 Msr;
1048
1049 Msr = AsmReadMsr64 (MSR_SKYLAKE_ANY_GFXE_C0);
1050 @endcode
1051 @note MSR_SKYLAKE_ANY_GFXE_C0 is defined as MSR_ANY_GFXE_C0 in SDM.
1052**/
1053#define MSR_SKYLAKE_ANY_GFXE_C0 0x0000065A
1054
1055/**
1056 Package. Core and Graphics Engine Overlapped C0 Residency. (R/O). Increment
1057 at the same rate as the TSC. The increment each cycle is one if at least one
1058 compute engine of the processor graphics is in C0 and at least one processor
1059 core in the package is also in C0.
1060
1061 @param ECX MSR_SKYLAKE_CORE_GFXE_OVERLAP_C0 (0x0000065B)
1062 @param EAX Lower 32-bits of MSR value.
1063 @param EDX Upper 32-bits of MSR value.
1064
1065 <b>Example usage</b>
1066 @code
1067 UINT64 Msr;
1068
1069 Msr = AsmReadMsr64 (MSR_SKYLAKE_CORE_GFXE_OVERLAP_C0);
1070 @endcode
1071 @note MSR_SKYLAKE_CORE_GFXE_OVERLAP_C0 is defined as MSR_CORE_GFXE_OVERLAP_C0 in SDM.
1072**/
1073#define MSR_SKYLAKE_CORE_GFXE_OVERLAP_C0 0x0000065B
1074
1075/**
1076 Platform*. Platform Power Limit Control (R/W-L) Allows platform BIOS to
1077 limit power consumption of the platform devices to the specified values. The
1078 Long Duration power consumption is specified via Platform_Power_Limit_1 and
1079 Platform_Power_Limit_1_Time. The Short Duration power consumption limit is
1080 specified via the Platform_Power_Limit_2 with duration chosen by the
1081 processor. The processor implements an exponential-weighted algorithm in the
1082 placement of the time windows.
1083
1084 @param ECX MSR_SKYLAKE_PLATFORM_POWER_LIMIT (0x0000065C)
1085 @param EAX Lower 32-bits of MSR value.
1086 Described by the type MSR_SKYLAKE_PLATFORM_POWER_LIMIT_REGISTER.
1087 @param EDX Upper 32-bits of MSR value.
1088 Described by the type MSR_SKYLAKE_PLATFORM_POWER_LIMIT_REGISTER.
1089
1090 <b>Example usage</b>
1091 @code
1092 MSR_SKYLAKE_PLATFORM_POWER_LIMIT_REGISTER Msr;
1093
1094 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PLATFORM_POWER_LIMIT);
1095 AsmWriteMsr64 (MSR_SKYLAKE_PLATFORM_POWER_LIMIT, Msr.Uint64);
1096 @endcode
1097 @note MSR_SKYLAKE_PLATFORM_POWER_LIMIT is defined as MSR_PLATFORM_POWER_LIMIT in SDM.
1098**/
1099#define MSR_SKYLAKE_PLATFORM_POWER_LIMIT 0x0000065C
1100
1101/**
1102 MSR information returned for MSR index #MSR_SKYLAKE_PLATFORM_POWER_LIMIT
1103**/
1104typedef union {
1105 ///
1106 /// Individual bit fields
1107 ///
1108 struct {
1109 ///
1110 /// [Bits 14:0] Platform Power Limit #1. Average Power limit value which
1111 /// the platform must not exceed over a time window as specified by
1112 /// Power_Limit_1_TIME field. The default value is the Thermal Design
1113 /// Power (TDP) and varies with product skus. The unit is specified in
1114 /// MSR_RAPLPOWER_UNIT.
1115 ///
1116 UINT32 PlatformPowerLimit1 : 15;
1117 ///
1118 /// [Bit 15] Enable Platform Power Limit #1. When set, enables the
1119 /// processor to apply control policy such that the platform power does
1120 /// not exceed Platform Power limit #1 over the time window specified by
1121 /// Power Limit #1 Time Window.
1122 ///
1123 UINT32 EnablePlatformPowerLimit1 : 1;
1124 ///
1125 /// [Bit 16] Platform Clamping Limitation #1. When set, allows the
1126 /// processor to go below the OS requested P states in order to maintain
1127 /// the power below specified Platform Power Limit #1 value. This bit is
1128 /// writeable only when CPUID (EAX=6):EAX[4] is set.
1129 ///
1130 UINT32 PlatformClampingLimitation1 : 1;
1131 ///
1132 /// [Bits 23:17] Time Window for Platform Power Limit #1. Specifies the
1133 /// duration of the time window over which Platform Power Limit 1 value
1134 /// should be maintained for sustained long duration. This field is made
1135 /// up of two numbers from the following equation: Time Window = (float)
1136 /// ((1+(X/4))*(2^Y)), where: X. = POWER_LIMIT_1_TIME[23:22] Y. =
1137 /// POWER_LIMIT_1_TIME[21:17]. The maximum allowed value in this field is
1138 /// defined in MSR_PKG_POWER_INFO[PKG_MAX_WIN]. The default value is 0DH,
1139 /// The unit is specified in MSR_RAPLPOWER_UNIT[Time Unit].
1140 ///
1141 UINT32 Time : 7;
1142 UINT32 Reserved1 : 8;
1143 ///
1144 /// [Bits 46:32] Platform Power Limit #2. Average Power limit value which
1145 /// the platform must not exceed over the Short Duration time window
1146 /// chosen by the processor. The recommended default value is 1.25 times
1147 /// the Long Duration Power Limit (i.e. Platform Power Limit # 1).
1148 ///
1149 UINT32 PlatformPowerLimit2 : 15;
1150 ///
1151 /// [Bit 47] Enable Platform Power Limit #2. When set, enables the
1152 /// processor to apply control policy such that the platform power does
1153 /// not exceed Platform Power limit #2 over the Short Duration time window.
1154 ///
1155 UINT32 EnablePlatformPowerLimit2 : 1;
1156 ///
1157 /// [Bit 48] Platform Clamping Limitation #2. When set, allows the
1158 /// processor to go below the OS requested P states in order to maintain
1159 /// the power below specified Platform Power Limit #2 value.
1160 ///
1161 UINT32 PlatformClampingLimitation2 : 1;
1162 UINT32 Reserved2 : 14;
1163 ///
1164 /// [Bit 63] Lock. Setting this bit will lock all other bits of this MSR
1165 /// until system RESET.
1166 ///
1167 UINT32 Lock : 1;
1168 } Bits;
1169 ///
1170 /// All bit fields as a 64-bit value
1171 ///
1172 UINT64 Uint64;
1173} MSR_SKYLAKE_PLATFORM_POWER_LIMIT_REGISTER;
1174
1175/**
1176 Thread. Last Branch Record n From IP (R/W) One of 32 triplets of last
1177 branch record registers on the last branch record stack. This part of the
1178 stack contains pointers to the source instruction. See also: - Last Branch
1179 Record Stack TOS at 1C9H - Section 17.10.
1180
1181 @param ECX MSR_SKYLAKE_LASTBRANCH_n_FROM_IP
1182 @param EAX Lower 32-bits of MSR value.
1183 @param EDX Upper 32-bits of MSR value.
1184
1185 <b>Example usage</b>
1186 @code
1187 UINT64 Msr;
1188
1189 Msr = AsmReadMsr64 (MSR_SKYLAKE_LASTBRANCH_16_FROM_IP);
1190 AsmWriteMsr64 (MSR_SKYLAKE_LASTBRANCH_16_FROM_IP, Msr);
1191 @endcode
1192 @note MSR_SKYLAKE_LASTBRANCH_16_FROM_IP is defined as MSR_LASTBRANCH_16_FROM_IP in SDM.
1193 MSR_SKYLAKE_LASTBRANCH_17_FROM_IP is defined as MSR_LASTBRANCH_17_FROM_IP in SDM.
1194 MSR_SKYLAKE_LASTBRANCH_18_FROM_IP is defined as MSR_LASTBRANCH_18_FROM_IP in SDM.
1195 MSR_SKYLAKE_LASTBRANCH_19_FROM_IP is defined as MSR_LASTBRANCH_19_FROM_IP in SDM.
1196 MSR_SKYLAKE_LASTBRANCH_20_FROM_IP is defined as MSR_LASTBRANCH_20_FROM_IP in SDM.
1197 MSR_SKYLAKE_LASTBRANCH_21_FROM_IP is defined as MSR_LASTBRANCH_21_FROM_IP in SDM.
1198 MSR_SKYLAKE_LASTBRANCH_22_FROM_IP is defined as MSR_LASTBRANCH_22_FROM_IP in SDM.
1199 MSR_SKYLAKE_LASTBRANCH_23_FROM_IP is defined as MSR_LASTBRANCH_23_FROM_IP in SDM.
1200 MSR_SKYLAKE_LASTBRANCH_24_FROM_IP is defined as MSR_LASTBRANCH_24_FROM_IP in SDM.
1201 MSR_SKYLAKE_LASTBRANCH_25_FROM_IP is defined as MSR_LASTBRANCH_25_FROM_IP in SDM.
1202 MSR_SKYLAKE_LASTBRANCH_26_FROM_IP is defined as MSR_LASTBRANCH_26_FROM_IP in SDM.
1203 MSR_SKYLAKE_LASTBRANCH_27_FROM_IP is defined as MSR_LASTBRANCH_27_FROM_IP in SDM.
1204 MSR_SKYLAKE_LASTBRANCH_28_FROM_IP is defined as MSR_LASTBRANCH_28_FROM_IP in SDM.
1205 MSR_SKYLAKE_LASTBRANCH_29_FROM_IP is defined as MSR_LASTBRANCH_29_FROM_IP in SDM.
1206 MSR_SKYLAKE_LASTBRANCH_30_FROM_IP is defined as MSR_LASTBRANCH_30_FROM_IP in SDM.
1207 MSR_SKYLAKE_LASTBRANCH_31_FROM_IP is defined as MSR_LASTBRANCH_31_FROM_IP in SDM.
1208 @{
1209**/
1210#define MSR_SKYLAKE_LASTBRANCH_16_FROM_IP 0x00000690
1211#define MSR_SKYLAKE_LASTBRANCH_17_FROM_IP 0x00000691
1212#define MSR_SKYLAKE_LASTBRANCH_18_FROM_IP 0x00000692
1213#define MSR_SKYLAKE_LASTBRANCH_19_FROM_IP 0x00000693
1214#define MSR_SKYLAKE_LASTBRANCH_20_FROM_IP 0x00000694
1215#define MSR_SKYLAKE_LASTBRANCH_21_FROM_IP 0x00000695
1216#define MSR_SKYLAKE_LASTBRANCH_22_FROM_IP 0x00000696
1217#define MSR_SKYLAKE_LASTBRANCH_23_FROM_IP 0x00000697
1218#define MSR_SKYLAKE_LASTBRANCH_24_FROM_IP 0x00000698
1219#define MSR_SKYLAKE_LASTBRANCH_25_FROM_IP 0x00000699
1220#define MSR_SKYLAKE_LASTBRANCH_26_FROM_IP 0x0000069A
1221#define MSR_SKYLAKE_LASTBRANCH_27_FROM_IP 0x0000069B
1222#define MSR_SKYLAKE_LASTBRANCH_28_FROM_IP 0x0000069C
1223#define MSR_SKYLAKE_LASTBRANCH_29_FROM_IP 0x0000069D
1224#define MSR_SKYLAKE_LASTBRANCH_30_FROM_IP 0x0000069E
1225#define MSR_SKYLAKE_LASTBRANCH_31_FROM_IP 0x0000069F
1226/// @}
1227
1228/**
1229 Package. Indicator of Frequency Clipping in the Processor Graphics (R/W)
1230 (frequency refers to processor graphics frequency).
1231
1232 @param ECX MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS (0x000006B0)
1233 @param EAX Lower 32-bits of MSR value.
1234 Described by the type MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER.
1235 @param EDX Upper 32-bits of MSR value.
1236 Described by the type MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER.
1237
1238 <b>Example usage</b>
1239 @code
1240 MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER Msr;
1241
1242 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS);
1243 AsmWriteMsr64 (MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS, Msr.Uint64);
1244 @endcode
1245 @note MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS is defined as MSR_GRAPHICS_PERF_LIMIT_REASONS in SDM.
1246**/
1247#define MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS 0x000006B0
1248
1249/**
1250 MSR information returned for MSR index
1251 #MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS
1252**/
1253typedef union {
1254 ///
1255 /// Individual bit fields
1256 ///
1257 struct {
1258 ///
1259 /// [Bit 0] PROCHOT Status (R0) When set, frequency is reduced due to
1260 /// assertion of external PROCHOT.
1261 ///
1262 UINT32 PROCHOT_Status : 1;
1263 ///
1264 /// [Bit 1] Thermal Status (R0) When set, frequency is reduced due to a
1265 /// thermal event.
1266 ///
1267 UINT32 ThermalStatus : 1;
1268 UINT32 Reserved1 : 3;
1269 ///
1270 /// [Bit 5] Running Average Thermal Limit Status (R0) When set, frequency
1271 /// is reduced due to running average thermal limit.
1272 ///
1273 UINT32 RunningAverageThermalLimitStatus : 1;
1274 ///
1275 /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced due
1276 /// to a thermal alert from a processor Voltage Regulator.
1277 ///
1278 UINT32 VRThermAlertStatus : 1;
1279 ///
1280 /// [Bit 7] VR Thermal Design Current Status (R0) When set, frequency is
1281 /// reduced due to VR TDC limit.
1282 ///
1283 UINT32 VRThermalDesignCurrentStatus : 1;
1284 ///
1285 /// [Bit 8] Other Status (R0) When set, frequency is reduced due to
1286 /// electrical or other constraints.
1287 ///
1288 UINT32 OtherStatus : 1;
1289 UINT32 Reserved2 : 1;
1290 ///
1291 /// [Bit 10] Package/Platform-Level Power Limiting PL1 Status (R0) When
1292 /// set, frequency is reduced due to package/platform-level power limiting
1293 /// PL1.
1294 ///
1295 UINT32 PL1Status : 1;
1296 ///
1297 /// [Bit 11] Package/Platform-Level PL2 Power Limiting Status (R0) When
1298 /// set, frequency is reduced due to package/platform-level power limiting
1299 /// PL2/PL3.
1300 ///
1301 UINT32 PL2Status : 1;
1302 ///
1303 /// [Bit 12] Inefficient Operation Status (R0) When set, processor
1304 /// graphics frequency is operating below target frequency.
1305 ///
1306 UINT32 InefficientOperationStatus : 1;
1307 UINT32 Reserved3 : 3;
1308 ///
1309 /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit
1310 /// has asserted since the log bit was last cleared. This log bit will
1311 /// remain set until cleared by software writing 0.
1312 ///
1313 UINT32 PROCHOT_Log : 1;
1314 ///
1315 /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit
1316 /// has asserted since the log bit was last cleared. This log bit will
1317 /// remain set until cleared by software writing 0.
1318 ///
1319 UINT32 ThermalLog : 1;
1320 UINT32 Reserved4 : 3;
1321 ///
1322 /// [Bit 21] Running Average Thermal Limit Log When set, indicates that
1323 /// the RATL Status bit has asserted since the log bit was last cleared.
1324 /// This log bit will remain set until cleared by software writing 0.
1325 ///
1326 UINT32 RunningAverageThermalLimitLog : 1;
1327 ///
1328 /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm
1329 /// Alert Status bit has asserted since the log bit was last cleared. This
1330 /// log bit will remain set until cleared by software writing 0.
1331 ///
1332 UINT32 VRThermAlertLog : 1;
1333 ///
1334 /// [Bit 23] VR Thermal Design Current Log When set, indicates that the
1335 /// VR Therm Alert Status bit has asserted since the log bit was last
1336 /// cleared. This log bit will remain set until cleared by software
1337 /// writing 0.
1338 ///
1339 UINT32 VRThermalDesignCurrentLog : 1;
1340 ///
1341 /// [Bit 24] Other Log When set, indicates that the OTHER Status bit has
1342 /// asserted since the log bit was last cleared. This log bit will remain
1343 /// set until cleared by software writing 0.
1344 ///
1345 UINT32 OtherLog : 1;
1346 UINT32 Reserved5 : 1;
1347 ///
1348 /// [Bit 26] Package/Platform-Level PL1 Power Limiting Log When set,
1349 /// indicates that the Package/Platform Level PL1 Power Limiting Status
1350 /// bit has asserted since the log bit was last cleared. This log bit will
1351 /// remain set until cleared by software writing 0.
1352 ///
1353 UINT32 PL1Log : 1;
1354 ///
1355 /// [Bit 27] Package/Platform-Level PL2 Power Limiting Log When set,
1356 /// indicates that the Package/Platform Level PL2 Power Limiting Status
1357 /// bit has asserted since the log bit was last cleared. This log bit will
1358 /// remain set until cleared by software writing 0.
1359 ///
1360 UINT32 PL2Log : 1;
1361 ///
1362 /// [Bit 28] Inefficient Operation Log When set, indicates that the
1363 /// Inefficient Operation Status bit has asserted since the log bit was
1364 /// last cleared. This log bit will remain set until cleared by software
1365 /// writing 0.
1366 ///
1367 UINT32 InefficientOperationLog : 1;
1368 UINT32 Reserved6 : 3;
1369 UINT32 Reserved7 : 32;
1370 } Bits;
1371 ///
1372 /// All bit fields as a 32-bit value
1373 ///
1374 UINT32 Uint32;
1375 ///
1376 /// All bit fields as a 64-bit value
1377 ///
1378 UINT64 Uint64;
1379} MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER;
1380
1381/**
1382 Package. Indicator of Frequency Clipping in the Ring Interconnect (R/W)
1383 (frequency refers to ring interconnect in the uncore).
1384
1385 @param ECX MSR_SKYLAKE_RING_PERF_LIMIT_REASONS (0x000006B1)
1386 @param EAX Lower 32-bits of MSR value.
1387 Described by the type MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER.
1388 @param EDX Upper 32-bits of MSR value.
1389 Described by the type MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER.
1390
1391 <b>Example usage</b>
1392 @code
1393 MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER Msr;
1394
1395 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_RING_PERF_LIMIT_REASONS);
1396 AsmWriteMsr64 (MSR_SKYLAKE_RING_PERF_LIMIT_REASONS, Msr.Uint64);
1397 @endcode
1398 @note MSR_SKYLAKE_RING_PERF_LIMIT_REASONS is defined as MSR_RING_PERF_LIMIT_REASONS in SDM.
1399**/
1400#define MSR_SKYLAKE_RING_PERF_LIMIT_REASONS 0x000006B1
1401
1402/**
1403 MSR information returned for MSR index #MSR_SKYLAKE_RING_PERF_LIMIT_REASONS
1404**/
1405typedef union {
1406 ///
1407 /// Individual bit fields
1408 ///
1409 struct {
1410 ///
1411 /// [Bit 0] PROCHOT Status (R0) When set, frequency is reduced due to
1412 /// assertion of external PROCHOT.
1413 ///
1414 UINT32 PROCHOT_Status : 1;
1415 ///
1416 /// [Bit 1] Thermal Status (R0) When set, frequency is reduced due to a
1417 /// thermal event.
1418 ///
1419 UINT32 ThermalStatus : 1;
1420 UINT32 Reserved1 : 3;
1421 ///
1422 /// [Bit 5] Running Average Thermal Limit Status (R0) When set, frequency
1423 /// is reduced due to running average thermal limit.
1424 ///
1425 UINT32 RunningAverageThermalLimitStatus : 1;
1426 ///
1427 /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced due
1428 /// to a thermal alert from a processor Voltage Regulator.
1429 ///
1430 UINT32 VRThermAlertStatus : 1;
1431 ///
1432 /// [Bit 7] VR Thermal Design Current Status (R0) When set, frequency is
1433 /// reduced due to VR TDC limit.
1434 ///
1435 UINT32 VRThermalDesignCurrentStatus : 1;
1436 ///
1437 /// [Bit 8] Other Status (R0) When set, frequency is reduced due to
1438 /// electrical or other constraints.
1439 ///
1440 UINT32 OtherStatus : 1;
1441 UINT32 Reserved2 : 1;
1442 ///
1443 /// [Bit 10] Package/Platform-Level Power Limiting PL1 Status (R0) When
1444 /// set, frequency is reduced due to package/Platform-level power limiting
1445 /// PL1.
1446 ///
1447 UINT32 PL1Status : 1;
1448 ///
1449 /// [Bit 11] Package/Platform-Level PL2 Power Limiting Status (R0) When
1450 /// set, frequency is reduced due to package/Platform-level power limiting
1451 /// PL2/PL3.
1452 ///
1453 UINT32 PL2Status : 1;
1454 UINT32 Reserved3 : 4;
1455 ///
1456 /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit
1457 /// has asserted since the log bit was last cleared. This log bit will
1458 /// remain set until cleared by software writing 0.
1459 ///
1460 UINT32 PROCHOT_Log : 1;
1461 ///
1462 /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit
1463 /// has asserted since the log bit was last cleared. This log bit will
1464 /// remain set until cleared by software writing 0.
1465 ///
1466 UINT32 ThermalLog : 1;
1467 UINT32 Reserved4 : 3;
1468 ///
1469 /// [Bit 21] Running Average Thermal Limit Log When set, indicates that
1470 /// the RATL Status bit has asserted since the log bit was last cleared.
1471 /// This log bit will remain set until cleared by software writing 0.
1472 ///
1473 UINT32 RunningAverageThermalLimitLog : 1;
1474 ///
1475 /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm
1476 /// Alert Status bit has asserted since the log bit was last cleared. This
1477 /// log bit will remain set until cleared by software writing 0.
1478 ///
1479 UINT32 VRThermAlertLog : 1;
1480 ///
1481 /// [Bit 23] VR Thermal Design Current Log When set, indicates that the
1482 /// VR Therm Alert Status bit has asserted since the log bit was last
1483 /// cleared. This log bit will remain set until cleared by software
1484 /// writing 0.
1485 ///
1486 UINT32 VRThermalDesignCurrentLog : 1;
1487 ///
1488 /// [Bit 24] Other Log When set, indicates that the OTHER Status bit has
1489 /// asserted since the log bit was last cleared. This log bit will remain
1490 /// set until cleared by software writing 0.
1491 ///
1492 UINT32 OtherLog : 1;
1493 UINT32 Reserved5 : 1;
1494 ///
1495 /// [Bit 26] Package/Platform-Level PL1 Power Limiting Log When set,
1496 /// indicates that the Package/Platform Level PL1 Power Limiting Status
1497 /// bit has asserted since the log bit was last cleared. This log bit will
1498 /// remain set until cleared by software writing 0.
1499 ///
1500 UINT32 PL1Log : 1;
1501 ///
1502 /// [Bit 27] Package/Platform-Level PL2 Power Limiting Log When set,
1503 /// indicates that the Package/Platform Level PL2 Power Limiting Status
1504 /// bit has asserted since the log bit was last cleared. This log bit will
1505 /// remain set until cleared by software writing 0.
1506 ///
1507 UINT32 PL2Log : 1;
1508 UINT32 Reserved6 : 4;
1509 UINT32 Reserved7 : 32;
1510 } Bits;
1511 ///
1512 /// All bit fields as a 32-bit value
1513 ///
1514 UINT32 Uint32;
1515 ///
1516 /// All bit fields as a 64-bit value
1517 ///
1518 UINT64 Uint64;
1519} MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER;
1520
1521/**
1522 Thread. Last Branch Record n To IP (R/W) One of 32 triplets of last branch
1523 record registers on the last branch record stack. This part of the stack
1524 contains pointers to the destination instruction. See also: - Last Branch
1525 Record Stack TOS at 1C9H - Section 17.10.
1526
1527 @param ECX MSR_SKYLAKE_LASTBRANCH_n_TO_IP
1528 @param EAX Lower 32-bits of MSR value.
1529 @param EDX Upper 32-bits of MSR value.
1530
1531 <b>Example usage</b>
1532 @code
1533 UINT64 Msr;
1534
1535 Msr = AsmReadMsr64 (MSR_SKYLAKE_LASTBRANCH_16_TO_IP);
1536 AsmWriteMsr64 (MSR_SKYLAKE_LASTBRANCH_16_TO_IP, Msr);
1537 @endcode
1538 @note MSR_SKYLAKE_LASTBRANCH_16_TO_IP is defined as MSR_LASTBRANCH_16_TO_IP in SDM.
1539 MSR_SKYLAKE_LASTBRANCH_17_TO_IP is defined as MSR_LASTBRANCH_17_TO_IP in SDM.
1540 MSR_SKYLAKE_LASTBRANCH_18_TO_IP is defined as MSR_LASTBRANCH_18_TO_IP in SDM.
1541 MSR_SKYLAKE_LASTBRANCH_19_TO_IP is defined as MSR_LASTBRANCH_19_TO_IP in SDM.
1542 MSR_SKYLAKE_LASTBRANCH_20_TO_IP is defined as MSR_LASTBRANCH_20_TO_IP in SDM.
1543 MSR_SKYLAKE_LASTBRANCH_21_TO_IP is defined as MSR_LASTBRANCH_21_TO_IP in SDM.
1544 MSR_SKYLAKE_LASTBRANCH_22_TO_IP is defined as MSR_LASTBRANCH_22_TO_IP in SDM.
1545 MSR_SKYLAKE_LASTBRANCH_23_TO_IP is defined as MSR_LASTBRANCH_23_TO_IP in SDM.
1546 MSR_SKYLAKE_LASTBRANCH_24_TO_IP is defined as MSR_LASTBRANCH_24_TO_IP in SDM.
1547 MSR_SKYLAKE_LASTBRANCH_25_TO_IP is defined as MSR_LASTBRANCH_25_TO_IP in SDM.
1548 MSR_SKYLAKE_LASTBRANCH_26_TO_IP is defined as MSR_LASTBRANCH_26_TO_IP in SDM.
1549 MSR_SKYLAKE_LASTBRANCH_27_TO_IP is defined as MSR_LASTBRANCH_27_TO_IP in SDM.
1550 MSR_SKYLAKE_LASTBRANCH_28_TO_IP is defined as MSR_LASTBRANCH_28_TO_IP in SDM.
1551 MSR_SKYLAKE_LASTBRANCH_29_TO_IP is defined as MSR_LASTBRANCH_29_TO_IP in SDM.
1552 MSR_SKYLAKE_LASTBRANCH_30_TO_IP is defined as MSR_LASTBRANCH_30_TO_IP in SDM.
1553 MSR_SKYLAKE_LASTBRANCH_31_TO_IP is defined as MSR_LASTBRANCH_31_TO_IP in SDM.
1554 @{
1555**/
1556#define MSR_SKYLAKE_LASTBRANCH_16_TO_IP 0x000006D0
1557#define MSR_SKYLAKE_LASTBRANCH_17_TO_IP 0x000006D1
1558#define MSR_SKYLAKE_LASTBRANCH_18_TO_IP 0x000006D2
1559#define MSR_SKYLAKE_LASTBRANCH_19_TO_IP 0x000006D3
1560#define MSR_SKYLAKE_LASTBRANCH_20_TO_IP 0x000006D4
1561#define MSR_SKYLAKE_LASTBRANCH_21_TO_IP 0x000006D5
1562#define MSR_SKYLAKE_LASTBRANCH_22_TO_IP 0x000006D6
1563#define MSR_SKYLAKE_LASTBRANCH_23_TO_IP 0x000006D7
1564#define MSR_SKYLAKE_LASTBRANCH_24_TO_IP 0x000006D8
1565#define MSR_SKYLAKE_LASTBRANCH_25_TO_IP 0x000006D9
1566#define MSR_SKYLAKE_LASTBRANCH_26_TO_IP 0x000006DA
1567#define MSR_SKYLAKE_LASTBRANCH_27_TO_IP 0x000006DB
1568#define MSR_SKYLAKE_LASTBRANCH_28_TO_IP 0x000006DC
1569#define MSR_SKYLAKE_LASTBRANCH_29_TO_IP 0x000006DD
1570#define MSR_SKYLAKE_LASTBRANCH_30_TO_IP 0x000006DE
1571#define MSR_SKYLAKE_LASTBRANCH_31_TO_IP 0x000006DF
1572/// @}
1573
1574/**
1575 Thread. Last Branch Record n Additional Information (R/W) One of 32 triplet
1576 of last branch record registers on the last branch record stack. This part
1577 of the stack contains flag, TSX-related and elapsed cycle information. See
1578 also: - Last Branch Record Stack TOS at 1C9H - Section 17.7.1, "LBR
1579 Stack.".
1580
1581 @param ECX MSR_SKYLAKE_LBR_INFO_n
1582 @param EAX Lower 32-bits of MSR value.
1583 @param EDX Upper 32-bits of MSR value.
1584
1585 <b>Example usage</b>
1586 @code
1587 UINT64 Msr;
1588
1589 Msr = AsmReadMsr64 (MSR_SKYLAKE_LBR_INFO_0);
1590 AsmWriteMsr64 (MSR_SKYLAKE_LBR_INFO_0, Msr);
1591 @endcode
1592 @note MSR_SKYLAKE_LBR_INFO_0 is defined as MSR_LBR_INFO_0 in SDM.
1593 MSR_SKYLAKE_LBR_INFO_1 is defined as MSR_LBR_INFO_1 in SDM.
1594 MSR_SKYLAKE_LBR_INFO_2 is defined as MSR_LBR_INFO_2 in SDM.
1595 MSR_SKYLAKE_LBR_INFO_3 is defined as MSR_LBR_INFO_3 in SDM.
1596 MSR_SKYLAKE_LBR_INFO_4 is defined as MSR_LBR_INFO_4 in SDM.
1597 MSR_SKYLAKE_LBR_INFO_5 is defined as MSR_LBR_INFO_5 in SDM.
1598 MSR_SKYLAKE_LBR_INFO_6 is defined as MSR_LBR_INFO_6 in SDM.
1599 MSR_SKYLAKE_LBR_INFO_7 is defined as MSR_LBR_INFO_7 in SDM.
1600 MSR_SKYLAKE_LBR_INFO_8 is defined as MSR_LBR_INFO_8 in SDM.
1601 MSR_SKYLAKE_LBR_INFO_9 is defined as MSR_LBR_INFO_9 in SDM.
1602 MSR_SKYLAKE_LBR_INFO_10 is defined as MSR_LBR_INFO_10 in SDM.
1603 MSR_SKYLAKE_LBR_INFO_11 is defined as MSR_LBR_INFO_11 in SDM.
1604 MSR_SKYLAKE_LBR_INFO_12 is defined as MSR_LBR_INFO_12 in SDM.
1605 MSR_SKYLAKE_LBR_INFO_13 is defined as MSR_LBR_INFO_13 in SDM.
1606 MSR_SKYLAKE_LBR_INFO_14 is defined as MSR_LBR_INFO_14 in SDM.
1607 MSR_SKYLAKE_LBR_INFO_15 is defined as MSR_LBR_INFO_15 in SDM.
1608 MSR_SKYLAKE_LBR_INFO_16 is defined as MSR_LBR_INFO_16 in SDM.
1609 MSR_SKYLAKE_LBR_INFO_17 is defined as MSR_LBR_INFO_17 in SDM.
1610 MSR_SKYLAKE_LBR_INFO_18 is defined as MSR_LBR_INFO_18 in SDM.
1611 MSR_SKYLAKE_LBR_INFO_19 is defined as MSR_LBR_INFO_19 in SDM.
1612 MSR_SKYLAKE_LBR_INFO_20 is defined as MSR_LBR_INFO_20 in SDM.
1613 MSR_SKYLAKE_LBR_INFO_21 is defined as MSR_LBR_INFO_21 in SDM.
1614 MSR_SKYLAKE_LBR_INFO_22 is defined as MSR_LBR_INFO_22 in SDM.
1615 MSR_SKYLAKE_LBR_INFO_23 is defined as MSR_LBR_INFO_23 in SDM.
1616 MSR_SKYLAKE_LBR_INFO_24 is defined as MSR_LBR_INFO_24 in SDM.
1617 MSR_SKYLAKE_LBR_INFO_25 is defined as MSR_LBR_INFO_25 in SDM.
1618 MSR_SKYLAKE_LBR_INFO_26 is defined as MSR_LBR_INFO_26 in SDM.
1619 MSR_SKYLAKE_LBR_INFO_27 is defined as MSR_LBR_INFO_27 in SDM.
1620 MSR_SKYLAKE_LBR_INFO_28 is defined as MSR_LBR_INFO_28 in SDM.
1621 MSR_SKYLAKE_LBR_INFO_29 is defined as MSR_LBR_INFO_29 in SDM.
1622 MSR_SKYLAKE_LBR_INFO_30 is defined as MSR_LBR_INFO_30 in SDM.
1623 MSR_SKYLAKE_LBR_INFO_31 is defined as MSR_LBR_INFO_31 in SDM.
1624 @{
1625**/
1626#define MSR_SKYLAKE_LBR_INFO_0 0x00000DC0
1627#define MSR_SKYLAKE_LBR_INFO_1 0x00000DC1
1628#define MSR_SKYLAKE_LBR_INFO_2 0x00000DC2
1629#define MSR_SKYLAKE_LBR_INFO_3 0x00000DC3
1630#define MSR_SKYLAKE_LBR_INFO_4 0x00000DC4
1631#define MSR_SKYLAKE_LBR_INFO_5 0x00000DC5
1632#define MSR_SKYLAKE_LBR_INFO_6 0x00000DC6
1633#define MSR_SKYLAKE_LBR_INFO_7 0x00000DC7
1634#define MSR_SKYLAKE_LBR_INFO_8 0x00000DC8
1635#define MSR_SKYLAKE_LBR_INFO_9 0x00000DC9
1636#define MSR_SKYLAKE_LBR_INFO_10 0x00000DCA
1637#define MSR_SKYLAKE_LBR_INFO_11 0x00000DCB
1638#define MSR_SKYLAKE_LBR_INFO_12 0x00000DCC
1639#define MSR_SKYLAKE_LBR_INFO_13 0x00000DCD
1640#define MSR_SKYLAKE_LBR_INFO_14 0x00000DCE
1641#define MSR_SKYLAKE_LBR_INFO_15 0x00000DCF
1642#define MSR_SKYLAKE_LBR_INFO_16 0x00000DD0
1643#define MSR_SKYLAKE_LBR_INFO_17 0x00000DD1
1644#define MSR_SKYLAKE_LBR_INFO_18 0x00000DD2
1645#define MSR_SKYLAKE_LBR_INFO_19 0x00000DD3
1646#define MSR_SKYLAKE_LBR_INFO_20 0x00000DD4
1647#define MSR_SKYLAKE_LBR_INFO_21 0x00000DD5
1648#define MSR_SKYLAKE_LBR_INFO_22 0x00000DD6
1649#define MSR_SKYLAKE_LBR_INFO_23 0x00000DD7
1650#define MSR_SKYLAKE_LBR_INFO_24 0x00000DD8
1651#define MSR_SKYLAKE_LBR_INFO_25 0x00000DD9
1652#define MSR_SKYLAKE_LBR_INFO_26 0x00000DDA
1653#define MSR_SKYLAKE_LBR_INFO_27 0x00000DDB
1654#define MSR_SKYLAKE_LBR_INFO_28 0x00000DDC
1655#define MSR_SKYLAKE_LBR_INFO_29 0x00000DDD
1656#define MSR_SKYLAKE_LBR_INFO_30 0x00000DDE
1657#define MSR_SKYLAKE_LBR_INFO_31 0x00000DDF
1658/// @}
1659
1660/**
1661 Package. Uncore fixed counter control (R/W).
1662
1663 @param ECX MSR_SKYLAKE_UNC_PERF_FIXED_CTRL (0x00000394)
1664 @param EAX Lower 32-bits of MSR value.
1665 Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER.
1666 @param EDX Upper 32-bits of MSR value.
1667 Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER.
1668
1669 <b>Example usage</b>
1670 @code
1671 MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER Msr;
1672
1673 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTRL);
1674 AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTRL, Msr.Uint64);
1675 @endcode
1676 @note MSR_SKYLAKE_UNC_PERF_FIXED_CTRL is defined as MSR_UNC_PERF_FIXED_CTRL in SDM.
1677**/
1678#define MSR_SKYLAKE_UNC_PERF_FIXED_CTRL 0x00000394
1679
1680/**
1681 MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_FIXED_CTRL
1682**/
1683typedef union {
1684 ///
1685 /// Individual bit fields
1686 ///
1687 struct {
1688 UINT32 Reserved1 : 20;
1689 ///
1690 /// [Bit 20] Enable overflow propagation.
1691 ///
1692 UINT32 EnableOverflow : 1;
1693 UINT32 Reserved2 : 1;
1694 ///
1695 /// [Bit 22] Enable counting.
1696 ///
1697 UINT32 EnableCounting : 1;
1698 UINT32 Reserved3 : 9;
1699 UINT32 Reserved4 : 32;
1700 } Bits;
1701 ///
1702 /// All bit fields as a 32-bit value
1703 ///
1704 UINT32 Uint32;
1705 ///
1706 /// All bit fields as a 64-bit value
1707 ///
1708 UINT64 Uint64;
1709} MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER;
1710
1711/**
1712 Package. Uncore fixed counter.
1713
1714 @param ECX MSR_SKYLAKE_UNC_PERF_FIXED_CTR (0x00000395)
1715 @param EAX Lower 32-bits of MSR value.
1716 Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER.
1717 @param EDX Upper 32-bits of MSR value.
1718 Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER.
1719
1720 <b>Example usage</b>
1721 @code
1722 MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER Msr;
1723
1724 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTR);
1725 AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTR, Msr.Uint64);
1726 @endcode
1727 @note MSR_SKYLAKE_UNC_PERF_FIXED_CTR is defined as MSR_UNC_PERF_FIXED_CTR in SDM.
1728**/
1729#define MSR_SKYLAKE_UNC_PERF_FIXED_CTR 0x00000395
1730
1731/**
1732 MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_FIXED_CTR
1733**/
1734typedef union {
1735 ///
1736 /// Individual bit fields
1737 ///
1738 struct {
1739 ///
1740 /// [Bits 31:0] Current count.
1741 ///
1742 UINT32 CurrentCount : 32;
1743 ///
1744 /// [Bits 43:32] Current count.
1745 ///
1746 UINT32 CurrentCountHi : 12;
1747 UINT32 Reserved : 20;
1748 } Bits;
1749 ///
1750 /// All bit fields as a 64-bit value
1751 ///
1752 UINT64 Uint64;
1753} MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER;
1754
1755/**
1756 Package. Uncore C-Box configuration information (R/O).
1757
1758 @param ECX MSR_SKYLAKE_UNC_CBO_CONFIG (0x00000396)
1759 @param EAX Lower 32-bits of MSR value.
1760 Described by the type MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER.
1761 @param EDX Upper 32-bits of MSR value.
1762 Described by the type MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER.
1763
1764 <b>Example usage</b>
1765 @code
1766 MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER Msr;
1767
1768 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_CONFIG);
1769 @endcode
1770 @note MSR_SKYLAKE_UNC_CBO_CONFIG is defined as MSR_UNC_CBO_CONFIG in SDM.
1771**/
1772#define MSR_SKYLAKE_UNC_CBO_CONFIG 0x00000396
1773
1774/**
1775 MSR information returned for MSR index #MSR_SKYLAKE_UNC_CBO_CONFIG
1776**/
1777typedef union {
1778 ///
1779 /// Individual bit fields
1780 ///
1781 struct {
1782 ///
1783 /// [Bits 3:0] Specifies the number of C-Box units with programmable
1784 /// counters (including processor cores and processor graphics),.
1785 ///
1786 UINT32 CBox : 4;
1787 UINT32 Reserved1 : 28;
1788 UINT32 Reserved2 : 32;
1789 } Bits;
1790 ///
1791 /// All bit fields as a 32-bit value
1792 ///
1793 UINT32 Uint32;
1794 ///
1795 /// All bit fields as a 64-bit value
1796 ///
1797 UINT64 Uint64;
1798} MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER;
1799
1800/**
1801 Package. Uncore Arb unit, performance counter 0.
1802
1803 @param ECX MSR_SKYLAKE_UNC_ARB_PERFCTR0 (0x000003B0)
1804 @param EAX Lower 32-bits of MSR value.
1805 @param EDX Upper 32-bits of MSR value.
1806
1807 <b>Example usage</b>
1808 @code
1809 UINT64 Msr;
1810
1811 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR0);
1812 AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR0, Msr);
1813 @endcode
1814 @note MSR_SKYLAKE_UNC_ARB_PERFCTR0 is defined as MSR_UNC_ARB_PERFCTR0 in SDM.
1815**/
1816#define MSR_SKYLAKE_UNC_ARB_PERFCTR0 0x000003B0
1817
1818/**
1819 Package. Uncore Arb unit, performance counter 1.
1820
1821 @param ECX MSR_SKYLAKE_UNC_ARB_PERFCTR1 (0x000003B1)
1822 @param EAX Lower 32-bits of MSR value.
1823 @param EDX Upper 32-bits of MSR value.
1824
1825 <b>Example usage</b>
1826 @code
1827 UINT64 Msr;
1828
1829 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR1);
1830 AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR1, Msr);
1831 @endcode
1832 @note MSR_SKYLAKE_UNC_ARB_PERFCTR1 is defined as MSR_UNC_ARB_PERFCTR1 in SDM.
1833**/
1834#define MSR_SKYLAKE_UNC_ARB_PERFCTR1 0x000003B1
1835
1836/**
1837 Package. Uncore Arb unit, counter 0 event select MSR.
1838
1839 @param ECX MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0 (0x000003B2)
1840 @param EAX Lower 32-bits of MSR value.
1841 @param EDX Upper 32-bits of MSR value.
1842
1843 <b>Example usage</b>
1844 @code
1845 UINT64 Msr;
1846
1847 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0);
1848 AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0, Msr);
1849 @endcode
1850 @note MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0 is defined as MSR_UNC_ARB_PERFEVTSEL0 in SDM.
1851**/
1852#define MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0 0x000003B2
1853
1854/**
1855 Package. Uncore Arb unit, counter 1 event select MSR.
1856
1857 @param ECX MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 (0x000003B3)
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_SKYLAKE_UNC_ARB_PERFEVTSEL1);
1866 AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1, Msr);
1867 @endcode
1868 @note MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 is defined as MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 in SDM.
1869**/
1870#define MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 0x000003B3
1871
1872/**
1873 Package. Uncore C-Box 0, counter 0 event select MSR.
1874
1875 @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0 (0x00000700)
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_SKYLAKE_UNC_CBO_0_PERFEVTSEL0);
1884 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0, Msr);
1885 @endcode
1886 @note MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0 is defined as MSR_UNC_CBO_0_PERFEVTSEL0 in SDM.
1887**/
1888#define MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0 0x00000700
1889
1890/**
1891 Package. Uncore C-Box 0, counter 1 event select MSR.
1892
1893 @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1 (0x00000701)
1894 @param EAX Lower 32-bits of MSR value.
1895 @param EDX Upper 32-bits of MSR value.
1896
1897 <b>Example usage</b>
1898 @code
1899 UINT64 Msr;
1900
1901 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1);
1902 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1, Msr);
1903 @endcode
1904 @note MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1 is defined as MSR_UNC_CBO_0_PERFEVTSEL1 in SDM.
1905**/
1906#define MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1 0x00000701
1907
1908/**
1909 Package. Uncore C-Box 0, performance counter 0.
1910
1911 @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFCTR0 (0x00000706)
1912 @param EAX Lower 32-bits of MSR value.
1913 @param EDX Upper 32-bits of MSR value.
1914
1915 <b>Example usage</b>
1916 @code
1917 UINT64 Msr;
1918
1919 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR0);
1920 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR0, Msr);
1921 @endcode
1922 @note MSR_SKYLAKE_UNC_CBO_0_PERFCTR0 is defined as MSR_UNC_CBO_0_PERFCTR0 in SDM.
1923**/
1924#define MSR_SKYLAKE_UNC_CBO_0_PERFCTR0 0x00000706
1925
1926/**
1927 Package. Uncore C-Box 0, performance counter 1.
1928
1929 @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFCTR1 (0x00000707)
1930 @param EAX Lower 32-bits of MSR value.
1931 @param EDX Upper 32-bits of MSR value.
1932
1933 <b>Example usage</b>
1934 @code
1935 UINT64 Msr;
1936
1937 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR1);
1938 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR1, Msr);
1939 @endcode
1940 @note MSR_SKYLAKE_UNC_CBO_0_PERFCTR1 is defined as MSR_UNC_CBO_0_PERFCTR1 in SDM.
1941**/
1942#define MSR_SKYLAKE_UNC_CBO_0_PERFCTR1 0x00000707
1943
1944/**
1945 Package. Uncore C-Box 1, counter 0 event select MSR.
1946
1947 @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0 (0x00000710)
1948 @param EAX Lower 32-bits of MSR value.
1949 @param EDX Upper 32-bits of MSR value.
1950
1951 <b>Example usage</b>
1952 @code
1953 UINT64 Msr;
1954
1955 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0);
1956 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0, Msr);
1957 @endcode
1958 @note MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0 is defined as MSR_UNC_CBO_1_PERFEVTSEL0 in SDM.
1959**/
1960#define MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0 0x00000710
1961
1962/**
1963 Package. Uncore C-Box 1, counter 1 event select MSR.
1964
1965 @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1 (0x00000711)
1966 @param EAX Lower 32-bits of MSR value.
1967 @param EDX Upper 32-bits of MSR value.
1968
1969 <b>Example usage</b>
1970 @code
1971 UINT64 Msr;
1972
1973 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1);
1974 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1, Msr);
1975 @endcode
1976 @note MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1 is defined as MSR_UNC_CBO_1_PERFEVTSEL1 in SDM.
1977**/
1978#define MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1 0x00000711
1979
1980/**
1981 Package. Uncore C-Box 1, performance counter 0.
1982
1983 @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFCTR0 (0x00000716)
1984 @param EAX Lower 32-bits of MSR value.
1985 @param EDX Upper 32-bits of MSR value.
1986
1987 <b>Example usage</b>
1988 @code
1989 UINT64 Msr;
1990
1991 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR0);
1992 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR0, Msr);
1993 @endcode
1994 @note MSR_SKYLAKE_UNC_CBO_1_PERFCTR0 is defined as MSR_UNC_CBO_1_PERFCTR0 in SDM.
1995**/
1996#define MSR_SKYLAKE_UNC_CBO_1_PERFCTR0 0x00000716
1997
1998/**
1999 Package. Uncore C-Box 1, performance counter 1.
2000
2001 @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFCTR1 (0x00000717)
2002 @param EAX Lower 32-bits of MSR value.
2003 @param EDX Upper 32-bits of MSR value.
2004
2005 <b>Example usage</b>
2006 @code
2007 UINT64 Msr;
2008
2009 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR1);
2010 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR1, Msr);
2011 @endcode
2012 @note MSR_SKYLAKE_UNC_CBO_1_PERFCTR1 is defined as MSR_UNC_CBO_1_PERFCTR1 in SDM.
2013**/
2014#define MSR_SKYLAKE_UNC_CBO_1_PERFCTR1 0x00000717
2015
2016/**
2017 Package. Uncore C-Box 2, counter 0 event select MSR.
2018
2019 @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0 (0x00000720)
2020 @param EAX Lower 32-bits of MSR value.
2021 @param EDX Upper 32-bits of MSR value.
2022
2023 <b>Example usage</b>
2024 @code
2025 UINT64 Msr;
2026
2027 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0);
2028 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0, Msr);
2029 @endcode
2030 @note MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0 is defined as MSR_UNC_CBO_2_PERFEVTSEL0 in SDM.
2031**/
2032#define MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0 0x00000720
2033
2034/**
2035 Package. Uncore C-Box 2, counter 1 event select MSR.
2036
2037 @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1 (0x00000721)
2038 @param EAX Lower 32-bits of MSR value.
2039 @param EDX Upper 32-bits of MSR value.
2040
2041 <b>Example usage</b>
2042 @code
2043 UINT64 Msr;
2044
2045 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1);
2046 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1, Msr);
2047 @endcode
2048 @note MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1 is defined as MSR_UNC_CBO_2_PERFEVTSEL1 in SDM.
2049**/
2050#define MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1 0x00000721
2051
2052/**
2053 Package. Uncore C-Box 2, performance counter 0.
2054
2055 @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFCTR0 (0x00000726)
2056 @param EAX Lower 32-bits of MSR value.
2057 @param EDX Upper 32-bits of MSR value.
2058
2059 <b>Example usage</b>
2060 @code
2061 UINT64 Msr;
2062
2063 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR0);
2064 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR0, Msr);
2065 @endcode
2066 @note MSR_SKYLAKE_UNC_CBO_2_PERFCTR0 is defined as MSR_UNC_CBO_2_PERFCTR0 in SDM.
2067**/
2068#define MSR_SKYLAKE_UNC_CBO_2_PERFCTR0 0x00000726
2069
2070/**
2071 Package. Uncore C-Box 2, performance counter 1.
2072
2073 @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFCTR1 (0x00000727)
2074 @param EAX Lower 32-bits of MSR value.
2075 @param EDX Upper 32-bits of MSR value.
2076
2077 <b>Example usage</b>
2078 @code
2079 UINT64 Msr;
2080
2081 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR1);
2082 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR1, Msr);
2083 @endcode
2084 @note MSR_SKYLAKE_UNC_CBO_2_PERFCTR1 is defined as MSR_UNC_CBO_2_PERFCTR1 in SDM.
2085**/
2086#define MSR_SKYLAKE_UNC_CBO_2_PERFCTR1 0x00000727
2087
2088/**
2089 Package. Uncore C-Box 3, counter 0 event select MSR.
2090
2091 @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0 (0x00000730)
2092 @param EAX Lower 32-bits of MSR value.
2093 @param EDX Upper 32-bits of MSR value.
2094
2095 <b>Example usage</b>
2096 @code
2097 UINT64 Msr;
2098
2099 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0);
2100 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0, Msr);
2101 @endcode
2102 @note MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0 is defined as MSR_UNC_CBO_3_PERFEVTSEL0 in SDM.
2103**/
2104#define MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0 0x00000730
2105
2106/**
2107 Package. Uncore C-Box 3, counter 1 event select MSR.
2108
2109 @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1 (0x00000731)
2110 @param EAX Lower 32-bits of MSR value.
2111 @param EDX Upper 32-bits of MSR value.
2112
2113 <b>Example usage</b>
2114 @code
2115 UINT64 Msr;
2116
2117 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1);
2118 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1, Msr);
2119 @endcode
2120 @note MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1 is defined as MSR_UNC_CBO_3_PERFEVTSEL1 in SDM.
2121**/
2122#define MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1 0x00000731
2123
2124/**
2125 Package. Uncore C-Box 3, performance counter 0.
2126
2127 @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFCTR0 (0x00000736)
2128 @param EAX Lower 32-bits of MSR value.
2129 @param EDX Upper 32-bits of MSR value.
2130
2131 <b>Example usage</b>
2132 @code
2133 UINT64 Msr;
2134
2135 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR0);
2136 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR0, Msr);
2137 @endcode
2138 @note MSR_SKYLAKE_UNC_CBO_3_PERFCTR0 is defined as MSR_UNC_CBO_3_PERFCTR0 in SDM.
2139**/
2140#define MSR_SKYLAKE_UNC_CBO_3_PERFCTR0 0x00000736
2141
2142/**
2143 Package. Uncore C-Box 3, performance counter 1.
2144
2145 @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFCTR1 (0x00000737)
2146 @param EAX Lower 32-bits of MSR value.
2147 @param EDX Upper 32-bits of MSR value.
2148
2149 <b>Example usage</b>
2150 @code
2151 UINT64 Msr;
2152
2153 Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR1);
2154 AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR1, Msr);
2155 @endcode
2156 @note MSR_SKYLAKE_UNC_CBO_3_PERFCTR1 is defined as MSR_UNC_CBO_3_PERFCTR1 in SDM.
2157**/
2158#define MSR_SKYLAKE_UNC_CBO_3_PERFCTR1 0x00000737
2159
2160/**
2161 Package. Uncore PMU global control.
2162
2163 @param ECX MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL (0x00000E01)
2164 @param EAX Lower 32-bits of MSR value.
2165 Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER.
2166 @param EDX Upper 32-bits of MSR value.
2167 Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER.
2168
2169 <b>Example usage</b>
2170 @code
2171 MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER Msr;
2172
2173 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL);
2174 AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL, Msr.Uint64);
2175 @endcode
2176 @note MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL is defined as MSR_UNC_PERF_GLOBAL_CTRL in SDM.
2177**/
2178#define MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL 0x00000E01
2179
2180/**
2181 MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL
2182**/
2183typedef union {
2184 ///
2185 /// Individual bit fields
2186 ///
2187 struct {
2188 ///
2189 /// [Bit 0] Slice 0 select.
2190 ///
2191 UINT32 PMI_Sel_Slice0 : 1;
2192 ///
2193 /// [Bit 1] Slice 1 select.
2194 ///
2195 UINT32 PMI_Sel_Slice1 : 1;
2196 ///
2197 /// [Bit 2] Slice 2 select.
2198 ///
2199 UINT32 PMI_Sel_Slice2 : 1;
2200 ///
2201 /// [Bit 3] Slice 3 select.
2202 ///
2203 UINT32 PMI_Sel_Slice3 : 1;
2204 ///
2205 /// [Bit 4] Slice 4select.
2206 ///
2207 UINT32 PMI_Sel_Slice4 : 1;
2208 UINT32 Reserved1 : 14;
2209 UINT32 Reserved2 : 10;
2210 ///
2211 /// [Bit 29] Enable all uncore counters.
2212 ///
2213 UINT32 EN : 1;
2214 ///
2215 /// [Bit 30] Enable wake on PMI.
2216 ///
2217 UINT32 WakePMI : 1;
2218 ///
2219 /// [Bit 31] Enable Freezing counter when overflow.
2220 ///
2221 UINT32 FREEZE : 1;
2222 UINT32 Reserved3 : 32;
2223 } Bits;
2224 ///
2225 /// All bit fields as a 32-bit value
2226 ///
2227 UINT32 Uint32;
2228 ///
2229 /// All bit fields as a 64-bit value
2230 ///
2231 UINT64 Uint64;
2232} MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER;
2233
2234/**
2235 Package. Uncore PMU main status.
2236
2237 @param ECX MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS (0x00000E02)
2238 @param EAX Lower 32-bits of MSR value.
2239 Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER.
2240 @param EDX Upper 32-bits of MSR value.
2241 Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER.
2242
2243 <b>Example usage</b>
2244 @code
2245 MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER Msr;
2246
2247 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS);
2248 AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS, Msr.Uint64);
2249 @endcode
2250 @note MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS is defined as MSR_UNC_PERF_GLOBAL_STATUS in SDM.
2251**/
2252#define MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS 0x00000E02
2253
2254/**
2255 MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS
2256**/
2257typedef union {
2258 ///
2259 /// Individual bit fields
2260 ///
2261 struct {
2262 ///
2263 /// [Bit 0] Fixed counter overflowed.
2264 ///
2265 UINT32 Fixed : 1;
2266 ///
2267 /// [Bit 1] An ARB counter overflowed.
2268 ///
2269 UINT32 ARB : 1;
2270 UINT32 Reserved1 : 1;
2271 ///
2272 /// [Bit 3] A CBox counter overflowed (on any slice).
2273 ///
2274 UINT32 CBox : 1;
2275 UINT32 Reserved2 : 28;
2276 UINT32 Reserved3 : 32;
2277 } Bits;
2278 ///
2279 /// All bit fields as a 32-bit value
2280 ///
2281 UINT32 Uint32;
2282 ///
2283 /// All bit fields as a 64-bit value
2284 ///
2285 UINT64 Uint64;
2286} MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER;
2287
2288/**
2289 Package. NPK Address Used by AET Messages (R/W).
2290
2291 @param ECX MSR_SKYLAKE_TRACE_HUB_STH_ACPIBAR_BASE (0x00000080)
2292 @param EAX Lower 32-bits of MSR value.
2293 Described by the type MSR_SKYLAKE_TRACE_HUB_STH_ACPIBAR_BASE_REGISTER.
2294 @param EDX Upper 32-bits of MSR value.
2295 Described by the type MSR_SKYLAKE_TRACE_HUB_STH_ACPIBAR_BASE_REGISTER.
2296
2297 <b>Example usage</b>
2298 @code
2299 MSR_SKYLAKE_TRACE_HUB_STH_ACPIBAR_BASE_REGISTER Msr;
2300
2301 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_TRACE_HUB_STH_ACPIBAR_BASE);
2302 AsmWriteMsr64 (MSR_SKYLAKE_TRACE_HUB_STH_ACPIBAR_BASE, Msr.Uint64);
2303 @endcode
2304**/
2305#define MSR_SKYLAKE_TRACE_HUB_STH_ACPIBAR_BASE 0x00000080
2306
2307/**
2308 MSR information returned for MSR index
2309 #MSR_SKYLAKE_TRACE_HUB_STH_ACPIBAR_BASE
2310**/
2311typedef union {
2312 ///
2313 /// Individual bit fields
2314 ///
2315 struct {
2316 ///
2317 /// [Bit 0] Lock Bit If set, this MSR cannot be re-written anymore. Lock
2318 /// bit has to be set in order for the AET packets to be directed to NPK
2319 /// MMIO.
2320 ///
2321 UINT32 Fix_Me_1 : 1;
2322 UINT32 Reserved : 17;
2323 ///
2324 /// [Bits 31:18] ACPIBAR_BASE_ADDRESS AET target address in NPK MMIO space.
2325 ///
2326 UINT32 ACPIBAR_BASE_ADDRESS : 14;
2327 ///
2328 /// [Bits 63:32] ACPIBAR_BASE_ADDRESS AET target address in NPK MMIO space.
2329 ///
2330 UINT32 Fix_Me_2 : 32;
2331 } Bits;
2332 ///
2333 /// All bit fields as a 64-bit value
2334 ///
2335 UINT64 Uint64;
2336} MSR_SKYLAKE_TRACE_HUB_STH_ACPIBAR_BASE_REGISTER;
2337
2338/**
2339 Core. Processor Reserved Memory Range Register - Physical Base Control
2340 Register (R/W).
2341
2342 @param ECX MSR_SKYLAKE_PRMRR_PHYS_BASE (0x000001F4)
2343 @param EAX Lower 32-bits of MSR value.
2344 Described by the type MSR_SKYLAKE_PRMRR_PHYS_BASE_REGISTER.
2345 @param EDX Upper 32-bits of MSR value.
2346 Described by the type MSR_SKYLAKE_PRMRR_PHYS_BASE_REGISTER.
2347
2348 <b>Example usage</b>
2349 @code
2350 MSR_SKYLAKE_PRMRR_PHYS_BASE_REGISTER Msr;
2351
2352 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PRMRR_PHYS_BASE);
2353 AsmWriteMsr64 (MSR_SKYLAKE_PRMRR_PHYS_BASE, Msr.Uint64);
2354 @endcode
2355**/
2356#define MSR_SKYLAKE_PRMRR_PHYS_BASE 0x000001F4
2357
2358/**
2359 MSR information returned for MSR index #MSR_SKYLAKE_PRMRR_PHYS_BASE
2360**/
2361typedef union {
2362 ///
2363 /// Individual bit fields
2364 ///
2365 struct {
2366 ///
2367 /// [Bits 2:0] MemType PRMRR BASE MemType.
2368 ///
2369 UINT32 MemTypePRMRRBASEMemType : 3;
2370 UINT32 Reserved1 : 9;
2371 ///
2372 /// [Bits 31:12] Base PRMRR Base Address.
2373 ///
2374 UINT32 BasePRMRRBaseAddress : 20;
2375 ///
2376 /// [Bits 45:32] Base PRMRR Base Address.
2377 ///
2378 UINT32 Fix_Me_1 : 14;
2379 UINT32 Reserved2 : 18;
2380 } Bits;
2381 ///
2382 /// All bit fields as a 64-bit value
2383 ///
2384 UINT64 Uint64;
2385} MSR_SKYLAKE_PRMRR_PHYS_BASE_REGISTER;
2386
2387/**
2388 Core. Processor Reserved Memory Range Register - Physical Mask Control
2389 Register (R/W).
2390
2391 @param ECX MSR_SKYLAKE_PRMRR_PHYS_MASK (0x000001F5)
2392 @param EAX Lower 32-bits of MSR value.
2393 Described by the type MSR_SKYLAKE_PRMRR_PHYS_MASK_REGISTER.
2394 @param EDX Upper 32-bits of MSR value.
2395 Described by the type MSR_SKYLAKE_PRMRR_PHYS_MASK_REGISTER.
2396
2397 <b>Example usage</b>
2398 @code
2399 MSR_SKYLAKE_PRMRR_PHYS_MASK_REGISTER Msr;
2400
2401 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PRMRR_PHYS_MASK);
2402 AsmWriteMsr64 (MSR_SKYLAKE_PRMRR_PHYS_MASK, Msr.Uint64);
2403 @endcode
2404**/
2405#define MSR_SKYLAKE_PRMRR_PHYS_MASK 0x000001F5
2406
2407/**
2408 MSR information returned for MSR index #MSR_SKYLAKE_PRMRR_PHYS_MASK
2409**/
2410typedef union {
2411 ///
2412 /// Individual bit fields
2413 ///
2414 struct {
2415 UINT32 Reserved1 : 10;
2416 ///
2417 /// [Bit 10] Lock Lock bit for the PRMRR.
2418 ///
2419 UINT32 Fix_Me_1 : 1;
2420 ///
2421 /// [Bit 11] VLD Enable bit for the PRMRR.
2422 ///
2423 UINT32 VLD : 1;
2424 ///
2425 /// [Bits 31:12] Mask PRMRR MASK bits.
2426 ///
2427 UINT32 Fix_Me_2 : 20;
2428 ///
2429 /// [Bits 45:32] Mask PRMRR MASK bits.
2430 ///
2431 UINT32 Fix_Me_3 : 14;
2432 UINT32 Reserved2 : 18;
2433 } Bits;
2434 ///
2435 /// All bit fields as a 64-bit value
2436 ///
2437 UINT64 Uint64;
2438} MSR_SKYLAKE_PRMRR_PHYS_MASK_REGISTER;
2439
2440/**
2441 Core. Valid PRMRR Configurations (R/W).
2442
2443 @param ECX MSR_SKYLAKE_PRMRR_VALID_CONFIG (0x000001FB)
2444 @param EAX Lower 32-bits of MSR value.
2445 Described by the type MSR_SKYLAKE_PRMRR_VALID_CONFIG_REGISTER.
2446 @param EDX Upper 32-bits of MSR value.
2447 Described by the type MSR_SKYLAKE_PRMRR_VALID_CONFIG_REGISTER.
2448
2449 <b>Example usage</b>
2450 @code
2451 MSR_SKYLAKE_PRMRR_VALID_CONFIG_REGISTER Msr;
2452
2453 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PRMRR_VALID_CONFIG);
2454 AsmWriteMsr64 (MSR_SKYLAKE_PRMRR_VALID_CONFIG, Msr.Uint64);
2455 @endcode
2456**/
2457#define MSR_SKYLAKE_PRMRR_VALID_CONFIG 0x000001FB
2458
2459/**
2460 MSR information returned for MSR index #MSR_SKYLAKE_PRMRR_VALID_CONFIG
2461**/
2462typedef union {
2463 ///
2464 /// Individual bit fields
2465 ///
2466 struct {
2467 ///
2468 /// [Bit 0] 1M supported MEE size.
2469 ///
2470 UINT32 Fix_Me_1 : 1;
2471 UINT32 Reserved1 : 4;
2472 ///
2473 /// [Bit 5] 32M supported MEE size.
2474 ///
2475 UINT32 Fix_Me_2 : 1;
2476 ///
2477 /// [Bit 6] 64M supported MEE size.
2478 ///
2479 UINT32 Fix_Me_3 : 1;
2480 ///
2481 /// [Bit 7] 128M supported MEE size.
2482 ///
2483 UINT32 Fix_Me_4 : 1;
2484 UINT32 Reserved2 : 24;
2485 UINT32 Reserved3 : 32;
2486 } Bits;
2487 ///
2488 /// All bit fields as a 32-bit value
2489 ///
2490 UINT32 Uint32;
2491 ///
2492 /// All bit fields as a 64-bit value
2493 ///
2494 UINT64 Uint64;
2495} MSR_SKYLAKE_PRMRR_VALID_CONFIG_REGISTER;
2496
2497/**
2498 Package. (R/W) The PRMRR range is used to protect Xucode memory from
2499 unauthorized reads and writes. Any IO access to this range is aborted. This
2500 register controls the location of the PRMRR range by indicating its starting
2501 address. It functions in tandem with the PRMRR mask register.
2502
2503 @param ECX MSR_SKYLAKE_UNCORE_PRMRR_PHYS_BASE (0x000002F4)
2504 @param EAX Lower 32-bits of MSR value.
2505 Described by the type MSR_SKYLAKE_UNCORE_PRMRR_PHYS_BASE_REGISTER.
2506 @param EDX Upper 32-bits of MSR value.
2507 Described by the type MSR_SKYLAKE_UNCORE_PRMRR_PHYS_BASE_REGISTER.
2508
2509 <b>Example usage</b>
2510 @code
2511 MSR_SKYLAKE_UNCORE_PRMRR_PHYS_BASE_REGISTER Msr;
2512
2513 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNCORE_PRMRR_PHYS_BASE);
2514 AsmWriteMsr64 (MSR_SKYLAKE_UNCORE_PRMRR_PHYS_BASE, Msr.Uint64);
2515 @endcode
2516**/
2517#define MSR_SKYLAKE_UNCORE_PRMRR_PHYS_BASE 0x000002F4
2518
2519/**
2520 MSR information returned for MSR index #MSR_SKYLAKE_UNCORE_PRMRR_PHYS_BASE
2521**/
2522typedef union {
2523 ///
2524 /// Individual bit fields
2525 ///
2526 struct {
2527 UINT32 Reserved1 : 12;
2528 ///
2529 /// [Bits 31:12] Range Base This field corresponds to bits 38:12 of the
2530 /// base address memory range which is allocated to PRMRR memory.
2531 ///
2532 UINT32 Fix_Me_1 : 20;
2533 ///
2534 /// [Bits 38:32] Range Base This field corresponds to bits 38:12 of the
2535 /// base address memory range which is allocated to PRMRR memory.
2536 ///
2537 UINT32 Fix_Me_2 : 7;
2538 UINT32 Reserved2 : 25;
2539 } Bits;
2540 ///
2541 /// All bit fields as a 64-bit value
2542 ///
2543 UINT64 Uint64;
2544} MSR_SKYLAKE_UNCORE_PRMRR_PHYS_BASE_REGISTER;
2545
2546/**
2547 Package. (R/W) This register controls the size of the PRMRR range by
2548 indicating which address bits must match the PRMRR base register value.
2549
2550 @param ECX MSR_SKYLAKE_UNCORE_PRMRR_PHYS_MASK (0x000002F5)
2551 @param EAX Lower 32-bits of MSR value.
2552 Described by the type MSR_SKYLAKE_UNCORE_PRMRR_PHYS_MASK_REGISTER.
2553 @param EDX Upper 32-bits of MSR value.
2554 Described by the type MSR_SKYLAKE_UNCORE_PRMRR_PHYS_MASK_REGISTER.
2555
2556 <b>Example usage</b>
2557 @code
2558 MSR_SKYLAKE_UNCORE_PRMRR_PHYS_MASK_REGISTER Msr;
2559
2560 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNCORE_PRMRR_PHYS_MASK);
2561 AsmWriteMsr64 (MSR_SKYLAKE_UNCORE_PRMRR_PHYS_MASK, Msr.Uint64);
2562 @endcode
2563**/
2564#define MSR_SKYLAKE_UNCORE_PRMRR_PHYS_MASK 0x000002F5
2565
2566/**
2567 MSR information returned for MSR index #MSR_SKYLAKE_UNCORE_PRMRR_PHYS_MASK
2568**/
2569typedef union {
2570 ///
2571 /// Individual bit fields
2572 ///
2573 struct {
2574 UINT32 Reserved1 : 10;
2575 ///
2576 /// [Bit 10] Lock Setting this bit locks all writeable settings in this
2577 /// register, including itself.
2578 ///
2579 UINT32 Fix_Me_1 : 1;
2580 ///
2581 /// [Bit 11] Range_En Indicates whether the PRMRR range is enabled and
2582 /// valid.
2583 ///
2584 UINT32 Fix_Me_2 : 1;
2585 UINT32 Reserved2 : 20;
2586 UINT32 Reserved3 : 32;
2587 } Bits;
2588 ///
2589 /// All bit fields as a 32-bit value
2590 ///
2591 UINT32 Uint32;
2592 ///
2593 /// All bit fields as a 64-bit value
2594 ///
2595 UINT64 Uint64;
2596} MSR_SKYLAKE_UNCORE_PRMRR_PHYS_MASK_REGISTER;
2597
2598/**
2599 Package. Ring Ratio Limit (R/W) This register provides Min/Max Ratio Limits
2600 for the LLC and Ring.
2601
2602 @param ECX MSR_SKYLAKE_RING_RATIO_LIMIT (0x00000620)
2603 @param EAX Lower 32-bits of MSR value.
2604 Described by the type MSR_SKYLAKE_RING_RATIO_LIMIT_REGISTER.
2605 @param EDX Upper 32-bits of MSR value.
2606 Described by the type MSR_SKYLAKE_RING_RATIO_LIMIT_REGISTER.
2607
2608 <b>Example usage</b>
2609 @code
2610 MSR_SKYLAKE_RING_RATIO_LIMIT_REGISTER Msr;
2611
2612 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_RING_RATIO_LIMIT);
2613 AsmWriteMsr64 (MSR_SKYLAKE_RING_RATIO_LIMIT, Msr.Uint64);
2614 @endcode
2615**/
2616#define MSR_SKYLAKE_RING_RATIO_LIMIT 0x00000620
2617
2618/**
2619 MSR information returned for MSR index #MSR_SKYLAKE_RING_RATIO_LIMIT
2620**/
2621typedef union {
2622 ///
2623 /// Individual bit fields
2624 ///
2625 struct {
2626 ///
2627 /// [Bits 6:0] MAX_Ratio This field is used to limit the max ratio of the
2628 /// LLC/Ring.
2629 ///
2630 UINT32 Fix_Me_1 : 7;
2631 UINT32 Reserved1 : 1;
2632 ///
2633 /// [Bits 14:8] MIN_Ratio Writing to this field controls the minimum
2634 /// possible ratio of the LLC/Ring.
2635 ///
2636 UINT32 Fix_Me_2 : 7;
2637 UINT32 Reserved2 : 17;
2638 UINT32 Reserved3 : 32;
2639 } Bits;
2640 ///
2641 /// All bit fields as a 32-bit value
2642 ///
2643 UINT32 Uint32;
2644 ///
2645 /// All bit fields as a 64-bit value
2646 ///
2647 UINT64 Uint64;
2648} MSR_SKYLAKE_RING_RATIO_LIMIT_REGISTER;
2649
2650/**
2651 Branch Monitoring Global Control (R/W).
2652
2653 @param ECX MSR_SKYLAKE_BR_DETECT_CTRL (0x00000350)
2654 @param EAX Lower 32-bits of MSR value.
2655 Described by the type MSR_SKYLAKE_BR_DETECT_CTRL_REGISTER.
2656 @param EDX Upper 32-bits of MSR value.
2657 Described by the type MSR_SKYLAKE_BR_DETECT_CTRL_REGISTER.
2658
2659 <b>Example usage</b>
2660 @code
2661 MSR_SKYLAKE_BR_DETECT_CTRL_REGISTER Msr;
2662
2663 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_BR_DETECT_CTRL);
2664 AsmWriteMsr64 (MSR_SKYLAKE_BR_DETECT_CTRL, Msr.Uint64);
2665 @endcode
2666**/
2667#define MSR_SKYLAKE_BR_DETECT_CTRL 0x00000350
2668
2669/**
2670 MSR information returned for MSR index #MSR_SKYLAKE_BR_DETECT_CTRL
2671**/
2672typedef union {
2673 ///
2674 /// Individual bit fields
2675 ///
2676 struct {
2677 ///
2678 /// [Bit 0] EnMonitoring Global enable for branch monitoring.
2679 ///
2680 UINT32 EnMonitoring : 1;
2681 ///
2682 /// [Bit 1] EnExcept Enable branch monitoring event signaling on threshold
2683 /// trip. The branch monitoring event handler is signaled via the existing
2684 /// PMI signaling mechanism as programmed from the corresponding local
2685 /// APIC LVT entry.
2686 ///
2687 UINT32 EnExcept : 1;
2688 ///
2689 /// [Bit 2] EnLBRFrz Enable LBR freeze on threshold trip. This will cause
2690 /// the LBR frozen bit 58 to be set in IA32_PERF_GLOBAL_STATUS when a
2691 /// triggering condition occurs and this bit is enabled.
2692 ///
2693 UINT32 EnLBRFrz : 1;
2694 ///
2695 /// [Bit 3] DisableInGuest When set to '1', branch monitoring, event
2696 /// triggering and LBR freeze actions are disabled when operating at VMX
2697 /// non-root operation.
2698 ///
2699 UINT32 DisableInGuest : 1;
2700 UINT32 Reserved1 : 4;
2701 ///
2702 /// [Bits 17:8] WindowSize Window size defined by WindowCntSel. Values 0 -
2703 /// 1023 are supported. Once the Window counter reaches the WindowSize
2704 /// count both the Window Counter and all Branch Monitoring Counters are
2705 /// cleared.
2706 ///
2707 UINT32 WindowSize : 10;
2708 UINT32 Reserved2 : 6;
2709 ///
2710 /// [Bits 25:24] WindowCntSel Window event count select: '00 =
2711 /// Instructions retired. '01 = Branch instructions retired '10 = Return
2712 /// instructions retired. '11 = Indirect branch instructions retired.
2713 ///
2714 UINT32 WindowCntSel : 2;
2715 ///
2716 /// [Bit 26] CntAndMode When set to '1', the overall branch monitoring
2717 /// event triggering condition is true only if all enabled counters'
2718 /// threshold conditions are true. When '0', the threshold tripping
2719 /// condition is true if any enabled counters' threshold is true.
2720 ///
2721 UINT32 CntAndMode : 1;
2722 UINT32 Reserved3 : 5;
2723 UINT32 Reserved4 : 32;
2724 } Bits;
2725 ///
2726 /// All bit fields as a 32-bit value
2727 ///
2728 UINT32 Uint32;
2729 ///
2730 /// All bit fields as a 64-bit value
2731 ///
2732 UINT64 Uint64;
2733} MSR_SKYLAKE_BR_DETECT_CTRL_REGISTER;
2734
2735/**
2736 Branch Monitoring Global Status (R/W).
2737
2738 @param ECX MSR_SKYLAKE_BR_DETECT_STATUS (0x00000351)
2739 @param EAX Lower 32-bits of MSR value.
2740 Described by the type MSR_SKYLAKE_BR_DETECT_STATUS_REGISTER.
2741 @param EDX Upper 32-bits of MSR value.
2742 Described by the type MSR_SKYLAKE_BR_DETECT_STATUS_REGISTER.
2743
2744 <b>Example usage</b>
2745 @code
2746 MSR_SKYLAKE_BR_DETECT_STATUS_REGISTER Msr;
2747
2748 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_BR_DETECT_STATUS);
2749 AsmWriteMsr64 (MSR_SKYLAKE_BR_DETECT_STATUS, Msr.Uint64);
2750 @endcode
2751**/
2752#define MSR_SKYLAKE_BR_DETECT_STATUS 0x00000351
2753
2754/**
2755 MSR information returned for MSR index #MSR_SKYLAKE_BR_DETECT_STATUS
2756**/
2757typedef union {
2758 ///
2759 /// Individual bit fields
2760 ///
2761 struct {
2762 ///
2763 /// [Bit 0] Branch Monitoring Event Signaled When set to '1', Branch
2764 /// Monitoring event signaling is blocked until this bit is cleared by
2765 /// software.
2766 ///
2767 UINT32 BranchMonitoringEventSignaled : 1;
2768 ///
2769 /// [Bit 1] LBRsValid This status bit is set to '1' if the LBR state is
2770 /// considered valid for sampling by branch monitoring software.
2771 ///
2772 UINT32 LBRsValid : 1;
2773 UINT32 Reserved1 : 6;
2774 ///
2775 /// [Bit 8] CntrHit0 Branch monitoring counter #0 threshold hit. This
2776 /// status bit is sticky and once set requires clearing by software.
2777 /// Counter operation continues independent of the state of the bit.
2778 ///
2779 UINT32 CntrHit0 : 1;
2780 ///
2781 /// [Bit 9] CntrHit1 Branch monitoring counter #1 threshold hit. This
2782 /// status bit is sticky and once set requires clearing by software.
2783 /// Counter operation continues independent of the state of the bit.
2784 ///
2785 UINT32 CntrHit1 : 1;
2786 UINT32 Reserved2 : 6;
2787 ///
2788 /// [Bits 25:16] CountWindow The current value of the window counter. The
2789 /// count value is frozen on a valid branch monitoring triggering
2790 /// condition. This is a 10-bit unsigned value.
2791 ///
2792 UINT32 CountWindow : 10;
2793 UINT32 Reserved3 : 6;
2794 ///
2795 /// [Bits 39:32] Count0 The current value of counter 0 updated after each
2796 /// occurrence of the event being counted. The count value is frozen on a
2797 /// valid branch monitoring triggering condition (in which case CntrHit0
2798 /// will also be set). This is an 8-bit signed value (2's complement).
2799 /// Heuristic events which only increment will saturate and freeze at
2800 /// maximum value 0xFF (256). RET-CALL event counter saturate at maximum
2801 /// value 0x7F (+127) and minimum value 0x80 (-128).
2802 ///
2803 UINT32 Count0 : 8;
2804 ///
2805 /// [Bits 47:40] Count1 The current value of counter 1 updated after each
2806 /// occurrence of the event being counted. The count value is frozen on a
2807 /// valid branch monitoring triggering condition (in which case CntrHit1
2808 /// will also be set). This is an 8-bit signed value (2's complement).
2809 /// Heuristic events which only increment will saturate and freeze at
2810 /// maximum value 0xFF (256). RET-CALL event counter saturate at maximum
2811 /// value 0x7F (+127) and minimum value 0x80 (-128).
2812 ///
2813 UINT32 Count1 : 8;
2814 UINT32 Reserved4 : 16;
2815 } Bits;
2816 ///
2817 /// All bit fields as a 32-bit value
2818 ///
2819 UINT32 Uint32;
2820 ///
2821 /// All bit fields as a 64-bit value
2822 ///
2823 UINT64 Uint64;
2824} MSR_SKYLAKE_BR_DETECT_STATUS_REGISTER;
2825
2826/**
2827 Package. Package C3 Residency Counter (R/O). Note: C-state values are
2828 processor specific C-state code names, unrelated to MWAIT extension C-state
2829 parameters or ACPI C-states.
2830
2831 @param ECX MSR_SKYLAKE_PKG_C3_RESIDENCY (0x000003F8)
2832 @param EAX Lower 32-bits of MSR value.
2833 @param EDX Upper 32-bits of MSR value.
2834
2835 <b>Example usage</b>
2836 @code
2837 UINT64 Msr;
2838
2839 Msr = AsmReadMsr64 (MSR_SKYLAKE_PKG_C3_RESIDENCY);
2840 @endcode
2841**/
2842#define MSR_SKYLAKE_PKG_C3_RESIDENCY 0x000003F8
2843
2844/**
2845 Core. Core C1 Residency Counter (R/O). Value since last reset for the Core
2846 C1 residency. Counter rate is the Max Non-Turbo frequency (same as TSC).
2847 This counter counts in case both of the core's threads are in an idle state
2848 and at least one of the core's thread residency is in a C1 state or in one
2849 of its sub states. The counter is updated only after a core C state exit.
2850 Note: Always reads 0 if core C1 is unsupported. A value of zero indicates
2851 that this processor does not support core C1 or never entered core C1 level
2852 state.
2853
2854 @param ECX MSR_SKYLAKE_CORE_C1_RESIDENCY (0x00000660)
2855 @param EAX Lower 32-bits of MSR value.
2856 @param EDX Upper 32-bits of MSR value.
2857
2858 <b>Example usage</b>
2859 @code
2860 UINT64 Msr;
2861
2862 Msr = AsmReadMsr64 (MSR_SKYLAKE_CORE_C1_RESIDENCY);
2863 @endcode
2864**/
2865#define MSR_SKYLAKE_CORE_C1_RESIDENCY 0x00000660
2866
2867/**
2868 Core. Core C3 Residency Counter (R/O). Will always return 0.
2869
2870 @param ECX MSR_SKYLAKE_CORE_C3_RESIDENCY (0x00000662)
2871 @param EAX Lower 32-bits of MSR value.
2872 @param EDX Upper 32-bits of MSR value.
2873
2874 <b>Example usage</b>
2875 @code
2876 UINT64 Msr;
2877
2878 Msr = AsmReadMsr64 (MSR_SKYLAKE_CORE_C3_RESIDENCY);
2879 @endcode
2880**/
2881#define MSR_SKYLAKE_CORE_C3_RESIDENCY 0x00000662
2882
2883/**
2884 Package. Protected Processor Inventory Number Enable Control (R/W).
2885
2886 @param ECX MSR_SKYLAKE_PPIN_CTL (0x0000004E)
2887 @param EAX Lower 32-bits of MSR value.
2888 Described by the type MSR_SKYLAKE_PPIN_CTL_REGISTER.
2889 @param EDX Upper 32-bits of MSR value.
2890 Described by the type MSR_SKYLAKE_PPIN_CTL_REGISTER.
2891
2892 <b>Example usage</b>
2893 @code
2894 MSR_SKYLAKE_PPIN_CTL_REGISTER Msr;
2895
2896 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PPIN_CTL);
2897 AsmWriteMsr64 (MSR_SKYLAKE_PPIN_CTL, Msr.Uint64);
2898 @endcode
2899**/
2900#define MSR_SKYLAKE_PPIN_CTL 0x0000004E
2901
2902/**
2903 MSR information returned for MSR index #MSR_SKYLAKE_PPIN_CTL
2904**/
2905typedef union {
2906 ///
2907 /// Individual bit fields
2908 ///
2909 struct {
2910 ///
2911 /// [Bit 0] LockOut (R/WO) See Table 2-25.
2912 ///
2913 UINT32 LockOut : 1;
2914 ///
2915 /// [Bit 1] Enable_PPIN (R/W) See Table 2-25.
2916 ///
2917 UINT32 Enable_PPIN : 1;
2918 UINT32 Reserved1 : 30;
2919 UINT32 Reserved2 : 32;
2920 } Bits;
2921 ///
2922 /// All bit fields as a 32-bit value
2923 ///
2924 UINT32 Uint32;
2925 ///
2926 /// All bit fields as a 64-bit value
2927 ///
2928 UINT64 Uint64;
2929} MSR_SKYLAKE_PPIN_CTL_REGISTER;
2930
2931/**
2932 Package. Protected Processor Inventory Number (R/O). Protected Processor
2933 Inventory Number (R/O) See Table 2-25.
2934
2935 @param ECX MSR_SKYLAKE_PPIN (0x0000004F)
2936 @param EAX Lower 32-bits of MSR value.
2937 @param EDX Upper 32-bits of MSR value.
2938
2939 <b>Example usage</b>
2940 @code
2941 UINT64 Msr;
2942
2943 Msr = AsmReadMsr64 (MSR_SKYLAKE_PPIN);
2944 @endcode
2945**/
2946#define MSR_SKYLAKE_PPIN 0x0000004F
2947
2948/**
2949 Package. Platform Information Contains power management and other model
2950 specific features enumeration. See http://biosbits.org.
2951
2952 @param ECX MSR_SKYLAKE_PLATFORM_INFO (0x000000CE)
2953 @param EAX Lower 32-bits of MSR value.
2954 Described by the type MSR_SKYLAKE_PLATFORM_INFO_REGISTER.
2955 @param EDX Upper 32-bits of MSR value.
2956 Described by the type MSR_SKYLAKE_PLATFORM_INFO_REGISTER.
2957
2958 <b>Example usage</b>
2959 @code
2960 MSR_SKYLAKE_PLATFORM_INFO_REGISTER Msr;
2961
2962 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PLATFORM_INFO);
2963 AsmWriteMsr64 (MSR_SKYLAKE_PLATFORM_INFO, Msr.Uint64);
2964 @endcode
2965**/
2966#define MSR_SKYLAKE_PLATFORM_INFO 0x000000CE
2967
2968/**
2969 MSR information returned for MSR index #MSR_SKYLAKE_PLATFORM_INFO
2970**/
2971typedef union {
2972 ///
2973 /// Individual bit fields
2974 ///
2975 struct {
2976 UINT32 Reserved1 : 8;
2977 ///
2978 /// [Bits 15:8] Package. Maximum Non-Turbo Ratio (R/O) See Table 2-25.
2979 ///
2980 UINT32 MaximumNon_TurboRatio : 8;
2981 UINT32 Reserved2 : 7;
2982 ///
2983 /// [Bit 23] Package. PPIN_CAP (R/O) See Table 2-25.
2984 ///
2985 UINT32 PPIN_CAP : 1;
2986 UINT32 Reserved3 : 4;
2987 ///
2988 /// [Bit 28] Package. Programmable Ratio Limit for Turbo Mode (R/O) See
2989 /// Table 2-25.
2990 ///
2991 UINT32 ProgrammableRatioLimit : 1;
2992 ///
2993 /// [Bit 29] Package. Programmable TDP Limit for Turbo Mode (R/O) See
2994 /// Table 2-25.
2995 ///
2996 UINT32 ProgrammableTDPLimit : 1;
2997 ///
2998 /// [Bit 30] Package. Programmable TJ OFFSET (R/O) See Table 2-25.
2999 ///
3000 UINT32 ProgrammableTJOFFSET : 1;
3001 UINT32 Reserved4 : 1;
3002 UINT32 Reserved5 : 8;
3003 ///
3004 /// [Bits 47:40] Package. Maximum Efficiency Ratio (R/O) See Table 2-25.
3005 ///
3006 UINT32 MaximumEfficiencyRatio : 8;
3007 UINT32 Reserved6 : 16;
3008 } Bits;
3009 ///
3010 /// All bit fields as a 64-bit value
3011 ///
3012 UINT64 Uint64;
3013} MSR_SKYLAKE_PLATFORM_INFO_REGISTER;
3014
3015/**
3016 Core. C-State Configuration Control (R/W) Note: C-state values are processor
3017 specific C-state code names, unrelated to MWAIT extension C-state parameters
3018 or ACPI C-states. `See http://biosbits.org. <http://biosbits.org/>`__.
3019
3020 @param ECX MSR_SKYLAKE_PKG_CST_CONFIG_CONTROL (0x000000E2)
3021 @param EAX Lower 32-bits of MSR value.
3022 Described by the type MSR_SKYLAKE_PKG_CST_CONFIG_CONTROL_REGISTER.
3023 @param EDX Upper 32-bits of MSR value.
3024 Described by the type MSR_SKYLAKE_PKG_CST_CONFIG_CONTROL_REGISTER.
3025
3026 <b>Example usage</b>
3027 @code
3028 MSR_SKYLAKE_PKG_CST_CONFIG_CONTROL_REGISTER Msr;
3029
3030 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_PKG_CST_CONFIG_CONTROL);
3031 AsmWriteMsr64 (MSR_SKYLAKE_PKG_CST_CONFIG_CONTROL, Msr.Uint64);
3032 @endcode
3033**/
3034#define MSR_SKYLAKE_PKG_CST_CONFIG_CONTROL 0x000000E2
3035
3036/**
3037 MSR information returned for MSR index #MSR_SKYLAKE_PKG_CST_CONFIG_CONTROL
3038**/
3039typedef union {
3040 ///
3041 /// Individual bit fields
3042 ///
3043 struct {
3044 ///
3045 /// [Bits 2:0] Package C-State Limit (R/W) Specifies the lowest
3046 /// processor-specific C-state code name (consuming the least power) for
3047 /// the package. The default is set as factory-configured package Cstate
3048 /// limit. The following C-state code name encodings are supported: 000b:
3049 /// C0/C1 (no package C-state support) 001b: C2 010b: C6 (non-retention)
3050 /// 011b: C6 (retention) 111b: No Package C state limits. All C states
3051 /// supported by the processor are available.
3052 ///
3053 UINT32 C_StateLimit : 3;
3054 UINT32 Reserved1 : 7;
3055 ///
3056 /// [Bit 10] I/O MWAIT Redirection Enable (R/W).
3057 ///
3058 UINT32 MWAITRedirectionEnable : 1;
3059 UINT32 Reserved2 : 4;
3060 ///
3061 /// [Bit 15] CFG Lock (R/WO).
3062 ///
3063 UINT32 CFGLock : 1;
3064 ///
3065 /// [Bit 16] Automatic C-State Conversion Enable (R/W) If 1, the processor
3066 /// will convert HALT or MWAT(C1) to MWAIT(C6).
3067 ///
3068 UINT32 AutomaticC_StateConversionEnable : 1;
3069 UINT32 Reserved3 : 8;
3070 ///
3071 /// [Bit 25] C3 State Auto Demotion Enable (R/W).
3072 ///
3073 UINT32 C3StateAutoDemotionEnable : 1;
3074 ///
3075 /// [Bit 26] C1 State Auto Demotion Enable (R/W).
3076 ///
3077 UINT32 C1StateAutoDemotionEnable : 1;
3078 ///
3079 /// [Bit 27] Enable C3 Undemotion (R/W).
3080 ///
3081 UINT32 EnableC3Undemotion : 1;
3082 ///
3083 /// [Bit 28] Enable C1 Undemotion (R/W).
3084 ///
3085 UINT32 EnableC1Undemotion : 1;
3086 ///
3087 /// [Bit 29] Package C State Demotion Enable (R/W).
3088 ///
3089 UINT32 CStateDemotionEnable : 1;
3090 ///
3091 /// [Bit 30] Package C State UnDemotion Enable (R/W).
3092 ///
3093 UINT32 CStateUnDemotionEnable : 1;
3094 UINT32 Reserved4 : 1;
3095 UINT32 Reserved5 : 32;
3096 } Bits;
3097 ///
3098 /// All bit fields as a 32-bit value
3099 ///
3100 UINT32 Uint32;
3101 ///
3102 /// All bit fields as a 64-bit value
3103 ///
3104 UINT64 Uint64;
3105} MSR_SKYLAKE_PKG_CST_CONFIG_CONTROL_REGISTER;
3106
3107/**
3108 Thread. Global Machine Check Capability (R/O).
3109
3110 @param ECX MSR_SKYLAKE_IA32_MCG_CAP (0x00000179)
3111 @param EAX Lower 32-bits of MSR value.
3112 Described by the type MSR_SKYLAKE_IA32_MCG_CAP_REGISTER.
3113 @param EDX Upper 32-bits of MSR value.
3114 Described by the type MSR_SKYLAKE_IA32_MCG_CAP_REGISTER.
3115
3116 <b>Example usage</b>
3117 @code
3118 MSR_SKYLAKE_IA32_MCG_CAP_REGISTER Msr;
3119
3120 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_MCG_CAP);
3121 @endcode
3122**/
3123#define MSR_SKYLAKE_IA32_MCG_CAP 0x00000179
3124
3125/**
3126 MSR information returned for MSR index #MSR_SKYLAKE_IA32_MCG_CAP
3127**/
3128typedef union {
3129 ///
3130 /// Individual bit fields
3131 ///
3132 struct {
3133 ///
3134 /// [Bits 7:0] Count.
3135 ///
3136 UINT32 Count : 8;
3137 ///
3138 /// [Bit 8] MCG_CTL_P.
3139 ///
3140 UINT32 MCG_CTL_P : 1;
3141 ///
3142 /// [Bit 9] MCG_EXT_P.
3143 ///
3144 UINT32 MCG_EXT_P : 1;
3145 ///
3146 /// [Bit 10] MCP_CMCI_P.
3147 ///
3148 UINT32 MCP_CMCI_P : 1;
3149 ///
3150 /// [Bit 11] MCG_TES_P.
3151 ///
3152 UINT32 MCG_TES_P : 1;
3153 UINT32 Reserved1 : 4;
3154 ///
3155 /// [Bits 23:16] MCG_EXT_CNT.
3156 ///
3157 UINT32 MCG_EXT_CNT : 8;
3158 ///
3159 /// [Bit 24] MCG_SER_P.
3160 ///
3161 UINT32 MCG_SER_P : 1;
3162 ///
3163 /// [Bit 25] MCG_EM_P.
3164 ///
3165 UINT32 MCG_EM_P : 1;
3166 ///
3167 /// [Bit 26] MCG_ELOG_P.
3168 ///
3169 UINT32 MCG_ELOG_P : 1;
3170 UINT32 Reserved2 : 5;
3171 UINT32 Reserved3 : 32;
3172 } Bits;
3173 ///
3174 /// All bit fields as a 32-bit value
3175 ///
3176 UINT32 Uint32;
3177 ///
3178 /// All bit fields as a 64-bit value
3179 ///
3180 UINT64 Uint64;
3181} MSR_SKYLAKE_IA32_MCG_CAP_REGISTER;
3182
3183/**
3184 THREAD. Enhanced SMM Capabilities (SMM-RO) Reports SMM capability
3185 Enhancement. Accessible only while in SMM.
3186
3187 @param ECX MSR_SKYLAKE_SMM_MCA_CAP (0x0000017D)
3188 @param EAX Lower 32-bits of MSR value.
3189 Described by the type MSR_SKYLAKE_SMM_MCA_CAP_REGISTER.
3190 @param EDX Upper 32-bits of MSR value.
3191 Described by the type MSR_SKYLAKE_SMM_MCA_CAP_REGISTER.
3192
3193 <b>Example usage</b>
3194 @code
3195 MSR_SKYLAKE_SMM_MCA_CAP_REGISTER Msr;
3196
3197 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_SMM_MCA_CAP);
3198 AsmWriteMsr64 (MSR_SKYLAKE_SMM_MCA_CAP, Msr.Uint64);
3199 @endcode
3200**/
3201#define MSR_SKYLAKE_SMM_MCA_CAP 0x0000017D
3202
3203/**
3204 MSR information returned for MSR index #MSR_SKYLAKE_SMM_MCA_CAP
3205**/
3206typedef union {
3207 ///
3208 /// Individual bit fields
3209 ///
3210 struct {
3211 UINT32 Reserved1 : 32;
3212 UINT32 Reserved2 : 26;
3213 ///
3214 /// [Bit 58] SMM_Code_Access_Chk (SMM-RO) If set to 1 indicates that the
3215 /// SMM code access restriction is supported and a host-space interface is
3216 /// available to SMM handler.
3217 ///
3218 UINT32 SMM_Code_Access_Chk : 1;
3219 ///
3220 /// [Bit 59] Long_Flow_Indication (SMM-RO) If set to 1 indicates that the
3221 /// SMM long flow indicator is supported and a host-space interface is
3222 /// available to SMM handler.
3223 ///
3224 UINT32 Long_Flow_Indication : 1;
3225 UINT32 Reserved3 : 4;
3226 } Bits;
3227 ///
3228 /// All bit fields as a 64-bit value
3229 ///
3230 UINT64 Uint64;
3231} MSR_SKYLAKE_SMM_MCA_CAP_REGISTER;
3232
3233/**
3234 Package. Temperature Target.
3235
3236 @param ECX MSR_SKYLAKE_TEMPERATURE_TARGET (0x000001A2)
3237 @param EAX Lower 32-bits of MSR value.
3238 Described by the type MSR_SKYLAKE_TEMPERATURE_TARGET_REGISTER.
3239 @param EDX Upper 32-bits of MSR value.
3240 Described by the type MSR_SKYLAKE_TEMPERATURE_TARGET_REGISTER.
3241
3242 <b>Example usage</b>
3243 @code
3244 MSR_SKYLAKE_TEMPERATURE_TARGET_REGISTER Msr;
3245
3246 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_TEMPERATURE_TARGET);
3247 AsmWriteMsr64 (MSR_SKYLAKE_TEMPERATURE_TARGET, Msr.Uint64);
3248 @endcode
3249**/
3250#define MSR_SKYLAKE_TEMPERATURE_TARGET 0x000001A2
3251
3252/**
3253 MSR information returned for MSR index #MSR_SKYLAKE_TEMPERATURE_TARGET
3254**/
3255typedef union {
3256 ///
3257 /// Individual bit fields
3258 ///
3259 struct {
3260 UINT32 Reserved1 : 16;
3261 ///
3262 /// [Bits 23:16] Temperature Target (RO) See Table 2-25.
3263 ///
3264 UINT32 TemperatureTarget : 8;
3265 ///
3266 /// [Bits 27:24] TCC Activation Offset (R/W) See Table 2-25.
3267 ///
3268 UINT32 TCCActivationOffset : 4;
3269 UINT32 Reserved2 : 4;
3270 UINT32 Reserved3 : 32;
3271 } Bits;
3272 ///
3273 /// All bit fields as a 32-bit value
3274 ///
3275 UINT32 Uint32;
3276 ///
3277 /// All bit fields as a 64-bit value
3278 ///
3279 UINT64 Uint64;
3280} MSR_SKYLAKE_TEMPERATURE_TARGET_REGISTER;
3281
3282/**
3283 Package. This register defines the active core ranges for each frequency
3284 point. NUMCORE[0:7] must be populated in ascending order. NUMCORE[i+1] must
3285 be greater than NUMCORE[i]. Entries with NUMCORE[i] == 0 will be ignored.
3286 The last valid entry must have NUMCORE >= the number of cores in the SKU. If
3287 any of the rules above are broken, the configuration is silently rejected.
3288
3289 @param ECX MSR_SKYLAKE_TURBO_RATIO_LIMIT_CORES (0x000001AE)
3290 @param EAX Lower 32-bits of MSR value.
3291 Described by the type MSR_SKYLAKE_TURBO_RATIO_LIMIT_CORES_REGISTER.
3292 @param EDX Upper 32-bits of MSR value.
3293 Described by the type MSR_SKYLAKE_TURBO_RATIO_LIMIT_CORES_REGISTER.
3294
3295 <b>Example usage</b>
3296 @code
3297 MSR_SKYLAKE_TURBO_RATIO_LIMIT_CORES_REGISTER Msr;
3298
3299 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_TURBO_RATIO_LIMIT_CORES);
3300 AsmWriteMsr64 (MSR_SKYLAKE_TURBO_RATIO_LIMIT_CORES, Msr.Uint64);
3301 @endcode
3302**/
3303#define MSR_SKYLAKE_TURBO_RATIO_LIMIT_CORES 0x000001AE
3304
3305/**
3306 MSR information returned for MSR index #MSR_SKYLAKE_TURBO_RATIO_LIMIT_CORES
3307**/
3308typedef union {
3309 ///
3310 /// Individual bit fields
3311 ///
3312 struct {
3313 ///
3314 /// [Bits 7:0] NUMCORE_0 Defines the active core ranges for each frequency
3315 /// point.
3316 ///
3317 UINT32 NUMCORE_0 : 8;
3318 ///
3319 /// [Bits 15:8] NUMCORE_1 Defines the active core ranges for each
3320 /// frequency point.
3321 ///
3322 UINT32 NUMCORE_1 : 8;
3323 ///
3324 /// [Bits 23:16] NUMCORE_2 Defines the active core ranges for each
3325 /// frequency point.
3326 ///
3327 UINT32 NUMCORE_2 : 8;
3328 ///
3329 /// [Bits 31:24] NUMCORE_3 Defines the active core ranges for each
3330 /// frequency point.
3331 ///
3332 UINT32 NUMCORE_3 : 8;
3333 ///
3334 /// [Bits 39:32] NUMCORE_4 Defines the active core ranges for each
3335 /// frequency point.
3336 ///
3337 UINT32 NUMCORE_4 : 8;
3338 ///
3339 /// [Bits 47:40] NUMCORE_5 Defines the active core ranges for each
3340 /// frequency point.
3341 ///
3342 UINT32 NUMCORE_5 : 8;
3343 ///
3344 /// [Bits 55:48] NUMCORE_6 Defines the active core ranges for each
3345 /// frequency point.
3346 ///
3347 UINT32 NUMCORE_6 : 8;
3348 ///
3349 /// [Bits 63:56] NUMCORE_7 Defines the active core ranges for each
3350 /// frequency point.
3351 ///
3352 UINT32 NUMCORE_7 : 8;
3353 } Bits;
3354 ///
3355 /// All bit fields as a 64-bit value
3356 ///
3357 UINT64 Uint64;
3358} MSR_SKYLAKE_TURBO_RATIO_LIMIT_CORES_REGISTER;
3359
3360/**
3361 Package. Unit Multipliers Used in RAPL Interfaces (R/O).
3362
3363 @param ECX MSR_SKYLAKE_RAPL_POWER_UNIT (0x00000606)
3364 @param EAX Lower 32-bits of MSR value.
3365 Described by the type MSR_SKYLAKE_RAPL_POWER_UNIT_REGISTER.
3366 @param EDX Upper 32-bits of MSR value.
3367 Described by the type MSR_SKYLAKE_RAPL_POWER_UNIT_REGISTER.
3368
3369 <b>Example usage</b>
3370 @code
3371 MSR_SKYLAKE_RAPL_POWER_UNIT_REGISTER Msr;
3372
3373 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_RAPL_POWER_UNIT);
3374 @endcode
3375**/
3376#define MSR_SKYLAKE_RAPL_POWER_UNIT 0x00000606
3377
3378/**
3379 MSR information returned for MSR index #MSR_SKYLAKE_RAPL_POWER_UNIT
3380**/
3381typedef union {
3382 ///
3383 /// Individual bit fields
3384 ///
3385 struct {
3386 ///
3387 /// [Bits 3:0] Package. Power Units See Section 14.9.1, "RAPL Interfaces.".
3388 ///
3389 UINT32 PowerUnits : 4;
3390 UINT32 Reserved1 : 4;
3391 ///
3392 /// [Bits 12:8] Package. Energy Status Units Energy related information
3393 /// (in Joules) is based on the multiplier, 1/2^ESU; where ESU is an
3394 /// unsigned integer represented by bits 12:8. Default value is 0EH (or 61
3395 /// micro-joules).
3396 ///
3397 UINT32 EnergyStatusUnits : 5;
3398 UINT32 Reserved2 : 3;
3399 ///
3400 /// [Bits 19:16] Package. Time Units See Section 14.9.1, "RAPL
3401 /// Interfaces.".
3402 ///
3403 UINT32 TimeUnits : 4;
3404 UINT32 Reserved3 : 12;
3405 UINT32 Reserved4 : 32;
3406 } Bits;
3407 ///
3408 /// All bit fields as a 32-bit value
3409 ///
3410 UINT32 Uint32;
3411 ///
3412 /// All bit fields as a 64-bit value
3413 ///
3414 UINT64 Uint64;
3415} MSR_SKYLAKE_RAPL_POWER_UNIT_REGISTER;
3416
3417/**
3418 Package. DRAM RAPL Power Limit Control (R/W) See Section 14.9.5, "DRAM RAPL
3419 Domain.".
3420
3421 @param ECX MSR_SKYLAKE_DRAM_POWER_LIMIT (0x00000618)
3422 @param EAX Lower 32-bits of MSR value.
3423 @param EDX Upper 32-bits of MSR value.
3424
3425 <b>Example usage</b>
3426 @code
3427 UINT64 Msr;
3428
3429 Msr = AsmReadMsr64 (MSR_SKYLAKE_DRAM_POWER_LIMIT);
3430 AsmWriteMsr64 (MSR_SKYLAKE_DRAM_POWER_LIMIT, Msr);
3431 @endcode
3432**/
3433#define MSR_SKYLAKE_DRAM_POWER_LIMIT 0x00000618
3434
3435/**
3436 Package. DRAM Energy Status (R/O) Energy consumed by DRAM devices.
3437
3438 @param ECX MSR_SKYLAKE_DRAM_ENERGY_STATUS (0x00000619)
3439 @param EAX Lower 32-bits of MSR value.
3440 Described by the type MSR_SKYLAKE_DRAM_ENERGY_STATUS_REGISTER.
3441 @param EDX Upper 32-bits of MSR value.
3442 Described by the type MSR_SKYLAKE_DRAM_ENERGY_STATUS_REGISTER.
3443
3444 <b>Example usage</b>
3445 @code
3446 MSR_SKYLAKE_DRAM_ENERGY_STATUS_REGISTER Msr;
3447
3448 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_DRAM_ENERGY_STATUS);
3449 @endcode
3450**/
3451#define MSR_SKYLAKE_DRAM_ENERGY_STATUS 0x00000619
3452
3453/**
3454 MSR information returned for MSR index #MSR_SKYLAKE_DRAM_ENERGY_STATUS
3455**/
3456typedef union {
3457 ///
3458 /// Individual bit fields
3459 ///
3460 struct {
3461 ///
3462 /// [Bits 31:0] Energy in 15.3 micro-joules. Requires BIOS configuration
3463 /// to enable DRAM RAPL mode 0 (Direct VR).
3464 ///
3465 UINT32 Energy : 32;
3466 UINT32 Reserved : 32;
3467 } Bits;
3468 ///
3469 /// All bit fields as a 32-bit value
3470 ///
3471 UINT32 Uint32;
3472 ///
3473 /// All bit fields as a 64-bit value
3474 ///
3475 UINT64 Uint64;
3476} MSR_SKYLAKE_DRAM_ENERGY_STATUS_REGISTER;
3477
3478/**
3479 Package. DRAM Performance Throttling Status (R/O) See Section 14.9.5, "DRAM
3480 RAPL Domain.".
3481
3482 @param ECX MSR_SKYLAKE_DRAM_PERF_STATUS (0x0000061B)
3483 @param EAX Lower 32-bits of MSR value.
3484 @param EDX Upper 32-bits of MSR value.
3485
3486 <b>Example usage</b>
3487 @code
3488 UINT64 Msr;
3489
3490 Msr = AsmReadMsr64 (MSR_SKYLAKE_DRAM_PERF_STATUS);
3491 @endcode
3492**/
3493#define MSR_SKYLAKE_DRAM_PERF_STATUS 0x0000061B
3494
3495/**
3496 Package. DRAM RAPL Parameters (R/W) See Section 14.9.5, "DRAM RAPL Domain.".
3497
3498 @param ECX MSR_SKYLAKE_DRAM_POWER_INFO (0x0000061C)
3499 @param EAX Lower 32-bits of MSR value.
3500 @param EDX Upper 32-bits of MSR value.
3501
3502 <b>Example usage</b>
3503 @code
3504 UINT64 Msr;
3505
3506 Msr = AsmReadMsr64 (MSR_SKYLAKE_DRAM_POWER_INFO);
3507 AsmWriteMsr64 (MSR_SKYLAKE_DRAM_POWER_INFO, Msr);
3508 @endcode
3509**/
3510#define MSR_SKYLAKE_DRAM_POWER_INFO 0x0000061C
3511
3512/**
3513 Package. Uncore Ratio Limit (R/W) Out of reset, the min_ratio and max_ratio
3514 fields represent the widest possible range of uncore frequencies. Writing to
3515 these fields allows software to control the minimum and the maximum
3516 frequency that hardware will select.
3517
3518 @param ECX MSR_SKYLAKE_MSRUNCORE_RATIO_LIMIT (0x00000620)
3519 @param EAX Lower 32-bits of MSR value.
3520 Described by the type MSR_SKYLAKE_MSRUNCORE_RATIO_LIMIT_REGISTER.
3521 @param EDX Upper 32-bits of MSR value.
3522 Described by the type MSR_SKYLAKE_MSRUNCORE_RATIO_LIMIT_REGISTER.
3523
3524 <b>Example usage</b>
3525 @code
3526 MSR_SKYLAKE_MSRUNCORE_RATIO_LIMIT_REGISTER Msr;
3527
3528 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_MSRUNCORE_RATIO_LIMIT);
3529 AsmWriteMsr64 (MSR_SKYLAKE_MSRUNCORE_RATIO_LIMIT, Msr.Uint64);
3530 @endcode
3531**/
3532#define MSR_SKYLAKE_MSRUNCORE_RATIO_LIMIT 0x00000620
3533
3534/**
3535 MSR information returned for MSR index #MSR_SKYLAKE_MSRUNCORE_RATIO_LIMIT
3536**/
3537typedef union {
3538 ///
3539 /// Individual bit fields
3540 ///
3541 struct {
3542 ///
3543 /// [Bits 6:0] MAX_RATIO This field is used to limit the max ratio of the
3544 /// LLC/Ring.
3545 ///
3546 UINT32 MAX_RATIO : 7;
3547 UINT32 Reserved1 : 1;
3548 ///
3549 /// [Bits 14:8] MIN_RATIO Writing to this field controls the minimum
3550 /// possible ratio of the LLC/Ring.
3551 ///
3552 UINT32 MIN_RATIO : 7;
3553 UINT32 Reserved2 : 17;
3554 UINT32 Reserved3 : 32;
3555 } Bits;
3556 ///
3557 /// All bit fields as a 32-bit value
3558 ///
3559 UINT32 Uint32;
3560 ///
3561 /// All bit fields as a 64-bit value
3562 ///
3563 UINT64 Uint64;
3564} MSR_SKYLAKE_MSRUNCORE_RATIO_LIMIT_REGISTER;
3565
3566/**
3567 Package. Reserved (R/O) Reads return 0.
3568
3569 @param ECX MSR_SKYLAKE_PP0_ENERGY_STATUS (0x00000639)
3570 @param EAX Lower 32-bits of MSR value.
3571 @param EDX Upper 32-bits of MSR value.
3572
3573 <b>Example usage</b>
3574 @code
3575 UINT64 Msr;
3576
3577 Msr = AsmReadMsr64 (MSR_SKYLAKE_PP0_ENERGY_STATUS);
3578 @endcode
3579**/
3580#define MSR_SKYLAKE_PP0_ENERGY_STATUS 0x00000639
3581
3582/**
3583 THREAD. Monitoring Event Select Register (R/W) If CPUID.(EAX=07H,
3584 ECX=0):EBX.RDT-M[bit 12] = 1.
3585
3586 @param ECX MSR_SKYLAKE_IA32_QM_EVTSEL (0x00000C8D)
3587 @param EAX Lower 32-bits of MSR value.
3588 Described by the type MSR_SKYLAKE_IA32_QM_EVTSEL_REGISTER.
3589 @param EDX Upper 32-bits of MSR value.
3590 Described by the type MSR_SKYLAKE_IA32_QM_EVTSEL_REGISTER.
3591
3592 <b>Example usage</b>
3593 @code
3594 MSR_SKYLAKE_IA32_QM_EVTSEL_REGISTER Msr;
3595
3596 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_QM_EVTSEL);
3597 AsmWriteMsr64 (MSR_SKYLAKE_IA32_QM_EVTSEL, Msr.Uint64);
3598 @endcode
3599**/
3600#define MSR_SKYLAKE_IA32_QM_EVTSEL 0x00000C8D
3601
3602/**
3603 MSR information returned for MSR index #MSR_SKYLAKE_IA32_QM_EVTSEL
3604**/
3605typedef union {
3606 ///
3607 /// Individual bit fields
3608 ///
3609 struct {
3610 ///
3611 /// [Bits 7:0] EventID (RW) Event encoding: 0x00: No monitoring. 0x01: L3
3612 /// occupancy monitoring. 0x02: Total memory bandwidth monitoring. 0x03:
3613 /// Local memory bandwidth monitoring. All other encoding reserved.
3614 ///
3615 UINT32 EventID : 8;
3616 UINT32 Reserved1 : 24;
3617 ///
3618 /// [Bits 41:32] RMID (RW).
3619 ///
3620 UINT32 RMID : 10;
3621 UINT32 Reserved2 : 22;
3622 } Bits;
3623 ///
3624 /// All bit fields as a 64-bit value
3625 ///
3626 UINT64 Uint64;
3627} MSR_SKYLAKE_IA32_QM_EVTSEL_REGISTER;
3628
3629/**
3630 THREAD. Resource Association Register (R/W).
3631
3632 @param ECX MSR_SKYLAKE_IA32_PQR_ASSOC (0x00000C8F)
3633 @param EAX Lower 32-bits of MSR value.
3634 Described by the type MSR_SKYLAKE_IA32_PQR_ASSOC_REGISTER.
3635 @param EDX Upper 32-bits of MSR value.
3636 Described by the type MSR_SKYLAKE_IA32_PQR_ASSOC_REGISTER.
3637
3638 <b>Example usage</b>
3639 @code
3640 MSR_SKYLAKE_IA32_PQR_ASSOC_REGISTER Msr;
3641
3642 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_PQR_ASSOC);
3643 AsmWriteMsr64 (MSR_SKYLAKE_IA32_PQR_ASSOC, Msr.Uint64);
3644 @endcode
3645**/
3646#define MSR_SKYLAKE_IA32_PQR_ASSOC 0x00000C8F
3647
3648/**
3649 MSR information returned for MSR index #MSR_SKYLAKE_IA32_PQR_ASSOC
3650**/
3651typedef union {
3652 ///
3653 /// Individual bit fields
3654 ///
3655 struct {
3656 ///
3657 /// [Bits 9:0] RMID.
3658 ///
3659 UINT32 RMID : 10;
3660 UINT32 Reserved1 : 22;
3661 ///
3662 /// [Bits 51:32] COS (R/W).
3663 ///
3664 UINT32 COS : 20;
3665 UINT32 Reserved2 : 12;
3666 } Bits;
3667 ///
3668 /// All bit fields as a 64-bit value
3669 ///
3670 UINT64 Uint64;
3671} MSR_SKYLAKE_IA32_PQR_ASSOC_REGISTER;
3672
3673/**
3674 Package. L3 Class Of Service Mask - COS N (R/W) If CPUID.(EAX=10H,
3675 ECX=1):EDX.COS_MAX[15:0] >=0.
3676
3677 @param ECX MSR_SKYLAKE_IA32_L3_QOS_MASK_N
3678 @param EAX Lower 32-bits of MSR value.
3679 Described by the type MSR_SKYLAKE_IA32_L3_QOS_MASK_REGISTER.
3680 @param EDX Upper 32-bits of MSR value.
3681 Described by the type MSR_SKYLAKE_IA32_L3_QOS_MASK_REGISTER.
3682
3683 <b>Example usage</b>
3684 @code
3685 MSR_SKYLAKE_IA32_L3_QOS_MASK_REGISTER Msr;
3686
3687 Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_L3_QOS_MASK_N);
3688 AsmWriteMsr64 (MSR_SKYLAKE_IA32_L3_QOS_MASK_N, Msr.Uint64);
3689 @endcode
3690**/
3691#define MSR_SKYLAKE_IA32_L3_QOS_MASK_0 0x00000C90
3692#define MSR_SKYLAKE_IA32_L3_QOS_MASK_1 0x00000C91
3693#define MSR_SKYLAKE_IA32_L3_QOS_MASK_2 0x00000C92
3694#define MSR_SKYLAKE_IA32_L3_QOS_MASK_3 0x00000C93
3695#define MSR_SKYLAKE_IA32_L3_QOS_MASK_4 0x00000C94
3696#define MSR_SKYLAKE_IA32_L3_QOS_MASK_5 0x00000C95
3697#define MSR_SKYLAKE_IA32_L3_QOS_MASK_6 0x00000C96
3698#define MSR_SKYLAKE_IA32_L3_QOS_MASK_7 0x00000C97
3699#define MSR_SKYLAKE_IA32_L3_QOS_MASK_8 0x00000C98
3700#define MSR_SKYLAKE_IA32_L3_QOS_MASK_9 0x00000C99
3701#define MSR_SKYLAKE_IA32_L3_QOS_MASK_10 0x00000C9A
3702#define MSR_SKYLAKE_IA32_L3_QOS_MASK_11 0x00000C9B
3703#define MSR_SKYLAKE_IA32_L3_QOS_MASK_12 0x00000C9C
3704#define MSR_SKYLAKE_IA32_L3_QOS_MASK_13 0x00000C9D
3705#define MSR_SKYLAKE_IA32_L3_QOS_MASK_14 0x00000C9E
3706#define MSR_SKYLAKE_IA32_L3_QOS_MASK_15 0x00000C9F
3707
3708/**
3709 MSR information returned for MSR index #MSR_SKYLAKE_IA32_L3_QOS_MASK_N
3710**/
3711typedef union {
3712 ///
3713 /// Individual bit fields
3714 ///
3715 struct {
3716 ///
3717 /// [Bit 19:0] CBM: Bit vector of available L3 ways for COS N enforcement.
3718 ///
3719 UINT32 CBM : 20;
3720 UINT32 Reserved2 : 12;
3721 UINT32 Reserved3 : 32;
3722 } Bits;
3723 ///
3724 /// All bit fields as a 32-bit value
3725 ///
3726 UINT32 Uint32;
3727 ///
3728 /// All bit fields as a 64-bit value
3729 ///
3730 UINT64 Uint64;
3731} MSR_SKYLAKE_IA32_L3_QOS_MASK_REGISTER;
3732
3733#endif