]> git.proxmox.com Git - mirror_edk2.git/blob - UefiCpuPkg/Include/Register/Msr/XeonPhiMsr.h
1e22d98ad8c93889ef2301f4018ad08b474a80b2
[mirror_edk2.git] / UefiCpuPkg / Include / Register / Msr / XeonPhiMsr.h
1 /** @file
2 MSR Definitions for Intel(R) Xeon(R) Phi(TM) processor 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 - 2018, 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 4,
20 May 2018, Volume 4: Model-Specific-Registers (MSR)
21
22 **/
23
24 #ifndef __XEON_PHI_MSR_H__
25 #define __XEON_PHI_MSR_H__
26
27 #include <Register/ArchitecturalMsr.h>
28
29 /**
30 Is Intel(R) Xeon(R) Phi(TM) processor Family?
31
32 @param DisplayFamily Display Family ID
33 @param DisplayModel Display Model ID
34
35 @retval TRUE Yes, it is.
36 @retval FALSE No, it isn't.
37 **/
38 #define IS_XEON_PHI_PROCESSOR(DisplayFamily, DisplayModel) \
39 (DisplayFamily == 0x06 && \
40 ( \
41 DisplayModel == 0x57 || \
42 DisplayModel == 0x85 \
43 ) \
44 )
45
46 /**
47 Thread. SMI Counter (R/O).
48
49 @param ECX MSR_XEON_PHI_SMI_COUNT (0x00000034)
50 @param EAX Lower 32-bits of MSR value.
51 Described by the type MSR_XEON_PHI_SMI_COUNT_REGISTER.
52 @param EDX Upper 32-bits of MSR value.
53 Described by the type MSR_XEON_PHI_SMI_COUNT_REGISTER.
54
55 <b>Example usage</b>
56 @code
57 MSR_XEON_PHI_SMI_COUNT_REGISTER Msr;
58
59 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_SMI_COUNT);
60 @endcode
61 @note MSR_XEON_PHI_SMI_COUNT is defined as MSR_SMI_COUNT in SDM.
62 **/
63 #define MSR_XEON_PHI_SMI_COUNT 0x00000034
64
65 /**
66 MSR information returned for MSR index #MSR_XEON_PHI_SMI_COUNT
67 **/
68 typedef union {
69 ///
70 /// Individual bit fields
71 ///
72 struct {
73 ///
74 /// [Bits 31:0] SMI Count (R/O).
75 ///
76 UINT32 SMICount:32;
77 UINT32 Reserved:32;
78 } Bits;
79 ///
80 /// All bit fields as a 32-bit value
81 ///
82 UINT32 Uint32;
83 ///
84 /// All bit fields as a 64-bit value
85 ///
86 UINT64 Uint64;
87 } MSR_XEON_PHI_SMI_COUNT_REGISTER;
88
89 /**
90 Package. Protected Processor Inventory Number Enable Control (R/W).
91
92 @param ECX MSR_XEON_PHI_PPIN_CTL (0x0000004E)
93 @param EAX Lower 32-bits of MSR value.
94 Described by the type MSR_XEON_PHI_PPIN_CTL_REGISTER.
95 @param EDX Upper 32-bits of MSR value.
96 Described by the type MSR_XEON_PHI_PPIN_CTL_REGISTER.
97
98 <b>Example usage</b>
99 @code
100 MSR_XEON_PHI_PPIN_CTL_REGISTER Msr;
101
102 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_PPIN_CTL);
103 AsmWriteMsr64 (MSR_XEON_PHI_PPIN_CTL, Msr.Uint64);
104 @endcode
105 **/
106 #define MSR_XEON_PHI_PPIN_CTL 0x0000004E
107
108 /**
109 MSR information returned for MSR index #MSR_XEON_PHI_PPIN_CTL
110 **/
111 typedef union {
112 ///
113 /// Individual bit fields
114 ///
115 struct {
116 ///
117 /// [Bit 0] LockOut (R/WO) Set 1 to prevent further writes to
118 /// MSR_PPIN_CTL. Writing 1 to MSR_PPINCTL[bit 0] is permitted only if
119 /// MSR_PPIN_CTL[bit 1] is clear. Default is 0. BIOS should provide an
120 /// opt-in menu to enable the user to turn on MSR_PPIN_CTL[bit 1] for a
121 /// privileged inventory initialization agent to access MSR_PPIN. After
122 /// reading MSR_PPIN, the privileged inventory initialization agent should
123 /// write '01b' to MSR_PPIN_CTL to disable further access to MSR_PPIN and
124 /// prevent unauthorized modification to MSR_PPIN_CTL.
125 ///
126 UINT32 LockOut:1;
127 ///
128 /// [Bit 1] Enable_PPIN (R/W) If 1, enables MSR_PPIN to be accessible
129 /// using RDMSR. Once set, an attempt to write 1 to MSR_PPIN_CTL[bit 0]
130 /// will cause #GP. If 0, an attempt to read MSR_PPIN will cause #GP.
131 /// Default is 0.
132 ///
133 UINT32 Enable_PPIN:1;
134 UINT32 Reserved1:30;
135 UINT32 Reserved2:32;
136 } Bits;
137 ///
138 /// All bit fields as a 32-bit value
139 ///
140 UINT32 Uint32;
141 ///
142 /// All bit fields as a 64-bit value
143 ///
144 UINT64 Uint64;
145 } MSR_XEON_PHI_PPIN_CTL_REGISTER;
146
147
148 /**
149 Package. Protected Processor Inventory Number (R/O). Protected Processor
150 Inventory Number (R/O) A unique value within a given CPUID
151 family/model/stepping signature that a privileged inventory initialization
152 agent can access to identify each physical processor, when access to
153 MSR_PPIN is enabled. Access to MSR_PPIN is permitted only if
154 MSR_PPIN_CTL[bits 1:0] = '10b'.
155
156 @param ECX MSR_XEON_PHI_PPIN (0x0000004F)
157 @param EAX Lower 32-bits of MSR value.
158 @param EDX Upper 32-bits of MSR value.
159
160 <b>Example usage</b>
161 @code
162 UINT64 Msr;
163
164 Msr = AsmReadMsr64 (MSR_XEON_PHI_PPIN);
165 @endcode
166 **/
167 #define MSR_XEON_PHI_PPIN 0x0000004F
168
169 /**
170 Package. Platform Information Contains power management and other model
171 specific features enumeration. See http://biosbits.org.
172
173 @param ECX MSR_XEON_PHI_PLATFORM_INFO (0x000000CE)
174 @param EAX Lower 32-bits of MSR value.
175 Described by the type MSR_XEON_PHI_PLATFORM_INFO_REGISTER.
176 @param EDX Upper 32-bits of MSR value.
177 Described by the type MSR_XEON_PHI_PLATFORM_INFO_REGISTER.
178
179 <b>Example usage</b>
180 @code
181 MSR_XEON_PHI_PLATFORM_INFO_REGISTER Msr;
182
183 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_PLATFORM_INFO);
184 AsmWriteMsr64 (MSR_XEON_PHI_PLATFORM_INFO, Msr.Uint64);
185 @endcode
186 @note MSR_XEON_PHI_PLATFORM_INFO is defined as MSR_PLATFORM_INFO in SDM.
187 **/
188 #define MSR_XEON_PHI_PLATFORM_INFO 0x000000CE
189
190 /**
191 MSR information returned for MSR index #MSR_XEON_PHI_PLATFORM_INFO
192 **/
193 typedef union {
194 ///
195 /// Individual bit fields
196 ///
197 struct {
198 UINT32 Reserved1:8;
199 ///
200 /// [Bits 15:8] Package. Maximum Non-Turbo Ratio (R/O) The is the ratio
201 /// of the frequency that invariant TSC runs at. Frequency = ratio * 100
202 /// MHz.
203 ///
204 UINT32 MaximumNonTurboRatio:8;
205 UINT32 Reserved2:12;
206 ///
207 /// [Bit 28] Package. Programmable Ratio Limit for Turbo Mode (R/O) When
208 /// set to 1, indicates that Programmable Ratio Limits for Turbo mode is
209 /// enabled, and when set to 0, indicates Programmable Ratio Limits for
210 /// Turbo mode is disabled.
211 ///
212 UINT32 RatioLimit:1;
213 ///
214 /// [Bit 29] Package. Programmable TDP Limit for Turbo Mode (R/O) When
215 /// set to 1, indicates that TDP Limits for Turbo mode are programmable,
216 /// and when set to 0, indicates TDP Limit for Turbo mode is not
217 /// programmable.
218 ///
219 UINT32 TDPLimit:1;
220 UINT32 Reserved3:2;
221 UINT32 Reserved4:8;
222 ///
223 /// [Bits 47:40] Package. Maximum Efficiency Ratio (R/O) The is the
224 /// minimum ratio (maximum efficiency) that the processor can operates, in
225 /// units of 100MHz.
226 ///
227 UINT32 MaximumEfficiencyRatio:8;
228 UINT32 Reserved5:16;
229 } Bits;
230 ///
231 /// All bit fields as a 64-bit value
232 ///
233 UINT64 Uint64;
234 } MSR_XEON_PHI_PLATFORM_INFO_REGISTER;
235
236
237 /**
238 Module. C-State Configuration Control (R/W).
239
240 @param ECX MSR_XEON_PHI_PKG_CST_CONFIG_CONTROL (0x000000E2)
241 @param EAX Lower 32-bits of MSR value.
242 Described by the type MSR_XEON_PHI_PKG_CST_CONFIG_CONTROL_REGISTER.
243 @param EDX Upper 32-bits of MSR value.
244 Described by the type MSR_XEON_PHI_PKG_CST_CONFIG_CONTROL_REGISTER.
245
246 <b>Example usage</b>
247 @code
248 MSR_XEON_PHI_PKG_CST_CONFIG_CONTROL_REGISTER Msr;
249
250 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_PKG_CST_CONFIG_CONTROL);
251 AsmWriteMsr64 (MSR_XEON_PHI_PKG_CST_CONFIG_CONTROL, Msr.Uint64);
252 @endcode
253 @note MSR_XEON_PHI_PKG_CST_CONFIG_CONTROL is defined as MSR_PKG_CST_CONFIG_CONTROL in SDM.
254 **/
255 #define MSR_XEON_PHI_PKG_CST_CONFIG_CONTROL 0x000000E2
256
257 /**
258 MSR information returned for MSR index #MSR_XEON_PHI_PKG_CST_CONFIG_CONTROL
259 **/
260 typedef union {
261 ///
262 /// Individual bit fields
263 ///
264 struct {
265 ///
266 /// [Bits 2:0] Package C-State Limit (R/W) The following C-state code
267 /// name encodings are supported: 000b: C0/C1 001b: C2 010b: C6 No
268 /// Retention 011b: C6 Retention 111b: No limit.
269 ///
270 UINT32 Limit:3;
271 UINT32 Reserved1:7;
272 ///
273 /// [Bit 10] I/O MWAIT Redirection Enable (R/W).
274 ///
275 UINT32 IO_MWAIT:1;
276 UINT32 Reserved2:4;
277 ///
278 /// [Bit 15] CFG Lock (R/WO).
279 ///
280 UINT32 CFGLock:1;
281 UINT32 Reserved5:10;
282 ///
283 /// [Bit 26] C1 State Auto Demotion Enable (R/W) When set, the processor
284 /// will conditionally demote C3/C6/C7 requests to C1 based on uncore
285 /// auto-demote information.
286 ///
287 UINT32 C1StateAutoDemotionEnable:1;
288 UINT32 Reserved6:1;
289 ///
290 /// [Bit 28] C1 State Auto Undemotion Enable (R/W) When set, enables
291 /// Undemotion from Demoted C1.
292 ///
293 UINT32 C1StateAutoUndemotionEnable:1;
294 ///
295 /// [Bit 29] PKG C-State Auto Demotion Enable (R/W) When set, enables
296 /// Package C state demotion.
297 ///
298 UINT32 PKGC_StateAutoDemotionEnable:1;
299 UINT32 Reserved7:2;
300 UINT32 Reserved4:32;
301 } Bits;
302 ///
303 /// All bit fields as a 32-bit value
304 ///
305 UINT32 Uint32;
306 ///
307 /// All bit fields as a 64-bit value
308 ///
309 UINT64 Uint64;
310 } MSR_XEON_PHI_PKG_CST_CONFIG_CONTROL_REGISTER;
311
312
313 /**
314 Module. Power Management IO Redirection in C-state (R/W).
315
316 @param ECX MSR_XEON_PHI_PMG_IO_CAPTURE_BASE (0x000000E4)
317 @param EAX Lower 32-bits of MSR value.
318 Described by the type MSR_XEON_PHI_PMG_IO_CAPTURE_BASE_REGISTER.
319 @param EDX Upper 32-bits of MSR value.
320 Described by the type MSR_XEON_PHI_PMG_IO_CAPTURE_BASE_REGISTER.
321
322 <b>Example usage</b>
323 @code
324 MSR_XEON_PHI_PMG_IO_CAPTURE_BASE_REGISTER Msr;
325
326 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_PMG_IO_CAPTURE_BASE);
327 AsmWriteMsr64 (MSR_XEON_PHI_PMG_IO_CAPTURE_BASE, Msr.Uint64);
328 @endcode
329 @note MSR_XEON_PHI_PMG_IO_CAPTURE_BASE is defined as MSR_PMG_IO_CAPTURE_BASE in SDM.
330 **/
331 #define MSR_XEON_PHI_PMG_IO_CAPTURE_BASE 0x000000E4
332
333 /**
334 MSR information returned for MSR index #MSR_XEON_PHI_PMG_IO_CAPTURE_BASE
335 **/
336 typedef union {
337 ///
338 /// Individual bit fields
339 ///
340 struct {
341 ///
342 /// [Bits 15:0] LVL_2 Base Address (R/W).
343 ///
344 UINT32 Lvl2Base:16;
345 ///
346 /// [Bits 22:16] C-State Range (R/W) The IO-port block size in which
347 /// IO-redirection will be executed (0-127). Should be programmed based on
348 /// the number of LVLx registers existing in the chipset.
349 ///
350 UINT32 CStateRange:7;
351 UINT32 Reserved3:9;
352 UINT32 Reserved2:32;
353 } Bits;
354 ///
355 /// All bit fields as a 32-bit value
356 ///
357 UINT32 Uint32;
358 ///
359 /// All bit fields as a 64-bit value
360 ///
361 UINT64 Uint64;
362 } MSR_XEON_PHI_PMG_IO_CAPTURE_BASE_REGISTER;
363
364
365 /**
366 Core. AES Configuration (RW-L) Privileged post-BIOS agent must provide a #GP
367 handler to handle unsuccessful read of this MSR.
368
369 @param ECX MSR_XEON_PHI_FEATURE_CONFIG (0x0000013C)
370 @param EAX Lower 32-bits of MSR value.
371 Described by the type MSR_XEON_PHI_FEATURE_CONFIG_REGISTER.
372 @param EDX Upper 32-bits of MSR value.
373 Described by the type MSR_XEON_PHI_FEATURE_CONFIG_REGISTER.
374
375 <b>Example usage</b>
376 @code
377 MSR_XEON_PHI_FEATURE_CONFIG_REGISTER Msr;
378
379 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_FEATURE_CONFIG);
380 AsmWriteMsr64 (MSR_XEON_PHI_FEATURE_CONFIG, Msr.Uint64);
381 @endcode
382 @note MSR_XEON_PHI_FEATURE_CONFIG is defined as MSR_FEATURE_CONFIG in SDM.
383 **/
384 #define MSR_XEON_PHI_FEATURE_CONFIG 0x0000013C
385
386 /**
387 MSR information returned for MSR index #MSR_XEON_PHI_FEATURE_CONFIG
388 **/
389 typedef union {
390 ///
391 /// Individual bit fields
392 ///
393 struct {
394 ///
395 /// [Bits 1:0] AES Configuration (RW-L) Upon a successful read of this
396 /// MSR, the configuration of AES instruction set availability is as
397 /// follows: 11b: AES instructions are not available until next RESET.
398 /// otherwise, AES instructions are available. Note, AES instruction set
399 /// is not available if read is unsuccessful. If the configuration is not
400 /// 01b, AES instruction can be mis-configured if a privileged agent
401 /// unintentionally writes 11b.
402 ///
403 UINT32 AESConfiguration:2;
404 UINT32 Reserved1:30;
405 UINT32 Reserved2:32;
406 } Bits;
407 ///
408 /// All bit fields as a 32-bit value
409 ///
410 UINT32 Uint32;
411 ///
412 /// All bit fields as a 64-bit value
413 ///
414 UINT64 Uint64;
415 } MSR_XEON_PHI_FEATURE_CONFIG_REGISTER;
416
417
418 /**
419 Thread. MISC_FEATURE_ENABLES.
420
421 @param ECX MSR_XEON_PHI_MISC_FEATURE_ENABLES (0x00000140)
422 @param EAX Lower 32-bits of MSR value.
423 Described by the type MSR_XEON_PHI_MISC_FEATURE_ENABLES_REGISTER.
424 @param EDX Upper 32-bits of MSR value.
425 Described by the type MSR_XEON_PHI_MISC_FEATURE_ENABLES_REGISTER.
426
427 <b>Example usage</b>
428 @code
429 MSR_XEON_PHI_MISC_FEATURE_ENABLES_REGISTER Msr;
430
431 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_MISC_FEATURE_ENABLES);
432 AsmWriteMsr64 (MSR_XEON_PHI_MISC_FEATURE_ENABLES, Msr.Uint64);
433 @endcode
434 **/
435 #define MSR_XEON_PHI_MISC_FEATURE_ENABLES 0x00000140
436
437 /**
438 MSR information returned for MSR index #MSR_XEON_PHI_MISC_FEATURE_ENABLES
439 **/
440 typedef union {
441 ///
442 /// Individual bit fields
443 ///
444 struct {
445 UINT32 Reserved1:1;
446 ///
447 /// [Bit 1] User Mode MONITOR and MWAIT (R/W) If set to 1, the MONITOR and
448 /// MWAIT instructions do not cause invalid-opcode exceptions when
449 /// executed with CPL > 0 or in virtual-8086 mode. If MWAIT is executed
450 /// when CPL > 0 or in virtual-8086 mode, and if EAX indicates a C-state
451 /// other than C0 or C1, the instruction operates as if EAX indicated the
452 /// C-state C1.
453 ///
454 UINT32 UserModeMonitorAndMwait:1;
455 UINT32 Reserved2:30;
456 UINT32 Reserved3:32;
457 } Bits;
458 ///
459 /// All bit fields as a 32-bit value
460 ///
461 UINT32 Uint32;
462 ///
463 /// All bit fields as a 64-bit value
464 ///
465 UINT64 Uint64;
466 } MSR_XEON_PHI_MISC_FEATURE_ENABLES_REGISTER;
467
468 /**
469 THREAD. Enhanced SMM Capabilities (SMM-RO) Reports SMM capability
470 Enhancement. Accessible only while in SMM.
471
472 @param ECX MSR_XEON_PHI_SMM_MCA_CAP (0x0000017D)
473 @param EAX Lower 32-bits of MSR value.
474 Described by the type MSR_XEON_PHI_SMM_MCA_CAP_REGISTER.
475 @param EDX Upper 32-bits of MSR value.
476 Described by the type MSR_XEON_PHI_SMM_MCA_CAP_REGISTER.
477
478 <b>Example usage</b>
479 @code
480 MSR_XEON_PHI_SMM_MCA_CAP_REGISTER Msr;
481
482 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_SMM_MCA_CAP);
483 AsmWriteMsr64 (MSR_XEON_PHI_SMM_MCA_CAP, Msr.Uint64);
484 @endcode
485 @note MSR_XEON_PHI_SMM_MCA_CAP is defined as MSR_SMM_MCA_CAP in SDM.
486 **/
487 #define MSR_XEON_PHI_SMM_MCA_CAP 0x0000017D
488
489 /**
490 MSR information returned for MSR index #MSR_XEON_PHI_SMM_MCA_CAP
491 **/
492 typedef union {
493 ///
494 /// Individual bit fields
495 ///
496 struct {
497 ///
498 /// [Bits 31:0] Bank Support (SMM-RO) One bit per MCA bank. If the bit is
499 /// set, that bank supports Enhanced MCA (Default all 0; does not support
500 /// EMCA).
501 ///
502 UINT32 BankSupport:32;
503 UINT32 Reserved4:24;
504 ///
505 /// [Bit 56] Targeted SMI (SMM-RO) Set if targeted SMI is supported.
506 ///
507 UINT32 TargetedSMI:1;
508 ///
509 /// [Bit 57] SMM_CPU_SVRSTR (SMM-RO) Set if SMM SRAM save/restore feature
510 /// is supported.
511 ///
512 UINT32 SMM_CPU_SVRSTR:1;
513 ///
514 /// [Bit 58] SMM_Code_Access_Chk (SMM-RO) If set to 1 indicates that the
515 /// SMM code access restriction is supported and a host-space interface
516 /// available to SMM handler.
517 ///
518 UINT32 SMM_Code_Access_Chk:1;
519 ///
520 /// [Bit 59] Long_Flow_Indication (SMM-RO) If set to 1 indicates that the
521 /// SMM long flow indicator is supported and a host-space interface
522 /// available to SMM handler.
523 ///
524 UINT32 Long_Flow_Indication:1;
525 UINT32 Reserved3:4;
526 } Bits;
527 ///
528 /// All bit fields as a 64-bit value
529 ///
530 UINT64 Uint64;
531 } MSR_XEON_PHI_SMM_MCA_CAP_REGISTER;
532
533
534 /**
535 Thread. Enable Misc. Processor Features (R/W) Allows a variety of processor
536 functions to be enabled and disabled.
537
538 @param ECX MSR_XEON_PHI_IA32_MISC_ENABLE (0x000001A0)
539 @param EAX Lower 32-bits of MSR value.
540 Described by the type MSR_XEON_PHI_IA32_MISC_ENABLE_REGISTER.
541 @param EDX Upper 32-bits of MSR value.
542 Described by the type MSR_XEON_PHI_IA32_MISC_ENABLE_REGISTER.
543
544 <b>Example usage</b>
545 @code
546 MSR_XEON_PHI_IA32_MISC_ENABLE_REGISTER Msr;
547
548 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_IA32_MISC_ENABLE);
549 AsmWriteMsr64 (MSR_XEON_PHI_IA32_MISC_ENABLE, Msr.Uint64);
550 @endcode
551 @note MSR_XEON_PHI_IA32_MISC_ENABLE is defined as IA32_MISC_ENABLE in SDM.
552 **/
553 #define MSR_XEON_PHI_IA32_MISC_ENABLE 0x000001A0
554
555 /**
556 MSR information returned for MSR index #MSR_XEON_PHI_IA32_MISC_ENABLE
557 **/
558 typedef union {
559 ///
560 /// Individual bit fields
561 ///
562 struct {
563 ///
564 /// [Bit 0] Fast-Strings Enable.
565 ///
566 UINT32 FastStrings:1;
567 UINT32 Reserved1:2;
568 ///
569 /// [Bit 3] Automatic Thermal Control Circuit Enable (R/W) Default value
570 /// is 1.
571 ///
572 UINT32 AutomaticThermalControlCircuit:1;
573 UINT32 Reserved2:3;
574 ///
575 /// [Bit 7] Performance Monitoring Available (R).
576 ///
577 UINT32 PerformanceMonitoring:1;
578 UINT32 Reserved3:3;
579 ///
580 /// [Bit 11] Branch Trace Storage Unavailable (RO).
581 ///
582 UINT32 BTS:1;
583 ///
584 /// [Bit 12] Processor Event Based Sampling Unavailable (RO).
585 ///
586 UINT32 PEBS:1;
587 UINT32 Reserved4:3;
588 ///
589 /// [Bit 16] Enhanced Intel SpeedStep Technology Enable (R/W).
590 ///
591 UINT32 EIST:1;
592 UINT32 Reserved5:1;
593 ///
594 /// [Bit 18] ENABLE MONITOR FSM (R/W).
595 ///
596 UINT32 MONITOR:1;
597 UINT32 Reserved6:3;
598 ///
599 /// [Bit 22] Limit CPUID Maxval (R/W).
600 ///
601 UINT32 LimitCpuidMaxval:1;
602 ///
603 /// [Bit 23] xTPR Message Disable (R/W).
604 ///
605 UINT32 xTPR_Message_Disable:1;
606 UINT32 Reserved7:8;
607 UINT32 Reserved8:2;
608 ///
609 /// [Bit 34] XD Bit Disable (R/W).
610 ///
611 UINT32 XD:1;
612 UINT32 Reserved9:3;
613 ///
614 /// [Bit 38] Turbo Mode Disable (R/W).
615 ///
616 UINT32 TurboModeDisable:1;
617 UINT32 Reserved10:25;
618 } Bits;
619 ///
620 /// All bit fields as a 64-bit value
621 ///
622 UINT64 Uint64;
623 } MSR_XEON_PHI_IA32_MISC_ENABLE_REGISTER;
624
625
626 /**
627 Package.
628
629 @param ECX MSR_XEON_PHI_TEMPERATURE_TARGET (0x000001A2)
630 @param EAX Lower 32-bits of MSR value.
631 Described by the type MSR_XEON_PHI_TEMPERATURE_TARGET_REGISTER.
632 @param EDX Upper 32-bits of MSR value.
633 Described by the type MSR_XEON_PHI_TEMPERATURE_TARGET_REGISTER.
634
635 <b>Example usage</b>
636 @code
637 MSR_XEON_PHI_TEMPERATURE_TARGET_REGISTER Msr;
638
639 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_TEMPERATURE_TARGET);
640 AsmWriteMsr64 (MSR_XEON_PHI_TEMPERATURE_TARGET, Msr.Uint64);
641 @endcode
642 @note MSR_XEON_PHI_TEMPERATURE_TARGET is defined as MSR_TEMPERATURE_TARGET in SDM.
643 **/
644 #define MSR_XEON_PHI_TEMPERATURE_TARGET 0x000001A2
645
646 /**
647 MSR information returned for MSR index #MSR_XEON_PHI_TEMPERATURE_TARGET
648 **/
649 typedef union {
650 ///
651 /// Individual bit fields
652 ///
653 struct {
654 UINT32 Reserved1:16;
655 ///
656 /// [Bits 23:16] Temperature Target (R).
657 ///
658 UINT32 TemperatureTarget:8;
659 ///
660 /// [Bits 29:24] Target Offset (R/W).
661 ///
662 UINT32 TargetOffset:6;
663 UINT32 Reserved2:2;
664 UINT32 Reserved3:32;
665 } Bits;
666 ///
667 /// All bit fields as a 32-bit value
668 ///
669 UINT32 Uint32;
670 ///
671 /// All bit fields as a 64-bit value
672 ///
673 UINT64 Uint64;
674 } MSR_XEON_PHI_TEMPERATURE_TARGET_REGISTER;
675
676
677 /**
678 Miscellaneous Feature Control (R/W).
679
680 @param ECX MSR_XEON_PHI_MISC_FEATURE_CONTROL (0x000001A4)
681 @param EAX Lower 32-bits of MSR value.
682 Described by the type MSR_XEON_PHI_MISC_FEATURE_CONTROL_REGISTER.
683 @param EDX Upper 32-bits of MSR value.
684 Described by the type MSR_XEON_PHI_MISC_FEATURE_CONTROL_REGISTER.
685
686 <b>Example usage</b>
687 @code
688 MSR_XEON_PHI_MISC_FEATURE_CONTROL_REGISTER Msr;
689
690 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_MISC_FEATURE_CONTROL);
691 AsmWriteMsr64 (MSR_XEON_PHI_MISC_FEATURE_CONTROL, Msr.Uint64);
692 @endcode
693 @note MSR_XEON_PHI_MISC_FEATURE_CONTROL is defined as MSR_MISC_FEATURE_CONTROL in SDM.
694 **/
695 #define MSR_XEON_PHI_MISC_FEATURE_CONTROL 0x000001A4
696
697 /**
698 MSR information returned for MSR index #MSR_XEON_PHI_MISC_FEATURE_CONTROL
699 **/
700 typedef union {
701 ///
702 /// Individual bit fields
703 ///
704 struct {
705 ///
706 /// [Bit 0] Core. DCU Hardware Prefetcher Disable (R/W) If 1, disables the
707 /// L1 data cache prefetcher.
708 ///
709 UINT32 DCUHardwarePrefetcherDisable:1;
710 ///
711 /// [Bit 1] Core. L2 Hardware Prefetcher Disable (R/W) If 1, disables the
712 /// L2 hardware prefetcher.
713 ///
714 UINT32 L2HardwarePrefetcherDisable:1;
715 UINT32 Reserved1:30;
716 UINT32 Reserved2:32;
717 } Bits;
718 ///
719 /// All bit fields as a 32-bit value
720 ///
721 UINT32 Uint32;
722 ///
723 /// All bit fields as a 64-bit value
724 ///
725 UINT64 Uint64;
726 } MSR_XEON_PHI_MISC_FEATURE_CONTROL_REGISTER;
727
728
729 /**
730 Shared. Offcore Response Event Select Register (R/W).
731
732 @param ECX MSR_XEON_PHI_OFFCORE_RSP_0 (0x000001A6)
733 @param EAX Lower 32-bits of MSR value.
734 @param EDX Upper 32-bits of MSR value.
735
736 <b>Example usage</b>
737 @code
738 UINT64 Msr;
739
740 Msr = AsmReadMsr64 (MSR_XEON_PHI_OFFCORE_RSP_0);
741 AsmWriteMsr64 (MSR_XEON_PHI_OFFCORE_RSP_0, Msr);
742 @endcode
743 @note MSR_XEON_PHI_OFFCORE_RSP_0 is defined as MSR_OFFCORE_RSP_0 in SDM.
744 **/
745 #define MSR_XEON_PHI_OFFCORE_RSP_0 0x000001A6
746
747
748 /**
749 Shared. Offcore Response Event Select Register (R/W).
750
751 @param ECX MSR_XEON_PHI_OFFCORE_RSP_1 (0x000001A7)
752 @param EAX Lower 32-bits of MSR value.
753 @param EDX Upper 32-bits of MSR value.
754
755 <b>Example usage</b>
756 @code
757 UINT64 Msr;
758
759 Msr = AsmReadMsr64 (MSR_XEON_PHI_OFFCORE_RSP_1);
760 AsmWriteMsr64 (MSR_XEON_PHI_OFFCORE_RSP_1, Msr);
761 @endcode
762 @note MSR_XEON_PHI_OFFCORE_RSP_1 is defined as MSR_OFFCORE_RSP_1 in SDM.
763 **/
764 #define MSR_XEON_PHI_OFFCORE_RSP_1 0x000001A7
765
766
767 /**
768 Package. Maximum Ratio Limit of Turbo Mode for Groups of Cores (RW).
769
770 @param ECX MSR_XEON_PHI_TURBO_RATIO_LIMIT (0x000001AD)
771 @param EAX Lower 32-bits of MSR value.
772 Described by the type MSR_XEON_PHI_TURBO_RATIO_LIMIT_REGISTER.
773 @param EDX Upper 32-bits of MSR value.
774 Described by the type MSR_XEON_PHI_TURBO_RATIO_LIMIT_REGISTER.
775
776 <b>Example usage</b>
777 @code
778 MSR_XEON_PHI_TURBO_RATIO_LIMIT_REGISTER Msr;
779
780 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_TURBO_RATIO_LIMIT);
781 AsmWriteMsr64 (MSR_XEON_PHI_TURBO_RATIO_LIMIT, Msr.Uint64);
782 @endcode
783 @note MSR_XEON_PHI_TURBO_RATIO_LIMIT is defined as MSR_TURBO_RATIO_LIMIT in SDM.
784 **/
785 #define MSR_XEON_PHI_TURBO_RATIO_LIMIT 0x000001AD
786
787 /**
788 MSR information returned for MSR index #MSR_XEON_PHI_TURBO_RATIO_LIMIT
789 **/
790 typedef union {
791 ///
792 /// Individual bit fields
793 ///
794 struct {
795 UINT32 Reserved:1;
796 ///
797 /// [Bits 7:1] Package. Maximum Number of Cores in Group 0 Number active
798 /// processor cores which operates under the maximum ratio limit for group
799 /// 0.
800 ///
801 UINT32 MaxCoresGroup0:7;
802 ///
803 /// [Bits 15:8] Package. Maximum Ratio Limit for Group 0 Maximum turbo
804 /// ratio limit when the number of active cores are not more than the
805 /// group 0 maximum core count.
806 ///
807 UINT32 MaxRatioLimitGroup0:8;
808 ///
809 /// [Bits 20:16] Package. Number of Incremental Cores Added to Group 1
810 /// Group 1, which includes the specified number of additional cores plus
811 /// the cores in group 0, operates under the group 1 turbo max ratio limit
812 /// = "group 0 Max ratio limit" - "group ratio delta for group 1".
813 ///
814 UINT32 MaxIncrementalCoresGroup1:5;
815 ///
816 /// [Bits 23:21] Package. Group Ratio Delta for Group 1 An unsigned
817 /// integer specifying the ratio decrement relative to the Max ratio limit
818 /// to Group 0.
819 ///
820 UINT32 DeltaRatioGroup1:3;
821 ///
822 /// [Bits 28:24] Package. Number of Incremental Cores Added to Group 2
823 /// Group 2, which includes the specified number of additional cores plus
824 /// all the cores in group 1, operates under the group 2 turbo max ratio
825 /// limit = "group 1 Max ratio limit" - "group ratio delta for group 2".
826 ///
827 UINT32 MaxIncrementalCoresGroup2:5;
828 ///
829 /// [Bits 31:29] Package. Group Ratio Delta for Group 2 An unsigned
830 /// integer specifying the ratio decrement relative to the Max ratio limit
831 /// for Group 1.
832 ///
833 UINT32 DeltaRatioGroup2:3;
834 ///
835 /// [Bits 36:32] Package. Number of Incremental Cores Added to Group 3
836 /// Group 3, which includes the specified number of additional cores plus
837 /// all the cores in group 2, operates under the group 3 turbo max ratio
838 /// limit = "group 2 Max ratio limit" - "group ratio delta for group 3".
839 ///
840 UINT32 MaxIncrementalCoresGroup3:5;
841 ///
842 /// [Bits 39:37] Package. Group Ratio Delta for Group 3 An unsigned
843 /// integer specifying the ratio decrement relative to the Max ratio limit
844 /// for Group 2.
845 ///
846 UINT32 DeltaRatioGroup3:3;
847 ///
848 /// [Bits 44:40] Package. Number of Incremental Cores Added to Group 4
849 /// Group 4, which includes the specified number of additional cores plus
850 /// all the cores in group 3, operates under the group 4 turbo max ratio
851 /// limit = "group 3 Max ratio limit" - "group ratio delta for group 4".
852 ///
853 UINT32 MaxIncrementalCoresGroup4:5;
854 ///
855 /// [Bits 47:45] Package. Group Ratio Delta for Group 4 An unsigned
856 /// integer specifying the ratio decrement relative to the Max ratio limit
857 /// for Group 3.
858 ///
859 UINT32 DeltaRatioGroup4:3;
860 ///
861 /// [Bits 52:48] Package. Number of Incremental Cores Added to Group 5
862 /// Group 5, which includes the specified number of additional cores plus
863 /// all the cores in group 4, operates under the group 5 turbo max ratio
864 /// limit = "group 4 Max ratio limit" - "group ratio delta for group 5".
865 ///
866 UINT32 MaxIncrementalCoresGroup5:5;
867 ///
868 /// [Bits 55:53] Package. Group Ratio Delta for Group 5 An unsigned
869 /// integer specifying the ratio decrement relative to the Max ratio limit
870 /// for Group 4.
871 ///
872 UINT32 DeltaRatioGroup5:3;
873 ///
874 /// [Bits 60:56] Package. Number of Incremental Cores Added to Group 6
875 /// Group 6, which includes the specified number of additional cores plus
876 /// all the cores in group 5, operates under the group 6 turbo max ratio
877 /// limit = "group 5 Max ratio limit" - "group ratio delta for group 6".
878 ///
879 UINT32 MaxIncrementalCoresGroup6:5;
880 ///
881 /// [Bits 63:61] Package. Group Ratio Delta for Group 6 An unsigned
882 /// integer specifying the ratio decrement relative to the Max ratio limit
883 /// for Group 5.
884 ///
885 UINT32 DeltaRatioGroup6:3;
886 } Bits;
887 ///
888 /// All bit fields as a 64-bit value
889 ///
890 UINT64 Uint64;
891 } MSR_XEON_PHI_TURBO_RATIO_LIMIT_REGISTER;
892
893
894 /**
895 Thread. Last Branch Record Filtering Select Register (R/W).
896
897 @param ECX MSR_XEON_PHI_LBR_SELECT (0x000001C8)
898 @param EAX Lower 32-bits of MSR value.
899 @param EDX Upper 32-bits of MSR value.
900
901 <b>Example usage</b>
902 @code
903 UINT64 Msr;
904
905 Msr = AsmReadMsr64 (MSR_XEON_PHI_LBR_SELECT);
906 AsmWriteMsr64 (MSR_XEON_PHI_LBR_SELECT, Msr);
907 @endcode
908 @note MSR_XEON_PHI_LBR_SELECT is defined as MSR_LBR_SELECT in SDM.
909 **/
910 #define MSR_XEON_PHI_LBR_SELECT 0x000001C8
911
912
913 /**
914 MSR information returned for MSR index #MSR_XEON_PHI_LBR_SELECT
915 **/
916 typedef union {
917 ///
918 /// Individual bit fields
919 ///
920 struct {
921 ///
922 /// [Bit 0] CPL_EQ_0.
923 ///
924 UINT32 CPL_EQ_0:1;
925 ///
926 /// [Bit 1] CPL_NEQ_0.
927 ///
928 UINT32 CPL_NEQ_0:1;
929 ///
930 /// [Bit 2] JCC.
931 ///
932 UINT32 JCC:1;
933 ///
934 /// [Bit 3] NEAR_REL_CALL.
935 ///
936 UINT32 NEAR_REL_CALL:1;
937 ///
938 /// [Bit 4] NEAR_IND_CALL.
939 ///
940 UINT32 NEAR_IND_CALL:1;
941 ///
942 /// [Bit 5] NEAR_RET.
943 ///
944 UINT32 NEAR_RET:1;
945 ///
946 /// [Bit 6] NEAR_IND_JMP.
947 ///
948 UINT32 NEAR_IND_JMP:1;
949 ///
950 /// [Bit 7] NEAR_REL_JMP.
951 ///
952 UINT32 NEAR_REL_JMP:1;
953 ///
954 /// [Bit 8] FAR_BRANCH.
955 ///
956 UINT32 FAR_BRANCH:1;
957 UINT32 Reserved1:23;
958 UINT32 Reserved2:32;
959 } Bits;
960 ///
961 /// All bit fields as a 32-bit value
962 ///
963 UINT32 Uint32;
964 ///
965 /// All bit fields as a 64-bit value
966 ///
967 UINT64 Uint64;
968 } MSR_XEON_PHI_LBR_SELECT_REGISTER;
969
970 /**
971 Thread. Last Branch Record Stack TOS (R/W).
972
973 @param ECX MSR_XEON_PHI_LASTBRANCH_TOS (0x000001C9)
974 @param EAX Lower 32-bits of MSR value.
975 @param EDX Upper 32-bits of MSR value.
976
977 <b>Example usage</b>
978 @code
979 UINT64 Msr;
980
981 Msr = AsmReadMsr64 (MSR_XEON_PHI_LASTBRANCH_TOS);
982 AsmWriteMsr64 (MSR_XEON_PHI_LASTBRANCH_TOS, Msr);
983 @endcode
984 @note MSR_XEON_PHI_LASTBRANCH_TOS is defined as MSR_LASTBRANCH_TOS in SDM.
985 **/
986 #define MSR_XEON_PHI_LASTBRANCH_TOS 0x000001C9
987
988
989 /**
990 Thread. Last Exception Record From Linear IP (R).
991
992 @param ECX MSR_XEON_PHI_LER_FROM_LIP (0x000001DD)
993 @param EAX Lower 32-bits of MSR value.
994 @param EDX Upper 32-bits of MSR value.
995
996 <b>Example usage</b>
997 @code
998 UINT64 Msr;
999
1000 Msr = AsmReadMsr64 (MSR_XEON_PHI_LER_FROM_LIP);
1001 @endcode
1002 @note MSR_XEON_PHI_LER_FROM_LIP is defined as MSR_LER_FROM_LIP in SDM.
1003 **/
1004 #define MSR_XEON_PHI_LER_FROM_LIP 0x000001DD
1005
1006
1007 /**
1008 Thread. Last Exception Record To Linear IP (R).
1009
1010 @param ECX MSR_XEON_PHI_LER_TO_LIP (0x000001DE)
1011 @param EAX Lower 32-bits of MSR value.
1012 @param EDX Upper 32-bits of MSR value.
1013
1014 <b>Example usage</b>
1015 @code
1016 UINT64 Msr;
1017
1018 Msr = AsmReadMsr64 (MSR_XEON_PHI_LER_TO_LIP);
1019 @endcode
1020 @note MSR_XEON_PHI_LER_TO_LIP is defined as MSR_LER_TO_LIP in SDM.
1021 **/
1022 #define MSR_XEON_PHI_LER_TO_LIP 0x000001DE
1023
1024
1025 /**
1026 Thread. See Table 2-2.
1027
1028 @param ECX MSR_XEON_PHI_PEBS_ENABLE (0x000003F1)
1029 @param EAX Lower 32-bits of MSR value.
1030 @param EDX Upper 32-bits of MSR value.
1031
1032 <b>Example usage</b>
1033 @code
1034 UINT64 Msr;
1035
1036 Msr = AsmReadMsr64 (MSR_XEON_PHI_PEBS_ENABLE);
1037 AsmWriteMsr64 (MSR_XEON_PHI_PEBS_ENABLE, Msr);
1038 @endcode
1039 @note MSR_XEON_PHI_PEBS_ENABLE is defined as MSR_PEBS_ENABLE in SDM.
1040 **/
1041 #define MSR_XEON_PHI_PEBS_ENABLE 0x000003F1
1042
1043
1044 /**
1045 Package. Note: C-state values are processor specific C-state code names,
1046 unrelated to MWAIT extension C-state parameters or ACPI C-States. Package C3
1047 Residency Counter. (R/O).
1048
1049 @param ECX MSR_XEON_PHI_PKG_C3_RESIDENCY (0x000003F8)
1050 @param EAX Lower 32-bits of MSR value.
1051 @param EDX Upper 32-bits of MSR value.
1052
1053 <b>Example usage</b>
1054 @code
1055 UINT64 Msr;
1056
1057 Msr = AsmReadMsr64 (MSR_XEON_PHI_PKG_C3_RESIDENCY);
1058 AsmWriteMsr64 (MSR_XEON_PHI_PKG_C3_RESIDENCY, Msr);
1059 @endcode
1060 @note MSR_XEON_PHI_PKG_C3_RESIDENCY is defined as MSR_PKG_C3_RESIDENCY in SDM.
1061 **/
1062 #define MSR_XEON_PHI_PKG_C3_RESIDENCY 0x000003F8
1063
1064
1065 /**
1066 Package. Package C6 Residency Counter. (R/O).
1067
1068 @param ECX MSR_XEON_PHI_PKG_C6_RESIDENCY (0x000003F9)
1069 @param EAX Lower 32-bits of MSR value.
1070 @param EDX Upper 32-bits of MSR value.
1071
1072 <b>Example usage</b>
1073 @code
1074 UINT64 Msr;
1075
1076 Msr = AsmReadMsr64 (MSR_XEON_PHI_PKG_C6_RESIDENCY);
1077 AsmWriteMsr64 (MSR_XEON_PHI_PKG_C6_RESIDENCY, Msr);
1078 @endcode
1079 @note MSR_XEON_PHI_PKG_C6_RESIDENCY is defined as MSR_PKG_C6_RESIDENCY in SDM.
1080 **/
1081 #define MSR_XEON_PHI_PKG_C6_RESIDENCY 0x000003F9
1082
1083
1084 /**
1085 Package. Package C7 Residency Counter. (R/O).
1086
1087 @param ECX MSR_XEON_PHI_PKG_C7_RESIDENCY (0x000003FA)
1088 @param EAX Lower 32-bits of MSR value.
1089 @param EDX Upper 32-bits of MSR value.
1090
1091 <b>Example usage</b>
1092 @code
1093 UINT64 Msr;
1094
1095 Msr = AsmReadMsr64 (MSR_XEON_PHI_PKG_C7_RESIDENCY);
1096 AsmWriteMsr64 (MSR_XEON_PHI_PKG_C7_RESIDENCY, Msr);
1097 @endcode
1098 @note MSR_XEON_PHI_PKG_C7_RESIDENCY is defined as MSR_PKG_C7_RESIDENCY in SDM.
1099 **/
1100 #define MSR_XEON_PHI_PKG_C7_RESIDENCY 0x000003FA
1101
1102
1103 /**
1104 Module. Note: C-state values are processor specific C-state code names,
1105 unrelated to MWAIT extension C-state parameters or ACPI C-States. Module C0
1106 Residency Counter. (R/O).
1107
1108 @param ECX MSR_XEON_PHI_MC0_RESIDENCY (0x000003FC)
1109 @param EAX Lower 32-bits of MSR value.
1110 @param EDX Upper 32-bits of MSR value.
1111
1112 <b>Example usage</b>
1113 @code
1114 UINT64 Msr;
1115
1116 Msr = AsmReadMsr64 (MSR_XEON_PHI_MC0_RESIDENCY);
1117 AsmWriteMsr64 (MSR_XEON_PHI_MC0_RESIDENCY, Msr);
1118 @endcode
1119 @note MSR_XEON_PHI_MC0_RESIDENCY is defined as MSR_MC0_RESIDENCY in SDM.
1120 **/
1121 #define MSR_XEON_PHI_MC0_RESIDENCY 0x000003FC
1122
1123
1124 /**
1125 Module. Module C6 Residency Counter. (R/O).
1126
1127 @param ECX MSR_XEON_PHI_MC6_RESIDENCY (0x000003FD)
1128 @param EAX Lower 32-bits of MSR value.
1129 @param EDX Upper 32-bits of MSR value.
1130
1131 <b>Example usage</b>
1132 @code
1133 UINT64 Msr;
1134
1135 Msr = AsmReadMsr64 (MSR_XEON_PHI_MC6_RESIDENCY);
1136 AsmWriteMsr64 (MSR_XEON_PHI_MC6_RESIDENCY, Msr);
1137 @endcode
1138 @note MSR_XEON_PHI_MC6_RESIDENCY is defined as MSR_MC6_RESIDENCY in SDM.
1139 **/
1140 #define MSR_XEON_PHI_MC6_RESIDENCY 0x000003FD
1141
1142
1143 /**
1144 Core. Note: C-state values are processor specific C-state code names,
1145 unrelated to MWAIT extension C-state parameters or ACPI C-States. CORE C6
1146 Residency Counter. (R/O).
1147
1148 @param ECX MSR_XEON_PHI_CORE_C6_RESIDENCY (0x000003FF)
1149 @param EAX Lower 32-bits of MSR value.
1150 @param EDX Upper 32-bits of MSR value.
1151
1152 <b>Example usage</b>
1153 @code
1154 UINT64 Msr;
1155
1156 Msr = AsmReadMsr64 (MSR_XEON_PHI_CORE_C6_RESIDENCY);
1157 AsmWriteMsr64 (MSR_XEON_PHI_CORE_C6_RESIDENCY, Msr);
1158 @endcode
1159 @note MSR_XEON_PHI_CORE_C6_RESIDENCY is defined as MSR_CORE_C6_RESIDENCY in SDM.
1160 **/
1161 #define MSR_XEON_PHI_CORE_C6_RESIDENCY 0x000003FF
1162
1163
1164 /**
1165 Core. Capability Reporting Register of EPT and VPID (R/O) See Table 2-2.
1166
1167 @param ECX MSR_XEON_PHI_IA32_VMX_EPT_VPID_ENUM (0x0000048C)
1168 @param EAX Lower 32-bits of MSR value.
1169 @param EDX Upper 32-bits of MSR value.
1170
1171 <b>Example usage</b>
1172 @code
1173 UINT64 Msr;
1174
1175 Msr = AsmReadMsr64 (MSR_XEON_PHI_IA32_VMX_EPT_VPID_ENUM);
1176 @endcode
1177 @note MSR_XEON_PHI_IA32_VMX_EPT_VPID_ENUM is defined as IA32_VMX_EPT_VPID_ENUM in SDM.
1178 **/
1179 #define MSR_XEON_PHI_IA32_VMX_EPT_VPID_ENUM 0x0000048C
1180
1181
1182 /**
1183 Core. Capability Reporting Register of VM-Function Controls (R/O) See Table
1184 2-2.
1185
1186 @param ECX MSR_XEON_PHI_IA32_VMX_FMFUNC (0x00000491)
1187 @param EAX Lower 32-bits of MSR value.
1188 @param EDX Upper 32-bits of MSR value.
1189
1190 <b>Example usage</b>
1191 @code
1192 UINT64 Msr;
1193
1194 Msr = AsmReadMsr64 (MSR_XEON_PHI_IA32_VMX_FMFUNC);
1195 @endcode
1196 @note MSR_XEON_PHI_IA32_VMX_FMFUNC is defined as IA32_VMX_FMFUNC in SDM.
1197 **/
1198 #define MSR_XEON_PHI_IA32_VMX_FMFUNC 0x00000491
1199
1200
1201 /**
1202 Package. Unit Multipliers used in RAPL Interfaces (R/O).
1203
1204 @param ECX MSR_XEON_PHI_RAPL_POWER_UNIT (0x00000606)
1205 @param EAX Lower 32-bits of MSR value.
1206 Described by the type MSR_XEON_PHI_RAPL_POWER_UNIT_REGISTER.
1207 @param EDX Upper 32-bits of MSR value.
1208 Described by the type MSR_XEON_PHI_RAPL_POWER_UNIT_REGISTER.
1209
1210 <b>Example usage</b>
1211 @code
1212 MSR_XEON_PHI_RAPL_POWER_UNIT_REGISTER Msr;
1213
1214 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_RAPL_POWER_UNIT);
1215 @endcode
1216 @note MSR_XEON_PHI_RAPL_POWER_UNIT is defined as MSR_RAPL_POWER_UNIT in SDM.
1217 **/
1218 #define MSR_XEON_PHI_RAPL_POWER_UNIT 0x00000606
1219
1220 /**
1221 MSR information returned for MSR index #MSR_XEON_PHI_RAPL_POWER_UNIT
1222 **/
1223 typedef union {
1224 ///
1225 /// Individual bit fields
1226 ///
1227 struct {
1228 ///
1229 /// [Bits 3:0] Package. Power Units See Section 14.9.1, "RAPL Interfaces.".
1230 ///
1231 UINT32 PowerUnits:4;
1232 UINT32 Reserved1:4;
1233 ///
1234 /// [Bits 12:8] Package. Energy Status Units Energy related information
1235 /// (in Joules) is based on the multiplier, 1/2^ESU; where ESU is an
1236 /// unsigned integer represented by bits 12:8. Default value is 0EH (or 61
1237 /// micro-joules).
1238 ///
1239 UINT32 EnergyStatusUnits:5;
1240 UINT32 Reserved2:3;
1241 ///
1242 /// [Bits 19:16] Package. Time Units See Section 14.9.1, "RAPL
1243 /// Interfaces.".
1244 ///
1245 UINT32 TimeUnits:4;
1246 UINT32 Reserved3:12;
1247 UINT32 Reserved4:32;
1248 } Bits;
1249 ///
1250 /// All bit fields as a 32-bit value
1251 ///
1252 UINT32 Uint32;
1253 ///
1254 /// All bit fields as a 64-bit value
1255 ///
1256 UINT64 Uint64;
1257 } MSR_XEON_PHI_RAPL_POWER_UNIT_REGISTER;
1258
1259
1260 /**
1261 Package. Note: C-state values are processor specific C-state code names,
1262 unrelated to MWAIT extension C-state parameters or ACPI C-States. Package C2
1263 Residency Counter. (R/O).
1264
1265 @param ECX MSR_XEON_PHI_PKG_C2_RESIDENCY (0x0000060D)
1266 @param EAX Lower 32-bits of MSR value.
1267 @param EDX Upper 32-bits of MSR value.
1268
1269 <b>Example usage</b>
1270 @code
1271 UINT64 Msr;
1272
1273 Msr = AsmReadMsr64 (MSR_XEON_PHI_PKG_C2_RESIDENCY);
1274 AsmWriteMsr64 (MSR_XEON_PHI_PKG_C2_RESIDENCY, Msr);
1275 @endcode
1276 @note MSR_XEON_PHI_PKG_C2_RESIDENCY is defined as MSR_PKG_C2_RESIDENCY in SDM.
1277 **/
1278 #define MSR_XEON_PHI_PKG_C2_RESIDENCY 0x0000060D
1279
1280
1281 /**
1282 Package. PKG RAPL Power Limit Control (R/W) See Section 14.9.3, "Package
1283 RAPL Domain.".
1284
1285 @param ECX MSR_XEON_PHI_PKG_POWER_LIMIT (0x00000610)
1286 @param EAX Lower 32-bits of MSR value.
1287 @param EDX Upper 32-bits of MSR value.
1288
1289 <b>Example usage</b>
1290 @code
1291 UINT64 Msr;
1292
1293 Msr = AsmReadMsr64 (MSR_XEON_PHI_PKG_POWER_LIMIT);
1294 AsmWriteMsr64 (MSR_XEON_PHI_PKG_POWER_LIMIT, Msr);
1295 @endcode
1296 @note MSR_XEON_PHI_PKG_POWER_LIMIT is defined as MSR_PKG_POWER_LIMIT in SDM.
1297 **/
1298 #define MSR_XEON_PHI_PKG_POWER_LIMIT 0x00000610
1299
1300
1301 /**
1302 Package. PKG Energy Status (R/O) See Section 14.9.3, "Package RAPL Domain.".
1303
1304 @param ECX MSR_XEON_PHI_PKG_ENERGY_STATUS (0x00000611)
1305 @param EAX Lower 32-bits of MSR value.
1306 @param EDX Upper 32-bits of MSR value.
1307
1308 <b>Example usage</b>
1309 @code
1310 UINT64 Msr;
1311
1312 Msr = AsmReadMsr64 (MSR_XEON_PHI_PKG_ENERGY_STATUS);
1313 @endcode
1314 @note MSR_XEON_PHI_PKG_ENERGY_STATUS is defined as MSR_PKG_ENERGY_STATUS in SDM.
1315 **/
1316 #define MSR_XEON_PHI_PKG_ENERGY_STATUS 0x00000611
1317
1318
1319 /**
1320 Package. PKG Perf Status (R/O) See Section 14.9.3, "Package RAPL Domain.".
1321
1322 @param ECX MSR_XEON_PHI_PKG_PERF_STATUS (0x00000613)
1323 @param EAX Lower 32-bits of MSR value.
1324 @param EDX Upper 32-bits of MSR value.
1325
1326 <b>Example usage</b>
1327 @code
1328 UINT64 Msr;
1329
1330 Msr = AsmReadMsr64 (MSR_XEON_PHI_PKG_PERF_STATUS);
1331 @endcode
1332 @note MSR_XEON_PHI_PKG_PERF_STATUS is defined as MSR_PKG_PERF_STATUS in SDM.
1333 **/
1334 #define MSR_XEON_PHI_PKG_PERF_STATUS 0x00000613
1335
1336
1337 /**
1338 Package. PKG RAPL Parameters (R/W) See Section 14.9.3, "Package RAPL
1339 Domain.".
1340
1341 @param ECX MSR_XEON_PHI_PKG_POWER_INFO (0x00000614)
1342 @param EAX Lower 32-bits of MSR value.
1343 @param EDX Upper 32-bits of MSR value.
1344
1345 <b>Example usage</b>
1346 @code
1347 UINT64 Msr;
1348
1349 Msr = AsmReadMsr64 (MSR_XEON_PHI_PKG_POWER_INFO);
1350 AsmWriteMsr64 (MSR_XEON_PHI_PKG_POWER_INFO, Msr);
1351 @endcode
1352 @note MSR_XEON_PHI_PKG_POWER_INFO is defined as MSR_PKG_POWER_INFO in SDM.
1353 **/
1354 #define MSR_XEON_PHI_PKG_POWER_INFO 0x00000614
1355
1356
1357 /**
1358 Package. DRAM RAPL Power Limit Control (R/W) See Section 14.9.5, "DRAM RAPL
1359 Domain.".
1360
1361 @param ECX MSR_XEON_PHI_DRAM_POWER_LIMIT (0x00000618)
1362 @param EAX Lower 32-bits of MSR value.
1363 @param EDX Upper 32-bits of MSR value.
1364
1365 <b>Example usage</b>
1366 @code
1367 UINT64 Msr;
1368
1369 Msr = AsmReadMsr64 (MSR_XEON_PHI_DRAM_POWER_LIMIT);
1370 AsmWriteMsr64 (MSR_XEON_PHI_DRAM_POWER_LIMIT, Msr);
1371 @endcode
1372 @note MSR_XEON_PHI_DRAM_POWER_LIMIT is defined as MSR_DRAM_POWER_LIMIT in SDM.
1373 **/
1374 #define MSR_XEON_PHI_DRAM_POWER_LIMIT 0x00000618
1375
1376
1377 /**
1378 Package. DRAM Energy Status (R/O) See Section 14.9.5, "DRAM RAPL Domain.".
1379
1380 @param ECX MSR_XEON_PHI_DRAM_ENERGY_STATUS (0x00000619)
1381 @param EAX Lower 32-bits of MSR value.
1382 @param EDX Upper 32-bits of MSR value.
1383
1384 <b>Example usage</b>
1385 @code
1386 UINT64 Msr;
1387
1388 Msr = AsmReadMsr64 (MSR_XEON_PHI_DRAM_ENERGY_STATUS);
1389 @endcode
1390 @note MSR_XEON_PHI_DRAM_ENERGY_STATUS is defined as MSR_DRAM_ENERGY_STATUS in SDM.
1391 **/
1392 #define MSR_XEON_PHI_DRAM_ENERGY_STATUS 0x00000619
1393
1394
1395 /**
1396 Package. DRAM Performance Throttling Status (R/O) See Section 14.9.5, "DRAM
1397 RAPL Domain.".
1398
1399 @param ECX MSR_XEON_PHI_DRAM_PERF_STATUS (0x0000061B)
1400 @param EAX Lower 32-bits of MSR value.
1401 @param EDX Upper 32-bits of MSR value.
1402
1403 <b>Example usage</b>
1404 @code
1405 UINT64 Msr;
1406
1407 Msr = AsmReadMsr64 (MSR_XEON_PHI_DRAM_PERF_STATUS);
1408 @endcode
1409 @note MSR_XEON_PHI_DRAM_PERF_STATUS is defined as MSR_DRAM_PERF_STATUS in SDM.
1410 **/
1411 #define MSR_XEON_PHI_DRAM_PERF_STATUS 0x0000061B
1412
1413
1414 /**
1415 Package. DRAM RAPL Parameters (R/W) See Section 14.9.5, "DRAM RAPL Domain.".
1416
1417 @param ECX MSR_XEON_PHI_DRAM_POWER_INFO (0x0000061C)
1418 @param EAX Lower 32-bits of MSR value.
1419 @param EDX Upper 32-bits of MSR value.
1420
1421 <b>Example usage</b>
1422 @code
1423 UINT64 Msr;
1424
1425 Msr = AsmReadMsr64 (MSR_XEON_PHI_DRAM_POWER_INFO);
1426 AsmWriteMsr64 (MSR_XEON_PHI_DRAM_POWER_INFO, Msr);
1427 @endcode
1428 @note MSR_XEON_PHI_DRAM_POWER_INFO is defined as MSR_DRAM_POWER_INFO in SDM.
1429 **/
1430 #define MSR_XEON_PHI_DRAM_POWER_INFO 0x0000061C
1431
1432
1433 /**
1434 Package. Uncore Ratio Limit (R/W) Out of reset, the min_ratio and max_ratio
1435 fields represent the widest possible range of uncore frequencies. Writing to
1436 these fields allows software to control the minimum and the maximum
1437 frequency that hardware will select.
1438
1439 @param ECX MSR_XEON_PHI_MSRUNCORE_RATIO_LIMIT (0x00000620)
1440 @param EAX Lower 32-bits of MSR value.
1441 Described by the type MSR_XEON_PHI_MSRUNCORE_RATIO_LIMIT_REGISTER.
1442 @param EDX Upper 32-bits of MSR value.
1443 Described by the type MSR_XEON_PHI_MSRUNCORE_RATIO_LIMIT_REGISTER.
1444
1445 <b>Example usage</b>
1446 @code
1447 MSR_XEON_PHI_MSRUNCORE_RATIO_LIMIT_REGISTER Msr;
1448
1449 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_MSRUNCORE_RATIO_LIMIT);
1450 AsmWriteMsr64 (MSR_XEON_PHI_MSRUNCORE_RATIO_LIMIT, Msr.Uint64);
1451 @endcode
1452 **/
1453 #define MSR_XEON_PHI_MSRUNCORE_RATIO_LIMIT 0x00000620
1454
1455 /**
1456 MSR information returned for MSR index #MSR_XEON_PHI_MSRUNCORE_RATIO_LIMIT
1457 **/
1458 typedef union {
1459 ///
1460 /// Individual bit fields
1461 ///
1462 struct {
1463 ///
1464 /// [Bits 6:0] MAX_RATIO This field is used to limit the max ratio of the
1465 /// LLC/Ring.
1466 ///
1467 UINT32 MAX_RATIO:7;
1468 UINT32 Reserved1:1;
1469 ///
1470 /// [Bits 14:8] MIN_RATIO Writing to this field controls the minimum
1471 /// possible ratio of the LLC/Ring.
1472 ///
1473 UINT32 MIN_RATIO:7;
1474 UINT32 Reserved2:17;
1475 UINT32 Reserved3:32;
1476 } Bits;
1477 ///
1478 /// All bit fields as a 32-bit value
1479 ///
1480 UINT32 Uint32;
1481 ///
1482 /// All bit fields as a 64-bit value
1483 ///
1484 UINT64 Uint64;
1485 } MSR_XEON_PHI_MSRUNCORE_RATIO_LIMIT_REGISTER;
1486
1487
1488 /**
1489 Package. PP0 RAPL Power Limit Control (R/W) See Section 14.9.4, "PP0/PP1
1490 RAPL Domains.".
1491
1492 @param ECX MSR_XEON_PHI_PP0_POWER_LIMIT (0x00000638)
1493 @param EAX Lower 32-bits of MSR value.
1494 @param EDX Upper 32-bits of MSR value.
1495
1496 <b>Example usage</b>
1497 @code
1498 UINT64 Msr;
1499
1500 Msr = AsmReadMsr64 (MSR_XEON_PHI_PP0_POWER_LIMIT);
1501 AsmWriteMsr64 (MSR_XEON_PHI_PP0_POWER_LIMIT, Msr);
1502 @endcode
1503 @note MSR_XEON_PHI_PP0_POWER_LIMIT is defined as MSR_PP0_POWER_LIMIT in SDM.
1504 **/
1505 #define MSR_XEON_PHI_PP0_POWER_LIMIT 0x00000638
1506
1507
1508 /**
1509 Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
1510 Domains.".
1511
1512 @param ECX MSR_XEON_PHI_PP0_ENERGY_STATUS (0x00000639)
1513 @param EAX Lower 32-bits of MSR value.
1514 @param EDX Upper 32-bits of MSR value.
1515
1516 <b>Example usage</b>
1517 @code
1518 UINT64 Msr;
1519
1520 Msr = AsmReadMsr64 (MSR_XEON_PHI_PP0_ENERGY_STATUS);
1521 @endcode
1522 @note MSR_XEON_PHI_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.
1523 **/
1524 #define MSR_XEON_PHI_PP0_ENERGY_STATUS 0x00000639
1525
1526
1527 /**
1528 Package. Base TDP Ratio (R/O) See Table 2-24.
1529
1530 @param ECX MSR_XEON_PHI_CONFIG_TDP_NOMINAL (0x00000648)
1531 @param EAX Lower 32-bits of MSR value.
1532 @param EDX Upper 32-bits of MSR value.
1533
1534 <b>Example usage</b>
1535 @code
1536 UINT64 Msr;
1537
1538 Msr = AsmReadMsr64 (MSR_XEON_PHI_CONFIG_TDP_NOMINAL);
1539 @endcode
1540 @note MSR_XEON_PHI_CONFIG_TDP_NOMINAL is defined as MSR_CONFIG_TDP_NOMINAL in SDM.
1541 **/
1542 #define MSR_XEON_PHI_CONFIG_TDP_NOMINAL 0x00000648
1543
1544
1545 /**
1546 Package. ConfigTDP Level 1 ratio and power level (R/O) See Table 2-24.
1547
1548 @param ECX MSR_XEON_PHI_CONFIG_TDP_LEVEL1 (0x00000649)
1549 @param EAX Lower 32-bits of MSR value.
1550 @param EDX Upper 32-bits of MSR value.
1551
1552 <b>Example usage</b>
1553 @code
1554 UINT64 Msr;
1555
1556 Msr = AsmReadMsr64 (MSR_XEON_PHI_CONFIG_TDP_LEVEL1);
1557 @endcode
1558 @note MSR_XEON_PHI_CONFIG_TDP_LEVEL1 is defined as MSR_CONFIG_TDP_LEVEL1 in SDM.
1559 **/
1560 #define MSR_XEON_PHI_CONFIG_TDP_LEVEL1 0x00000649
1561
1562
1563 /**
1564 Package. ConfigTDP Level 2 ratio and power level (R/O) See Table 2-24.
1565
1566 @param ECX MSR_XEON_PHI_CONFIG_TDP_LEVEL2 (0x0000064A)
1567 @param EAX Lower 32-bits of MSR value.
1568 @param EDX Upper 32-bits of MSR value.
1569
1570 <b>Example usage</b>
1571 @code
1572 UINT64 Msr;
1573
1574 Msr = AsmReadMsr64 (MSR_XEON_PHI_CONFIG_TDP_LEVEL2);
1575 @endcode
1576 @note MSR_XEON_PHI_CONFIG_TDP_LEVEL2 is defined as MSR_CONFIG_TDP_LEVEL2 in SDM.
1577 **/
1578 #define MSR_XEON_PHI_CONFIG_TDP_LEVEL2 0x0000064A
1579
1580
1581 /**
1582 Package. ConfigTDP Control (R/W) See Table 2-24.
1583
1584 @param ECX MSR_XEON_PHI_CONFIG_TDP_CONTROL (0x0000064B)
1585 @param EAX Lower 32-bits of MSR value.
1586 @param EDX Upper 32-bits of MSR value.
1587
1588 <b>Example usage</b>
1589 @code
1590 UINT64 Msr;
1591
1592 Msr = AsmReadMsr64 (MSR_XEON_PHI_CONFIG_TDP_CONTROL);
1593 AsmWriteMsr64 (MSR_XEON_PHI_CONFIG_TDP_CONTROL, Msr);
1594 @endcode
1595 @note MSR_XEON_PHI_CONFIG_TDP_CONTROL is defined as MSR_CONFIG_TDP_CONTROL in SDM.
1596 **/
1597 #define MSR_XEON_PHI_CONFIG_TDP_CONTROL 0x0000064B
1598
1599
1600 /**
1601 Package. ConfigTDP Control (R/W) See Table 2-24.
1602
1603 @param ECX MSR_XEON_PHI_TURBO_ACTIVATION_RATIO (0x0000064C)
1604 @param EAX Lower 32-bits of MSR value.
1605 @param EDX Upper 32-bits of MSR value.
1606
1607 <b>Example usage</b>
1608 @code
1609 UINT64 Msr;
1610
1611 Msr = AsmReadMsr64 (MSR_XEON_PHI_TURBO_ACTIVATION_RATIO);
1612 AsmWriteMsr64 (MSR_XEON_PHI_TURBO_ACTIVATION_RATIO, Msr);
1613 @endcode
1614 @note MSR_XEON_PHI_TURBO_ACTIVATION_RATIO is defined as MSR_TURBO_ACTIVATION_RATIO in SDM.
1615 **/
1616 #define MSR_XEON_PHI_TURBO_ACTIVATION_RATIO 0x0000064C
1617
1618
1619 /**
1620 Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency
1621 refers to processor core frequency).
1622
1623 @param ECX MSR_XEON_PHI_CORE_PERF_LIMIT_REASONS (0x00000690)
1624 @param EAX Lower 32-bits of MSR value.
1625 Described by the type MSR_XEON_PHI_CORE_PERF_LIMIT_REASONS_REGISTER.
1626 @param EDX Upper 32-bits of MSR value.
1627 Described by the type MSR_XEON_PHI_CORE_PERF_LIMIT_REASONS_REGISTER.
1628
1629 <b>Example usage</b>
1630 @code
1631 MSR_XEON_PHI_CORE_PERF_LIMIT_REASONS_REGISTER Msr;
1632
1633 Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_CORE_PERF_LIMIT_REASONS);
1634 AsmWriteMsr64 (MSR_XEON_PHI_CORE_PERF_LIMIT_REASONS, Msr.Uint64);
1635 @endcode
1636 @note MSR_XEON_PHI_CORE_PERF_LIMIT_REASONS is defined as MSR_CORE_PERF_LIMIT_REASONS in SDM.
1637 **/
1638 #define MSR_XEON_PHI_CORE_PERF_LIMIT_REASONS 0x00000690
1639
1640 /**
1641 MSR information returned for MSR index #MSR_XEON_PHI_CORE_PERF_LIMIT_REASONS
1642 **/
1643 typedef union {
1644 ///
1645 /// Individual bit fields
1646 ///
1647 struct {
1648 ///
1649 /// [Bit 0] PROCHOT Status (R0).
1650 ///
1651 UINT32 PROCHOT_Status:1;
1652 ///
1653 /// [Bit 1] Thermal Status (R0).
1654 ///
1655 UINT32 ThermalStatus:1;
1656 UINT32 Reserved1:4;
1657 ///
1658 /// [Bit 6] VR Therm Alert Status (R0).
1659 ///
1660 UINT32 VRThermAlertStatus:1;
1661 UINT32 Reserved2:1;
1662 ///
1663 /// [Bit 8] Electrical Design Point Status (R0).
1664 ///
1665 UINT32 ElectricalDesignPointStatus:1;
1666 UINT32 Reserved3:23;
1667 UINT32 Reserved4:32;
1668 } Bits;
1669 ///
1670 /// All bit fields as a 32-bit value
1671 ///
1672 UINT32 Uint32;
1673 ///
1674 /// All bit fields as a 64-bit value
1675 ///
1676 UINT64 Uint64;
1677 } MSR_XEON_PHI_CORE_PERF_LIMIT_REASONS_REGISTER;
1678
1679 #endif