]> git.proxmox.com Git - mirror_edk2.git/blob - UefiCpuPkg/Include/Register/Msr/XeonDMsr.h
UefiCpuPkg/XeonDMsr.h: add MSR reference from SDM in comment
[mirror_edk2.git] / UefiCpuPkg / Include / Register / Msr / XeonDMsr.h
1 /** @file
2 MSR Definitions for Intel(R) Xeon(R) Processor D product Family.
3
4 Provides defines for Machine Specific Registers(MSR) indexes. Data structures
5 are provided for MSRs that contain one or more bit fields. If the MSR value
6 returned is a single 32-bit or 64-bit value, then a data structure is not
7 provided for that MSR.
8
9 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
10 This program and the accompanying materials
11 are licensed and made available under the terms and conditions of the BSD License
12 which accompanies this distribution. The full text of the license may be found at
13 http://opensource.org/licenses/bsd-license.php
14
15 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
16 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17
18 @par Specification Reference:
19 Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
20 December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-13.
21
22 **/
23
24 #ifndef __XEON_D_MSR_H__
25 #define __XEON_D_MSR_H__
26
27 #include <Register/ArchitecturalMsr.h>
28
29 /**
30 Package. Protected Processor Inventory Number Enable Control (R/W).
31
32 @param ECX MSR_XEON_D_PPIN_CTL (0x0000004E)
33 @param EAX Lower 32-bits of MSR value.
34 Described by the type MSR_XEON_D_PPIN_CTL_REGISTER.
35 @param EDX Upper 32-bits of MSR value.
36 Described by the type MSR_XEON_D_PPIN_CTL_REGISTER.
37
38 <b>Example usage</b>
39 @code
40 MSR_XEON_D_PPIN_CTL_REGISTER Msr;
41
42 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_PPIN_CTL);
43 AsmWriteMsr64 (MSR_XEON_D_PPIN_CTL, Msr.Uint64);
44 @endcode
45 @note MSR_XEON_D_PPIN_CTL is defined as MSR_PPIN_CTL in SDM.
46 **/
47 #define MSR_XEON_D_PPIN_CTL 0x0000004E
48
49 /**
50 MSR information returned for MSR index #MSR_XEON_D_PPIN_CTL
51 **/
52 typedef union {
53 ///
54 /// Individual bit fields
55 ///
56 struct {
57 ///
58 /// [Bit 0] LockOut (R/WO) See Table 35-21.
59 ///
60 UINT32 LockOut:1;
61 ///
62 /// [Bit 1] Enable_PPIN (R/W) See Table 35-21.
63 ///
64 UINT32 Enable_PPIN:1;
65 UINT32 Reserved1:30;
66 UINT32 Reserved2:32;
67 } Bits;
68 ///
69 /// All bit fields as a 32-bit value
70 ///
71 UINT32 Uint32;
72 ///
73 /// All bit fields as a 64-bit value
74 ///
75 UINT64 Uint64;
76 } MSR_XEON_D_PPIN_CTL_REGISTER;
77
78
79 /**
80 Package. Protected Processor Inventory Number (R/O). Protected Processor
81 Inventory Number (R/O) See Table 35-21.
82
83 @param ECX MSR_XEON_D_PPIN (0x0000004F)
84 @param EAX Lower 32-bits of MSR value.
85 @param EDX Upper 32-bits of MSR value.
86
87 <b>Example usage</b>
88 @code
89 UINT64 Msr;
90
91 Msr = AsmReadMsr64 (MSR_XEON_D_PPIN);
92 @endcode
93 @note MSR_XEON_D_PPIN is defined as MSR_PPIN in SDM.
94 **/
95 #define MSR_XEON_D_PPIN 0x0000004F
96
97
98 /**
99 Package. See http://biosbits.org.
100
101 @param ECX MSR_XEON_D_PLATFORM_INFO (0x000000CE)
102 @param EAX Lower 32-bits of MSR value.
103 Described by the type MSR_XEON_D_PLATFORM_INFO_REGISTER.
104 @param EDX Upper 32-bits of MSR value.
105 Described by the type MSR_XEON_D_PLATFORM_INFO_REGISTER.
106
107 <b>Example usage</b>
108 @code
109 MSR_XEON_D_PLATFORM_INFO_REGISTER Msr;
110
111 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_PLATFORM_INFO);
112 AsmWriteMsr64 (MSR_XEON_D_PLATFORM_INFO, Msr.Uint64);
113 @endcode
114 @note MSR_XEON_D_PLATFORM_INFO is defined as MSR_PLATFORM_INFO in SDM.
115 **/
116 #define MSR_XEON_D_PLATFORM_INFO 0x000000CE
117
118 /**
119 MSR information returned for MSR index #MSR_XEON_D_PLATFORM_INFO
120 **/
121 typedef union {
122 ///
123 /// Individual bit fields
124 ///
125 struct {
126 UINT32 Reserved1:8;
127 ///
128 /// [Bits 15:8] Package. Maximum Non-Turbo Ratio (R/O) See Table 35-21.
129 ///
130 UINT32 MaximumNonTurboRatio:8;
131 UINT32 Reserved2:7;
132 ///
133 /// [Bit 23] Package. PPIN_CAP (R/O) See Table 35-21.
134 ///
135 UINT32 PPIN_CAP:1;
136 UINT32 Reserved3:4;
137 ///
138 /// [Bit 28] Package. Programmable Ratio Limit for Turbo Mode (R/O) See
139 /// Table 35-21.
140 ///
141 UINT32 RatioLimit:1;
142 ///
143 /// [Bit 29] Package. Programmable TDP Limit for Turbo Mode (R/O) See
144 /// Table 35-21.
145 ///
146 UINT32 TDPLimit:1;
147 ///
148 /// [Bit 30] Package. Programmable TJ OFFSET (R/O) See Table 35-21.
149 ///
150 UINT32 TJOFFSET:1;
151 UINT32 Reserved4:1;
152 UINT32 Reserved5:8;
153 ///
154 /// [Bits 47:40] Package. Maximum Efficiency Ratio (R/O) See Table 35-21.
155 ///
156 UINT32 MaximumEfficiencyRatio:8;
157 UINT32 Reserved6:16;
158 } Bits;
159 ///
160 /// All bit fields as a 64-bit value
161 ///
162 UINT64 Uint64;
163 } MSR_XEON_D_PLATFORM_INFO_REGISTER;
164
165
166 /**
167 Core. C-State Configuration Control (R/W) Note: C-state values are processor
168 specific C-state code names, unrelated to MWAIT extension C-state parameters
169 or ACPI C-states. `See http://biosbits.org. <http://biosbits.org>`__.
170
171 @param ECX MSR_XEON_D_PKG_CST_CONFIG_CONTROL (0x000000E2)
172 @param EAX Lower 32-bits of MSR value.
173 Described by the type MSR_XEON_D_PKG_CST_CONFIG_CONTROL_REGISTER.
174 @param EDX Upper 32-bits of MSR value.
175 Described by the type MSR_XEON_D_PKG_CST_CONFIG_CONTROL_REGISTER.
176
177 <b>Example usage</b>
178 @code
179 MSR_XEON_D_PKG_CST_CONFIG_CONTROL_REGISTER Msr;
180
181 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_PKG_CST_CONFIG_CONTROL);
182 AsmWriteMsr64 (MSR_XEON_D_PKG_CST_CONFIG_CONTROL, Msr.Uint64);
183 @endcode
184 @note MSR_XEON_D_PKG_CST_CONFIG_CONTROL is defined as MSR_PKG_CST_CONFIG_CONTROL in SDM.
185 **/
186 #define MSR_XEON_D_PKG_CST_CONFIG_CONTROL 0x000000E2
187
188 /**
189 MSR information returned for MSR index #MSR_XEON_D_PKG_CST_CONFIG_CONTROL
190 **/
191 typedef union {
192 ///
193 /// Individual bit fields
194 ///
195 struct {
196 ///
197 /// [Bits 2:0] Package C-State Limit (R/W) Specifies the lowest
198 /// processor-specific C-state code name (consuming the least power) for
199 /// the package. The default is set as factory-configured package C-state
200 /// limit. The following C-state code name encodings are supported: 000b:
201 /// C0/C1 (no package C-state support) 001b: C2 010b: C6 (non-retention)
202 /// 011b: C6 (retention) 111b: No Package C state limits. All C states
203 /// supported by the processor are available.
204 ///
205 UINT32 Limit:3;
206 UINT32 Reserved1:7;
207 ///
208 /// [Bit 10] I/O MWAIT Redirection Enable (R/W).
209 ///
210 UINT32 IO_MWAIT:1;
211 UINT32 Reserved2:4;
212 ///
213 /// [Bit 15] CFG Lock (R/WO).
214 ///
215 UINT32 CFGLock:1;
216 ///
217 /// [Bit 16] Automatic C-State Conversion Enable (R/W) If 1, the processor
218 /// will convert HALT or MWAT(C1) to MWAIT(C6).
219 ///
220 UINT32 CStateConversion:1;
221 UINT32 Reserved3:8;
222 ///
223 /// [Bit 25] C3 State Auto Demotion Enable (R/W).
224 ///
225 UINT32 C3AutoDemotion:1;
226 ///
227 /// [Bit 26] C1 State Auto Demotion Enable (R/W).
228 ///
229 UINT32 C1AutoDemotion:1;
230 ///
231 /// [Bit 27] Enable C3 Undemotion (R/W).
232 ///
233 UINT32 C3Undemotion:1;
234 ///
235 /// [Bit 28] Enable C1 Undemotion (R/W).
236 ///
237 UINT32 C1Undemotion:1;
238 ///
239 /// [Bit 29] Package C State Demotion Enable (R/W).
240 ///
241 UINT32 CStateDemotion:1;
242 ///
243 /// [Bit 30] Package C State UnDemotion Enable (R/W).
244 ///
245 UINT32 CStateUndemotion:1;
246 UINT32 Reserved4:1;
247 UINT32 Reserved5:32;
248 } Bits;
249 ///
250 /// All bit fields as a 32-bit value
251 ///
252 UINT32 Uint32;
253 ///
254 /// All bit fields as a 64-bit value
255 ///
256 UINT64 Uint64;
257 } MSR_XEON_D_PKG_CST_CONFIG_CONTROL_REGISTER;
258
259
260 /**
261 Thread. Global Machine Check Capability (R/O).
262
263 @param ECX MSR_XEON_D_IA32_MCG_CAP (0x00000179)
264 @param EAX Lower 32-bits of MSR value.
265 Described by the type MSR_XEON_D_IA32_MCG_CAP_REGISTER.
266 @param EDX Upper 32-bits of MSR value.
267 Described by the type MSR_XEON_D_IA32_MCG_CAP_REGISTER.
268
269 <b>Example usage</b>
270 @code
271 MSR_XEON_D_IA32_MCG_CAP_REGISTER Msr;
272
273 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_IA32_MCG_CAP);
274 @endcode
275 @note MSR_XEON_D_IA32_MCG_CAP is defined as IA32_MCG_CAP in SDM.
276 **/
277 #define MSR_XEON_D_IA32_MCG_CAP 0x00000179
278
279 /**
280 MSR information returned for MSR index #MSR_XEON_D_IA32_MCG_CAP
281 **/
282 typedef union {
283 ///
284 /// Individual bit fields
285 ///
286 struct {
287 ///
288 /// [Bits 7:0] Count.
289 ///
290 UINT32 Count:8;
291 ///
292 /// [Bit 8] MCG_CTL_P.
293 ///
294 UINT32 MCG_CTL_P:1;
295 ///
296 /// [Bit 9] MCG_EXT_P.
297 ///
298 UINT32 MCG_EXT_P:1;
299 ///
300 /// [Bit 10] MCP_CMCI_P.
301 ///
302 UINT32 MCP_CMCI_P:1;
303 ///
304 /// [Bit 11] MCG_TES_P.
305 ///
306 UINT32 MCG_TES_P:1;
307 UINT32 Reserved1:4;
308 ///
309 /// [Bits 23:16] MCG_EXT_CNT.
310 ///
311 UINT32 MCG_EXT_CNT:8;
312 ///
313 /// [Bit 24] MCG_SER_P.
314 ///
315 UINT32 MCG_SER_P:1;
316 ///
317 /// [Bit 25] MCG_EM_P.
318 ///
319 UINT32 MCG_EM_P:1;
320 ///
321 /// [Bit 26] MCG_ELOG_P.
322 ///
323 UINT32 MCG_ELOG_P:1;
324 UINT32 Reserved2:5;
325 UINT32 Reserved3:32;
326 } Bits;
327 ///
328 /// All bit fields as a 32-bit value
329 ///
330 UINT32 Uint32;
331 ///
332 /// All bit fields as a 64-bit value
333 ///
334 UINT64 Uint64;
335 } MSR_XEON_D_IA32_MCG_CAP_REGISTER;
336
337
338 /**
339 THREAD. Enhanced SMM Capabilities (SMM-RO) Reports SMM capability
340 Enhancement. Accessible only while in SMM.
341
342 @param ECX MSR_XEON_D_SMM_MCA_CAP (0x0000017D)
343 @param EAX Lower 32-bits of MSR value.
344 Described by the type MSR_XEON_D_SMM_MCA_CAP_REGISTER.
345 @param EDX Upper 32-bits of MSR value.
346 Described by the type MSR_XEON_D_SMM_MCA_CAP_REGISTER.
347
348 <b>Example usage</b>
349 @code
350 MSR_XEON_D_SMM_MCA_CAP_REGISTER Msr;
351
352 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_SMM_MCA_CAP);
353 AsmWriteMsr64 (MSR_XEON_D_SMM_MCA_CAP, Msr.Uint64);
354 @endcode
355 @note MSR_XEON_D_SMM_MCA_CAP is defined as MSR_SMM_MCA_CAP in SDM.
356 **/
357 #define MSR_XEON_D_SMM_MCA_CAP 0x0000017D
358
359 /**
360 MSR information returned for MSR index #MSR_XEON_D_SMM_MCA_CAP
361 **/
362 typedef union {
363 ///
364 /// Individual bit fields
365 ///
366 struct {
367 UINT32 Reserved1:32;
368 UINT32 Reserved2:26;
369 ///
370 /// [Bit 58] SMM_Code_Access_Chk (SMM-RO) If set to 1 indicates that the
371 /// SMM code access restriction is supported and a host-space interface
372 /// available to SMM handler.
373 ///
374 UINT32 SMM_Code_Access_Chk:1;
375 ///
376 /// [Bit 59] Long_Flow_Indication (SMM-RO) If set to 1 indicates that the
377 /// SMM long flow indicator is supported and a host-space interface
378 /// available to SMM handler.
379 ///
380 UINT32 Long_Flow_Indication:1;
381 UINT32 Reserved3:4;
382 } Bits;
383 ///
384 /// All bit fields as a 64-bit value
385 ///
386 UINT64 Uint64;
387 } MSR_XEON_D_SMM_MCA_CAP_REGISTER;
388
389
390 /**
391 Package.
392
393 @param ECX MSR_XEON_D_TEMPERATURE_TARGET (0x000001A2)
394 @param EAX Lower 32-bits of MSR value.
395 Described by the type MSR_XEON_D_TEMPERATURE_TARGET_REGISTER.
396 @param EDX Upper 32-bits of MSR value.
397 Described by the type MSR_XEON_D_TEMPERATURE_TARGET_REGISTER.
398
399 <b>Example usage</b>
400 @code
401 MSR_XEON_D_TEMPERATURE_TARGET_REGISTER Msr;
402
403 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_TEMPERATURE_TARGET);
404 AsmWriteMsr64 (MSR_XEON_D_TEMPERATURE_TARGET, Msr.Uint64);
405 @endcode
406 @note MSR_XEON_D_TEMPERATURE_TARGET is defined as MSR_TEMPERATURE_TARGET in SDM.
407 **/
408 #define MSR_XEON_D_TEMPERATURE_TARGET 0x000001A2
409
410 /**
411 MSR information returned for MSR index #MSR_XEON_D_TEMPERATURE_TARGET
412 **/
413 typedef union {
414 ///
415 /// Individual bit fields
416 ///
417 struct {
418 UINT32 Reserved1:16;
419 ///
420 /// [Bits 23:16] Temperature Target (RO) See Table 35-21.
421 ///
422 UINT32 TemperatureTarget:8;
423 ///
424 /// [Bits 27:24] TCC Activation Offset (R/W) See Table 35-21.
425 ///
426 UINT32 TCCActivationOffset:4;
427 UINT32 Reserved2:4;
428 UINT32 Reserved3:32;
429 } Bits;
430 ///
431 /// All bit fields as a 32-bit value
432 ///
433 UINT32 Uint32;
434 ///
435 /// All bit fields as a 64-bit value
436 ///
437 UINT64 Uint64;
438 } MSR_XEON_D_TEMPERATURE_TARGET_REGISTER;
439
440
441 /**
442 Package. Maximum Ratio Limit of Turbo Mode RO if MSR_PLATFORM_INFO.[28] = 0,
443 RW if MSR_PLATFORM_INFO.[28] = 1.
444
445 @param ECX MSR_XEON_D_TURBO_RATIO_LIMIT (0x000001AD)
446 @param EAX Lower 32-bits of MSR value.
447 Described by the type MSR_XEON_D_TURBO_RATIO_LIMIT_REGISTER.
448 @param EDX Upper 32-bits of MSR value.
449 Described by the type MSR_XEON_D_TURBO_RATIO_LIMIT_REGISTER.
450
451 <b>Example usage</b>
452 @code
453 MSR_XEON_D_TURBO_RATIO_LIMIT_REGISTER Msr;
454
455 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_TURBO_RATIO_LIMIT);
456 @endcode
457 @note MSR_XEON_D_TURBO_RATIO_LIMIT is defined as MSR_TURBO_RATIO_LIMIT in SDM.
458 **/
459 #define MSR_XEON_D_TURBO_RATIO_LIMIT 0x000001AD
460
461 /**
462 MSR information returned for MSR index #MSR_XEON_D_TURBO_RATIO_LIMIT
463 **/
464 typedef union {
465 ///
466 /// Individual bit fields
467 ///
468 struct {
469 ///
470 /// [Bits 7:0] Package. Maximum Ratio Limit for 1C.
471 ///
472 UINT32 Maximum1C:8;
473 ///
474 /// [Bits 15:8] Package. Maximum Ratio Limit for 2C.
475 ///
476 UINT32 Maximum2C:8;
477 ///
478 /// [Bits 23:16] Package. Maximum Ratio Limit for 3C.
479 ///
480 UINT32 Maximum3C:8;
481 ///
482 /// [Bits 31:24] Package. Maximum Ratio Limit for 4C.
483 ///
484 UINT32 Maximum4C:8;
485 ///
486 /// [Bits 39:32] Package. Maximum Ratio Limit for 5C.
487 ///
488 UINT32 Maximum5C:8;
489 ///
490 /// [Bits 47:40] Package. Maximum Ratio Limit for 6C.
491 ///
492 UINT32 Maximum6C:8;
493 ///
494 /// [Bits 55:48] Package. Maximum Ratio Limit for 7C.
495 ///
496 UINT32 Maximum7C:8;
497 ///
498 /// [Bits 63:56] Package. Maximum Ratio Limit for 8C.
499 ///
500 UINT32 Maximum8C:8;
501 } Bits;
502 ///
503 /// All bit fields as a 64-bit value
504 ///
505 UINT64 Uint64;
506 } MSR_XEON_D_TURBO_RATIO_LIMIT_REGISTER;
507
508
509 /**
510 Package. Maximum Ratio Limit of Turbo Mode RO if MSR_PLATFORM_INFO.[28] = 0,
511 RW if MSR_PLATFORM_INFO.[28] = 1.
512
513 @param ECX MSR_XEON_D_TURBO_RATIO_LIMIT1 (0x000001AE)
514 @param EAX Lower 32-bits of MSR value.
515 Described by the type MSR_XEON_D_TURBO_RATIO_LIMIT1_REGISTER.
516 @param EDX Upper 32-bits of MSR value.
517 Described by the type MSR_XEON_D_TURBO_RATIO_LIMIT1_REGISTER.
518
519 <b>Example usage</b>
520 @code
521 MSR_XEON_D_TURBO_RATIO_LIMIT1_REGISTER Msr;
522
523 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_TURBO_RATIO_LIMIT1);
524 @endcode
525 @note MSR_XEON_D_TURBO_RATIO_LIMIT1 is defined as MSR_TURBO_RATIO_LIMIT1 in SDM.
526 **/
527 #define MSR_XEON_D_TURBO_RATIO_LIMIT1 0x000001AE
528
529 /**
530 MSR information returned for MSR index #MSR_XEON_D_TURBO_RATIO_LIMIT1
531 **/
532 typedef union {
533 ///
534 /// Individual bit fields
535 ///
536 struct {
537 ///
538 /// [Bits 7:0] Package. Maximum Ratio Limit for 9C.
539 ///
540 UINT32 Maximum9C:8;
541 ///
542 /// [Bits 15:8] Package. Maximum Ratio Limit for 10C.
543 ///
544 UINT32 Maximum10C:8;
545 ///
546 /// [Bits 23:16] Package. Maximum Ratio Limit for 11C.
547 ///
548 UINT32 Maximum11C:8;
549 ///
550 /// [Bits 31:24] Package. Maximum Ratio Limit for 12C.
551 ///
552 UINT32 Maximum12C:8;
553 ///
554 /// [Bits 39:32] Package. Maximum Ratio Limit for 13C.
555 ///
556 UINT32 Maximum13C:8;
557 ///
558 /// [Bits 47:40] Package. Maximum Ratio Limit for 14C.
559 ///
560 UINT32 Maximum14C:8;
561 ///
562 /// [Bits 55:48] Package. Maximum Ratio Limit for 15C.
563 ///
564 UINT32 Maximum15C:8;
565 ///
566 /// [Bits 63:56] Package. Maximum Ratio Limit for 16C.
567 ///
568 UINT32 Maximum16C:8;
569 } Bits;
570 ///
571 /// All bit fields as a 64-bit value
572 ///
573 UINT64 Uint64;
574 } MSR_XEON_D_TURBO_RATIO_LIMIT1_REGISTER;
575
576
577 /**
578 Package. Unit Multipliers used in RAPL Interfaces (R/O).
579
580 @param ECX MSR_XEON_D_RAPL_POWER_UNIT (0x00000606)
581 @param EAX Lower 32-bits of MSR value.
582 Described by the type MSR_XEON_D_RAPL_POWER_UNIT_REGISTER.
583 @param EDX Upper 32-bits of MSR value.
584 Described by the type MSR_XEON_D_RAPL_POWER_UNIT_REGISTER.
585
586 <b>Example usage</b>
587 @code
588 MSR_XEON_D_RAPL_POWER_UNIT_REGISTER Msr;
589
590 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_RAPL_POWER_UNIT);
591 @endcode
592 @note MSR_XEON_D_RAPL_POWER_UNIT is defined as MSR_RAPL_POWER_UNIT in SDM.
593 **/
594 #define MSR_XEON_D_RAPL_POWER_UNIT 0x00000606
595
596 /**
597 MSR information returned for MSR index #MSR_XEON_D_RAPL_POWER_UNIT
598 **/
599 typedef union {
600 ///
601 /// Individual bit fields
602 ///
603 struct {
604 ///
605 /// [Bits 3:0] Package. Power Units See Section 14.9.1, "RAPL Interfaces.".
606 ///
607 UINT32 PowerUnits:4;
608 UINT32 Reserved1:4;
609 ///
610 /// [Bits 12:8] Package. Energy Status Units Energy related information
611 /// (in Joules) is based on the multiplier, 1/2^ESU; where ESU is an
612 /// unsigned integer represented by bits 12:8. Default value is 0EH (or 61
613 /// micro-joules).
614 ///
615 UINT32 EnergyStatusUnits:5;
616 UINT32 Reserved2:3;
617 ///
618 /// [Bits 19:16] Package. Time Units See Section 14.9.1, "RAPL
619 /// Interfaces.".
620 ///
621 UINT32 TimeUnits:4;
622 UINT32 Reserved3:12;
623 UINT32 Reserved4:32;
624 } Bits;
625 ///
626 /// All bit fields as a 32-bit value
627 ///
628 UINT32 Uint32;
629 ///
630 /// All bit fields as a 64-bit value
631 ///
632 UINT64 Uint64;
633 } MSR_XEON_D_RAPL_POWER_UNIT_REGISTER;
634
635
636 /**
637 Package. DRAM RAPL Power Limit Control (R/W) See Section 14.9.5, "DRAM RAPL
638 Domain.".
639
640 @param ECX MSR_XEON_D_DRAM_POWER_LIMIT (0x00000618)
641 @param EAX Lower 32-bits of MSR value.
642 @param EDX Upper 32-bits of MSR value.
643
644 <b>Example usage</b>
645 @code
646 UINT64 Msr;
647
648 Msr = AsmReadMsr64 (MSR_XEON_D_DRAM_POWER_LIMIT);
649 AsmWriteMsr64 (MSR_XEON_D_DRAM_POWER_LIMIT, Msr);
650 @endcode
651 @note MSR_XEON_D_DRAM_POWER_LIMIT is defined as MSR_DRAM_POWER_LIMIT in SDM.
652 **/
653 #define MSR_XEON_D_DRAM_POWER_LIMIT 0x00000618
654
655
656 /**
657 Package. DRAM Energy Status (R/O) See Section 14.9.5, "DRAM RAPL Domain.".
658
659 @param ECX MSR_XEON_D_DRAM_ENERGY_STATUS (0x00000619)
660 @param EAX Lower 32-bits of MSR value.
661 @param EDX Upper 32-bits of MSR value.
662
663 <b>Example usage</b>
664 @code
665 UINT64 Msr;
666
667 Msr = AsmReadMsr64 (MSR_XEON_D_DRAM_ENERGY_STATUS);
668 @endcode
669 @note MSR_XEON_D_DRAM_ENERGY_STATUS is defined as MSR_DRAM_ENERGY_STATUS in SDM.
670 **/
671 #define MSR_XEON_D_DRAM_ENERGY_STATUS 0x00000619
672
673
674 /**
675 Package. DRAM Performance Throttling Status (R/O) See Section 14.9.5, "DRAM
676 RAPL Domain.".
677
678 @param ECX MSR_XEON_D_DRAM_PERF_STATUS (0x0000061B)
679 @param EAX Lower 32-bits of MSR value.
680 @param EDX Upper 32-bits of MSR value.
681
682 <b>Example usage</b>
683 @code
684 UINT64 Msr;
685
686 Msr = AsmReadMsr64 (MSR_XEON_D_DRAM_PERF_STATUS);
687 @endcode
688 @note MSR_XEON_D_DRAM_PERF_STATUS is defined as MSR_DRAM_PERF_STATUS in SDM.
689 **/
690 #define MSR_XEON_D_DRAM_PERF_STATUS 0x0000061B
691
692
693 /**
694 Package. DRAM RAPL Parameters (R/W) See Section 14.9.5, "DRAM RAPL Domain.".
695
696 @param ECX MSR_XEON_D_DRAM_POWER_INFO (0x0000061C)
697 @param EAX Lower 32-bits of MSR value.
698 @param EDX Upper 32-bits of MSR value.
699
700 <b>Example usage</b>
701 @code
702 UINT64 Msr;
703
704 Msr = AsmReadMsr64 (MSR_XEON_D_DRAM_POWER_INFO);
705 AsmWriteMsr64 (MSR_XEON_D_DRAM_POWER_INFO, Msr);
706 @endcode
707 @note MSR_XEON_D_DRAM_POWER_INFO is defined as MSR_DRAM_POWER_INFO in SDM.
708 **/
709 #define MSR_XEON_D_DRAM_POWER_INFO 0x0000061C
710
711
712 /**
713 Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency
714 refers to processor core frequency).
715
716 @param ECX MSR_XEON_D_CORE_PERF_LIMIT_REASONS (0x00000690)
717 @param EAX Lower 32-bits of MSR value.
718 Described by the type MSR_XEON_D_CORE_PERF_LIMIT_REASONS_REGISTER.
719 @param EDX Upper 32-bits of MSR value.
720 Described by the type MSR_XEON_D_CORE_PERF_LIMIT_REASONS_REGISTER.
721
722 <b>Example usage</b>
723 @code
724 MSR_XEON_D_CORE_PERF_LIMIT_REASONS_REGISTER Msr;
725
726 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_CORE_PERF_LIMIT_REASONS);
727 AsmWriteMsr64 (MSR_XEON_D_CORE_PERF_LIMIT_REASONS, Msr.Uint64);
728 @endcode
729 @note MSR_XEON_D_CORE_PERF_LIMIT_REASONS is defined as MSR_CORE_PERF_LIMIT_REASONS in SDM.
730 **/
731 #define MSR_XEON_D_CORE_PERF_LIMIT_REASONS 0x00000690
732
733 /**
734 MSR information returned for MSR index #MSR_XEON_D_CORE_PERF_LIMIT_REASONS
735 **/
736 typedef union {
737 ///
738 /// Individual bit fields
739 ///
740 struct {
741 ///
742 /// [Bit 0] PROCHOT Status (R0) When set, processor core frequency is
743 /// reduced below the operating system request due to assertion of
744 /// external PROCHOT.
745 ///
746 UINT32 PROCHOT_Status:1;
747 ///
748 /// [Bit 1] Thermal Status (R0) When set, frequency is reduced below the
749 /// operating system request due to a thermal event.
750 ///
751 UINT32 ThermalStatus:1;
752 ///
753 /// [Bit 2] Power Budget Management Status (R0) When set, frequency is
754 /// reduced below the operating system request due to PBM limit.
755 ///
756 UINT32 PowerBudgetManagementStatus:1;
757 ///
758 /// [Bit 3] Platform Configuration Services Status (R0) When set,
759 /// frequency is reduced below the operating system request due to PCS
760 /// limit.
761 ///
762 UINT32 PlatformConfigurationServicesStatus:1;
763 UINT32 Reserved1:1;
764 ///
765 /// [Bit 5] Autonomous Utilization-Based Frequency Control Status (R0)
766 /// When set, frequency is reduced below the operating system request
767 /// because the processor has detected that utilization is low.
768 ///
769 UINT32 AutonomousUtilizationBasedFrequencyControlStatus:1;
770 ///
771 /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced
772 /// below the operating system request due to a thermal alert from the
773 /// Voltage Regulator.
774 ///
775 UINT32 VRThermAlertStatus:1;
776 UINT32 Reserved2:1;
777 ///
778 /// [Bit 8] Electrical Design Point Status (R0) When set, frequency is
779 /// reduced below the operating system request due to electrical design
780 /// point constraints (e.g. maximum electrical current consumption).
781 ///
782 UINT32 ElectricalDesignPointStatus:1;
783 UINT32 Reserved3:1;
784 ///
785 /// [Bit 10] Multi-Core Turbo Status (R0) When set, frequency is reduced
786 /// below the operating system request due to Multi-Core Turbo limits.
787 ///
788 UINT32 MultiCoreTurboStatus:1;
789 UINT32 Reserved4:2;
790 ///
791 /// [Bit 13] Core Frequency P1 Status (R0) When set, frequency is reduced
792 /// below max non-turbo P1.
793 ///
794 UINT32 FrequencyP1Status:1;
795 ///
796 /// [Bit 14] Core Max n-core Turbo Frequency Limiting Status (R0) When
797 /// set, frequency is reduced below max n-core turbo frequency.
798 ///
799 UINT32 TurboFrequencyLimitingStatus:1;
800 ///
801 /// [Bit 15] Core Frequency Limiting Status (R0) When set, frequency is
802 /// reduced below the operating system request.
803 ///
804 UINT32 FrequencyLimitingStatus:1;
805 ///
806 /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit
807 /// has asserted since the log bit was last cleared. This log bit will
808 /// remain set until cleared by software writing 0.
809 ///
810 UINT32 PROCHOT_Log:1;
811 ///
812 /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit
813 /// has asserted since the log bit was last cleared. This log bit will
814 /// remain set until cleared by software writing 0.
815 ///
816 UINT32 ThermalLog:1;
817 ///
818 /// [Bit 18] Power Budget Management Log When set, indicates that the PBM
819 /// Status bit has asserted since the log bit was last cleared. This log
820 /// bit will remain set until cleared by software writing 0.
821 ///
822 UINT32 PowerBudgetManagementLog:1;
823 ///
824 /// [Bit 19] Platform Configuration Services Log When set, indicates that
825 /// the PCS Status bit has asserted since the log bit was last cleared.
826 /// This log bit will remain set until cleared by software writing 0.
827 ///
828 UINT32 PlatformConfigurationServicesLog:1;
829 UINT32 Reserved5:1;
830 ///
831 /// [Bit 21] Autonomous Utilization-Based Frequency Control Log When set,
832 /// indicates that the AUBFC Status bit has asserted since the log bit was
833 /// last cleared. This log bit will remain set until cleared by software
834 /// writing 0.
835 ///
836 UINT32 AutonomousUtilizationBasedFrequencyControlLog:1;
837 ///
838 /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm
839 /// Alert Status bit has asserted since the log bit was last cleared. This
840 /// log bit will remain set until cleared by software writing 0.
841 ///
842 UINT32 VRThermAlertLog:1;
843 UINT32 Reserved6:1;
844 ///
845 /// [Bit 24] Electrical Design Point Log When set, indicates that the EDP
846 /// Status bit has asserted since the log bit was last cleared. This log
847 /// bit will remain set until cleared by software writing 0.
848 ///
849 UINT32 ElectricalDesignPointLog:1;
850 UINT32 Reserved7:1;
851 ///
852 /// [Bit 26] Multi-Core Turbo Log When set, indicates that the Multi-Core
853 /// Turbo Status bit has asserted since the log bit was last cleared. This
854 /// log bit will remain set until cleared by software writing 0.
855 ///
856 UINT32 MultiCoreTurboLog:1;
857 UINT32 Reserved8:2;
858 ///
859 /// [Bit 29] Core Frequency P1 Log When set, indicates that the Core
860 /// Frequency P1 Status bit has asserted since the log bit was last
861 /// cleared. This log bit will remain set until cleared by software
862 /// writing 0.
863 ///
864 UINT32 CoreFrequencyP1Log:1;
865 ///
866 /// [Bit 30] Core Max n-core Turbo Frequency Limiting Log When set,
867 /// indicates that the Core Max n-core Turbo Frequency Limiting Status bit
868 /// has asserted since the log bit was last cleared. This log bit will
869 /// remain set until cleared by software writing 0.
870 ///
871 UINT32 TurboFrequencyLimitingLog:1;
872 ///
873 /// [Bit 31] Core Frequency Limiting Log When set, indicates that the Core
874 /// Frequency Limiting Status bit has asserted since the log bit was last
875 /// cleared. This log bit will remain set until cleared by software
876 /// writing 0.
877 ///
878 UINT32 CoreFrequencyLimitingLog:1;
879 UINT32 Reserved9:32;
880 } Bits;
881 ///
882 /// All bit fields as a 32-bit value
883 ///
884 UINT32 Uint32;
885 ///
886 /// All bit fields as a 64-bit value
887 ///
888 UINT64 Uint64;
889 } MSR_XEON_D_CORE_PERF_LIMIT_REASONS_REGISTER;
890
891
892 /**
893 THREAD. Monitoring Event Select Register (R/W) if CPUID.(EAX=07H,
894 ECX=0):EBX.PQM[bit 12] = 1.
895
896 @param ECX MSR_XEON_D_IA32_QM_EVTSEL (0x00000C8D)
897 @param EAX Lower 32-bits of MSR value.
898 Described by the type MSR_XEON_D_IA32_QM_EVTSEL_REGISTER.
899 @param EDX Upper 32-bits of MSR value.
900 Described by the type MSR_XEON_D_IA32_QM_EVTSEL_REGISTER.
901
902 <b>Example usage</b>
903 @code
904 MSR_XEON_D_IA32_QM_EVTSEL_REGISTER Msr;
905
906 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_IA32_QM_EVTSEL);
907 AsmWriteMsr64 (MSR_XEON_D_IA32_QM_EVTSEL, Msr.Uint64);
908 @endcode
909 @note MSR_XEON_D_IA32_QM_EVTSEL is defined as IA32_QM_EVTSEL in SDM.
910 **/
911 #define MSR_XEON_D_IA32_QM_EVTSEL 0x00000C8D
912
913 /**
914 MSR information returned for MSR index #MSR_XEON_D_IA32_QM_EVTSEL
915 **/
916 typedef union {
917 ///
918 /// Individual bit fields
919 ///
920 struct {
921 ///
922 /// [Bits 7:0] EventID (RW) Event encoding: 0x00: no monitoring 0x01: L3
923 /// occupancy monitoring 0x02: Total memory bandwidth monitoring 0x03:
924 /// Local memory bandwidth monitoring All other encoding reserved.
925 ///
926 UINT32 EventID:8;
927 UINT32 Reserved1:24;
928 ///
929 /// [Bits 41:32] RMID (RW).
930 ///
931 UINT32 RMID:10;
932 UINT32 Reserved2:22;
933 } Bits;
934 ///
935 /// All bit fields as a 64-bit value
936 ///
937 UINT64 Uint64;
938 } MSR_XEON_D_IA32_QM_EVTSEL_REGISTER;
939
940
941 /**
942 THREAD. Resource Association Register (R/W).
943
944 @param ECX MSR_XEON_D_IA32_PQR_ASSOC (0x00000C8F)
945 @param EAX Lower 32-bits of MSR value.
946 Described by the type MSR_XEON_D_IA32_PQR_ASSOC_REGISTER.
947 @param EDX Upper 32-bits of MSR value.
948 Described by the type MSR_XEON_D_IA32_PQR_ASSOC_REGISTER.
949
950 <b>Example usage</b>
951 @code
952 MSR_XEON_D_IA32_PQR_ASSOC_REGISTER Msr;
953
954 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_IA32_PQR_ASSOC);
955 AsmWriteMsr64 (MSR_XEON_D_IA32_PQR_ASSOC, Msr.Uint64);
956 @endcode
957 @note MSR_XEON_D_IA32_PQR_ASSOC is defined as IA32_PQR_ASSOC in SDM.
958 **/
959 #define MSR_XEON_D_IA32_PQR_ASSOC 0x00000C8F
960
961 /**
962 MSR information returned for MSR index #MSR_XEON_D_IA32_PQR_ASSOC
963 **/
964 typedef union {
965 ///
966 /// Individual bit fields
967 ///
968 struct {
969 ///
970 /// [Bits 9:0] RMID.
971 ///
972 UINT32 RMID:10;
973 UINT32 Reserved1:22;
974 ///
975 /// [Bits 51:32] COS (R/W).
976 ///
977 UINT32 COS:20;
978 UINT32 Reserved2:12;
979 } Bits;
980 ///
981 /// All bit fields as a 64-bit value
982 ///
983 UINT64 Uint64;
984 } MSR_XEON_D_IA32_PQR_ASSOC_REGISTER;
985
986
987 /**
988 Package. L3 Class Of Service Mask - COS n (R/W) if CPUID.(EAX=10H,
989 ECX=1):EDX.COS_MAX[15:0] >= n.
990
991 @param ECX MSR_XEON_D_IA32_L3_QOS_MASK_n
992 @param EAX Lower 32-bits of MSR value.
993 Described by the type MSR_XEON_D_IA32_L3_QOS_MASK_REGISTER.
994 @param EDX Upper 32-bits of MSR value.
995 Described by the type MSR_XEON_D_IA32_L3_QOS_MASK_REGISTER.
996
997 <b>Example usage</b>
998 @code
999 MSR_XEON_D_IA32_L3_QOS_MASK_REGISTER Msr;
1000
1001 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_IA32_L3_QOS_MASK_0);
1002 AsmWriteMsr64 (MSR_XEON_D_IA32_L3_QOS_MASK_0, Msr.Uint64);
1003 @endcode
1004 @note MSR_XEON_D_IA32_L3_QOS_MASK_0 is defined as IA32_L3_QOS_MASK_0 in SDM.
1005 MSR_XEON_D_IA32_L3_QOS_MASK_1 is defined as IA32_L3_QOS_MASK_1 in SDM.
1006 MSR_XEON_D_IA32_L3_QOS_MASK_2 is defined as IA32_L3_QOS_MASK_2 in SDM.
1007 MSR_XEON_D_IA32_L3_QOS_MASK_3 is defined as IA32_L3_QOS_MASK_3 in SDM.
1008 MSR_XEON_D_IA32_L3_QOS_MASK_4 is defined as IA32_L3_QOS_MASK_4 in SDM.
1009 MSR_XEON_D_IA32_L3_QOS_MASK_5 is defined as IA32_L3_QOS_MASK_5 in SDM.
1010 MSR_XEON_D_IA32_L3_QOS_MASK_6 is defined as IA32_L3_QOS_MASK_6 in SDM.
1011 MSR_XEON_D_IA32_L3_QOS_MASK_7 is defined as IA32_L3_QOS_MASK_7 in SDM.
1012 MSR_XEON_D_IA32_L3_QOS_MASK_8 is defined as IA32_L3_QOS_MASK_8 in SDM.
1013 MSR_XEON_D_IA32_L3_QOS_MASK_9 is defined as IA32_L3_QOS_MASK_9 in SDM.
1014 MSR_XEON_D_IA32_L3_QOS_MASK_10 is defined as IA32_L3_QOS_MASK_10 in SDM.
1015 MSR_XEON_D_IA32_L3_QOS_MASK_11 is defined as IA32_L3_QOS_MASK_11 in SDM.
1016 MSR_XEON_D_IA32_L3_QOS_MASK_12 is defined as IA32_L3_QOS_MASK_12 in SDM.
1017 MSR_XEON_D_IA32_L3_QOS_MASK_13 is defined as IA32_L3_QOS_MASK_13 in SDM.
1018 MSR_XEON_D_IA32_L3_QOS_MASK_14 is defined as IA32_L3_QOS_MASK_14 in SDM.
1019 MSR_XEON_D_IA32_L3_QOS_MASK_15 is defined as IA32_L3_QOS_MASK_15 in SDM.
1020 @{
1021 **/
1022 #define MSR_XEON_D_IA32_L3_QOS_MASK_0 0x00000C90
1023 #define MSR_XEON_D_IA32_L3_QOS_MASK_1 0x00000C91
1024 #define MSR_XEON_D_IA32_L3_QOS_MASK_2 0x00000C92
1025 #define MSR_XEON_D_IA32_L3_QOS_MASK_3 0x00000C93
1026 #define MSR_XEON_D_IA32_L3_QOS_MASK_4 0x00000C94
1027 #define MSR_XEON_D_IA32_L3_QOS_MASK_5 0x00000C95
1028 #define MSR_XEON_D_IA32_L3_QOS_MASK_6 0x00000C96
1029 #define MSR_XEON_D_IA32_L3_QOS_MASK_7 0x00000C97
1030 #define MSR_XEON_D_IA32_L3_QOS_MASK_8 0x00000C98
1031 #define MSR_XEON_D_IA32_L3_QOS_MASK_9 0x00000C99
1032 #define MSR_XEON_D_IA32_L3_QOS_MASK_10 0x00000C9A
1033 #define MSR_XEON_D_IA32_L3_QOS_MASK_11 0x00000C9B
1034 #define MSR_XEON_D_IA32_L3_QOS_MASK_12 0x00000C9C
1035 #define MSR_XEON_D_IA32_L3_QOS_MASK_13 0x00000C9D
1036 #define MSR_XEON_D_IA32_L3_QOS_MASK_14 0x00000C9E
1037 #define MSR_XEON_D_IA32_L3_QOS_MASK_15 0x00000C9F
1038 /// @}
1039
1040 /**
1041 MSR information returned for MSR indexes #MSR_XEON_D_IA32_L3_QOS_MASK_0
1042 to #MSR_XEON_D_IA32_L3_QOS_MASK_15.
1043 **/
1044 typedef union {
1045 ///
1046 /// Individual bit fields
1047 ///
1048 struct {
1049 ///
1050 /// [Bits 19:0] CBM: Bit vector of available L3 ways for COS 0 enforcement.
1051 ///
1052 UINT32 CBM:20;
1053 UINT32 Reserved2:12;
1054 UINT32 Reserved3:32;
1055 } Bits;
1056 ///
1057 /// All bit fields as a 32-bit value
1058 ///
1059 UINT32 Uint32;
1060 ///
1061 /// All bit fields as a 64-bit value
1062 ///
1063 UINT64 Uint64;
1064 } MSR_XEON_D_IA32_L3_QOS_MASK_REGISTER;
1065
1066
1067 /**
1068 Package. Config Ratio Limit of Turbo Mode RO if MSR_PLATFORM_INFO.[28] = 0,
1069 RW if MSR_PLATFORM_INFO.[28] = 1.
1070
1071 @param ECX MSR_XEON_D_TURBO_RATIO_LIMIT3 (0x000001AC)
1072 @param EAX Lower 32-bits of MSR value.
1073 Described by the type MSR_XEON_D_TURBO_RATIO_LIMIT3_REGISTER.
1074 @param EDX Upper 32-bits of MSR value.
1075 Described by the type MSR_XEON_D_TURBO_RATIO_LIMIT3_REGISTER.
1076
1077 <b>Example usage</b>
1078 @code
1079 MSR_XEON_D_TURBO_RATIO_LIMIT3_REGISTER Msr;
1080
1081 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_TURBO_RATIO_LIMIT3);
1082 @endcode
1083 @note MSR_XEON_D_TURBO_RATIO_LIMIT3 is defined as MSR_TURBO_RATIO_LIMIT3 in SDM.
1084 **/
1085 #define MSR_XEON_D_TURBO_RATIO_LIMIT3 0x000001AC
1086
1087 /**
1088 MSR information returned for MSR index #MSR_XEON_D_TURBO_RATIO_LIMIT3
1089 **/
1090 typedef union {
1091 ///
1092 /// Individual bit fields
1093 ///
1094 struct {
1095 UINT32 Reserved1:32;
1096 UINT32 Reserved2:31;
1097 ///
1098 /// [Bit 63] Package. Semaphore for Turbo Ratio Limit Configuration If 1,
1099 /// the processor uses override configuration specified in
1100 /// MSR_TURBO_RATIO_LIMIT, MSR_TURBO_RATIO_LIMIT1. If 0, the processor
1101 /// uses factory-set configuration (Default).
1102 ///
1103 UINT32 TurboRatioLimitConfigurationSemaphore:1;
1104 } Bits;
1105 ///
1106 /// All bit fields as a 64-bit value
1107 ///
1108 UINT64 Uint64;
1109 } MSR_XEON_D_TURBO_RATIO_LIMIT3_REGISTER;
1110
1111
1112 /**
1113 Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
1114 15.3.2.4, "IA32_MCi_MISC MSRs.".
1115
1116 * Bank MC5 reports MC error from the Intel QPI 0 module.
1117 * Bank MC6 reports MC error from the integrated I/O module.
1118 * Bank MC7 reports MC error from the home agent HA 0.
1119 * Bank MC8 reports MC error from the home agent HA 1.
1120 * Banks MC9 through MC16 report MC error from each channel of the integrated
1121 memory controllers.
1122 * Bank MC17 reports MC error from the following pair of CBo/L3 Slices
1123 (if the pair is present): CBo0, CBo3, CBo6, CBo9, CBo12, CBo15.
1124 * Bank MC18 reports MC error from the following pair of CBo/L3 Slices
1125 (if the pair is present): CBo1, CBo4, CBo7, CBo10, CBo13, CBo16.
1126 * Bank MC19 reports MC error from the following pair of CBo/L3 Slices
1127 (if the pair is present): CBo2, CBo5, CBo8, CBo11, CBo14, CBo17.
1128 * Bank MC20 reports MC error from the Intel QPI 1 module.
1129 * Bank MC21 reports MC error from the Intel QPI 2 module.
1130
1131 @param ECX MSR_XEON_D_MCi_CTL
1132 @param EAX Lower 32-bits of MSR value.
1133 @param EDX Upper 32-bits of MSR value.
1134
1135 <b>Example usage</b>
1136 @code
1137 UINT64 Msr;
1138
1139 Msr = AsmReadMsr64 (MSR_XEON_D_MC5_CTL);
1140 AsmWriteMsr64 (MSR_XEON_D_MC5_CTL, Msr);
1141 @endcode
1142 @note MSR_XEON_D_MC5_CTL is defined as MSR_MC5_CTL in SDM.
1143 MSR_XEON_D_MC6_CTL is defined as MSR_MC6_CTL in SDM.
1144 MSR_XEON_D_MC7_CTL is defined as MSR_MC7_CTL in SDM.
1145 MSR_XEON_D_MC8_CTL is defined as MSR_MC8_CTL in SDM.
1146 MSR_XEON_D_MC9_CTL is defined as MSR_MC9_CTL in SDM.
1147 MSR_XEON_D_MC10_CTL is defined as MSR_MC10_CTL in SDM.
1148 MSR_XEON_D_MC11_CTL is defined as MSR_MC11_CTL in SDM.
1149 MSR_XEON_D_MC12_CTL is defined as MSR_MC12_CTL in SDM.
1150 MSR_XEON_D_MC13_CTL is defined as MSR_MC13_CTL in SDM.
1151 MSR_XEON_D_MC14_CTL is defined as MSR_MC14_CTL in SDM.
1152 MSR_XEON_D_MC15_CTL is defined as MSR_MC15_CTL in SDM.
1153 MSR_XEON_D_MC16_CTL is defined as MSR_MC16_CTL in SDM.
1154 MSR_XEON_D_MC17_CTL is defined as MSR_MC17_CTL in SDM.
1155 MSR_XEON_D_MC18_CTL is defined as MSR_MC18_CTL in SDM.
1156 MSR_XEON_D_MC19_CTL is defined as MSR_MC19_CTL in SDM.
1157 MSR_XEON_D_MC20_CTL is defined as MSR_MC20_CTL in SDM.
1158 MSR_XEON_D_MC21_CTL is defined as MSR_MC21_CTL in SDM.
1159 @{
1160 **/
1161 #define MSR_XEON_D_MC5_CTL 0x00000414
1162 #define MSR_XEON_D_MC6_CTL 0x00000418
1163 #define MSR_XEON_D_MC7_CTL 0x0000041C
1164 #define MSR_XEON_D_MC8_CTL 0x00000420
1165 #define MSR_XEON_D_MC9_CTL 0x00000424
1166 #define MSR_XEON_D_MC10_CTL 0x00000428
1167 #define MSR_XEON_D_MC11_CTL 0x0000042C
1168 #define MSR_XEON_D_MC12_CTL 0x00000430
1169 #define MSR_XEON_D_MC13_CTL 0x00000434
1170 #define MSR_XEON_D_MC14_CTL 0x00000438
1171 #define MSR_XEON_D_MC15_CTL 0x0000043C
1172 #define MSR_XEON_D_MC16_CTL 0x00000440
1173 #define MSR_XEON_D_MC17_CTL 0x00000444
1174 #define MSR_XEON_D_MC18_CTL 0x00000448
1175 #define MSR_XEON_D_MC19_CTL 0x0000044C
1176 #define MSR_XEON_D_MC20_CTL 0x00000450
1177 #define MSR_XEON_D_MC21_CTL 0x00000454
1178 /// @}
1179
1180 /**
1181 Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
1182 15.3.2.4, "IA32_MCi_MISC MSRs.".
1183
1184 @param ECX MSR_XEON_D_MCi_STATUS
1185 @param EAX Lower 32-bits of MSR value.
1186 @param EDX Upper 32-bits of MSR value.
1187
1188 <b>Example usage</b>
1189 @code
1190 UINT64 Msr;
1191
1192 Msr = AsmReadMsr64 (MSR_XEON_D_MC6_STATUS);
1193 AsmWriteMsr64 (MSR_XEON_D_MC6_STATUS, Msr);
1194 @endcode
1195 @note MSR_XEON_D_MC5_STATUS is defined as MSR_MC5_STATUS in SDM.
1196 MSR_XEON_D_MC6_STATUS is defined as MSR_MC6_STATUS in SDM.
1197 MSR_XEON_D_MC7_STATUS is defined as MSR_MC7_STATUS in SDM.
1198 MSR_XEON_D_MC8_STATUS is defined as MSR_MC8_STATUS in SDM.
1199 MSR_XEON_D_MC9_STATUS is defined as MSR_MC9_STATUS in SDM.
1200 MSR_XEON_D_MC10_STATUS is defined as MSR_MC10_STATUS in SDM.
1201 MSR_XEON_D_MC11_STATUS is defined as MSR_MC11_STATUS in SDM.
1202 MSR_XEON_D_MC12_STATUS is defined as MSR_MC12_STATUS in SDM.
1203 MSR_XEON_D_MC13_STATUS is defined as MSR_MC13_STATUS in SDM.
1204 MSR_XEON_D_MC14_STATUS is defined as MSR_MC14_STATUS in SDM.
1205 MSR_XEON_D_MC15_STATUS is defined as MSR_MC15_STATUS in SDM.
1206 MSR_XEON_D_MC16_STATUS is defined as MSR_MC16_STATUS in SDM.
1207 MSR_XEON_D_MC17_STATUS is defined as MSR_MC17_STATUS in SDM.
1208 MSR_XEON_D_MC18_STATUS is defined as MSR_MC18_STATUS in SDM.
1209 MSR_XEON_D_MC19_STATUS is defined as MSR_MC19_STATUS in SDM.
1210 MSR_XEON_D_MC20_STATUS is defined as MSR_MC20_STATUS in SDM.
1211 MSR_XEON_D_MC21_STATUS is defined as MSR_MC21_STATUS in SDM.
1212 @{
1213 **/
1214 #define MSR_XEON_D_MC5_STATUS 0x00000415
1215 #define MSR_XEON_D_MC6_STATUS 0x00000419
1216 #define MSR_XEON_D_MC7_STATUS 0x0000041D
1217 #define MSR_XEON_D_MC8_STATUS 0x00000421
1218 #define MSR_XEON_D_MC9_STATUS 0x00000425
1219 #define MSR_XEON_D_MC10_STATUS 0x00000429
1220 #define MSR_XEON_D_MC11_STATUS 0x0000042D
1221 #define MSR_XEON_D_MC12_STATUS 0x00000431
1222 #define MSR_XEON_D_MC13_STATUS 0x00000435
1223 #define MSR_XEON_D_MC14_STATUS 0x00000439
1224 #define MSR_XEON_D_MC15_STATUS 0x0000043D
1225 #define MSR_XEON_D_MC16_STATUS 0x00000441
1226 #define MSR_XEON_D_MC17_STATUS 0x00000445
1227 #define MSR_XEON_D_MC18_STATUS 0x00000449
1228 #define MSR_XEON_D_MC19_STATUS 0x0000044D
1229 #define MSR_XEON_D_MC20_STATUS 0x00000451
1230 #define MSR_XEON_D_MC21_STATUS 0x00000455
1231 /// @}
1232
1233 /**
1234 Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
1235 15.3.2.4, "IA32_MCi_MISC MSRs.".
1236
1237 @param ECX MSR_XEON_D_MCi_ADDR
1238 @param EAX Lower 32-bits of MSR value.
1239 @param EDX Upper 32-bits of MSR value.
1240
1241 <b>Example usage</b>
1242 @code
1243 UINT64 Msr;
1244
1245 Msr = AsmReadMsr64 (MSR_XEON_D_MC6_ADDR);
1246 AsmWriteMsr64 (MSR_XEON_D_MC6_ADDR, Msr);
1247 @endcode
1248 @note MSR_XEON_D_MC5_ADDR is defined as MSR_MC5_ADDR in SDM.
1249 MSR_XEON_D_MC6_ADDR is defined as MSR_MC6_ADDR in SDM.
1250 MSR_XEON_D_MC7_ADDR is defined as MSR_MC7_ADDR in SDM.
1251 MSR_XEON_D_MC8_ADDR is defined as MSR_MC8_ADDR in SDM.
1252 MSR_XEON_D_MC9_ADDR is defined as MSR_MC9_ADDR in SDM.
1253 MSR_XEON_D_MC10_ADDR is defined as MSR_MC10_ADDR in SDM.
1254 MSR_XEON_D_MC11_ADDR is defined as MSR_MC11_ADDR in SDM.
1255 MSR_XEON_D_MC12_ADDR is defined as MSR_MC12_ADDR in SDM.
1256 MSR_XEON_D_MC13_ADDR is defined as MSR_MC13_ADDR in SDM.
1257 MSR_XEON_D_MC14_ADDR is defined as MSR_MC14_ADDR in SDM.
1258 MSR_XEON_D_MC15_ADDR is defined as MSR_MC15_ADDR in SDM.
1259 MSR_XEON_D_MC16_ADDR is defined as MSR_MC16_ADDR in SDM.
1260 MSR_XEON_D_MC17_ADDR is defined as MSR_MC17_ADDR in SDM.
1261 MSR_XEON_D_MC18_ADDR is defined as MSR_MC18_ADDR in SDM.
1262 MSR_XEON_D_MC19_ADDR is defined as MSR_MC19_ADDR in SDM.
1263 MSR_XEON_D_MC20_ADDR is defined as MSR_MC20_ADDR in SDM.
1264 MSR_XEON_D_MC21_ADDR is defined as MSR_MC21_ADDR in SDM.
1265 @{
1266 **/
1267 #define MSR_XEON_D_MC5_ADDR 0x00000416
1268 #define MSR_XEON_D_MC6_ADDR 0x0000041A
1269 #define MSR_XEON_D_MC7_ADDR 0x0000041E
1270 #define MSR_XEON_D_MC8_ADDR 0x00000422
1271 #define MSR_XEON_D_MC9_ADDR 0x00000426
1272 #define MSR_XEON_D_MC10_ADDR 0x0000042A
1273 #define MSR_XEON_D_MC11_ADDR 0x0000042E
1274 #define MSR_XEON_D_MC12_ADDR 0x00000432
1275 #define MSR_XEON_D_MC13_ADDR 0x00000436
1276 #define MSR_XEON_D_MC14_ADDR 0x0000043A
1277 #define MSR_XEON_D_MC15_ADDR 0x0000043E
1278 #define MSR_XEON_D_MC16_ADDR 0x00000442
1279 #define MSR_XEON_D_MC17_ADDR 0x00000446
1280 #define MSR_XEON_D_MC18_ADDR 0x0000044A
1281 #define MSR_XEON_D_MC19_ADDR 0x0000044E
1282 #define MSR_XEON_D_MC20_ADDR 0x00000452
1283 #define MSR_XEON_D_MC21_ADDR 0x00000456
1284 /// @}
1285
1286
1287 /**
1288 Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
1289 15.3.2.4, "IA32_MCi_MISC MSRs.".
1290
1291 @param ECX MSR_XEON_D_MCi_MISC
1292 @param EAX Lower 32-bits of MSR value.
1293 @param EDX Upper 32-bits of MSR value.
1294
1295 <b>Example usage</b>
1296 @code
1297 UINT64 Msr;
1298
1299 Msr = AsmReadMsr64 (MSR_XEON_D_MC6_MISC);
1300 AsmWriteMsr64 (MSR_XEON_D_MC6_MISC, Msr);
1301 @endcode
1302 @note MSR_XEON_D_MC5_MISC is defined as MSR_MC5_MISC in SDM.
1303 MSR_XEON_D_MC6_MISC is defined as MSR_MC6_MISC in SDM.
1304 MSR_XEON_D_MC7_MISC is defined as MSR_MC7_MISC in SDM.
1305 MSR_XEON_D_MC8_MISC is defined as MSR_MC8_MISC in SDM.
1306 MSR_XEON_D_MC9_MISC is defined as MSR_MC9_MISC in SDM.
1307 MSR_XEON_D_MC10_MISC is defined as MSR_MC10_MISC in SDM.
1308 MSR_XEON_D_MC11_MISC is defined as MSR_MC11_MISC in SDM.
1309 MSR_XEON_D_MC12_MISC is defined as MSR_MC12_MISC in SDM.
1310 MSR_XEON_D_MC13_MISC is defined as MSR_MC13_MISC in SDM.
1311 MSR_XEON_D_MC14_MISC is defined as MSR_MC14_MISC in SDM.
1312 MSR_XEON_D_MC15_MISC is defined as MSR_MC15_MISC in SDM.
1313 MSR_XEON_D_MC16_MISC is defined as MSR_MC16_MISC in SDM.
1314 MSR_XEON_D_MC17_MISC is defined as MSR_MC17_MISC in SDM.
1315 MSR_XEON_D_MC18_MISC is defined as MSR_MC18_MISC in SDM.
1316 MSR_XEON_D_MC19_MISC is defined as MSR_MC19_MISC in SDM.
1317 MSR_XEON_D_MC20_MISC is defined as MSR_MC20_MISC in SDM.
1318 MSR_XEON_D_MC21_MISC is defined as MSR_MC21_MISC in SDM.
1319 @{
1320 **/
1321 #define MSR_XEON_D_MC5_MISC 0x00000417
1322 #define MSR_XEON_D_MC6_MISC 0x0000041B
1323 #define MSR_XEON_D_MC7_MISC 0x0000041F
1324 #define MSR_XEON_D_MC8_MISC 0x00000423
1325 #define MSR_XEON_D_MC9_MISC 0x00000427
1326 #define MSR_XEON_D_MC10_MISC 0x0000042B
1327 #define MSR_XEON_D_MC11_MISC 0x0000042F
1328 #define MSR_XEON_D_MC12_MISC 0x00000433
1329 #define MSR_XEON_D_MC13_MISC 0x00000437
1330 #define MSR_XEON_D_MC14_MISC 0x0000043B
1331 #define MSR_XEON_D_MC15_MISC 0x0000043F
1332 #define MSR_XEON_D_MC16_MISC 0x00000443
1333 #define MSR_XEON_D_MC17_MISC 0x00000447
1334 #define MSR_XEON_D_MC18_MISC 0x0000044B
1335 #define MSR_XEON_D_MC19_MISC 0x0000044F
1336 #define MSR_XEON_D_MC20_MISC 0x00000453
1337 #define MSR_XEON_D_MC21_MISC 0x00000457
1338 /// @}
1339
1340
1341 /**
1342 Package. Note: C-state values are processor specific C-state code names,
1343 unrelated to MWAIT extension C-state parameters or ACPI C-States.
1344
1345 @param ECX MSR_XEON_D_PKG_C8_RESIDENCY (0x00000630)
1346 @param EAX Lower 32-bits of MSR value.
1347 Described by the type MSR_XEON_D_PKG_C8_RESIDENCY_REGISTER.
1348 @param EDX Upper 32-bits of MSR value.
1349 Described by the type MSR_XEON_D_PKG_C8_RESIDENCY_REGISTER.
1350
1351 <b>Example usage</b>
1352 @code
1353 MSR_XEON_D_PKG_C8_RESIDENCY_REGISTER Msr;
1354
1355 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_PKG_C8_RESIDENCY);
1356 AsmWriteMsr64 (MSR_XEON_D_PKG_C8_RESIDENCY, Msr.Uint64);
1357 @endcode
1358 @note MSR_XEON_D_PKG_C8_RESIDENCY is defined as MSR_PKG_C8_RESIDENCY in SDM.
1359 **/
1360 #define MSR_XEON_D_PKG_C8_RESIDENCY 0x00000630
1361
1362 /**
1363 MSR information returned for MSR index #MSR_XEON_D_PKG_C8_RESIDENCY
1364 **/
1365 typedef union {
1366 ///
1367 /// Individual bit fields
1368 ///
1369 struct {
1370 ///
1371 /// [Bits 31:0] Package C8 Residency Counter. (R/O) Value since last reset
1372 /// that this package is in processor-specific C8 states. Count at the
1373 /// same frequency as the TSC.
1374 ///
1375 UINT32 C8ResidencyCounter:32;
1376 ///
1377 /// [Bits 59:32] Package C8 Residency Counter. (R/O) Value since last
1378 /// reset that this package is in processor-specific C8 states. Count at
1379 /// the same frequency as the TSC.
1380 ///
1381 UINT32 C8ResidencyCounterHi:28;
1382 UINT32 Reserved:4;
1383 } Bits;
1384 ///
1385 /// All bit fields as a 64-bit value
1386 ///
1387 UINT64 Uint64;
1388 } MSR_XEON_D_PKG_C8_RESIDENCY_REGISTER;
1389
1390
1391 /**
1392 Package. Note: C-state values are processor specific C-state code names,
1393 unrelated to MWAIT extension C-state parameters or ACPI C-States.
1394
1395 @param ECX MSR_XEON_D_PKG_C9_RESIDENCY (0x00000631)
1396 @param EAX Lower 32-bits of MSR value.
1397 Described by the type MSR_XEON_D_PKG_C9_RESIDENCY_REGISTER.
1398 @param EDX Upper 32-bits of MSR value.
1399 Described by the type MSR_XEON_D_PKG_C9_RESIDENCY_REGISTER.
1400
1401 <b>Example usage</b>
1402 @code
1403 MSR_XEON_D_PKG_C9_RESIDENCY_REGISTER Msr;
1404
1405 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_PKG_C9_RESIDENCY);
1406 AsmWriteMsr64 (MSR_XEON_D_PKG_C9_RESIDENCY, Msr.Uint64);
1407 @endcode
1408 @note MSR_XEON_D_PKG_C9_RESIDENCY is defined as MSR_PKG_C9_RESIDENCY in SDM.
1409 **/
1410 #define MSR_XEON_D_PKG_C9_RESIDENCY 0x00000631
1411
1412 /**
1413 MSR information returned for MSR index #MSR_XEON_D_PKG_C9_RESIDENCY
1414 **/
1415 typedef union {
1416 ///
1417 /// Individual bit fields
1418 ///
1419 struct {
1420 ///
1421 /// [Bits 31:0] Package C9 Residency Counter. (R/O) Value since last reset
1422 /// that this package is in processor-specific C9 states. Count at the
1423 /// same frequency as the TSC.
1424 ///
1425 UINT32 C9ResidencyCounter:32;
1426 ///
1427 /// [Bits 59:32] Package C9 Residency Counter. (R/O) Value since last
1428 /// reset that this package is in processor-specific C9 states. Count at
1429 /// the same frequency as the TSC.
1430 ///
1431 UINT32 C9ResidencyCounterHi:28;
1432 UINT32 Reserved:4;
1433 } Bits;
1434 ///
1435 /// All bit fields as a 64-bit value
1436 ///
1437 UINT64 Uint64;
1438 } MSR_XEON_D_PKG_C9_RESIDENCY_REGISTER;
1439
1440
1441 /**
1442 Package. Note: C-state values are processor specific C-state code names,
1443 unrelated to MWAIT extension C-state parameters or ACPI C-States.
1444
1445 @param ECX MSR_XEON_D_PKG_C10_RESIDENCY (0x00000632)
1446 @param EAX Lower 32-bits of MSR value.
1447 Described by the type MSR_XEON_D_PKG_C10_RESIDENCY_REGISTER.
1448 @param EDX Upper 32-bits of MSR value.
1449 Described by the type MSR_XEON_D_PKG_C10_RESIDENCY_REGISTER.
1450
1451 <b>Example usage</b>
1452 @code
1453 MSR_XEON_D_PKG_C10_RESIDENCY_REGISTER Msr;
1454
1455 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_PKG_C10_RESIDENCY);
1456 AsmWriteMsr64 (MSR_XEON_D_PKG_C10_RESIDENCY, Msr.Uint64);
1457 @endcode
1458 @note MSR_XEON_D_PKG_C10_RESIDENCY is defined as MSR_PKG_C10_RESIDENCY in SDM.
1459 **/
1460 #define MSR_XEON_D_PKG_C10_RESIDENCY 0x00000632
1461
1462 /**
1463 MSR information returned for MSR index #MSR_XEON_D_PKG_C10_RESIDENCY
1464 **/
1465 typedef union {
1466 ///
1467 /// Individual bit fields
1468 ///
1469 struct {
1470 ///
1471 /// [Bits 31:0] Package C10 Residency Counter. (R/O) Value since last
1472 /// reset that this package is in processor-specific C10 states. Count at
1473 /// the same frequency as the TSC.
1474 ///
1475 UINT32 C10ResidencyCounter:32;
1476 ///
1477 /// [Bits 59:32] Package C10 Residency Counter. (R/O) Value since last
1478 /// reset that this package is in processor-specific C10 states. Count at
1479 /// the same frequency as the TSC.
1480 ///
1481 UINT32 C10ResidencyCounterHi:28;
1482 UINT32 Reserved:4;
1483 } Bits;
1484 ///
1485 /// All bit fields as a 64-bit value
1486 ///
1487 UINT64 Uint64;
1488 } MSR_XEON_D_PKG_C10_RESIDENCY_REGISTER;
1489
1490
1491 /**
1492 Package. Cache Allocation Technology Configuration (R/W).
1493
1494 @param ECX MSR_XEON_D_IA32_L3_QOS_CFG (0x00000C81)
1495 @param EAX Lower 32-bits of MSR value.
1496 Described by the type MSR_XEON_D_IA32_L3_QOS_CFG_REGISTER.
1497 @param EDX Upper 32-bits of MSR value.
1498 Described by the type MSR_XEON_D_IA32_L3_QOS_CFG_REGISTER.
1499
1500 <b>Example usage</b>
1501 @code
1502 MSR_XEON_D_IA32_L3_QOS_CFG_REGISTER Msr;
1503
1504 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_IA32_L3_QOS_CFG);
1505 AsmWriteMsr64 (MSR_XEON_D_IA32_L3_QOS_CFG, Msr.Uint64);
1506 @endcode
1507 @note MSR_XEON_D_IA32_L3_QOS_CFG is defined as IA32_L3_QOS_CFG in SDM.
1508 **/
1509 #define MSR_XEON_D_IA32_L3_QOS_CFG 0x00000C81
1510
1511 /**
1512 MSR information returned for MSR index #MSR_XEON_D_IA32_L3_QOS_CFG
1513 **/
1514 typedef union {
1515 ///
1516 /// Individual bit fields
1517 ///
1518 struct {
1519 ///
1520 /// [Bit 0] CAT Enable. Set 1 to enable Cache Allocation Technology.
1521 ///
1522 UINT32 CAT:1;
1523 UINT32 Reserved1:31;
1524 UINT32 Reserved2:32;
1525 } Bits;
1526 ///
1527 /// All bit fields as a 32-bit value
1528 ///
1529 UINT32 Uint32;
1530 ///
1531 /// All bit fields as a 64-bit value
1532 ///
1533 UINT64 Uint64;
1534 } MSR_XEON_D_IA32_L3_QOS_CFG_REGISTER;
1535
1536 #endif