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