* [PATCH 0/4] Update CPUID & MSR header files with SDM (Sep.2016)
@ 2016-12-14 8:33 Hao Wu
2016-12-14 8:33 ` [PATCH 1/4] UefiCpuPkg/Include: Update " Hao Wu
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Hao Wu @ 2016-12-14 8:33 UTC (permalink / raw)
To: edk2-devel; +Cc: Hao Wu, Michael Kinney, Jeff Fan
https://bugzilla.tianocore.org/show_bug.cgi?id=176
According to the latest version (Sep.'16) of Intel(R) 64 and IA-32
Architectures Software Developer's Manual (SDM), this patch series will
update the MSR and CPUID related definitions in .h files under
UefiCpuPkg/Include/Register.
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Hao Wu (4):
UefiCpuPkg/Include: Update MSR header files with SDM (Sep.2016)
UefiCpuPkg/Include: Update Skylake MSR header file with SDM (Sep.2016)
UefiCpuPkg/Include: Add Goldmont MSR header file with SDM (Sep.2016)
UefiCpuPkg/Cpuid.h: Update CPUID definitions with SDM (Sep.2016)
UefiCpuPkg/Application/Cpuid/Cpuid.c | 115 +-
UefiCpuPkg/Include/Register/ArchitecturalMsr.h | 159 +-
UefiCpuPkg/Include/Register/Cpuid.h | 363 +++-
UefiCpuPkg/Include/Register/Msr.h | 3 +-
UefiCpuPkg/Include/Register/Msr/AtomMsr.h | 167 +-
UefiCpuPkg/Include/Register/Msr/BroadwellMsr.h | 43 +-
UefiCpuPkg/Include/Register/Msr/Core2Msr.h | 286 +--
UefiCpuPkg/Include/Register/Msr/CoreMsr.h | 64 +-
UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h | 2515 ++++++++++++++++++++++
UefiCpuPkg/Include/Register/Msr/HaswellEMsr.h | 451 ++--
UefiCpuPkg/Include/Register/Msr/HaswellMsr.h | 62 +-
UefiCpuPkg/Include/Register/Msr/IvyBridgeMsr.h | 416 ++--
UefiCpuPkg/Include/Register/Msr/NehalemMsr.h | 340 +--
UefiCpuPkg/Include/Register/Msr/P6Msr.h | 6 +-
UefiCpuPkg/Include/Register/Msr/Pentium4Msr.h | 146 +-
UefiCpuPkg/Include/Register/Msr/PentiumMMsr.h | 26 +-
UefiCpuPkg/Include/Register/Msr/PentiumMsr.h | 8 +-
UefiCpuPkg/Include/Register/Msr/SandyBridgeMsr.h | 537 ++---
UefiCpuPkg/Include/Register/Msr/SilvermontMsr.h | 411 ++--
UefiCpuPkg/Include/Register/Msr/SkylakeMsr.h | 1189 +++++++++-
UefiCpuPkg/Include/Register/Msr/Xeon5600Msr.h | 2 +-
UefiCpuPkg/Include/Register/Msr/XeonDMsr.h | 456 +---
UefiCpuPkg/Include/Register/Msr/XeonE7Msr.h | 74 +-
UefiCpuPkg/Include/Register/Msr/XeonPhiMsr.h | 314 +--
24 files changed, 5323 insertions(+), 2830 deletions(-)
create mode 100644 UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h
--
1.9.5.msysgit.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/4] UefiCpuPkg/Include: Update MSR header files with SDM (Sep.2016)
2016-12-14 8:33 [PATCH 0/4] Update CPUID & MSR header files with SDM (Sep.2016) Hao Wu
@ 2016-12-14 8:33 ` Hao Wu
2016-12-14 8:33 ` [PATCH 2/4] UefiCpuPkg/Include: Update Skylake MSR header file " Hao Wu
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Hao Wu @ 2016-12-14 8:33 UTC (permalink / raw)
To: edk2-devel; +Cc: Hao Wu, Michael Kinney, Jeff Fan
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=UTF-8, Size: 230126 bytes --]
https://bugzilla.tianocore.org/show_bug.cgi?id=176
Update MSR header files of processors (excluding Goldmont and Skylake
processors) according to Intel(R) 64 and IA-32 Architectures Software
Developer's Manual, Volume 3, September 2016, Chapter 35
Model-Specific-Registers (MSR).
Summary of incompatible changes:
General:
1. MSR (address 38EH) IA32_PERF_GLOBAL_STAUS in processor-specific header
files has been removed or renamed to IA32_PERF_GLOBAL_STATUS
Typo 'STAUS' has been fixed in SDM.
If the MSR definition is the same with architectural MSR, we remove it.
Otherwise, we rename the MSR.
2. MSRs (address starting from 400H) MSR_MC{X}_{XXX} (like MSR_MC4_STATUS)
in processor-specific header files have been removed or renamed to
IA32_MC{X}_{XXX} (like IA32_MC4_STATUS)
Register name change from 'MSR_MC{X}_{XXX}' to 'IA32_MC{X}_{XXX}' in SDM.
If the MSR definition is the same with architectural MSR, we remove it.
Otherwise, we rename the MSR.
Please note that for those MSRs still have name like 'MSR_MC{X}_{XXX}' in
SDM are still kept in processor-specific header files.
HaswellMsr.h:
1. MSR (address C80H) IA32_DEBUG_FEATURE has been removed
Register name change from 'IA32_DEBUG_FEATURE' to 'IA32_DEBUG_INTERFACE'
in SDM.
Since the MSR definition is the same with architectural MSR, we remove it.
SandyBridgeMsr.h:
1. MSR (address 391H) MSR_UNC_PERF_GLOBAL_CTRL, name change for bit fields
0:3
Bit description change from 'Core {X} select' to 'Slice {X} select' for
bit 0:3 in SDM.
SilvermontMsr.h:
1. MSR (address 2AH) MSR_EBL_CR_POWERON, structure definition changed
Bit description for this MSR is totally changed in SDM, we modify the
structure definition to align with it.
XeonDMsr.h:
1. MSRs (address 630H to 632H) MSR_PKG_C8_RESIDENCY, MSR_PKG_C9_RESIDENCY
and MSR_PKG_C10_RESIDENCY have been removed
Those 3 MSRs are not defined for this processor in SDM, we remove them.
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
---
UefiCpuPkg/Include/Register/ArchitecturalMsr.h | 159 ++++---
UefiCpuPkg/Include/Register/Msr/AtomMsr.h | 167 +------
UefiCpuPkg/Include/Register/Msr/BroadwellMsr.h | 43 +-
UefiCpuPkg/Include/Register/Msr/Core2Msr.h | 286 +-----------
UefiCpuPkg/Include/Register/Msr/CoreMsr.h | 64 +--
UefiCpuPkg/Include/Register/Msr/HaswellEMsr.h | 451 +++++++++----------
UefiCpuPkg/Include/Register/Msr/HaswellMsr.h | 62 +--
UefiCpuPkg/Include/Register/Msr/IvyBridgeMsr.h | 416 +++++-------------
UefiCpuPkg/Include/Register/Msr/NehalemMsr.h | 340 ++------------
UefiCpuPkg/Include/Register/Msr/P6Msr.h | 6 +-
UefiCpuPkg/Include/Register/Msr/Pentium4Msr.h | 146 +++---
UefiCpuPkg/Include/Register/Msr/PentiumMMsr.h | 26 +-
UefiCpuPkg/Include/Register/Msr/PentiumMsr.h | 8 +-
UefiCpuPkg/Include/Register/Msr/SandyBridgeMsr.h | 537 ++++++++---------------
UefiCpuPkg/Include/Register/Msr/SilvermontMsr.h | 411 +++++++++--------
UefiCpuPkg/Include/Register/Msr/Xeon5600Msr.h | 2 +-
UefiCpuPkg/Include/Register/Msr/XeonDMsr.h | 456 +++----------------
UefiCpuPkg/Include/Register/Msr/XeonE7Msr.h | 74 +++-
UefiCpuPkg/Include/Register/Msr/XeonPhiMsr.h | 314 +++++--------
19 files changed, 1312 insertions(+), 2656 deletions(-)
diff --git a/UefiCpuPkg/Include/Register/ArchitecturalMsr.h b/UefiCpuPkg/Include/Register/ArchitecturalMsr.h
index a7a221d..af3f39d 100644
--- a/UefiCpuPkg/Include/Register/ArchitecturalMsr.h
+++ b/UefiCpuPkg/Include/Register/ArchitecturalMsr.h
@@ -17,15 +17,15 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-1.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.1.
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Appendix A VMX Capability Reporting Facility, Section A.1.
+ September 2016, Appendix A VMX Capability Reporting Facility, Section A.1.
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Appendix A VMX Capability Reporting Facility, Section A.6.
+ September 2016, Appendix A VMX Capability Reporting Facility, Section A.6.
**/
@@ -33,7 +33,7 @@
#define __ARCHITECTURAL_MSR_H__
/**
- See Section 35.20, "MSRs in Pentium Processors.". Pentium Processor (05_01H).
+ See Section 35.22, "MSRs in Pentium Processors.". Pentium Processor (05_01H).
@param ECX MSR_IA32_P5_MC_ADDR (0x00000000)
@param EAX Lower 32-bits of MSR value.
@@ -52,7 +52,7 @@
/**
- See Section 35.20, "MSRs in Pentium Processors.". DF_DM = 05_01H.
+ See Section 35.22, "MSRs in Pentium Processors.". DF_DM = 05_01H.
@param ECX MSR_IA32_P5_MC_TYPE (0x00000001)
@param EAX Lower 32-bits of MSR value.
@@ -91,7 +91,7 @@
/**
- See Section 17.14, "Time-Stamp Counter.". Introduced at Display Family /
+ See Section 17.15, "Time-Stamp Counter.". Introduced at Display Family /
Display Model 05_01H.
@param ECX MSR_IA32_TIME_STAMP_COUNTER (0x00000010)
@@ -295,11 +295,16 @@ typedef union {
/// 6] is set. If CPUID.01H:ECX[6] = 1.
///
UINT32 SenterGlobalEnable:1;
- UINT32 Reserved2:2;
+ UINT32 Reserved2:1;
+ ///
+ /// [Bit 17] SGX Launch Control Enable (R/WL): This bit must be set to
+ /// enable runtime reconfiguration of SGX Launch Control via
+ /// IA32_SGXLEPUBKEYHASHn MSR. If CPUID.(EAX=07H, ECX=0H): ECX[30] = 1.
+ ///
+ UINT32 SgxLaunchControlEnable:1;
///
/// [Bit 18] SGX Global Enable (R/WL): This bit must be set to enable SGX
- /// leaf functions. This bit is supported only if CPUID.1:ECX.[bit 6] is
- /// set. If CPUID.(EAX=07H, ECX=0H): EBX[2] = 1.
+ /// leaf functions. If CPUID.(EAX=07H, ECX=0H): EBX[2] = 1.
///
UINT32 SgxEnable:1;
UINT32 Reserved3:1;
@@ -419,6 +424,37 @@ typedef union {
/**
+ IA32_SGXLEPUBKEYHASH[(64*n+63):(64*n)] (R/W) Bits (64*n+63):(64*n) of the
+ SHA256 digest of the SIGSTRUCT.MODULUS for SGX Launch Enclave. On reset, the
+ default value is the digest of Intel's signing key. Read permitted If
+ CPUID.(EAX=12H,ECX=0H):EAX[0]=1, Write permitted if CPUID.(EAX=12H,ECX=0H):
+ EAX[0]=1 && IA32_FEATURE_CONTROL[17] = 1 && IA32_FEATURE_CONTROL[0] = 1.
+
+ @param ECX MSR_IA32_SGXLEPUBKEYHASHn
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_IA32_SGXLEPUBKEYHASHn);
+ AsmWriteMsr64 (MSR_IA32_SGXLEPUBKEYHASHn, Msr);
+ @endcode
+ @note MSR_IA32_SGXLEPUBKEYHASH0 is defined as IA32_SGXLEPUBKEYHASH0 in SDM.
+ MSR_IA32_SGXLEPUBKEYHASH1 is defined as IA32_SGXLEPUBKEYHASH1 in SDM.
+ MSR_IA32_SGXLEPUBKEYHASH2 is defined as IA32_SGXLEPUBKEYHASH2 in SDM.
+ MSR_IA32_SGXLEPUBKEYHASH3 is defined as IA32_SGXLEPUBKEYHASH3 in SDM.
+ @{
+**/
+#define MSR_IA32_SGXLEPUBKEYHASH0 0x0000008C
+#define MSR_IA32_SGXLEPUBKEYHASH1 0x0000008D
+#define MSR_IA32_SGXLEPUBKEYHASH2 0x0000008E
+#define MSR_IA32_SGXLEPUBKEYHASH3 0x0000008F
+/// @}
+
+
+/**
SMM Monitor Configuration (R/W). If CPUID.01H: ECX[5]=1 or CPUID.01H: ECX[6] =
1.
@@ -1113,7 +1149,7 @@ typedef union {
/**
Clock Modulation Control (R/W) See Section 14.7.3, "Software Controlled
- Clock Modulation.". Introduced at Display Family / Display Model 0F_0H.
+ Clock Modulation.". If CPUID.01H:EDX[22] = 1.
@param ECX MSR_IA32_CLOCK_MODULATION (0x0000019A)
@param EAX Lower 32-bits of MSR value.
@@ -1147,11 +1183,12 @@ typedef union {
UINT32 ExtendedOnDemandClockModulationDutyCycle:1;
///
/// [Bits 3:1] On-Demand Clock Modulation Duty Cycle: Specific encoded
- /// values for target duty cycle modulation.
+ /// values for target duty cycle modulation. If CPUID.01H:EDX[22] = 1.
///
UINT32 OnDemandClockModulationDutyCycle:3;
///
/// [Bit 4] On-Demand Clock Modulation Enable: Set 1 to enable modulation.
+ /// If CPUID.01H:EDX[22] = 1.
///
UINT32 OnDemandClockModulationEnable:1;
UINT32 Reserved1:27;
@@ -1172,7 +1209,7 @@ typedef union {
Thermal Interrupt Control (R/W) Enables and disables the generation of an
interrupt on temperature transitions detected with the processor's thermal
sensors and thermal monitor. See Section 14.7.2, "Thermal Monitor.".
- Introduced at Display Family / Display Model 0F_0H.
+ If CPUID.01H:EDX[22] = 1
@param ECX MSR_IA32_THERM_INTERRUPT (0x0000019B)
@param EAX Lower 32-bits of MSR value.
@@ -1200,40 +1237,41 @@ typedef union {
///
struct {
///
- /// [Bit 0] High-Temperature Interrupt Enable.
+ /// [Bit 0] High-Temperature Interrupt Enable. If CPUID.01H:EDX[22] = 1.
///
UINT32 HighTempEnable:1;
///
- /// [Bit 1] Low-Temperature Interrupt Enable.
+ /// [Bit 1] Low-Temperature Interrupt Enable. If CPUID.01H:EDX[22] = 1.
///
UINT32 LowTempEnable:1;
///
- /// [Bit 2] PROCHOT# Interrupt Enable.
+ /// [Bit 2] PROCHOT# Interrupt Enable. If CPUID.01H:EDX[22] = 1.
///
UINT32 PROCHOT_Enable:1;
///
- /// [Bit 3] FORCEPR# Interrupt Enable.
+ /// [Bit 3] FORCEPR# Interrupt Enable. If CPUID.01H:EDX[22] = 1.
///
UINT32 FORCEPR_Enable:1;
///
/// [Bit 4] Critical Temperature Interrupt Enable.
+ /// If CPUID.01H:EDX[22] = 1.
///
UINT32 CriticalTempEnable:1;
UINT32 Reserved1:3;
///
- /// [Bits 14:8] Threshold #1 Value.
+ /// [Bits 14:8] Threshold #1 Value. If CPUID.01H:EDX[22] = 1.
///
UINT32 Threshold1:7;
///
- /// [Bit 15] Threshold #1 Interrupt Enable.
+ /// [Bit 15] Threshold #1 Interrupt Enable. If CPUID.01H:EDX[22] = 1.
///
UINT32 Threshold1Enable:1;
///
- /// [Bits 22:16] Threshold #2 Value.
+ /// [Bits 22:16] Threshold #2 Value. If CPUID.01H:EDX[22] = 1.
///
UINT32 Threshold2:7;
///
- /// [Bit 23] Threshold #2 Interrupt Enable.
+ /// [Bit 23] Threshold #2 Interrupt Enable. If CPUID.01H:EDX[22] = 1.
///
UINT32 Threshold2Enable:1;
///
@@ -1257,8 +1295,7 @@ typedef union {
/**
Thermal Status Information (RO) Contains status information about the
processor's thermal sensor and automatic thermal monitoring facilities. See
- Section 14.7.2, "Thermal Monitor". Introduced at Display Family / Display
- Model 0F_0H.
+ Section 14.7.2, "Thermal Monitor". If CPUID.01H:EDX[22] = 1.
@param ECX MSR_IA32_THERM_STATUS (0x0000019C)
@param EAX Lower 32-bits of MSR value.
@@ -1285,27 +1322,28 @@ typedef union {
///
struct {
///
- /// [Bit 0] Thermal Status (RO):.
+ /// [Bit 0] Thermal Status (RO):. If CPUID.01H:EDX[22] = 1.
///
UINT32 ThermalStatus:1;
///
- /// [Bit 1] Thermal Status Log (R/W):.
+ /// [Bit 1] Thermal Status Log (R/W):. If CPUID.01H:EDX[22] = 1.
///
UINT32 ThermalStatusLog:1;
///
- /// [Bit 2] PROCHOT # or FORCEPR# event (RO).
+ /// [Bit 2] PROCHOT # or FORCEPR# event (RO). If CPUID.01H:EDX[22] = 1.
///
UINT32 PROCHOT_FORCEPR_Event:1;
///
- /// [Bit 3] PROCHOT # or FORCEPR# log (R/WC0).
+ /// [Bit 3] PROCHOT # or FORCEPR# log (R/WC0). If CPUID.01H:EDX[22] = 1.
///
UINT32 PROCHOT_FORCEPR_Log:1;
///
- /// [Bit 4] Critical Temperature Status (RO).
+ /// [Bit 4] Critical Temperature Status (RO). If CPUID.01H:EDX[22] = 1.
///
UINT32 CriticalTempStatus:1;
///
/// [Bit 5] Critical Temperature Status log (R/WC0).
+ /// If CPUID.01H:EDX[22] = 1.
///
UINT32 CriticalTempStatusLog:1;
///
@@ -1418,8 +1456,9 @@ typedef union {
/// automatically reduce power consumption in response to TCC activation.
/// 0 = Disabled. Note: In some products clearing this bit might be
/// ignored in critical thermal conditions, and TM1, TM2 and adaptive
- /// thermal throttling will still be activated. Introduced at Display
- /// Family / Display Model 0F_0H.
+ /// thermal throttling will still be activated. The default value of this
+ /// field varies with product. See respective tables where default value is
+ /// listed. Introduced at Display Family / Display Model 0F_0H.
///
UINT32 AutomaticThermalControlCircuit:1;
UINT32 Reserved2:3;
@@ -1437,7 +1476,7 @@ typedef union {
///
UINT32 BTS:1;
///
- /// [Bit 12] Precise Event Based Sampling (PEBS) Unavailable (RO) 1 =
+ /// [Bit 12] Processor Event Based Sampling (PEBS) Unavailable (RO) 1 =
/// PEBS is not supported; 0 = PEBS is supported. Introduced at Display
/// Family / Display Model 06_0FH.
///
@@ -1466,15 +1505,15 @@ typedef union {
UINT32 Reserved6:3;
///
/// [Bit 22] Limit CPUID Maxval (R/W) When this bit is set to 1, CPUID.00H
- /// returns a maximum value in EAX[7:0] of 3. BIOS should contain a setup
+ /// returns a maximum value in EAX[7:0] of 2. BIOS should contain a setup
/// question that allows users to specify when the installed OS does not
- /// support CPUID functions greater than 3. Before setting this bit, BIOS
+ /// support CPUID functions greater than 2. Before setting this bit, BIOS
/// must execute the CPUID.0H and examine the maximum value returned in
- /// EAX[7:0]. If the maximum value is greater than 3, the bit is
- /// supported. Otherwise, the bit is not supported. Writing to this bit
- /// when the maximum value is greater than 3 may generate a #GP exception.
+ /// EAX[7:0]. If the maximum value is greater than 2, this bit is
+ /// supported. Otherwise, this bit is not supported. Setting this bit when
+ /// the maximum value is not greater than 2 may generate a #GP exception.
/// Setting this bit may cause unexpected behavior in software that
- /// depends on the availability of CPUID leaves greater than 3. Introduced
+ /// depends on the availability of CPUID leaves greater than 2. Introduced
/// at Display Family / Display Model 0F_03H.
///
UINT32 LimitCpuidMaxval:1;
@@ -2687,8 +2726,8 @@ typedef union {
/**
- Fixed-Function Performance Counter 1 0 (R/W): Counts CPU_CLK_Unhalted.Core.
- If CPUID.0AH: EDX[4:0] > 1.
+ Fixed-Function Performance Counter 1 (R/W): Counts CPU_CLK_Unhalted.Core. If
+ CPUID.0AH: EDX[4:0] > 1.
@param ECX MSR_IA32_FIXED_CTR1 (0x0000030A)
@param EAX Lower 32-bits of MSR value.
@@ -2707,8 +2746,8 @@ typedef union {
/**
- Fixed-Function Performance Counter 0 0 (R/W): Counts CPU_CLK_Unhalted.Ref.
- If CPUID.0AH: EDX[4:0] > 2.
+ Fixed-Function Performance Counter 2 (R/W): Counts CPU_CLK_Unhalted.Ref. If
+ CPUID.0AH: EDX[4:0] > 2.
@param ECX MSR_IA32_FIXED_CTR2 (0x0000030B)
@param EAX Lower 32-bits of MSR value.
@@ -3789,10 +3828,10 @@ typedef union {
///
UINT32 MemoryType:4;
///
- /// [Bit 54] If bit 54 is read as 1, the logical processor reports
- /// information in the VM-exit instruction-information field on VM exits
- /// due to execution of the INS and OUTS instructions. This reporting is
- /// done only if this bit is read as 1.
+ /// [Bit 54] If bit 54 is read as 1, the processor reports information in
+ /// the VM-exit instruction-information field on VM exitsdue to execution
+ /// of the INS and OUTS instructions (see Section 27.2.4). This reporting
+ /// is done only if this bit is read as 1.
///
UINT32 InsOutsReporting:1;
///
@@ -3951,11 +3990,21 @@ typedef union {
/// [Bit 8] reports (if set) the support for activity state 3 (wait-for-SIPI).
///
UINT32 WaitForSipiActivityStateSupported:1;
- UINT32 Reserved1:6;
+ UINT32 Reserved1:5;
+ ///
+ /// [Bit 14] If read as 1, Intel(R) Processor Trace (Intel PT) can be used
+ /// in VMX operation. If the processor supports Intel PT but does not allow
+ /// it to be used in VMX operation, execution of VMXON clears
+ /// IA32_RTIT_CTL.TraceEn (see VMXONEnter VMX Operation in Chapter 30);
+ /// any attempt to set that bit while in VMX operation (including VMX root
+ /// operation) using the WRMSR instruction causes a general-protection
+ /// exception.
+ ///
+ UINT32 ProcessorTraceSupported:1;
///
/// [Bit 15] If read as 1, the RDMSR instruction can be used in system-
/// management mode (SMM) to read the IA32_SMBASE MSR (MSR address 9EH).
- /// See Section 34.15.6.4.
+ /// See Section 34.15.6.3.
///
UINT32 SmBaseMsrSupported:1;
///
@@ -3986,7 +4035,13 @@ typedef union {
/// information fields.
///
UINT32 VmWriteSupported:1;
- UINT32 Reserved2:2;
+ ///
+ /// [Bit 30] If read as 1, VM entry allows injection of a software
+ /// interrupt, software exception, or privileged software exception with an
+ /// instruction length of 0.
+ ///
+ UINT32 VmInjectSupported:1;
+ UINT32 Reserved2:1;
///
/// [Bits 63:32] Reports the 32-bit MSEG revision identifier used by the
/// processor.
@@ -4343,13 +4398,13 @@ typedef union {
///
struct {
///
- /// [Bit 0] Lock. See Section 42.12.3, "Interactions with Authenticated
+ /// [Bit 0] Lock. See Section 42.11.3, "Interactions with Authenticated
/// Code Modules (ACMs)".
///
UINT32 Lock:1;
UINT32 Reserved1:15;
///
- /// [Bits 23:16] SGX_SVN_SINIT. See Section 42.12.3, "Interactions with
+ /// [Bits 23:16] SGX_SVN_SINIT. See Section 42.11.3, "Interactions with
/// Authenticated Code Modules (ACMs)".
///
UINT32 SGX_SVN_SINIT:8;
@@ -4776,7 +4831,7 @@ typedef union {
/**
DS Save Area (R/W) Points to the linear address of the first byte of the DS
buffer management area, which is used to manage the BTS and PEBS buffers.
- See Section 18.12.4, "Debug Store (DS) Mechanism.". If( CPUID.01H:EDX.DS[21]
+ See Section 18.15.4, "Debug Store (DS) Mechanism.". If( CPUID.01H:EDX.DS[21]
= 1.
[Bits 31..0] The linear address of the first byte of the DS buffer
@@ -5876,8 +5931,8 @@ typedef union {
/**
- Resource Association Register (R/W). If ( CPUID.(EAX=07H, ECX=0):EBX.[12] =
- 1 ).
+ Resource Association Register (R/W). If ( (CPUID.(EAX=07H, ECX=0):EBX[12]
+ =1) or (CPUID.(EAX=07H, ECX=0):EBX[15] =1 ) ).
@param ECX MSR_IA32_PQR_ASSOC (0x00000C8F)
@param EAX Lower 32-bits of MSR value.
diff --git a/UefiCpuPkg/Include/Register/Msr/AtomMsr.h b/UefiCpuPkg/Include/Register/Msr/AtomMsr.h
index 25e0927..c314195 100644
--- a/UefiCpuPkg/Include/Register/Msr/AtomMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/AtomMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-3.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.3.
**/
@@ -177,12 +177,10 @@ typedef union {
/**
- Unique. Last Branch Record 0 From IP (R/W) One of eight pairs of last branch
- record registers on the last branch record stack. This part of the stack
- contains pointers to the source instruction for one of the last eight
- branches, exceptions, or interrupts taken by the processor. See also: -
- Last Branch Record Stack TOS at 1C9H - Section 17.12, "Last Branch,
- Interrupt, and Exception Recording (Pentium M Processors).".
+ Unique. Last Branch Record n From IP (R/W) One of eight pairs of last branch
+ record registers on the last branch record stack. The From_IP part of the
+ stack contains pointers to the source instruction . See also: - Last Branch
+ Record Stack TOS at 1C9H - Section 17.5.
@param ECX MSR_ATOM_LASTBRANCH_n_FROM_IP
@param EAX Lower 32-bits of MSR value.
@@ -217,10 +215,9 @@ typedef union {
/**
- Unique. Last Branch Record 0 To IP (R/W) One of eight pairs of last branch
- record registers on the last branch record stack. This part of the stack
- contains pointers to the destination instruction for one of the last eight
- branches, exceptions, or interrupts taken by the processor.
+ Unique. Last Branch Record n To IP (R/W) One of eight pairs of last branch
+ record registers on the last branch record stack. The To_IP part of the
+ stack contains pointers to the destination instruction.
@param ECX MSR_ATOM_LASTBRANCH_n_TO_IP
@param EAX Lower 32-bits of MSR value.
@@ -507,7 +504,7 @@ typedef union {
UINT32 Reserved1:2;
///
/// [Bit 3] Unique. Automatic Thermal Control Circuit Enable (R/W) See
- /// Table 35-2.
+ /// Table 35-2. Default value is 0.
///
UINT32 AutomaticThermalControlCircuit:1;
UINT32 Reserved2:3;
@@ -529,7 +526,7 @@ typedef union {
///
UINT32 BTS:1;
///
- /// [Bit 12] Shared. Precise Event Based Sampling Unavailable (RO) See
+ /// [Bit 12] Shared. Processor Event Based Sampling Unavailable (RO) See
/// Table 35-2.
///
UINT32 PEBS:1;
@@ -656,27 +653,7 @@ typedef union {
/**
- Unique. See Table 35-2. See Section 18.4.2, "Global Counter Control
- Facilities.".
-
- @param ECX MSR_ATOM_IA32_PERF_GLOBAL_STAUS (0x0000038E)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_ATOM_IA32_PERF_GLOBAL_STAUS);
- AsmWriteMsr64 (MSR_ATOM_IA32_PERF_GLOBAL_STAUS, Msr);
- @endcode
- @note MSR_ATOM_IA32_PERF_GLOBAL_STAUS is defined as IA32_PERF_GLOBAL_STAUS in SDM.
-**/
-#define MSR_ATOM_IA32_PERF_GLOBAL_STAUS 0x0000038E
-
-
-/**
- Unique. See Table 35-2. See Section 18.4.4, "Precise Event Based Sampling
+ Unique. See Table 35-2. See Section 18.4.4, "Processor Event Based Sampling
(PEBS).".
@param ECX MSR_ATOM_PEBS_ENABLE (0x000003F1)
@@ -723,128 +700,6 @@ typedef union {
/**
- Shared. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
-
- @param ECX MSR_ATOM_MC3_CTL (0x0000040C)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_ATOM_MC3_CTL);
- AsmWriteMsr64 (MSR_ATOM_MC3_CTL, Msr);
- @endcode
- @note MSR_ATOM_MC3_CTL is defined as MSR_MC3_CTL in SDM.
-**/
-#define MSR_ATOM_MC3_CTL 0x0000040C
-
-
-/**
- Shared. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
-
- @param ECX MSR_ATOM_MC3_STATUS (0x0000040D)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_ATOM_MC3_STATUS);
- AsmWriteMsr64 (MSR_ATOM_MC3_STATUS, Msr);
- @endcode
- @note MSR_ATOM_MC3_STATUS is defined as MSR_MC3_STATUS in SDM.
-**/
-#define MSR_ATOM_MC3_STATUS 0x0000040D
-
-
-/**
- Shared. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MC3_ADDR
- register is either not implemented or contains no address if the ADDRV flag
- in the MSR_MC3_STATUS register is clear. When not implemented in the
- processor, all reads and writes to this MSR will cause a general-protection
- exception.
-
- @param ECX MSR_ATOM_MC3_ADDR (0x0000040E)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_ATOM_MC3_ADDR);
- AsmWriteMsr64 (MSR_ATOM_MC3_ADDR, Msr);
- @endcode
- @note MSR_ATOM_MC3_ADDR is defined as MSR_MC3_ADDR in SDM.
-**/
-#define MSR_ATOM_MC3_ADDR 0x0000040E
-
-
-/**
- Shared. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
-
- @param ECX MSR_ATOM_MC4_CTL (0x00000410)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_ATOM_MC4_CTL);
- AsmWriteMsr64 (MSR_ATOM_MC4_CTL, Msr);
- @endcode
- @note MSR_ATOM_MC4_CTL is defined as MSR_MC4_CTL in SDM.
-**/
-#define MSR_ATOM_MC4_CTL 0x00000410
-
-
-/**
- Shared. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
-
- @param ECX MSR_ATOM_MC4_STATUS (0x00000411)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_ATOM_MC4_STATUS);
- AsmWriteMsr64 (MSR_ATOM_MC4_STATUS, Msr);
- @endcode
- @note MSR_ATOM_MC4_STATUS is defined as MSR_MC4_STATUS in SDM.
-**/
-#define MSR_ATOM_MC4_STATUS 0x00000411
-
-
-/**
- Shared. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MC4_ADDR
- register is either not implemented or contains no address if the ADDRV flag
- in the MSR_MC4_STATUS register is clear. When not implemented in the
- processor, all reads and writes to this MSR will cause a general-protection
- exception.
-
- @param ECX MSR_ATOM_MC4_ADDR (0x00000412)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_ATOM_MC4_ADDR);
- AsmWriteMsr64 (MSR_ATOM_MC4_ADDR, Msr);
- @endcode
- @note MSR_ATOM_MC4_ADDR is defined as MSR_MC4_ADDR in SDM.
-**/
-#define MSR_ATOM_MC4_ADDR 0x00000412
-
-
-/**
Package. Package C2 Residency Note: C-state values are processor specific
C-state code names, unrelated to MWAIT extension C-state parameters or ACPI
C-States. Package. Package C2 Residency Counter. (R/O) Time that this
diff --git a/UefiCpuPkg/Include/Register/Msr/BroadwellMsr.h b/UefiCpuPkg/Include/Register/Msr/BroadwellMsr.h
index 0673685..1c3c2dc 100644
--- a/UefiCpuPkg/Include/Register/Msr/BroadwellMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/BroadwellMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-12.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.13.
**/
@@ -30,25 +30,25 @@
Thread. See Table 35-2. See Section 18.4.2, "Global Counter Control
Facilities.".
- @param ECX MSR_BROADWELL_IA32_PERF_GLOBAL_STAUS (0x0000038E)
+ @param ECX MSR_BROADWELL_IA32_PERF_GLOBAL_STATUS (0x0000038E)
@param EAX Lower 32-bits of MSR value.
- Described by the type MSR_BROADWELL_IA32_PERF_GLOBAL_STAUS_REGISTER.
+ Described by the type MSR_BROADWELL_IA32_PERF_GLOBAL_STATUS_REGISTER.
@param EDX Upper 32-bits of MSR value.
- Described by the type MSR_BROADWELL_IA32_PERF_GLOBAL_STAUS_REGISTER.
+ Described by the type MSR_BROADWELL_IA32_PERF_GLOBAL_STATUS_REGISTER.
<b>Example usage</b>
@code
- MSR_BROADWELL_IA32_PERF_GLOBAL_STAUS_REGISTER Msr;
+ MSR_BROADWELL_IA32_PERF_GLOBAL_STATUS_REGISTER Msr;
- Msr.Uint64 = AsmReadMsr64 (MSR_BROADWELL_IA32_PERF_GLOBAL_STAUS);
- AsmWriteMsr64 (MSR_BROADWELL_IA32_PERF_GLOBAL_STAUS, Msr.Uint64);
+ Msr.Uint64 = AsmReadMsr64 (MSR_BROADWELL_IA32_PERF_GLOBAL_STATUS);
+ AsmWriteMsr64 (MSR_BROADWELL_IA32_PERF_GLOBAL_STATUS, Msr.Uint64);
@endcode
- @note MSR_BROADWELL_IA32_PERF_GLOBAL_STAUS is defined as IA32_PERF_GLOBAL_STAUS in SDM.
+ @note MSR_BROADWELL_IA32_PERF_GLOBAL_STATUS is defined as IA32_PERF_GLOBAL_STATUS in SDM.
**/
-#define MSR_BROADWELL_IA32_PERF_GLOBAL_STAUS 0x0000038E
+#define MSR_BROADWELL_IA32_PERF_GLOBAL_STATUS 0x0000038E
/**
- MSR information returned for MSR index #MSR_BROADWELL_IA32_PERF_GLOBAL_STAUS
+ MSR information returned for MSR index #MSR_BROADWELL_IA32_PERF_GLOBAL_STATUS
**/
typedef union {
///
@@ -86,7 +86,7 @@ typedef union {
UINT32 Ovf_FixedCtr2:1;
UINT32 Reserved2:20;
///
- /// [Bit 55] Trace_ToPA_PMI. See Section 36.2.4.2, "Table of Physical
+ /// [Bit 55] Trace_ToPA_PMI. See Section 36.2.6.2, "Table of Physical
/// Addresses (ToPA).".
///
UINT32 Trace_ToPA_PMI:1;
@@ -108,7 +108,7 @@ typedef union {
/// All bit fields as a 64-bit value
///
UINT64 Uint64;
-} MSR_BROADWELL_IA32_PERF_GLOBAL_STAUS_REGISTER;
+} MSR_BROADWELL_IA32_PERF_GLOBAL_STATUS_REGISTER;
/**
@@ -265,4 +265,23 @@ typedef union {
UINT64 Uint64;
} MSR_BROADWELL_TURBO_RATIO_LIMIT_REGISTER;
+
+/**
+ Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
+ Domains.".
+
+ @param ECX MSR_BROADWELL_PP0_ENERGY_STATUS (0x00000639)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_BROADWELL_PP0_ENERGY_STATUS);
+ @endcode
+ @note MSR_BROADWELL_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.
+**/
+#define MSR_BROADWELL_PP0_ENERGY_STATUS 0x00000639
+
#endif
diff --git a/UefiCpuPkg/Include/Register/Msr/Core2Msr.h b/UefiCpuPkg/Include/Register/Msr/Core2Msr.h
index 44da688..9f0e790 100644
--- a/UefiCpuPkg/Include/Register/Msr/Core2Msr.h
+++ b/UefiCpuPkg/Include/Register/Msr/Core2Msr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-2.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.2.
**/
@@ -239,11 +239,9 @@ typedef union {
/**
Unique. Last Branch Record n From IP (R/W) One of four pairs of last branch
- record registers on the last branch record stack. This part of the stack
- contains pointers to the source instruction for one of the last four
- branches, exceptions, or interrupts taken by the processor. See also: -
- Last Branch Record Stack TOS at 1C9H - Section 17.12, "Last Branch,
- Interrupt, and Exception Recording (Pentium M Processors).".
+ record registers on the last branch record stack. The From_IP part of the
+ stack contains pointers to the source instruction. See also: - Last Branch
+ Record Stack TOS at 1C9H - Section 17.5.
@param ECX MSR_CORE2_LASTBRANCH_n_FROM_IP
@param EAX Lower 32-bits of MSR value.
@@ -271,9 +269,8 @@ typedef union {
/**
Unique. Last Branch Record n To IP (R/W) One of four pairs of last branch
- record registers on the last branch record stack. This part of the stack
- contains pointers to the destination instruction for one of the last four
- branches, exceptions, or interrupts taken by the processor.
+ record registers on the last branch record stack. This To_IP part of the
+ stack contains pointers to the destination instruction.
@param ECX MSR_CORE2_LASTBRANCH_n_TO_IP
@param EAX Lower 32-bits of MSR value.
@@ -692,7 +689,7 @@ typedef union {
///
UINT32 BTS:1;
///
- /// [Bit 12] Shared. Precise Event Based Sampling Unavailable (RO) See
+ /// [Bit 12] Shared. Processor Event Based Sampling Unavailable (RO) See
/// Table 35-2.
///
UINT32 PEBS:1;
@@ -959,29 +956,9 @@ typedef union {
/**
- Unique. See Table 35-2. See Section 18.4.2, "Global Counter Control
- Facilities.".
-
- @param ECX MSR_CORE2_IA32_PERF_GLOBAL_STAUS (0x0000038E)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_IA32_PERF_GLOBAL_STAUS);
- AsmWriteMsr64 (MSR_CORE2_IA32_PERF_GLOBAL_STAUS, Msr);
- @endcode
- @note MSR_CORE2_IA32_PERF_GLOBAL_STAUS is defined as IA32_PERF_GLOBAL_STAUS in SDM.
-**/
-#define MSR_CORE2_IA32_PERF_GLOBAL_STAUS 0x0000038E
-
-
-/**
Unique. See Section 18.4.2, "Global Counter Control Facilities.".
- @param ECX MSR_CORE2_PERF_GLOBAL_STAUS (0x0000038E)
+ @param ECX MSR_CORE2_PERF_GLOBAL_STATUS (0x0000038E)
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -989,12 +966,12 @@ typedef union {
@code
UINT64 Msr;
- Msr = AsmReadMsr64 (MSR_CORE2_PERF_GLOBAL_STAUS);
- AsmWriteMsr64 (MSR_CORE2_PERF_GLOBAL_STAUS, Msr);
+ Msr = AsmReadMsr64 (MSR_CORE2_PERF_GLOBAL_STATUS);
+ AsmWriteMsr64 (MSR_CORE2_PERF_GLOBAL_STATUS, Msr);
@endcode
- @note MSR_CORE2_PERF_GLOBAL_STAUS is defined as MSR_PERF_GLOBAL_STAUS in SDM.
+ @note MSR_CORE2_PERF_GLOBAL_STATUS is defined as MSR_PERF_GLOBAL_STATUS in SDM.
**/
-#define MSR_CORE2_PERF_GLOBAL_STAUS 0x0000038E
+#define MSR_CORE2_PERF_GLOBAL_STATUS 0x0000038E
/**
@@ -1036,7 +1013,7 @@ typedef union {
/**
- Unique. See Table 35-2. See Section 18.4.4, "Precise Event Based Sampling
+ Unique. See Table 35-2. See Section 18.4.4, "Processor Event Based Sampling
(PEBS).".
@param ECX MSR_CORE2_PEBS_ENABLE (0x000003F1)
@@ -1083,243 +1060,6 @@ typedef union {
/**
- Unique. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
-
- @param ECX MSR_CORE2_MC4_CTL (0x0000040C)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC4_CTL);
- AsmWriteMsr64 (MSR_CORE2_MC4_CTL, Msr);
- @endcode
- @note MSR_CORE2_MC4_CTL is defined as MSR_MC4_CTL in SDM.
-**/
-#define MSR_CORE2_MC4_CTL 0x0000040C
-
-
-/**
- Unique. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
-
- @param ECX MSR_CORE2_MC4_STATUS (0x0000040D)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC4_STATUS);
- AsmWriteMsr64 (MSR_CORE2_MC4_STATUS, Msr);
- @endcode
- @note MSR_CORE2_MC4_STATUS is defined as MSR_MC4_STATUS in SDM.
-**/
-#define MSR_CORE2_MC4_STATUS 0x0000040D
-
-
-/**
- Unique. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MC4_ADDR
- register is either not implemented or contains no address if the ADDRV flag
- in the MSR_MC4_STATUS register is clear. When not implemented in the
- processor, all reads and writes to this MSR will cause a general-protection
- exception.
-
- @param ECX MSR_CORE2_MC4_ADDR (0x0000040E)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC4_ADDR);
- AsmWriteMsr64 (MSR_CORE2_MC4_ADDR, Msr);
- @endcode
- @note MSR_CORE2_MC4_ADDR is defined as MSR_MC4_ADDR in SDM.
-**/
-#define MSR_CORE2_MC4_ADDR 0x0000040E
-
-
-/**
- See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
-
- @param ECX MSR_CORE2_MC3_CTL (0x00000410)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC3_CTL);
- AsmWriteMsr64 (MSR_CORE2_MC3_CTL, Msr);
- @endcode
- @note MSR_CORE2_MC3_CTL is defined as MSR_MC3_CTL in SDM.
-**/
-#define MSR_CORE2_MC3_CTL 0x00000410
-
-
-/**
- See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
-
- @param ECX MSR_CORE2_MC3_STATUS (0x00000411)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC3_STATUS);
- AsmWriteMsr64 (MSR_CORE2_MC3_STATUS, Msr);
- @endcode
- @note MSR_CORE2_MC3_STATUS is defined as MSR_MC3_STATUS in SDM.
-**/
-#define MSR_CORE2_MC3_STATUS 0x00000411
-
-
-/**
- Unique. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MC3_ADDR
- register is either not implemented or contains no address if the ADDRV flag
- in the MSR_MC3_STATUS register is clear. When not implemented in the
- processor, all reads and writes to this MSR will cause a general-protection
- exception.
-
- @param ECX MSR_CORE2_MC3_ADDR (0x00000412)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC3_ADDR);
- AsmWriteMsr64 (MSR_CORE2_MC3_ADDR, Msr);
- @endcode
- @note MSR_CORE2_MC3_ADDR is defined as MSR_MC3_ADDR in SDM.
-**/
-#define MSR_CORE2_MC3_ADDR 0x00000412
-
-
-/**
- Unique.
-
- @param ECX MSR_CORE2_MC3_MISC (0x00000413)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC3_MISC);
- AsmWriteMsr64 (MSR_CORE2_MC3_MISC, Msr);
- @endcode
- @note MSR_CORE2_MC3_MISC is defined as MSR_MC3_MISC in SDM.
-**/
-#define MSR_CORE2_MC3_MISC 0x00000413
-
-
-/**
- Unique.
-
- @param ECX MSR_CORE2_MC5_CTL (0x00000414)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC5_CTL);
- AsmWriteMsr64 (MSR_CORE2_MC5_CTL, Msr);
- @endcode
- @note MSR_CORE2_MC5_CTL is defined as MSR_MC5_CTL in SDM.
-**/
-#define MSR_CORE2_MC5_CTL 0x00000414
-
-
-/**
- Unique.
-
- @param ECX MSR_CORE2_MC5_STATUS (0x00000415)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC5_STATUS);
- AsmWriteMsr64 (MSR_CORE2_MC5_STATUS, Msr);
- @endcode
- @note MSR_CORE2_MC5_STATUS is defined as MSR_MC5_STATUS in SDM.
-**/
-#define MSR_CORE2_MC5_STATUS 0x00000415
-
-
-/**
- Unique.
-
- @param ECX MSR_CORE2_MC5_ADDR (0x00000416)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC5_ADDR);
- AsmWriteMsr64 (MSR_CORE2_MC5_ADDR, Msr);
- @endcode
- @note MSR_CORE2_MC5_ADDR is defined as MSR_MC5_ADDR in SDM.
-**/
-#define MSR_CORE2_MC5_ADDR 0x00000416
-
-
-/**
- Unique.
-
- @param ECX MSR_CORE2_MC5_MISC (0x00000417)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC5_MISC);
- AsmWriteMsr64 (MSR_CORE2_MC5_MISC, Msr);
- @endcode
- @note MSR_CORE2_MC5_MISC is defined as MSR_MC5_MISC in SDM.
-**/
-#define MSR_CORE2_MC5_MISC 0x00000417
-
-
-/**
- Unique. Apply to Intel Xeon processor 7400 series (processor signature
- 06_1D) only. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS." and Chapter 23.
-
- @param ECX MSR_CORE2_MC6_STATUS (0x00000419)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE2_MC6_STATUS);
- AsmWriteMsr64 (MSR_CORE2_MC6_STATUS, Msr);
- @endcode
- @note MSR_CORE2_MC6_STATUS is defined as MSR_MC6_STATUS in SDM.
-**/
-#define MSR_CORE2_MC6_STATUS 0x00000419
-
-
-/**
Unique. GBUSQ Event Control/Counter Register (R/W) Apply to Intel Xeon
processor 7400 series (processor signature 06_1D) only. See Section 17.2.2.
diff --git a/UefiCpuPkg/Include/Register/Msr/CoreMsr.h b/UefiCpuPkg/Include/Register/Msr/CoreMsr.h
index ac45e6f..0902aa9 100644
--- a/UefiCpuPkg/Include/Register/Msr/CoreMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/CoreMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-17.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.19.
**/
@@ -27,7 +27,7 @@
#include <Register/ArchitecturalMsr.h>
/**
- Unique. See Section 35.20, "MSRs in Pentium Processors," and see Table 35-2.
+ Unique. See Section 35.22, "MSRs in Pentium Processors," and see Table 35-2.
@param ECX MSR_CORE_P5_MC_ADDR (0x00000000)
@param EAX Lower 32-bits of MSR value.
@@ -46,7 +46,7 @@
/**
- Unique. See Section 35.20, "MSRs in Pentium Processors," and see Table 35-2.
+ Unique. See Section 35.22, "MSRs in Pentium Processors," and see Table 35-2.
@param ECX MSR_CORE_P5_MC_TYPE (0x00000001)
@param EAX Lower 32-bits of MSR value.
@@ -178,7 +178,7 @@ typedef union {
Unique. Last Branch Record n (R/W) One of 8 last branch record registers on
the last branch record stack: bits 31-0 hold the 'from' address and bits
63-32 hold the 'to' address. See also: - Last Branch Record Stack TOS at
- 1C9H - Section 17.12, "Last Branch, Interrupt, and Exception Recording
+ 1C9H - Section 17.13, "Last Branch, Interrupt, and Exception Recording
(Pentium M Processors).".
@param ECX MSR_CORE_LASTBRANCH_n
@@ -434,14 +434,14 @@ typedef union {
/// thermal sensor indicates that the die temperature is at the
/// pre-determined threshold, the Thermal Monitor 2 mechanism is engaged.
/// TM2 will reduce the bus to core ratio and voltage according to the
- /// value last written to MSR_THERM2_CTL bits 15:0.
- /// When this bit is clear (0, default), the processor does not change
- /// the VID signals or the bus to core ratio when the processor enters a
- /// thermal managed state. If the TM2 feature flag (ECX[8]) is not set
- /// to 1 after executing CPUID with EAX = 1, then this feature is not
- /// supported and BIOS must not alter the contents of this bit location.
- /// The processor is operating out of spec if both this bit and the TM1
- /// bit are set to disabled states.
+ /// value last written to MSR_THERM2_CTL bits 15:0. When this bit is clear
+ /// (0, default), the processor does not change the VID signals or the bus
+ /// to core ratio when the processor enters a thermal managed state. If
+ /// the TM2 feature flag (ECX[8]) is not set to 1 after executing CPUID
+ /// with EAX = 1, then this feature is not supported and BIOS must not
+ /// alter the contents of this bit location. The processor is operating
+ /// out of spec if both this bit and the TM1 bit are set to disabled
+ /// states.
///
UINT32 TM2:1;
UINT32 Reserved5:2;
@@ -460,7 +460,7 @@ typedef union {
///
/// [Bit 22] Shared. Limit CPUID Maxval (R/W) See Table 35-2. Setting this
/// bit may cause behavior in software that depends on the availability of
- /// CPUID leaves greater than 3.
+ /// CPUID leaves greater than 2.
///
UINT32 LimitCpuidMaxval:1;
UINT32 Reserved9:9;
@@ -928,44 +928,6 @@ typedef union {
/**
- See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
-
- @param ECX MSR_CORE_MC3_CTL (0x00000410)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE_MC3_CTL);
- AsmWriteMsr64 (MSR_CORE_MC3_CTL, Msr);
- @endcode
- @note MSR_CORE_MC3_CTL is defined as MSR_MC3_CTL in SDM.
-**/
-#define MSR_CORE_MC3_CTL 0x00000410
-
-
-/**
- See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
-
- @param ECX MSR_CORE_MC3_STATUS (0x00000411)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_CORE_MC3_STATUS);
- AsmWriteMsr64 (MSR_CORE_MC3_STATUS, Msr);
- @endcode
- @note MSR_CORE_MC3_STATUS is defined as MSR_MC3_STATUS in SDM.
-**/
-#define MSR_CORE_MC3_STATUS 0x00000411
-
-
-/**
Unique. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MC3_ADDR
register is either not implemented or contains no address if the ADDRV flag
in the MSR_MC3_STATUS register is clear. When not implemented in the
diff --git a/UefiCpuPkg/Include/Register/Msr/HaswellEMsr.h b/UefiCpuPkg/Include/Register/Msr/HaswellEMsr.h
index f201e9c..7b190b5 100644
--- a/UefiCpuPkg/Include/Register/Msr/HaswellEMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/HaswellEMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-11.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.12.
**/
@@ -27,6 +27,113 @@
#include <Register/ArchitecturalMsr.h>
/**
+ Package. Configured State of Enabled Processor Core Count and Logical
+ Processor Count (RO) - After a Power-On RESET, enumerates factory
+ configuration of the number of processor cores and logical processors in the
+ physical package. - Following the sequence of (i) BIOS modified a
+ Configuration Mask which selects a subset of processor cores to be active
+ post RESET and (ii) a RESET event after the modification, enumerates the
+ current configuration of enabled processor core count and logical processor
+ count in the physical package.
+
+ @param ECX MSR_HASWELL_E_CORE_THREAD_COUNT (0x00000035)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_HASWELL_E_CORE_THREAD_COUNT_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_HASWELL_E_CORE_THREAD_COUNT_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_HASWELL_E_CORE_THREAD_COUNT_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_E_CORE_THREAD_COUNT);
+ @endcode
+ @note MSR_HASWELL_E_CORE_THREAD_COUNT is defined as MSR_CORE_THREAD_COUNT in SDM.
+**/
+#define MSR_HASWELL_E_CORE_THREAD_COUNT 0x00000035
+
+/**
+ MSR information returned for MSR index #MSR_HASWELL_E_CORE_THREAD_COUNT
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 15:0] Core_COUNT (RO) The number of processor cores that are
+ /// currently enabled (by either factory configuration or BIOS
+ /// configuration) in the physical package.
+ ///
+ UINT32 Core_Count:16;
+ ///
+ /// [Bits 31:16] THREAD_COUNT (RO) The number of logical processors that
+ /// are currently enabled (by either factory configuration or BIOS
+ /// configuration) in the physical package.
+ ///
+ UINT32 Thread_Count:16;
+ UINT32 Reserved:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_HASWELL_E_CORE_THREAD_COUNT_REGISTER;
+
+
+/**
+ Thread. A Hardware Assigned ID for the Logical Processor (RO).
+
+ @param ECX MSR_HASWELL_E_THREAD_ID_INFO (0x00000053)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_HASWELL_E_THREAD_ID_INFO_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_HASWELL_E_THREAD_ID_INFO_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_HASWELL_E_THREAD_ID_INFO_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_E_THREAD_ID_INFO);
+ @endcode
+ @note MSR_HASWELL_E_THREAD_ID_INFO is defined as MSR_THREAD_ID_INFO in SDM.
+**/
+#define MSR_HASWELL_E_THREAD_ID_INFO 0x00000053
+
+/**
+ MSR information returned for MSR index #MSR_HASWELL_E_THREAD_ID_INFO
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 7:0] Logical_Processor_ID (RO) An implementation-specific
+ /// numerical. value physically assigned to each logical processor. This
+ /// ID is not related to Initial APIC ID or x2APIC ID, it is unique within
+ /// a physical package.
+ ///
+ UINT32 Logical_Processor_ID:8;
+ UINT32 Reserved1:24;
+ UINT32 Reserved2:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_HASWELL_E_THREAD_ID_INFO_REGISTER;
+
+
+/**
Core. C-State Configuration Control (R/W) Note: C-state values are processor
specific C-state code names, unrelated to MWAIT extension C-state parameters
or ACPI C-states. `See http://biosbits.org. <http://biosbits.org>`__.
@@ -502,236 +609,6 @@ typedef union {
/**
- Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
- 15.3.2.4, "IA32_MCi_MISC MSRs.".
-
- * Bank MC5 reports MC error from the Intel QPI 0 module.
- * Bank MC6 reports MC error from the integrated I/O module.
- * Bank MC7 reports MC error from the home agent HA 0.
- * Bank MC8 reports MC error from the home agent HA 1.
- * Banks MC9 through MC16 report MC error from each channel of the integrated
- memory controllers.
- * Bank MC17 reports MC error from the following pair of CBo/L3 Slices
- (if the pair is present): CBo0, CBo3, CBo6, CBo9, CBo12, CBo15.
- * Bank MC18 reports MC error from the following pair of CBo/L3 Slices
- (if the pair is present): CBo1, CBo4, CBo7, CBo10, CBo13, CBo16.
- * Bank MC19 reports MC error from the following pair of CBo/L3 Slices
- (if the pair is present): CBo2, CBo5, CBo8, CBo11, CBo14, CBo17.
- * Bank MC20 reports MC error from the Intel QPI 1 module.
- * Bank MC21 reports MC error from the Intel QPI 2 module.
-
- @param ECX MSR_HASWELL_E_MCi_CTL
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_HASWELL_E_MC5_CTL);
- AsmWriteMsr64 (MSR_HASWELL_E_MC5_CTL, Msr);
- @endcode
- @note MSR_HASWELL_E_MC5_CTL is defined as MSR_MC5_CTL in SDM.
- MSR_HASWELL_E_MC6_CTL is defined as MSR_MC6_CTL in SDM.
- MSR_HASWELL_E_MC7_CTL is defined as MSR_MC7_CTL in SDM.
- MSR_HASWELL_E_MC8_CTL is defined as MSR_MC8_CTL in SDM.
- MSR_HASWELL_E_MC9_CTL is defined as MSR_MC9_CTL in SDM.
- MSR_HASWELL_E_MC10_CTL is defined as MSR_MC10_CTL in SDM.
- MSR_HASWELL_E_MC11_CTL is defined as MSR_MC11_CTL in SDM.
- MSR_HASWELL_E_MC12_CTL is defined as MSR_MC12_CTL in SDM.
- MSR_HASWELL_E_MC13_CTL is defined as MSR_MC13_CTL in SDM.
- MSR_HASWELL_E_MC14_CTL is defined as MSR_MC14_CTL in SDM.
- MSR_HASWELL_E_MC15_CTL is defined as MSR_MC15_CTL in SDM.
- MSR_HASWELL_E_MC16_CTL is defined as MSR_MC16_CTL in SDM.
- MSR_HASWELL_E_MC17_CTL is defined as MSR_MC17_CTL in SDM.
- MSR_HASWELL_E_MC18_CTL is defined as MSR_MC18_CTL in SDM.
- MSR_HASWELL_E_MC19_CTL is defined as MSR_MC19_CTL in SDM.
- MSR_HASWELL_E_MC20_CTL is defined as MSR_MC20_CTL in SDM.
- MSR_HASWELL_E_MC21_CTL is defined as MSR_MC21_CTL in SDM.
- @{
-**/
-#define MSR_HASWELL_E_MC5_CTL 0x00000414
-#define MSR_HASWELL_E_MC6_CTL 0x00000418
-#define MSR_HASWELL_E_MC7_CTL 0x0000041C
-#define MSR_HASWELL_E_MC8_CTL 0x00000420
-#define MSR_HASWELL_E_MC9_CTL 0x00000424
-#define MSR_HASWELL_E_MC10_CTL 0x00000428
-#define MSR_HASWELL_E_MC11_CTL 0x0000042C
-#define MSR_HASWELL_E_MC12_CTL 0x00000430
-#define MSR_HASWELL_E_MC13_CTL 0x00000434
-#define MSR_HASWELL_E_MC14_CTL 0x00000438
-#define MSR_HASWELL_E_MC15_CTL 0x0000043C
-#define MSR_HASWELL_E_MC16_CTL 0x00000440
-#define MSR_HASWELL_E_MC17_CTL 0x00000444
-#define MSR_HASWELL_E_MC18_CTL 0x00000448
-#define MSR_HASWELL_E_MC19_CTL 0x0000044C
-#define MSR_HASWELL_E_MC20_CTL 0x00000450
-#define MSR_HASWELL_E_MC21_CTL 0x00000454
-/// @}
-
-
-/**
- Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
- 15.3.2.4, "IA32_MCi_MISC MSRs.".
-
- @param ECX MSR_HASWELL_E_MCi_STATUS
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_HASWELL_E_MC5_STATUS);
- AsmWriteMsr64 (MSR_HASWELL_E_MC5_STATUS, Msr);
- @endcode
- @note MSR_HASWELL_E_MC5_STATUS is defined as MSR_MC5_STATUS in SDM.
- MSR_HASWELL_E_MC6_STATUS is defined as MSR_MC6_STATUS in SDM.
- MSR_HASWELL_E_MC7_STATUS is defined as MSR_MC7_STATUS in SDM.
- MSR_HASWELL_E_MC8_STATUS is defined as MSR_MC8_STATUS in SDM.
- MSR_HASWELL_E_MC9_STATUS is defined as MSR_MC9_STATUS in SDM.
- MSR_HASWELL_E_MC10_STATUS is defined as MSR_MC10_STATUS in SDM.
- MSR_HASWELL_E_MC11_STATUS is defined as MSR_MC11_STATUS in SDM.
- MSR_HASWELL_E_MC12_STATUS is defined as MSR_MC12_STATUS in SDM.
- MSR_HASWELL_E_MC13_STATUS is defined as MSR_MC13_STATUS in SDM.
- MSR_HASWELL_E_MC14_STATUS is defined as MSR_MC14_STATUS in SDM.
- MSR_HASWELL_E_MC15_STATUS is defined as MSR_MC15_STATUS in SDM.
- MSR_HASWELL_E_MC16_STATUS is defined as MSR_MC16_STATUS in SDM.
- MSR_HASWELL_E_MC17_STATUS is defined as MSR_MC17_STATUS in SDM.
- MSR_HASWELL_E_MC18_STATUS is defined as MSR_MC18_STATUS in SDM.
- MSR_HASWELL_E_MC19_STATUS is defined as MSR_MC19_STATUS in SDM.
- MSR_HASWELL_E_MC20_STATUS is defined as MSR_MC20_STATUS in SDM.
- MSR_HASWELL_E_MC21_STATUS is defined as MSR_MC21_STATUS in SDM.
- @{
-**/
-#define MSR_HASWELL_E_MC5_STATUS 0x00000415
-#define MSR_HASWELL_E_MC6_STATUS 0x00000419
-#define MSR_HASWELL_E_MC7_STATUS 0x0000041D
-#define MSR_HASWELL_E_MC8_STATUS 0x00000421
-#define MSR_HASWELL_E_MC9_STATUS 0x00000425
-#define MSR_HASWELL_E_MC10_STATUS 0x00000429
-#define MSR_HASWELL_E_MC11_STATUS 0x0000042D
-#define MSR_HASWELL_E_MC12_STATUS 0x00000431
-#define MSR_HASWELL_E_MC13_STATUS 0x00000435
-#define MSR_HASWELL_E_MC14_STATUS 0x00000439
-#define MSR_HASWELL_E_MC15_STATUS 0x0000043D
-#define MSR_HASWELL_E_MC16_STATUS 0x00000441
-#define MSR_HASWELL_E_MC17_STATUS 0x00000445
-#define MSR_HASWELL_E_MC18_STATUS 0x00000449
-#define MSR_HASWELL_E_MC19_STATUS 0x0000044D
-#define MSR_HASWELL_E_MC20_STATUS 0x00000451
-#define MSR_HASWELL_E_MC21_STATUS 0x00000455
-/// @}
-
-/**
- Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
- 15.3.2.4, "IA32_MCi_MISC MSRs.".
-
- @param ECX MSR_HASWELL_E_MCi_ADDR
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_HASWELL_E_MC5_ADDR);
- AsmWriteMsr64 (MSR_HASWELL_E_MC5_ADDR, Msr);
- @endcode
- @note MSR_HASWELL_E_MC5_ADDR is defined as MSR_MC5_ADDR in SDM.
- MSR_HASWELL_E_MC6_ADDR is defined as MSR_MC6_ADDR in SDM.
- MSR_HASWELL_E_MC7_ADDR is defined as MSR_MC7_ADDR in SDM.
- MSR_HASWELL_E_MC8_ADDR is defined as MSR_MC8_ADDR in SDM.
- MSR_HASWELL_E_MC9_ADDR is defined as MSR_MC9_ADDR in SDM.
- MSR_HASWELL_E_MC10_ADDR is defined as MSR_MC10_ADDR in SDM.
- MSR_HASWELL_E_MC11_ADDR is defined as MSR_MC11_ADDR in SDM.
- MSR_HASWELL_E_MC12_ADDR is defined as MSR_MC12_ADDR in SDM.
- MSR_HASWELL_E_MC13_ADDR is defined as MSR_MC13_ADDR in SDM.
- MSR_HASWELL_E_MC14_ADDR is defined as MSR_MC14_ADDR in SDM.
- MSR_HASWELL_E_MC15_ADDR is defined as MSR_MC15_ADDR in SDM.
- MSR_HASWELL_E_MC16_ADDR is defined as MSR_MC16_ADDR in SDM.
- MSR_HASWELL_E_MC17_ADDR is defined as MSR_MC17_ADDR in SDM.
- MSR_HASWELL_E_MC18_ADDR is defined as MSR_MC18_ADDR in SDM.
- MSR_HASWELL_E_MC19_ADDR is defined as MSR_MC19_ADDR in SDM.
- MSR_HASWELL_E_MC20_ADDR is defined as MSR_MC20_ADDR in SDM.
- MSR_HASWELL_E_MC21_ADDR is defined as MSR_MC21_ADDR in SDM.
- @{
-**/
-#define MSR_HASWELL_E_MC5_ADDR 0x00000416
-#define MSR_HASWELL_E_MC6_ADDR 0x0000041A
-#define MSR_HASWELL_E_MC7_ADDR 0x0000041E
-#define MSR_HASWELL_E_MC8_ADDR 0x00000422
-#define MSR_HASWELL_E_MC9_ADDR 0x00000426
-#define MSR_HASWELL_E_MC10_ADDR 0x0000042A
-#define MSR_HASWELL_E_MC11_ADDR 0x0000042E
-#define MSR_HASWELL_E_MC12_ADDR 0x00000432
-#define MSR_HASWELL_E_MC13_ADDR 0x00000436
-#define MSR_HASWELL_E_MC14_ADDR 0x0000043A
-#define MSR_HASWELL_E_MC15_ADDR 0x0000043E
-#define MSR_HASWELL_E_MC16_ADDR 0x00000442
-#define MSR_HASWELL_E_MC17_ADDR 0x00000446
-#define MSR_HASWELL_E_MC18_ADDR 0x0000044A
-#define MSR_HASWELL_E_MC19_ADDR 0x0000044E
-#define MSR_HASWELL_E_MC20_ADDR 0x00000452
-#define MSR_HASWELL_E_MC21_ADDR 0x00000456
-/// @}
-
-
-/**
- Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
- 15.3.2.4, "IA32_MCi_MISC MSRs.".
-
- @param ECX MSR_HASWELL_E_MCi_MISC
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_HASWELL_E_MC5_MISC);
- AsmWriteMsr64 (MSR_HASWELL_E_MC5_MISC, Msr);
- @endcode
- @note MSR_HASWELL_E_MC5_MISC is defined as MSR_MC5_MISC in SDM.
- MSR_HASWELL_E_MC6_MISC is defined as MSR_MC6_MISC in SDM.
- MSR_HASWELL_E_MC7_MISC is defined as MSR_MC7_MISC in SDM.
- MSR_HASWELL_E_MC8_MISC is defined as MSR_MC8_MISC in SDM.
- MSR_HASWELL_E_MC9_MISC is defined as MSR_MC9_MISC in SDM.
- MSR_HASWELL_E_MC10_MISC is defined as MSR_MC10_MISC in SDM.
- MSR_HASWELL_E_MC11_MISC is defined as MSR_MC11_MISC in SDM.
- MSR_HASWELL_E_MC12_MISC is defined as MSR_MC12_MISC in SDM.
- MSR_HASWELL_E_MC13_MISC is defined as MSR_MC13_MISC in SDM.
- MSR_HASWELL_E_MC14_MISC is defined as MSR_MC14_MISC in SDM.
- MSR_HASWELL_E_MC15_MISC is defined as MSR_MC15_MISC in SDM.
- MSR_HASWELL_E_MC16_MISC is defined as MSR_MC16_MISC in SDM.
- MSR_HASWELL_E_MC17_MISC is defined as MSR_MC17_MISC in SDM.
- MSR_HASWELL_E_MC18_MISC is defined as MSR_MC18_MISC in SDM.
- MSR_HASWELL_E_MC19_MISC is defined as MSR_MC19_MISC in SDM.
- MSR_HASWELL_E_MC20_MISC is defined as MSR_MC20_MISC in SDM.
- MSR_HASWELL_E_MC21_MISC is defined as MSR_MC21_MISC in SDM.
- @{
-**/
-#define MSR_HASWELL_E_MC5_MISC 0x00000417
-#define MSR_HASWELL_E_MC6_MISC 0x0000041B
-#define MSR_HASWELL_E_MC7_MISC 0x0000041F
-#define MSR_HASWELL_E_MC8_MISC 0x00000423
-#define MSR_HASWELL_E_MC9_MISC 0x00000427
-#define MSR_HASWELL_E_MC10_MISC 0x0000042B
-#define MSR_HASWELL_E_MC11_MISC 0x0000042F
-#define MSR_HASWELL_E_MC12_MISC 0x00000433
-#define MSR_HASWELL_E_MC13_MISC 0x00000437
-#define MSR_HASWELL_E_MC14_MISC 0x0000043B
-#define MSR_HASWELL_E_MC15_MISC 0x0000043F
-#define MSR_HASWELL_E_MC16_MISC 0x00000443
-#define MSR_HASWELL_E_MC17_MISC 0x00000447
-#define MSR_HASWELL_E_MC18_MISC 0x0000044B
-#define MSR_HASWELL_E_MC19_MISC 0x0000044F
-#define MSR_HASWELL_E_MC20_MISC 0x00000453
-#define MSR_HASWELL_E_MC21_MISC 0x00000457
-/// @}
-
-
-/**
Package. Unit Multipliers used in RAPL Interfaces (R/O).
@param ECX MSR_HASWELL_E_RAPL_POWER_UNIT (0x00000606)
@@ -811,22 +688,49 @@ typedef union {
/**
- Package. DRAM Energy Status (R/O) See Section 14.9.5, "DRAM RAPL Domain.".
+ Package. DRAM Energy Status (R/O) Energy Consumed by DRAM devices.
@param ECX MSR_HASWELL_E_DRAM_ENERGY_STATUS (0x00000619)
@param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_HASWELL_E_DRAM_ENERGY_STATUS_REGISTER.
@param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_HASWELL_E_DRAM_ENERGY_STATUS_REGISTER.
<b>Example usage</b>
@code
- UINT64 Msr;
+ MSR_HASWELL_E_DRAM_ENERGY_STATUS_REGISTER Msr;
- Msr = AsmReadMsr64 (MSR_HASWELL_E_DRAM_ENERGY_STATUS);
+ Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_E_DRAM_ENERGY_STATUS);
@endcode
@note MSR_HASWELL_E_DRAM_ENERGY_STATUS is defined as MSR_DRAM_ENERGY_STATUS in SDM.
**/
#define MSR_HASWELL_E_DRAM_ENERGY_STATUS 0x00000619
+/**
+ MSR information returned for MSR index #MSR_HASWELL_E_DRAM_ENERGY_STATUS
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 31:0] Energy in 15.3 micro-joules. Requires BIOS configuration
+ /// to enable DRAM RAPL mode 0 (Direct VR).
+ ///
+ UINT32 Energy:32;
+ UINT32 Reserved:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_HASWELL_E_DRAM_ENERGY_STATUS_REGISTER;
+
/**
Package. DRAM Performance Throttling Status (R/O) See Section 14.9.5, "DRAM
@@ -867,6 +771,83 @@ typedef union {
/**
+ Package. Configuration of PCIE PLL Relative to BCLK(R/W).
+
+ @param ECX MSR_HASWELL_E_PCIE_PLL_RATIO (0x0000061E)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_HASWELL_E_PCIE_PLL_RATIO_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_HASWELL_E_PCIE_PLL_RATIO_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_HASWELL_E_PCIE_PLL_RATIO_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_E_PCIE_PLL_RATIO);
+ AsmWriteMsr64 (MSR_HASWELL_E_PCIE_PLL_RATIO, Msr.Uint64);
+ @endcode
+ @note MSR_HASWELL_E_PCIE_PLL_RATIO is defined as MSR_PCIE_PLL_RATIO in SDM.
+**/
+#define MSR_HASWELL_E_PCIE_PLL_RATIO 0x0000061E
+
+/**
+ MSR information returned for MSR index #MSR_HASWELL_E_PCIE_PLL_RATIO
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 1:0] Package. PCIE Ratio (R/W) 00b: Use 5:5 mapping for100MHz
+ /// operation (default) 01b: Use 5:4 mapping for125MHz operation 10b: Use
+ /// 5:3 mapping for166MHz operation 11b: Use 5:2 mapping for250MHz
+ /// operation.
+ ///
+ UINT32 PCIERatio:2;
+ ///
+ /// [Bit 2] Package. LPLL Select (R/W) if 1, use configured setting of
+ /// PCIE Ratio.
+ ///
+ UINT32 LPLLSelect:1;
+ ///
+ /// [Bit 3] Package. LONG RESET (R/W) if 1, wait additional time-out
+ /// before re-locking Gen2/Gen3 PLLs.
+ ///
+ UINT32 LONGRESET:1;
+ UINT32 Reserved1:28;
+ UINT32 Reserved2:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_HASWELL_E_PCIE_PLL_RATIO_REGISTER;
+
+
+/**
+ Package. Reserved (R/O) Reads return 0.
+
+ @param ECX MSR_HASWELL_E_PP0_ENERGY_STATUS (0x00000639)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_HASWELL_E_PP0_ENERGY_STATUS);
+ @endcode
+ @note MSR_HASWELL_E_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.
+**/
+#define MSR_HASWELL_E_PP0_ENERGY_STATUS 0x00000639
+
+
+/**
Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency
refers to processor core frequency).
@@ -1048,7 +1029,7 @@ typedef union {
/**
THREAD. Monitoring Event Select Register (R/W). if CPUID.(EAX=07H,
- ECX=0):EBX.PQM[bit 12] = 1.
+ ECX=0):EBX.RDT-M[bit 12] = 1.
@param ECX MSR_HASWELL_E_IA32_QM_EVTSEL (0x00000C8D)
@param EAX Lower 32-bits of MSR value.
diff --git a/UefiCpuPkg/Include/Register/Msr/HaswellMsr.h b/UefiCpuPkg/Include/Register/Msr/HaswellMsr.h
index f7cb6ce..8bf2c38 100644
--- a/UefiCpuPkg/Include/Register/Msr/HaswellMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/HaswellMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-10.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.11.
**/
@@ -442,15 +442,8 @@ typedef union {
UINT32 InterruptResponseTimeLimit:10;
///
/// [Bits 12:10] Time Unit (R/W) Specifies the encoding value of time
- /// unit of the interrupt response time limit. The following time unit
- /// encodings are supported:
- ///
- /// 000b: 1 ns
- /// 001b: 32 ns
- /// 010b: 1024 ns
- /// 011b: 32768 ns
- /// 100b: 1048576 ns
- /// 101b: 33554432 ns.
+ /// unit of the interrupt response time limit. See Table 35-18 for
+ /// supported time unit encodings.
///
UINT32 TimeUnit:3;
UINT32 Reserved1:2;
@@ -514,15 +507,8 @@ typedef union {
UINT32 InterruptResponseTimeLimit:10;
///
/// [Bits 12:10] Time Unit (R/W) Specifies the encoding value of time
- /// unit of the interrupt response time limit. The following time unit
- /// encodings are supported:
- ///
- /// 000b: 1 ns
- /// 001b: 32 ns
- /// 010b: 1024 ns
- /// 011b: 32768 ns
- /// 100b: 1048576 ns
- /// 101b: 33554432 ns.
+ /// unit of the interrupt response time limit. See Table 35-18 for
+ /// supported time unit encodings.
///
UINT32 TimeUnit:3;
UINT32 Reserved1:2;
@@ -864,25 +850,6 @@ typedef union {
/**
- Package. Silicon Debug Feature Control (R/W) See Table 35-2.
-
- @param ECX MSR_HASWELL_IA32_DEBUG_FEATURE (0x00000C80)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_HASWELL_IA32_DEBUG_FEATURE);
- AsmWriteMsr64 (MSR_HASWELL_IA32_DEBUG_FEATURE, Msr);
- @endcode
- @note MSR_HASWELL_IA32_DEBUG_FEATURE is defined as IA32_DEBUG_FEATURE in SDM.
-**/
-#define MSR_HASWELL_IA32_DEBUG_FEATURE 0x00000C80
-
-
-/**
Core. C-State Configuration Control (R/W) Note: C-state values are processor
specific C-state code names, unrelated to MWAIT extension C-state parameters
or ACPI Cstates. `See http://biosbits.org. <http://biosbits.org>`__.
@@ -1610,6 +1577,25 @@ typedef union {
/**
+ Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
+ Domains.".
+
+ @param ECX MSR_HASWELL_PP0_ENERGY_STATUS (0x00000639)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_HASWELL_PP0_ENERGY_STATUS);
+ @endcode
+ @note MSR_HASWELL_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.
+**/
+#define MSR_HASWELL_PP0_ENERGY_STATUS 0x00000639
+
+
+/**
Package. PP1 RAPL Power Limit Control (R/W) See Section 14.9.4, "PP0/PP1
RAPL Domains.".
diff --git a/UefiCpuPkg/Include/Register/Msr/IvyBridgeMsr.h b/UefiCpuPkg/Include/Register/Msr/IvyBridgeMsr.h
index d278d52..41cbd2e 100644
--- a/UefiCpuPkg/Include/Register/Msr/IvyBridgeMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/IvyBridgeMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-9.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.10.
**/
@@ -201,6 +201,25 @@ typedef union {
/**
+ Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
+ Domains.".
+
+ @param ECX MSR_IVY_BRIDGE_PP0_ENERGY_STATUS (0x00000639)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_IVY_BRIDGE_PP0_ENERGY_STATUS);
+ @endcode
+ @note MSR_IVY_BRIDGE_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.
+**/
+#define MSR_IVY_BRIDGE_PP0_ENERGY_STATUS 0x00000639
+
+
+/**
Package. Base TDP Ratio (R/O).
@param ECX MSR_IVY_BRIDGE_CONFIG_TDP_NOMINAL (0x00000648)
@@ -813,95 +832,66 @@ typedef union {
/**
- Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
- 15.3.2.4, "IA32_MCi_MISC MSRs.". Bank MC5 reports MC error from the Intel
- QPI module.
-
- * Bank MC6 reports MC error from the integrated I/O module.
- * Banks MC7 and MC 8 report MC error from the two home agents.
- * Banks MC9 through MC 16 report MC error from each channel of the integrated
- memory controllers.
- * Banks MC17 through MC31 reports MC error from a specific CBo
- (core broadcast) and its corresponding slice of L3.
-
- @param ECX MSR_IVY_BRIDGE_MCi_CTL
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_IVY_BRIDGE_MC5_CTL);
- AsmWriteMsr64 (MSR_IVY_BRIDGE_MC5_CTL, Msr);
- @endcode
- @note MSR_IVY_BRIDGE_MC5_CTL is defined as MSR_MC5_CTL in SDM.
- MSR_IVY_BRIDGE_MC6_CTL is defined as MSR_MC6_CTL in SDM.
- MSR_IVY_BRIDGE_MC7_CTL is defined as MSR_MC7_CTL in SDM.
- MSR_IVY_BRIDGE_MC8_CTL is defined as MSR_MC8_CTL in SDM.
- MSR_IVY_BRIDGE_MC9_CTL is defined as MSR_MC9_CTL in SDM.
- MSR_IVY_BRIDGE_MC10_CTL is defined as MSR_MC10_CTL in SDM.
- MSR_IVY_BRIDGE_MC11_CTL is defined as MSR_MC11_CTL in SDM.
- MSR_IVY_BRIDGE_MC12_CTL is defined as MSR_MC12_CTL in SDM.
- MSR_IVY_BRIDGE_MC13_CTL is defined as MSR_MC13_CTL in SDM.
- MSR_IVY_BRIDGE_MC14_CTL is defined as MSR_MC14_CTL in SDM.
- MSR_IVY_BRIDGE_MC15_CTL is defined as MSR_MC15_CTL in SDM.
- MSR_IVY_BRIDGE_MC16_CTL is defined as MSR_MC16_CTL in SDM.
- MSR_IVY_BRIDGE_MC17_CTL is defined as MSR_MC17_CTL in SDM.
- MSR_IVY_BRIDGE_MC18_CTL is defined as MSR_MC18_CTL in SDM.
- MSR_IVY_BRIDGE_MC19_CTL is defined as MSR_MC19_CTL in SDM.
- MSR_IVY_BRIDGE_MC20_CTL is defined as MSR_MC20_CTL in SDM.
- MSR_IVY_BRIDGE_MC21_CTL is defined as MSR_MC21_CTL in SDM.
- MSR_IVY_BRIDGE_MC22_CTL is defined as MSR_MC22_CTL in SDM.
- MSR_IVY_BRIDGE_MC23_CTL is defined as MSR_MC23_CTL in SDM.
- MSR_IVY_BRIDGE_MC24_CTL is defined as MSR_MC24_CTL in SDM.
- MSR_IVY_BRIDGE_MC25_CTL is defined as MSR_MC25_CTL in SDM.
- MSR_IVY_BRIDGE_MC26_CTL is defined as MSR_MC26_CTL in SDM.
- MSR_IVY_BRIDGE_MC27_CTL is defined as MSR_MC27_CTL in SDM.
- MSR_IVY_BRIDGE_MC28_CTL is defined as MSR_MC28_CTL in SDM.
- MSR_IVY_BRIDGE_MC29_CTL is defined as MSR_MC29_CTL in SDM.
- MSR_IVY_BRIDGE_MC30_CTL is defined as MSR_MC30_CTL in SDM.
- MSR_IVY_BRIDGE_MC31_CTL is defined as MSR_MC31_CTL in SDM.
- @{
+ Package. Misc MAC information of Integrated I/O. (R/O) see Section 15.3.2.4.
+
+ @param ECX MSR_IVY_BRIDGE_IA32_MC6_MISC (0x0000041B)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_IVY_BRIDGE_IA32_MC6_MISC_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_IVY_BRIDGE_IA32_MC6_MISC_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_IVY_BRIDGE_IA32_MC6_MISC_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_IVY_BRIDGE_IA32_MC6_MISC);
+ @endcode
+ @note MSR_IVY_BRIDGE_IA32_MC6_MISC is defined as IA32_MC6_MISC in SDM.
**/
-#define MSR_IVY_BRIDGE_MC5_CTL 0x00000414
-#define MSR_IVY_BRIDGE_MC6_CTL 0x00000418
-#define MSR_IVY_BRIDGE_MC7_CTL 0x0000041C
-#define MSR_IVY_BRIDGE_MC8_CTL 0x00000420
-#define MSR_IVY_BRIDGE_MC9_CTL 0x00000424
-#define MSR_IVY_BRIDGE_MC10_CTL 0x00000428
-#define MSR_IVY_BRIDGE_MC11_CTL 0x0000042C
-#define MSR_IVY_BRIDGE_MC12_CTL 0x00000430
-#define MSR_IVY_BRIDGE_MC13_CTL 0x00000434
-#define MSR_IVY_BRIDGE_MC14_CTL 0x00000438
-#define MSR_IVY_BRIDGE_MC15_CTL 0x0000043C
-#define MSR_IVY_BRIDGE_MC16_CTL 0x00000440
-#define MSR_IVY_BRIDGE_MC17_CTL 0x00000444
-#define MSR_IVY_BRIDGE_MC18_CTL 0x00000448
-#define MSR_IVY_BRIDGE_MC19_CTL 0x0000044C
-#define MSR_IVY_BRIDGE_MC20_CTL 0x00000450
-#define MSR_IVY_BRIDGE_MC21_CTL 0x00000454
-#define MSR_IVY_BRIDGE_MC22_CTL 0x00000458
-#define MSR_IVY_BRIDGE_MC23_CTL 0x0000045C
-#define MSR_IVY_BRIDGE_MC24_CTL 0x00000460
-#define MSR_IVY_BRIDGE_MC25_CTL 0x00000464
-#define MSR_IVY_BRIDGE_MC26_CTL 0x00000468
-#define MSR_IVY_BRIDGE_MC27_CTL 0x0000046C
-#define MSR_IVY_BRIDGE_MC28_CTL 0x00000470
-#define MSR_IVY_BRIDGE_MC29_CTL 0x00000474
-#define MSR_IVY_BRIDGE_MC30_CTL 0x00000478
-#define MSR_IVY_BRIDGE_MC31_CTL 0x0000047C
-/// @}
+#define MSR_IVY_BRIDGE_IA32_MC6_MISC 0x0000041B
+
+/**
+ MSR information returned for MSR index #MSR_IVY_BRIDGE_IA32_MC6_MISC
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 5:0] Recoverable Address LSB.
+ ///
+ UINT32 RecoverableAddressLSB:6;
+ ///
+ /// [Bits 8:6] Address Mode.
+ ///
+ UINT32 AddressMode:3;
+ UINT32 Reserved1:7;
+ ///
+ /// [Bits 31:16] PCI Express Requestor ID.
+ ///
+ UINT32 PCIExpressRequestorID:16;
+ ///
+ /// [Bits 39:32] PCI Express Segment Number.
+ ///
+ UINT32 PCIExpressSegmentNumber:8;
+ UINT32 Reserved2:24;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_IVY_BRIDGE_IA32_MC6_MISC_REGISTER;
/**
Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
15.3.2.4, "IA32_MCi_MISC MSRs.".
- Bank MC20 reports MC error from a specific CBo (core broadcast) and
- its corresponding slice of L3.
+ Bank MC29 through MC31 reports MC error from a specific CBo (core broadcast)
+ and its corresponding slice of L3.
- @param ECX MSR_IVY_BRIDGE_MCi_STATUS
+ @param ECX MSR_IVY_BRIDGE_IA32_MCi_CTL
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -909,65 +899,17 @@ typedef union {
@code
UINT64 Msr;
- Msr = AsmReadMsr64 (MSR_IVY_BRIDGE_MC5_STATUS);
- AsmWriteMsr64 (MSR_IVY_BRIDGE_MC5_STATUS, Msr);
+ Msr = AsmReadMsr64 (MSR_IVY_BRIDGE_IA32_MC29_CTL);
+ AsmWriteMsr64 (MSR_IVY_BRIDGE_IA32_MC29_CTL, Msr);
@endcode
- @note MSR_IVY_BRIDGE_MC5_STATUS is defined as MSR_MC5_STATUS in SDM.
- MSR_IVY_BRIDGE_MC6_STATUS is defined as MSR_MC6_STATUS in SDM.
- MSR_IVY_BRIDGE_MC7_STATUS is defined as MSR_MC7_STATUS in SDM.
- MSR_IVY_BRIDGE_MC8_STATUS is defined as MSR_MC8_STATUS in SDM.
- MSR_IVY_BRIDGE_MC9_STATUS is defined as MSR_MC9_STATUS in SDM.
- MSR_IVY_BRIDGE_MC10_STATUS is defined as MSR_MC10_STATUS in SDM.
- MSR_IVY_BRIDGE_MC11_STATUS is defined as MSR_MC11_STATUS in SDM.
- MSR_IVY_BRIDGE_MC12_STATUS is defined as MSR_MC12_STATUS in SDM.
- MSR_IVY_BRIDGE_MC13_STATUS is defined as MSR_MC13_STATUS in SDM.
- MSR_IVY_BRIDGE_MC14_STATUS is defined as MSR_MC14_STATUS in SDM.
- MSR_IVY_BRIDGE_MC15_STATUS is defined as MSR_MC15_STATUS in SDM.
- MSR_IVY_BRIDGE_MC16_STATUS is defined as MSR_MC16_STATUS in SDM.
- MSR_IVY_BRIDGE_MC17_STATUS is defined as MSR_MC17_STATUS in SDM.
- MSR_IVY_BRIDGE_MC18_STATUS is defined as MSR_MC18_STATUS in SDM.
- MSR_IVY_BRIDGE_MC19_STATUS is defined as MSR_MC19_STATUS in SDM.
- MSR_IVY_BRIDGE_MC20_STATUS is defined as MSR_MC20_STATUS in SDM.
- MSR_IVY_BRIDGE_MC21_STATUS is defined as MSR_MC21_STATUS in SDM.
- MSR_IVY_BRIDGE_MC22_STATUS is defined as MSR_MC22_STATUS in SDM.
- MSR_IVY_BRIDGE_MC23_STATUS is defined as MSR_MC23_STATUS in SDM.
- MSR_IVY_BRIDGE_MC24_STATUS is defined as MSR_MC24_STATUS in SDM.
- MSR_IVY_BRIDGE_MC25_STATUS is defined as MSR_MC25_STATUS in SDM.
- MSR_IVY_BRIDGE_MC26_STATUS is defined as MSR_MC26_STATUS in SDM.
- MSR_IVY_BRIDGE_MC27_STATUS is defined as MSR_MC27_STATUS in SDM.
- MSR_IVY_BRIDGE_MC28_STATUS is defined as MSR_MC28_STATUS in SDM.
- MSR_IVY_BRIDGE_MC29_STATUS is defined as MSR_MC29_STATUS in SDM.
- MSR_IVY_BRIDGE_MC30_STATUS is defined as MSR_MC30_STATUS in SDM.
- MSR_IVY_BRIDGE_MC31_STATUS is defined as MSR_MC31_STATUS in SDM.
+ @note MSR_IVY_BRIDGE_IA32_MC29_CTL is defined as IA32_MC29_CTL in SDM.
+ MSR_IVY_BRIDGE_IA32_MC30_CTL is defined as IA32_MC30_CTL in SDM.
+ MSR_IVY_BRIDGE_IA32_MC31_CTL is defined as IA32_MC31_CTL in SDM.
@{
**/
-#define MSR_IVY_BRIDGE_MC5_STATUS 0x00000415
-#define MSR_IVY_BRIDGE_MC6_STATUS 0x00000419
-#define MSR_IVY_BRIDGE_MC7_STATUS 0x0000041D
-#define MSR_IVY_BRIDGE_MC8_STATUS 0x00000421
-#define MSR_IVY_BRIDGE_MC9_STATUS 0x00000425
-#define MSR_IVY_BRIDGE_MC10_STATUS 0x00000429
-#define MSR_IVY_BRIDGE_MC11_STATUS 0x0000042D
-#define MSR_IVY_BRIDGE_MC12_STATUS 0x00000431
-#define MSR_IVY_BRIDGE_MC13_STATUS 0x00000435
-#define MSR_IVY_BRIDGE_MC14_STATUS 0x00000439
-#define MSR_IVY_BRIDGE_MC15_STATUS 0x0000043D
-#define MSR_IVY_BRIDGE_MC16_STATUS 0x00000441
-#define MSR_IVY_BRIDGE_MC17_STATUS 0x00000445
-#define MSR_IVY_BRIDGE_MC18_STATUS 0x00000449
-#define MSR_IVY_BRIDGE_MC19_STATUS 0x0000044D
-#define MSR_IVY_BRIDGE_MC20_STATUS 0x00000451
-#define MSR_IVY_BRIDGE_MC21_STATUS 0x00000455
-#define MSR_IVY_BRIDGE_MC22_STATUS 0x00000459
-#define MSR_IVY_BRIDGE_MC23_STATUS 0x0000045D
-#define MSR_IVY_BRIDGE_MC24_STATUS 0x00000461
-#define MSR_IVY_BRIDGE_MC25_STATUS 0x00000465
-#define MSR_IVY_BRIDGE_MC26_STATUS 0x00000469
-#define MSR_IVY_BRIDGE_MC27_STATUS 0x0000046D
-#define MSR_IVY_BRIDGE_MC28_STATUS 0x00000471
-#define MSR_IVY_BRIDGE_MC29_STATUS 0x00000475
-#define MSR_IVY_BRIDGE_MC30_STATUS 0x00000479
-#define MSR_IVY_BRIDGE_MC31_STATUS 0x0000047D
+#define MSR_IVY_BRIDGE_IA32_MC29_CTL 0x00000474
+#define MSR_IVY_BRIDGE_IA32_MC30_CTL 0x00000478
+#define MSR_IVY_BRIDGE_IA32_MC31_CTL 0x0000047C
/// @}
@@ -975,7 +917,10 @@ typedef union {
Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
15.3.2.4, "IA32_MCi_MISC MSRs.".
- @param ECX MSR_IVY_BRIDGE_MCi_ADDR
+ Bank MC29 through MC31 reports MC error from a specific CBo (core broadcast)
+ and its corresponding slice of L3.
+
+ @param ECX MSR_IVY_BRIDGE_IA32_MCi_STATUS
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -983,65 +928,17 @@ typedef union {
@code
UINT64 Msr;
- Msr = AsmReadMsr64 (MSR_IVY_BRIDGE_MC5_ADDR);
- AsmWriteMsr64 (MSR_IVY_BRIDGE_MC5_ADDR, Msr);
+ Msr = AsmReadMsr64 (MSR_IVY_BRIDGE_IA32_MC29_STATUS);
+ AsmWriteMsr64 (MSR_IVY_BRIDGE_IA32_MC29_STATUS, Msr);
@endcode
- @note MSR_IVY_BRIDGE_MC5_ADDR is defined as MSR_MC5_ADDR in SDM.
- MSR_IVY_BRIDGE_MC6_ADDR is defined as MSR_MC6_ADDR in SDM.
- MSR_IVY_BRIDGE_MC7_ADDR is defined as MSR_MC7_ADDR in SDM.
- MSR_IVY_BRIDGE_MC8_ADDR is defined as MSR_MC8_ADDR in SDM.
- MSR_IVY_BRIDGE_MC9_ADDR is defined as MSR_MC9_ADDR in SDM.
- MSR_IVY_BRIDGE_MC10_ADDR is defined as MSR_MC10_ADDR in SDM.
- MSR_IVY_BRIDGE_MC11_ADDR is defined as MSR_MC11_ADDR in SDM.
- MSR_IVY_BRIDGE_MC12_ADDR is defined as MSR_MC12_ADDR in SDM.
- MSR_IVY_BRIDGE_MC13_ADDR is defined as MSR_MC13_ADDR in SDM.
- MSR_IVY_BRIDGE_MC14_ADDR is defined as MSR_MC14_ADDR in SDM.
- MSR_IVY_BRIDGE_MC15_ADDR is defined as MSR_MC15_ADDR in SDM.
- MSR_IVY_BRIDGE_MC16_ADDR is defined as MSR_MC16_ADDR in SDM.
- MSR_IVY_BRIDGE_MC17_ADDR is defined as MSR_MC17_ADDR in SDM.
- MSR_IVY_BRIDGE_MC18_ADDR is defined as MSR_MC18_ADDR in SDM.
- MSR_IVY_BRIDGE_MC19_ADDR is defined as MSR_MC19_ADDR in SDM.
- MSR_IVY_BRIDGE_MC20_ADDR is defined as MSR_MC20_ADDR in SDM.
- MSR_IVY_BRIDGE_MC21_ADDR is defined as MSR_MC21_ADDR in SDM.
- MSR_IVY_BRIDGE_MC22_ADDR is defined as MSR_MC22_ADDR in SDM.
- MSR_IVY_BRIDGE_MC23_ADDR is defined as MSR_MC23_ADDR in SDM.
- MSR_IVY_BRIDGE_MC24_ADDR is defined as MSR_MC24_ADDR in SDM.
- MSR_IVY_BRIDGE_MC25_ADDR is defined as MSR_MC25_ADDR in SDM.
- MSR_IVY_BRIDGE_MC26_ADDR is defined as MSR_MC26_ADDR in SDM.
- MSR_IVY_BRIDGE_MC27_ADDR is defined as MSR_MC27_ADDR in SDM.
- MSR_IVY_BRIDGE_MC28_ADDR is defined as MSR_MC28_ADDR in SDM.
- MSR_IVY_BRIDGE_MC29_ADDR is defined as MSR_MC29_ADDR in SDM.
- MSR_IVY_BRIDGE_MC30_ADDR is defined as MSR_MC30_ADDR in SDM.
- MSR_IVY_BRIDGE_MC31_ADDR is defined as MSR_MC31_ADDR in SDM.
+ @note MSR_IVY_BRIDGE_IA32_MC29_STATUS is defined as IA32_MC29_STATUS in SDM.
+ MSR_IVY_BRIDGE_IA32_MC30_STATUS is defined as IA32_MC30_STATUS in SDM.
+ MSR_IVY_BRIDGE_IA32_MC31_STATUS is defined as IA32_MC31_STATUS in SDM.
@{
**/
-#define MSR_IVY_BRIDGE_MC5_ADDR 0x00000416
-#define MSR_IVY_BRIDGE_MC6_ADDR 0x0000041A
-#define MSR_IVY_BRIDGE_MC7_ADDR 0x0000041E
-#define MSR_IVY_BRIDGE_MC8_ADDR 0x00000422
-#define MSR_IVY_BRIDGE_MC9_ADDR 0x00000426
-#define MSR_IVY_BRIDGE_MC10_ADDR 0x0000042A
-#define MSR_IVY_BRIDGE_MC11_ADDR 0x0000042E
-#define MSR_IVY_BRIDGE_MC12_ADDR 0x00000432
-#define MSR_IVY_BRIDGE_MC13_ADDR 0x00000436
-#define MSR_IVY_BRIDGE_MC14_ADDR 0x0000043A
-#define MSR_IVY_BRIDGE_MC15_ADDR 0x0000043E
-#define MSR_IVY_BRIDGE_MC16_ADDR 0x00000442
-#define MSR_IVY_BRIDGE_MC17_ADDR 0x00000446
-#define MSR_IVY_BRIDGE_MC18_ADDR 0x0000044A
-#define MSR_IVY_BRIDGE_MC19_ADDR 0x0000044E
-#define MSR_IVY_BRIDGE_MC20_ADDR 0x00000452
-#define MSR_IVY_BRIDGE_MC21_ADDR 0x00000456
-#define MSR_IVY_BRIDGE_MC22_ADDR 0x0000045A
-#define MSR_IVY_BRIDGE_MC23_ADDR 0x0000045E
-#define MSR_IVY_BRIDGE_MC24_ADDR 0x00000462
-#define MSR_IVY_BRIDGE_MC25_ADDR 0x00000466
-#define MSR_IVY_BRIDGE_MC26_ADDR 0x0000046A
-#define MSR_IVY_BRIDGE_MC27_ADDR 0x0000046E
-#define MSR_IVY_BRIDGE_MC28_ADDR 0x00000472
-#define MSR_IVY_BRIDGE_MC29_ADDR 0x00000476
-#define MSR_IVY_BRIDGE_MC30_ADDR 0x0000047A
-#define MSR_IVY_BRIDGE_MC31_ADDR 0x0000047E
+#define MSR_IVY_BRIDGE_IA32_MC29_STATUS 0x00000475
+#define MSR_IVY_BRIDGE_IA32_MC30_STATUS 0x00000479
+#define MSR_IVY_BRIDGE_IA32_MC31_STATUS 0x0000047D
/// @}
@@ -1049,7 +946,10 @@ typedef union {
Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
15.3.2.4, "IA32_MCi_MISC MSRs.".
- @param ECX MSR_IVY_BRIDGE_MCi_MISC
+ Bank MC29 through MC31 reports MC error from a specific CBo (core broadcast)
+ and its corresponding slice of L3.
+
+ @param ECX MSR_IVY_BRIDGE_IA32_MCi_ADDR
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -1057,119 +957,47 @@ typedef union {
@code
UINT64 Msr;
- Msr = AsmReadMsr64 (MSR_IVY_BRIDGE_MC5_MISC);
- AsmWriteMsr64 (MSR_IVY_BRIDGE_MC5_MISC, Msr);
+ Msr = AsmReadMsr64 (MSR_IVY_BRIDGE_IA32_MC29_ADDR);
+ AsmWriteMsr64 (MSR_IVY_BRIDGE_IA32_MC29_ADDR, Msr);
@endcode
- @note MSR_IVY_BRIDGE_MC5_MISC is defined as MSR_MC5_MISC in SDM.
- MSR_IVY_BRIDGE_MC6_MISC is defined as MSR_MC6_MISC in SDM.
- MSR_IVY_BRIDGE_MC7_MISC is defined as MSR_MC7_MISC in SDM.
- MSR_IVY_BRIDGE_MC8_MISC is defined as MSR_MC8_MISC in SDM.
- MSR_IVY_BRIDGE_MC9_MISC is defined as MSR_MC9_MISC in SDM.
- MSR_IVY_BRIDGE_MC10_MISC is defined as MSR_MC10_MISC in SDM.
- MSR_IVY_BRIDGE_MC11_MISC is defined as MSR_MC11_MISC in SDM.
- MSR_IVY_BRIDGE_MC12_MISC is defined as MSR_MC12_MISC in SDM.
- MSR_IVY_BRIDGE_MC13_MISC is defined as MSR_MC13_MISC in SDM.
- MSR_IVY_BRIDGE_MC14_MISC is defined as MSR_MC14_MISC in SDM.
- MSR_IVY_BRIDGE_MC15_MISC is defined as MSR_MC15_MISC in SDM.
- MSR_IVY_BRIDGE_MC16_MISC is defined as MSR_MC16_MISC in SDM.
- MSR_IVY_BRIDGE_MC17_MISC is defined as MSR_MC17_MISC in SDM.
- MSR_IVY_BRIDGE_MC18_MISC is defined as MSR_MC18_MISC in SDM.
- MSR_IVY_BRIDGE_MC19_MISC is defined as MSR_MC19_MISC in SDM.
- MSR_IVY_BRIDGE_MC20_MISC is defined as MSR_MC20_MISC in SDM.
- MSR_IVY_BRIDGE_MC21_MISC is defined as MSR_MC21_MISC in SDM.
- MSR_IVY_BRIDGE_MC22_MISC is defined as MSR_MC22_MISC in SDM.
- MSR_IVY_BRIDGE_MC23_MISC is defined as MSR_MC23_MISC in SDM.
- MSR_IVY_BRIDGE_MC24_MISC is defined as MSR_MC24_MISC in SDM.
- MSR_IVY_BRIDGE_MC25_MISC is defined as MSR_MC25_MISC in SDM.
- MSR_IVY_BRIDGE_MC26_MISC is defined as MSR_MC26_MISC in SDM.
- MSR_IVY_BRIDGE_MC27_MISC is defined as MSR_MC27_MISC in SDM.
- MSR_IVY_BRIDGE_MC28_MISC is defined as MSR_MC28_MISC in SDM.
- MSR_IVY_BRIDGE_MC29_MISC is defined as MSR_MC29_MISC in SDM.
- MSR_IVY_BRIDGE_MC30_MISC is defined as MSR_MC30_MISC in SDM.
- MSR_IVY_BRIDGE_MC31_MISC is defined as MSR_MC31_MISC in SDM.
+ @note MSR_IVY_BRIDGE_IA32_MC29_ADDR is defined as IA32_MC29_ADDR in SDM.
+ MSR_IVY_BRIDGE_IA32_MC30_ADDR is defined as IA32_MC30_ADDR in SDM.
+ MSR_IVY_BRIDGE_IA32_MC31_ADDR is defined as IA32_MC31_ADDR in SDM.
@{
**/
-#define MSR_IVY_BRIDGE_MC5_MISC 0x00000417
-#define MSR_IVY_BRIDGE_MC6_MISC 0x0000041B
-#define MSR_IVY_BRIDGE_MC7_MISC 0x0000041F
-#define MSR_IVY_BRIDGE_MC8_MISC 0x00000423
-#define MSR_IVY_BRIDGE_MC9_MISC 0x00000427
-#define MSR_IVY_BRIDGE_MC10_MISC 0x0000042B
-#define MSR_IVY_BRIDGE_MC11_MISC 0x0000042F
-#define MSR_IVY_BRIDGE_MC12_MISC 0x00000433
-#define MSR_IVY_BRIDGE_MC13_MISC 0x00000437
-#define MSR_IVY_BRIDGE_MC14_MISC 0x0000043B
-#define MSR_IVY_BRIDGE_MC15_MISC 0x0000043F
-#define MSR_IVY_BRIDGE_MC16_MISC 0x00000443
-#define MSR_IVY_BRIDGE_MC17_MISC 0x00000447
-#define MSR_IVY_BRIDGE_MC18_MISC 0x0000044B
-#define MSR_IVY_BRIDGE_MC19_MISC 0x0000044F
-#define MSR_IVY_BRIDGE_MC20_MISC 0x00000453
-#define MSR_IVY_BRIDGE_MC21_MISC 0x00000457
-#define MSR_IVY_BRIDGE_MC22_MISC 0x0000045B
-#define MSR_IVY_BRIDGE_MC23_MISC 0x0000045F
-#define MSR_IVY_BRIDGE_MC24_MISC 0x00000463
-#define MSR_IVY_BRIDGE_MC25_MISC 0x00000467
-#define MSR_IVY_BRIDGE_MC26_MISC 0x0000046B
-#define MSR_IVY_BRIDGE_MC27_MISC 0x0000046F
-#define MSR_IVY_BRIDGE_MC28_MISC 0x00000473
-#define MSR_IVY_BRIDGE_MC29_MISC 0x00000477
-#define MSR_IVY_BRIDGE_MC30_MISC 0x0000047B
-#define MSR_IVY_BRIDGE_MC31_MISC 0x0000047F
+#define MSR_IVY_BRIDGE_IA32_MC29_ADDR 0x00000476
+#define MSR_IVY_BRIDGE_IA32_MC30_ADDR 0x0000047A
+#define MSR_IVY_BRIDGE_IA32_MC31_ADDR 0x0000047E
/// @}
/**
- Package. Misc MAC information of Integrated I/O. (R/O) see Section 15.3.2.4.
+ Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
+ 15.3.2.4, "IA32_MCi_MISC MSRs.".
- @param ECX MSR_IVY_BRIDGE_IA32_MC6_MISC (0x0000041B)
+ Bank MC29 through MC31 reports MC error from a specific CBo (core broadcast)
+ and its corresponding slice of L3.
+
+ @param ECX MSR_IVY_BRIDGE_IA32_MCi_MISC
@param EAX Lower 32-bits of MSR value.
- Described by the type MSR_IVY_BRIDGE_IA32_MC6_MISC_REGISTER.
@param EDX Upper 32-bits of MSR value.
- Described by the type MSR_IVY_BRIDGE_IA32_MC6_MISC_REGISTER.
<b>Example usage</b>
@code
- MSR_IVY_BRIDGE_IA32_MC6_MISC_REGISTER Msr;
+ UINT64 Msr;
- Msr.Uint64 = AsmReadMsr64 (MSR_IVY_BRIDGE_IA32_MC6_MISC);
+ Msr = AsmReadMsr64 (MSR_IVY_BRIDGE_IA32_MC29_MISC);
+ AsmWriteMsr64 (MSR_IVY_BRIDGE_IA32_MC29_MISC, Msr);
@endcode
- @note MSR_IVY_BRIDGE_IA32_MC6_MISC is defined as IA32_MC6_MISC in SDM.
-**/
-#define MSR_IVY_BRIDGE_IA32_MC6_MISC 0x0000041B
-
-/**
- MSR information returned for MSR index #MSR_IVY_BRIDGE_IA32_MC6_MISC
+ @note MSR_IVY_BRIDGE_IA32_MC29_MISC is defined as IA32_MC29_MISC in SDM.
+ MSR_IVY_BRIDGE_IA32_MC30_MISC is defined as IA32_MC30_MISC in SDM.
+ MSR_IVY_BRIDGE_IA32_MC31_MISC is defined as IA32_MC31_MISC in SDM.
+ @{
**/
-typedef union {
- ///
- /// Individual bit fields
- ///
- struct {
- ///
- /// [Bits 5:0] Recoverable Address LSB.
- ///
- UINT32 RecoverableAddressLSB:6;
- ///
- /// [Bits 8:6] Address Mode.
- ///
- UINT32 AddressMode:3;
- UINT32 Reserved1:7;
- ///
- /// [Bits 31:16] PCI Express Requestor ID.
- ///
- UINT32 PCIExpressRequestorID:16;
- ///
- /// [Bits 39:32] PCI Express Segment Number.
- ///
- UINT32 PCIExpressSegmentNumber:8;
- UINT32 Reserved2:24;
- } Bits;
- ///
- /// All bit fields as a 64-bit value
- ///
- UINT64 Uint64;
-} MSR_IVY_BRIDGE_IA32_MC6_MISC_REGISTER;
+#define MSR_IVY_BRIDGE_IA32_MC29_MISC 0x00000477
+#define MSR_IVY_BRIDGE_IA32_MC30_MISC 0x0000047B
+#define MSR_IVY_BRIDGE_IA32_MC31_MISC 0x0000047F
+/// @}
/**
@@ -1267,7 +1095,7 @@ typedef union {
/**
- Thread. See Section 18.7.1.1, "Precise Event Based Sampling (PEBS).".
+ Thread. See Section 18.8.1.1, "Precise Event Based Sampling (PEBS).".
@param ECX MSR_IVY_BRIDGE_PEBS_ENABLE (0x000003F1)
@param EAX Lower 32-bits of MSR value.
diff --git a/UefiCpuPkg/Include/Register/Msr/NehalemMsr.h b/UefiCpuPkg/Include/Register/Msr/NehalemMsr.h
index 6f3d4f4..20e60df 100644
--- a/UefiCpuPkg/Include/Register/Msr/NehalemMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/NehalemMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-5.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.6.
**/
@@ -254,7 +254,23 @@ typedef union {
/// auto-demote information.
///
UINT32 C1AutoDemotion:1;
- UINT32 Reserved4:5;
+ ///
+ /// [Bit 27] Enable C3 Undemotion (R/W).
+ ///
+ UINT32 C3Undemotion:1;
+ ///
+ /// [Bit 28] Enable C1 Undemotion (R/W).
+ ///
+ UINT32 C1Undemotion:1;
+ ///
+ /// [Bit 29] Package C State Demotion Enable (R/W).
+ ///
+ UINT32 CStateDemotion:1;
+ ///
+ /// [Bit 30] Package C State UnDemotion Enable (R/W).
+ ///
+ UINT32 CStateUndemotion:1;
+ UINT32 Reserved4:1;
UINT32 Reserved5:32;
} Bits;
///
@@ -364,7 +380,7 @@ typedef union {
UINT32 Reserved1:2;
///
/// [Bit 3] Thread. Automatic Thermal Control Circuit Enable (R/W) See
- /// Table 35-2.
+ /// Table 35-2. Default value is 1.
///
UINT32 AutomaticThermalControlCircuit:1;
UINT32 Reserved2:3;
@@ -378,7 +394,7 @@ typedef union {
///
UINT32 BTS:1;
///
- /// [Bit 12] Thread. Precise Event Based Sampling Unavailable (RO) See
+ /// [Bit 12] Thread. Processor Event Based Sampling Unavailable (RO) See
/// Table 35-2.
///
UINT32 PEBS:1;
@@ -744,7 +760,7 @@ typedef union {
/**
Core. Last Branch Record Filtering Select Register (R/W) See Section
- 17.6.2, "Filtering of Last Branch Records.".
+ 17.7.2, "Filtering of Last Branch Records.".
@param ECX MSR_NEHALEM_LBR_SELECT (0x000001C8)
@param EAX Lower 32-bits of MSR value.
@@ -933,46 +949,26 @@ typedef union {
/**
- Thread. See Table 35-2. See Section 18.4.2, "Global Counter Control
- Facilities.".
-
- @param ECX MSR_NEHALEM_IA32_PERF_GLOBAL_STAUS (0x0000038E)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_NEHALEM_IA32_PERF_GLOBAL_STAUS);
- AsmWriteMsr64 (MSR_NEHALEM_IA32_PERF_GLOBAL_STAUS, Msr);
- @endcode
- @note MSR_NEHALEM_IA32_PERF_GLOBAL_STAUS is defined as IA32_PERF_GLOBAL_STAUS in SDM.
-**/
-#define MSR_NEHALEM_IA32_PERF_GLOBAL_STAUS 0x0000038E
-
-
-/**
Thread. (RO).
- @param ECX MSR_NEHALEM_PERF_GLOBAL_STAUS (0x0000038E)
+ @param ECX MSR_NEHALEM_PERF_GLOBAL_STATUS (0x0000038E)
@param EAX Lower 32-bits of MSR value.
- Described by the type MSR_NEHALEM_PERF_GLOBAL_STAUS_REGISTER.
+ Described by the type MSR_NEHALEM_PERF_GLOBAL_STATUS_REGISTER.
@param EDX Upper 32-bits of MSR value.
- Described by the type MSR_NEHALEM_PERF_GLOBAL_STAUS_REGISTER.
+ Described by the type MSR_NEHALEM_PERF_GLOBAL_STATUS_REGISTER.
<b>Example usage</b>
@code
- MSR_NEHALEM_PERF_GLOBAL_STAUS_REGISTER Msr;
+ MSR_NEHALEM_PERF_GLOBAL_STATUS_REGISTER Msr;
- Msr.Uint64 = AsmReadMsr64 (MSR_NEHALEM_PERF_GLOBAL_STAUS);
+ Msr.Uint64 = AsmReadMsr64 (MSR_NEHALEM_PERF_GLOBAL_STATUS);
@endcode
- @note MSR_NEHALEM_PERF_GLOBAL_STAUS is defined as MSR_PERF_GLOBAL_STAUS in SDM.
+ @note MSR_NEHALEM_PERF_GLOBAL_STATUS is defined as MSR_PERF_GLOBAL_STATUS in SDM.
**/
-#define MSR_NEHALEM_PERF_GLOBAL_STAUS 0x0000038E
+#define MSR_NEHALEM_PERF_GLOBAL_STATUS 0x0000038E
/**
- MSR information returned for MSR index #MSR_NEHALEM_PERF_GLOBAL_STAUS
+ MSR information returned for MSR index #MSR_NEHALEM_PERF_GLOBAL_STATUS
**/
typedef union {
///
@@ -991,7 +987,7 @@ typedef union {
/// All bit fields as a 64-bit value
///
UINT64 Uint64;
-} MSR_NEHALEM_PERF_GLOBAL_STAUS_REGISTER;
+} MSR_NEHALEM_PERF_GLOBAL_STATUS_REGISTER;
/**
@@ -1038,7 +1034,7 @@ typedef union {
/**
- Thread. See Section 18.7.1.1, "Precise Event Based Sampling (PEBS).".
+ Thread. See Section 18.8.1.1, "Processor Event Based Sampling (PEBS).".
@param ECX MSR_NEHALEM_PEBS_ENABLE (0x000003F1)
@param EAX Lower 32-bits of MSR value.
@@ -1108,7 +1104,7 @@ typedef union {
/**
- Thread. See Section 18.7.1.2, "Load Latency Performance Monitoring
+ Thread. See Section 18.8.1.2, "Load Latency Performance Monitoring
Facility.".
@param ECX MSR_NEHALEM_PEBS_LD_LAT (0x000003F6)
@@ -1266,256 +1262,11 @@ typedef union {
/**
- See Section 15.3.2.4, "IA32_MCi_MISC MSRs.".
-
- @param ECX MSR_NEHALEM_MCi_MISC
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_NEHALEM_MC0_MISC);
- AsmWriteMsr64 (MSR_NEHALEM_MC0_MISC, Msr);
- @endcode
- @note MSR_NEHALEM_MC0_MISC is defined as MSR_MC0_MISC in SDM.
- MSR_NEHALEM_MC1_MISC is defined as MSR_MC1_MISC in SDM.
- MSR_NEHALEM_MC2_MISC is defined as MSR_MC2_MISC in SDM.
- MSR_NEHALEM_MC3_MISC is defined as MSR_MC3_MISC in SDM.
- MSR_NEHALEM_MC4_MISC is defined as MSR_MC4_MISC in SDM.
- MSR_NEHALEM_MC5_MISC is defined as MSR_MC5_MISC in SDM.
- MSR_NEHALEM_MC6_MISC is defined as MSR_MC6_MISC in SDM.
- MSR_NEHALEM_MC7_MISC is defined as MSR_MC7_MISC in SDM.
- MSR_NEHALEM_MC8_MISC is defined as MSR_MC8_MISC in SDM.
- MSR_NEHALEM_MC9_MISC is defined as MSR_MC9_MISC in SDM.
- MSR_NEHALEM_MC10_MISC is defined as MSR_MC10_MISC in SDM.
- MSR_NEHALEM_MC11_MISC is defined as MSR_MC11_MISC in SDM.
- MSR_NEHALEM_MC12_MISC is defined as MSR_MC12_MISC in SDM.
- MSR_NEHALEM_MC13_MISC is defined as MSR_MC13_MISC in SDM.
- MSR_NEHALEM_MC14_MISC is defined as MSR_MC14_MISC in SDM.
- MSR_NEHALEM_MC15_MISC is defined as MSR_MC15_MISC in SDM.
- MSR_NEHALEM_MC16_MISC is defined as MSR_MC16_MISC in SDM.
- MSR_NEHALEM_MC17_MISC is defined as MSR_MC17_MISC in SDM.
- MSR_NEHALEM_MC18_MISC is defined as MSR_MC18_MISC in SDM.
- MSR_NEHALEM_MC19_MISC is defined as MSR_MC19_MISC in SDM.
- MSR_NEHALEM_MC20_MISC is defined as MSR_MC20_MISC in SDM.
- MSR_NEHALEM_MC21_MISC is defined as MSR_MC21_MISC in SDM.
- @{
-**/
-#define MSR_NEHALEM_MC0_MISC 0x00000403
-#define MSR_NEHALEM_MC1_MISC 0x00000407
-#define MSR_NEHALEM_MC2_MISC 0x0000040B
-#define MSR_NEHALEM_MC3_MISC 0x0000040F
-#define MSR_NEHALEM_MC4_MISC 0x00000413
-#define MSR_NEHALEM_MC5_MISC 0x00000417
-#define MSR_NEHALEM_MC6_MISC 0x0000041B
-#define MSR_NEHALEM_MC7_MISC 0x0000041F
-#define MSR_NEHALEM_MC8_MISC 0x00000423
-#define MSR_NEHALEM_MC9_MISC 0x00000427
-#define MSR_NEHALEM_MC10_MISC 0x0000042B
-#define MSR_NEHALEM_MC11_MISC 0x0000042F
-#define MSR_NEHALEM_MC12_MISC 0x00000433
-#define MSR_NEHALEM_MC13_MISC 0x00000437
-#define MSR_NEHALEM_MC14_MISC 0x0000043B
-#define MSR_NEHALEM_MC15_MISC 0x0000043F
-#define MSR_NEHALEM_MC16_MISC 0x00000443
-#define MSR_NEHALEM_MC17_MISC 0x00000447
-#define MSR_NEHALEM_MC18_MISC 0x0000044B
-#define MSR_NEHALEM_MC19_MISC 0x0000044F
-#define MSR_NEHALEM_MC20_MISC 0x00000453
-#define MSR_NEHALEM_MC21_MISC 0x00000457
-/// @}
-
-
-/**
- See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
-
- @param ECX MSR_NEHALEM_MCi_CTL
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_NEHALEM_MC3_CTL);
- AsmWriteMsr64 (MSR_NEHALEM_MC3_CTL, Msr);
- @endcode
- @note MSR_NEHALEM_MC3_CTL is defined as MSR_MC3_CTL in SDM.
- MSR_NEHALEM_MC4_CTL is defined as MSR_MC4_CTL in SDM.
- MSR_NEHALEM_MC5_CTL is defined as MSR_MC5_CTL in SDM.
- MSR_NEHALEM_MC6_CTL is defined as MSR_MC6_CTL in SDM.
- MSR_NEHALEM_MC7_CTL is defined as MSR_MC7_CTL in SDM.
- MSR_NEHALEM_MC8_CTL is defined as MSR_MC8_CTL in SDM.
- MSR_NEHALEM_MC9_CTL is defined as MSR_MC9_CTL in SDM.
- MSR_NEHALEM_MC10_CTL is defined as MSR_MC10_CTL in SDM.
- MSR_NEHALEM_MC11_CTL is defined as MSR_MC11_CTL in SDM.
- MSR_NEHALEM_MC12_CTL is defined as MSR_MC12_CTL in SDM.
- MSR_NEHALEM_MC13_CTL is defined as MSR_MC13_CTL in SDM.
- MSR_NEHALEM_MC14_CTL is defined as MSR_MC14_CTL in SDM.
- MSR_NEHALEM_MC15_CTL is defined as MSR_MC15_CTL in SDM.
- MSR_NEHALEM_MC16_CTL is defined as MSR_MC16_CTL in SDM.
- MSR_NEHALEM_MC17_CTL is defined as MSR_MC17_CTL in SDM.
- MSR_NEHALEM_MC18_CTL is defined as MSR_MC18_CTL in SDM.
- MSR_NEHALEM_MC19_CTL is defined as MSR_MC19_CTL in SDM.
- MSR_NEHALEM_MC20_CTL is defined as MSR_MC20_CTL in SDM.
- MSR_NEHALEM_MC21_CTL is defined as MSR_MC21_CTL in SDM.
- @{
-**/
-#define MSR_NEHALEM_MC3_CTL 0x0000040C
-#define MSR_NEHALEM_MC4_CTL 0x00000410
-#define MSR_NEHALEM_MC5_CTL 0x00000414
-#define MSR_NEHALEM_MC6_CTL 0x00000418
-#define MSR_NEHALEM_MC7_CTL 0x0000041C
-#define MSR_NEHALEM_MC8_CTL 0x00000420
-#define MSR_NEHALEM_MC9_CTL 0x00000424
-#define MSR_NEHALEM_MC10_CTL 0x00000428
-#define MSR_NEHALEM_MC11_CTL 0x0000042C
-#define MSR_NEHALEM_MC12_CTL 0x00000430
-#define MSR_NEHALEM_MC13_CTL 0x00000434
-#define MSR_NEHALEM_MC14_CTL 0x00000438
-#define MSR_NEHALEM_MC15_CTL 0x0000043C
-#define MSR_NEHALEM_MC16_CTL 0x00000440
-#define MSR_NEHALEM_MC17_CTL 0x00000444
-#define MSR_NEHALEM_MC18_CTL 0x00000448
-#define MSR_NEHALEM_MC19_CTL 0x0000044C
-#define MSR_NEHALEM_MC20_CTL 0x00000450
-#define MSR_NEHALEM_MC21_CTL 0x00000454
-/// @}
-
-
-/**
- See Section 15.3.2.2, "IA32_MCi_STATUS MSRS," and Chapter 16.
-
- @param ECX MSR_NEHALEM_MCi_STATUS (0x0000040D)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_NEHALEM_MC3_STATUS);
- AsmWriteMsr64 (MSR_NEHALEM_MC3_STATUS, Msr);
- @endcode
- @note MSR_NEHALEM_MC3_STATUS is defined as MSR_MC3_STATUS in SDM.
- MSR_NEHALEM_MC4_STATUS is defined as MSR_MC4_STATUS in SDM.
- MSR_NEHALEM_MC5_STATUS is defined as MSR_MC5_STATUS in SDM.
- MSR_NEHALEM_MC6_STATUS is defined as MSR_MC6_STATUS in SDM.
- MSR_NEHALEM_MC7_STATUS is defined as MSR_MC7_STATUS in SDM.
- MSR_NEHALEM_MC8_STATUS is defined as MSR_MC8_STATUS in SDM.
- MSR_NEHALEM_MC9_STATUS is defined as MSR_MC9_STATUS in SDM.
- MSR_NEHALEM_MC10_STATUS is defined as MSR_MC10_STATUS in SDM.
- MSR_NEHALEM_MC11_STATUS is defined as MSR_MC11_STATUS in SDM.
- MSR_NEHALEM_MC12_STATUS is defined as MSR_MC12_STATUS in SDM.
- MSR_NEHALEM_MC13_STATUS is defined as MSR_MC13_STATUS in SDM.
- MSR_NEHALEM_MC14_STATUS is defined as MSR_MC14_STATUS in SDM.
- MSR_NEHALEM_MC15_STATUS is defined as MSR_MC15_STATUS in SDM.
- MSR_NEHALEM_MC16_STATUS is defined as MSR_MC16_STATUS in SDM.
- MSR_NEHALEM_MC17_STATUS is defined as MSR_MC17_STATUS in SDM.
- MSR_NEHALEM_MC18_STATUS is defined as MSR_MC18_STATUS in SDM.
- MSR_NEHALEM_MC19_STATUS is defined as MSR_MC19_STATUS in SDM.
- MSR_NEHALEM_MC20_STATUS is defined as MSR_MC20_STATUS in SDM.
- MSR_NEHALEM_MC21_STATUS is defined as MSR_MC21_STATUS in SDM.
- @{
-**/
-#define MSR_NEHALEM_MC3_STATUS 0x0000040D
-#define MSR_NEHALEM_MC4_STATUS 0x00000411
-#define MSR_NEHALEM_MC5_STATUS 0x00000415
-#define MSR_NEHALEM_MC6_STATUS 0x00000419
-#define MSR_NEHALEM_MC7_STATUS 0x0000041D
-#define MSR_NEHALEM_MC8_STATUS 0x00000421
-#define MSR_NEHALEM_MC9_STATUS 0x00000425
-#define MSR_NEHALEM_MC10_STATUS 0x00000429
-#define MSR_NEHALEM_MC11_STATUS 0x0000042D
-#define MSR_NEHALEM_MC12_STATUS 0x00000431
-#define MSR_NEHALEM_MC13_STATUS 0x00000435
-#define MSR_NEHALEM_MC14_STATUS 0x00000439
-#define MSR_NEHALEM_MC15_STATUS 0x0000043D
-#define MSR_NEHALEM_MC16_STATUS 0x00000441
-#define MSR_NEHALEM_MC17_STATUS 0x00000445
-#define MSR_NEHALEM_MC18_STATUS 0x00000449
-#define MSR_NEHALEM_MC19_STATUS 0x0000044D
-#define MSR_NEHALEM_MC20_STATUS 0x00000451
-#define MSR_NEHALEM_MC21_STATUS 0x00000455
-/// @}
-
-
-/**
- Core. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs."
-
- The MSR_MC3_ADDR register is either not implemented or contains no address
- if the ADDRV flag in the MSR_MC3_STATUS register is clear. When not
- implemented in the processor, all reads and writes to this MSR will cause a
- general-protection exception.
-
- The MSR_MC4_ADDR register is either not implemented or contains no address
- if the ADDRV flag in the MSR_MC4_STATUS register is clear. When not
- implemented in the processor, all reads and writes to this MSR will cause a
- general-protection exception.
-
- @param ECX MSR_NEHALEM_MC3_ADDR (0x0000040E)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_NEHALEM_MC3_ADDR);
- AsmWriteMsr64 (MSR_NEHALEM_MC3_ADDR, Msr);
- @endcode
- @note MSR_NEHALEM_MC3_ADDR is defined as MSR_MC3_ADDR in SDM.
- MSR_NEHALEM_MC4_ADDR is defined as MSR_MC4_ADDR in SDM.
- MSR_NEHALEM_MC5_ADDR is defined as MSR_MC5_ADDR in SDM.
- MSR_NEHALEM_MC6_ADDR is defined as MSR_MC6_ADDR in SDM.
- MSR_NEHALEM_MC7_ADDR is defined as MSR_MC7_ADDR in SDM.
- MSR_NEHALEM_MC8_ADDR is defined as MSR_MC8_ADDR in SDM.
- MSR_NEHALEM_MC9_ADDR is defined as MSR_MC9_ADDR in SDM.
- MSR_NEHALEM_MC10_ADDR is defined as MSR_MC10_ADDR in SDM.
- MSR_NEHALEM_MC11_ADDR is defined as MSR_MC11_ADDR in SDM.
- MSR_NEHALEM_MC12_ADDR is defined as MSR_MC12_ADDR in SDM.
- MSR_NEHALEM_MC13_ADDR is defined as MSR_MC13_ADDR in SDM.
- MSR_NEHALEM_MC14_ADDR is defined as MSR_MC14_ADDR in SDM.
- MSR_NEHALEM_MC15_ADDR is defined as MSR_MC15_ADDR in SDM.
- MSR_NEHALEM_MC16_ADDR is defined as MSR_MC16_ADDR in SDM.
- MSR_NEHALEM_MC17_ADDR is defined as MSR_MC17_ADDR in SDM.
- MSR_NEHALEM_MC18_ADDR is defined as MSR_MC18_ADDR in SDM.
- MSR_NEHALEM_MC19_ADDR is defined as MSR_MC19_ADDR in SDM.
- MSR_NEHALEM_MC20_ADDR is defined as MSR_MC20_ADDR in SDM.
- MSR_NEHALEM_MC21_ADDR is defined as MSR_MC21_ADDR in SDM.
- @{
-**/
-#define MSR_NEHALEM_MC3_ADDR 0x0000040E
-#define MSR_NEHALEM_MC4_ADDR 0x00000412
-#define MSR_NEHALEM_MC5_ADDR 0x00000416
-#define MSR_NEHALEM_MC6_ADDR 0x0000041A
-#define MSR_NEHALEM_MC7_ADDR 0x0000041E
-#define MSR_NEHALEM_MC8_ADDR 0x00000422
-#define MSR_NEHALEM_MC9_ADDR 0x00000426
-#define MSR_NEHALEM_MC10_ADDR 0x0000042A
-#define MSR_NEHALEM_MC11_ADDR 0x0000042E
-#define MSR_NEHALEM_MC12_ADDR 0x00000432
-#define MSR_NEHALEM_MC13_ADDR 0x00000436
-#define MSR_NEHALEM_MC14_ADDR 0x0000043A
-#define MSR_NEHALEM_MC15_ADDR 0x0000043E
-#define MSR_NEHALEM_MC16_ADDR 0x00000442
-#define MSR_NEHALEM_MC17_ADDR 0x00000446
-#define MSR_NEHALEM_MC18_ADDR 0x0000044A
-#define MSR_NEHALEM_MC19_ADDR 0x0000044E
-#define MSR_NEHALEM_MC20_ADDR 0x00000452
-#define MSR_NEHALEM_MC21_ADDR 0x00000456
-/// @}
-
-
-/**
Thread. Last Branch Record n From IP (R/W) One of sixteen pairs of last
- branch record registers on the last branch record stack. This part of the
- stack contains pointers to the source instruction for one of the last
- sixteen branches, exceptions, or interrupts taken by the processor. See
- also: - Last Branch Record Stack TOS at 1C9H - Section 17.6.1, "LBR
- Stack.".
+ branch record registers on the last branch record stack. The From_IP part of
+ the stack contains pointers to the source instruction. See also: - Last
+ Branch Record Stack TOS at 1C9H - Section 17.7.1 and record format in
+ Section 17.4.8.1.
@param ECX MSR_NEHALEM_LASTBRANCH_n_FROM_IP
@param EAX Lower 32-bits of MSR value.
@@ -1568,8 +1319,7 @@ typedef union {
/**
Thread. Last Branch Record n To IP (R/W) One of sixteen pairs of last branch
record registers on the last branch record stack. This part of the stack
- contains pointers to the destination instruction for one of the last sixteen
- branches, exceptions, or interrupts taken by the processor.
+ contains pointers to the destination instruction.
@param ECX MSR_NEHALEM_LASTBRANCH_n_TO_IP
@param EAX Lower 32-bits of MSR value.
@@ -1694,7 +1444,7 @@ typedef union {
/**
- Package. See Section 18.7.2.1, "Uncore Performance Monitoring Management
+ Package. See Section 18.8.2.1, "Uncore Performance Monitoring Management
Facility.".
@param ECX MSR_NEHALEM_UNCORE_PERF_GLOBAL_CTRL (0x00000391)
@@ -1714,7 +1464,7 @@ typedef union {
/**
- Package. See Section 18.7.2.1, "Uncore Performance Monitoring Management
+ Package. See Section 18.8.2.1, "Uncore Performance Monitoring Management
Facility.".
@param ECX MSR_NEHALEM_UNCORE_PERF_GLOBAL_STATUS (0x00000392)
@@ -1734,7 +1484,7 @@ typedef union {
/**
- Package. See Section 18.7.2.1, "Uncore Performance Monitoring Management
+ Package. See Section 18.8.2.1, "Uncore Performance Monitoring Management
Facility.".
@param ECX MSR_NEHALEM_UNCORE_PERF_GLOBAL_OVF_CTRL (0x00000393)
@@ -1754,7 +1504,7 @@ typedef union {
/**
- Package. See Section 18.7.2.1, "Uncore Performance Monitoring Management
+ Package. See Section 18.8.2.1, "Uncore Performance Monitoring Management
Facility.".
@param ECX MSR_NEHALEM_UNCORE_FIXED_CTR0 (0x00000394)
@@ -1774,7 +1524,7 @@ typedef union {
/**
- Package. See Section 18.7.2.1, "Uncore Performance Monitoring Management
+ Package. See Section 18.8.2.1, "Uncore Performance Monitoring Management
Facility.".
@param ECX MSR_NEHALEM_UNCORE_FIXED_CTR_CTRL (0x00000395)
@@ -1794,7 +1544,7 @@ typedef union {
/**
- Package. See Section 18.7.2.3, "Uncore Address/Opcode Match MSR.".
+ Package. See Section 18.8.2.3, "Uncore Address/Opcode Match MSR.".
@param ECX MSR_NEHALEM_UNCORE_ADDR_OPCODE_MATCH (0x00000396)
@param EAX Lower 32-bits of MSR value.
@@ -1813,7 +1563,7 @@ typedef union {
/**
- Package. See Section 18.7.2.2, "Uncore Performance Event Configuration
+ Package. See Section 18.8.2.2, "Uncore Performance Event Configuration
Facility.".
@param ECX MSR_NEHALEM_UNCORE_PMCi
@@ -1848,7 +1598,7 @@ typedef union {
/// @}
/**
- Package. See Section 18.7.2.2, "Uncore Performance Event Configuration
+ Package. See Section 18.8.2.2, "Uncore Performance Event Configuration
Facility.".
@param ECX MSR_NEHALEM_UNCORE_PERFEVTSELi
diff --git a/UefiCpuPkg/Include/Register/Msr/P6Msr.h b/UefiCpuPkg/Include/Register/Msr/P6Msr.h
index a196330..ef90800 100644
--- a/UefiCpuPkg/Include/Register/Msr/P6Msr.h
+++ b/UefiCpuPkg/Include/Register/Msr/P6Msr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-19.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.21.
**/
@@ -27,7 +27,7 @@
#include <Register/ArchitecturalMsr.h>
/**
- See Section 35.20, "MSRs in Pentium Processors.".
+ See Section 35.22, "MSRs in Pentium Processors.".
@param ECX MSR_P6_P5_MC_ADDR (0x00000000)
@param EAX Lower 32-bits of MSR value.
@@ -46,7 +46,7 @@
/**
- See Section 35.20, "MSRs in Pentium Processors.".
+ See Section 35.22, "MSRs in Pentium Processors.".
@param ECX MSR_P6_P5_MC_TYPE (0x00000001)
@param EAX Lower 32-bits of MSR value.
diff --git a/UefiCpuPkg/Include/Register/Msr/Pentium4Msr.h b/UefiCpuPkg/Include/Register/Msr/Pentium4Msr.h
index 306857f..6cf68b2 100644
--- a/UefiCpuPkg/Include/Register/Msr/Pentium4Msr.h
+++ b/UefiCpuPkg/Include/Register/Msr/Pentium4Msr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-16.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.18.
**/
@@ -927,8 +927,8 @@ typedef union {
///
UINT32 BTS:1;
///
- /// [Bit 12] PEBS_UNAVILABLE: Precise Event Based Sampling Unavailable (R)
- /// See Table 35-2. When set, the processor does not support precise
+ /// [Bit 12] PEBS_UNAVILABLE: Processor Event Based Sampling Unavailable
+ /// (R) See Table 35-2. When set, the processor does not support processor
/// event-based sampling (PEBS); when clear, PEBS is supported.
///
UINT32 PEBS:1;
@@ -1053,7 +1053,7 @@ typedef union {
0, 1, 2, 3, 4, 6. Unique. Last Exception Record From Linear IP (R) Contains
a pointer to the last branch instruction that the processor executed prior
to the last exception that was generated or the last interrupt that was
- handled. See Section 17.10.3, "Last Exception Records.". Unique. From Linear
+ handled. See Section 17.11.3, "Last Exception Records.". Unique. From Linear
IP Linear address of the last branch instruction (If IA32e mode is active).
From Linear IP Linear address of the last branch instruction. Reserved.
@@ -1076,7 +1076,7 @@ typedef union {
0, 1, 2, 3, 4, 6. Unique. Last Exception Record To Linear IP (R) This area
contains a pointer to the target of the last branch instruction that the
processor executed prior to the last exception that was generated or the
- last interrupt that was handled. See Section 17.10.3, "Last Exception
+ last interrupt that was handled. See Section 17.11.3, "Last Exception
Records.". Unique. From Linear IP Linear address of the target of the last
branch instruction (If IA-32e mode is active). From Linear IP Linear address
of the target of the last branch instruction. Reserved.
@@ -1099,7 +1099,7 @@ typedef union {
/**
0, 1, 2, 3, 4, 6. Unique. Debug Control (R/W) Controls how several debug
features are used. Bit definitions are discussed in the referenced section.
- See Section 17.10.1, "MSR_DEBUGCTLA MSR.".
+ See Section 17.11.1, "MSR_DEBUGCTLA MSR.".
@param ECX MSR_PENTIUM_4_DEBUGCTLA (0x000001D9)
@param EAX Lower 32-bits of MSR value.
@@ -1121,7 +1121,7 @@ typedef union {
0, 1, 2, 3, 4, 6. Unique. Last Branch Record Stack TOS (R/W) Contains an
index (0-3 or 0-15) that points to the top of the last branch record stack
(that is, that points the index of the MSR containing the most recent branch
- record). See Section 17.10.2, "LBR Stack for Processors Based on Intel
+ record). See Section 17.11.2, "LBR Stack for Processors Based on Intel
NetBurst(R) Microarchitecture"; and addresses 1DBH-1DEH and 680H-68FH.
@param ECX MSR_PENTIUM_4_LASTBRANCH_TOS (0x000001DA)
@@ -1147,7 +1147,7 @@ typedef union {
exceptions, or interrupts that the processor took. MSR_LASTBRANCH_0 through
MSR_LASTBRANCH_3 at 1DBH-1DEH are available only on family 0FH, models
0H-02H. They have been replaced by the MSRs at 680H68FH and 6C0H-6CFH. See
- Section 17.9, "Last Branch, Call Stack, Interrupt, and Exception Recording
+ Section 17.10, "Last Branch, Call Stack, Interrupt, and Exception Recording
for Processors based on Skylake Microarchitecture.".
@param ECX MSR_PENTIUM_4_LASTBRANCH_n
@@ -1175,7 +1175,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.2, "Performance Counters.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.2, "Performance Counters.".
@param ECX MSR_PENTIUM_4_BPU_COUNTERn
@param EAX Lower 32-bits of MSR value.
@@ -1202,7 +1202,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.2, "Performance Counters.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.2, "Performance Counters.".
@param ECX MSR_PENTIUM_4_MS_COUNTERn
@param EAX Lower 32-bits of MSR value.
@@ -1229,7 +1229,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.2, "Performance Counters.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.2, "Performance Counters.".
@param ECX MSR_PENTIUM_4_FLAME_COUNTERn (0x00000308)
@param EAX Lower 32-bits of MSR value.
@@ -1256,7 +1256,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.2, "Performance Counters.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.2, "Performance Counters.".
@param ECX MSR_PENTIUM_4_IQ_COUNTERn
@param EAX Lower 32-bits of MSR value.
@@ -1287,7 +1287,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.3, "CCCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.3, "CCCR MSRs.".
@param ECX MSR_PENTIUM_4_BPU_CCCRn
@param EAX Lower 32-bits of MSR value.
@@ -1314,7 +1314,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.3, "CCCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.3, "CCCR MSRs.".
@param ECX MSR_PENTIUM_4_MS_CCCRn
@param EAX Lower 32-bits of MSR value.
@@ -1341,7 +1341,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.3, "CCCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.3, "CCCR MSRs.".
@param ECX MSR_PENTIUM_4_FLAME_CCCRn
@param EAX Lower 32-bits of MSR value.
@@ -1368,7 +1368,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.3, "CCCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.3, "CCCR MSRs.".
@param ECX MSR_PENTIUM_4_IQ_CCCRn
@param EAX Lower 32-bits of MSR value.
@@ -1399,7 +1399,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_BSU_ESCR0 (0x000003A0)
@param EAX Lower 32-bits of MSR value.
@@ -1418,7 +1418,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_BSU_ESCR1 (0x000003A1)
@param EAX Lower 32-bits of MSR value.
@@ -1437,7 +1437,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_FSB_ESCR0 (0x000003A2)
@param EAX Lower 32-bits of MSR value.
@@ -1456,7 +1456,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_FSB_ESCR1 (0x000003A3)
@param EAX Lower 32-bits of MSR value.
@@ -1475,7 +1475,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_FIRM_ESCR0 (0x000003A4)
@param EAX Lower 32-bits of MSR value.
@@ -1494,7 +1494,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_FIRM_ESCR1 (0x000003A5)
@param EAX Lower 32-bits of MSR value.
@@ -1513,7 +1513,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_FLAME_ESCR0 (0x000003A6)
@param EAX Lower 32-bits of MSR value.
@@ -1532,7 +1532,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_FLAME_ESCR1 (0x000003A7)
@param EAX Lower 32-bits of MSR value.
@@ -1551,7 +1551,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_DAC_ESCR0 (0x000003A8)
@param EAX Lower 32-bits of MSR value.
@@ -1570,7 +1570,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_DAC_ESCR1 (0x000003A9)
@param EAX Lower 32-bits of MSR value.
@@ -1589,7 +1589,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_MOB_ESCR0 (0x000003AA)
@param EAX Lower 32-bits of MSR value.
@@ -1608,7 +1608,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_MOB_ESCR1 (0x000003AB)
@param EAX Lower 32-bits of MSR value.
@@ -1627,7 +1627,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_PMH_ESCR0 (0x000003AC)
@param EAX Lower 32-bits of MSR value.
@@ -1646,7 +1646,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_PMH_ESCR1 (0x000003AD)
@param EAX Lower 32-bits of MSR value.
@@ -1665,7 +1665,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_SAAT_ESCR0 (0x000003AE)
@param EAX Lower 32-bits of MSR value.
@@ -1684,7 +1684,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_SAAT_ESCR1 (0x000003AF)
@param EAX Lower 32-bits of MSR value.
@@ -1703,7 +1703,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_U2L_ESCR0 (0x000003B0)
@param EAX Lower 32-bits of MSR value.
@@ -1722,7 +1722,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_U2L_ESCR1 (0x000003B1)
@param EAX Lower 32-bits of MSR value.
@@ -1741,7 +1741,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_BPU_ESCR0 (0x000003B2)
@param EAX Lower 32-bits of MSR value.
@@ -1760,7 +1760,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_BPU_ESCR1 (0x000003B3)
@param EAX Lower 32-bits of MSR value.
@@ -1779,7 +1779,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_IS_ESCR0 (0x000003B4)
@param EAX Lower 32-bits of MSR value.
@@ -1798,7 +1798,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_IS_ESCR1 (0x000003B5)
@param EAX Lower 32-bits of MSR value.
@@ -1817,7 +1817,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_ITLB_ESCR0 (0x000003B6)
@param EAX Lower 32-bits of MSR value.
@@ -1836,7 +1836,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_ITLB_ESCR1 (0x000003B7)
@param EAX Lower 32-bits of MSR value.
@@ -1855,7 +1855,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_CRU_ESCR0 (0x000003B8)
@param EAX Lower 32-bits of MSR value.
@@ -1874,7 +1874,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_CRU_ESCR1 (0x000003B9)
@param EAX Lower 32-bits of MSR value.
@@ -1893,7 +1893,7 @@ typedef union {
/**
- 0, 1, 2. Shared. See Section 18.12.1, "ESCR MSRs." This MSR is not available
+ 0, 1, 2. Shared. See Section 18.15.1, "ESCR MSRs." This MSR is not available
on later processors. It is only available on processor family 0FH, models
01H-02H.
@@ -1914,7 +1914,7 @@ typedef union {
/**
- 0, 1, 2. Shared. See Section 18.12.1, "ESCR MSRs." This MSR is not available
+ 0, 1, 2. Shared. See Section 18.15.1, "ESCR MSRs." This MSR is not available
on later processors. It is only available on processor family 0FH, models
01H-02H.
@@ -1935,7 +1935,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_RAT_ESCR0 (0x000003BC)
@param EAX Lower 32-bits of MSR value.
@@ -1954,7 +1954,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_RAT_ESCR1 (0x000003BD)
@param EAX Lower 32-bits of MSR value.
@@ -1973,7 +1973,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_SSU_ESCR0 (0x000003BE)
@param EAX Lower 32-bits of MSR value.
@@ -1992,7 +1992,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_MS_ESCR0 (0x000003C0)
@param EAX Lower 32-bits of MSR value.
@@ -2011,7 +2011,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_MS_ESCR1 (0x000003C1)
@param EAX Lower 32-bits of MSR value.
@@ -2030,7 +2030,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_TBPU_ESCR0 (0x000003C2)
@param EAX Lower 32-bits of MSR value.
@@ -2049,7 +2049,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_TBPU_ESCR1 (0x000003C3)
@param EAX Lower 32-bits of MSR value.
@@ -2068,7 +2068,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_TC_ESCR0 (0x000003C4)
@param EAX Lower 32-bits of MSR value.
@@ -2087,7 +2087,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_TC_ESCR1 (0x000003C5)
@param EAX Lower 32-bits of MSR value.
@@ -2106,7 +2106,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_IX_ESCR0 (0x000003C8)
@param EAX Lower 32-bits of MSR value.
@@ -2125,7 +2125,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_IX_ESCR1 (0x000003C9)
@param EAX Lower 32-bits of MSR value.
@@ -2144,7 +2144,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_ALF_ESCRn
@param EAX Lower 32-bits of MSR value.
@@ -2175,7 +2175,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Section 18.12.1, "ESCR MSRs.".
+ 0, 1, 2, 3, 4, 6. Shared. See Section 18.15.1, "ESCR MSRs.".
@param ECX MSR_PENTIUM_4_TC_PRECISE_EVENT (0x000003F0)
@param EAX Lower 32-bits of MSR value.
@@ -2194,8 +2194,8 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. Precise Event-Based Sampling (PEBS) (R/W)
- Controls the enabling of precise event sampling and replay tagging.
+ 0, 1, 2, 3, 4, 6. Shared. Processor Event Based Sampling (PEBS) (R/W)
+ Controls the enabling of processor event sampling and replay tagging.
@param ECX MSR_PENTIUM_4_PEBS_ENABLE (0x000003F1)
@param EAX Lower 32-bits of MSR value.
@@ -2223,7 +2223,7 @@ typedef union {
///
struct {
///
- /// [Bits 12:0] See Table 19-26.
+ /// [Bits 12:0] See Table 19-33.
///
UINT32 EventNum:13;
UINT32 Reserved1:11;
@@ -2234,7 +2234,7 @@ typedef union {
///
/// [Bit 25] ENABLE_PEBS_MY_THR (R/W) Enables PEBS for the target logical
/// processor when set; disables PEBS when clear (default). See Section
- /// 18.13.3, "IA32_PEBS_ENABLE MSR," for an explanation of the target
+ /// 18.16.3, "IA32_PEBS_ENABLE MSR," for an explanation of the target
/// logical processor. This bit is called ENABLE_PEBS in IA-32 processors
/// that do not support Intel HyperThreading Technology.
///
@@ -2242,7 +2242,7 @@ typedef union {
///
/// [Bit 26] ENABLE_PEBS_OTH_THR (R/W) Enables PEBS for the target logical
/// processor when set; disables PEBS when clear (default). See Section
- /// 18.13.3, "IA32_PEBS_ENABLE MSR," for an explanation of the target
+ /// 18.16.3, "IA32_PEBS_ENABLE MSR," for an explanation of the target
/// logical processor. This bit is reserved for IA-32 processors that do
/// not support Intel Hyper-Threading Technology.
///
@@ -2262,7 +2262,7 @@ typedef union {
/**
- 0, 1, 2, 3, 4, 6. Shared. See Table 19-26.
+ 0, 1, 2, 3, 4, 6. Shared. See Table 19-33.
@param ECX MSR_PENTIUM_4_PEBS_MATRIX_VERT (0x000003F2)
@param EAX Lower 32-bits of MSR value.
@@ -2288,7 +2288,7 @@ typedef union {
680H-68FH, 6C0H-6CfH are not available in processor releases before family
0FH, model 03H. These MSRs replace MSRs previously located at
1DBH-1DEH.which performed the same function for early releases. See Section
- 17.9, "Last Branch, Call Stack, Interrupt, and Exception Recording for
+ 17.10, "Last Branch, Call Stack, Interrupt, and Exception Recording for
Processors based on Skylake Microarchitecture.".
@param ECX MSR_PENTIUM_4_LASTBRANCH_n_FROM_IP
@@ -2344,7 +2344,7 @@ typedef union {
record registers on the last branch record stack (6C0H-6CFH). This part of
the stack contains pointers to the destination instruction for one of the
last 16 branches, exceptions, or interrupts that the processor took. See
- Section 17.9, "Last Branch, Call Stack, Interrupt, and Exception Recording
+ Section 17.10, "Last Branch, Call Stack, Interrupt, and Exception Recording
for Processors based on Skylake Microarchitecture.".
@param ECX MSR_PENTIUM_4_LASTBRANCH_n_TO_IP
@@ -2397,7 +2397,7 @@ typedef union {
/**
3, 4. Shared. IFSB BUSQ Event Control and Counter Register (R/W) See
- Section 18.17, "Performance Monitoring on 64-bit Intel Xeon Processor MP
+ Section 18.21, "Performance Monitoring on 64-bit Intel Xeon Processor MP
with Up to 8-MByte L3 Cache.".
@param ECX MSR_PENTIUM_4_IFSB_BUSQ0 (0x000107CC)
@@ -2437,7 +2437,7 @@ typedef union {
/**
3, 4. Shared. IFSB SNPQ Event Control and Counter Register (R/W) See
- Section 18.17, "Performance Monitoring on 64-bit Intel Xeon Processor MP
+ Section 18.21, "Performance Monitoring on 64-bit Intel Xeon Processor MP
with Up to 8-MByte L3 Cache.".
@param ECX MSR_PENTIUM_4_IFSB_SNPQ0 (0x000107CE)
@@ -2477,7 +2477,7 @@ typedef union {
/**
3, 4. Shared. EFSB DRDY Event Control and Counter Register (R/W) See
- Section 18.17, "Performance Monitoring on 64-bit Intel Xeon Processor MP
+ Section 18.21, "Performance Monitoring on 64-bit Intel Xeon Processor MP
with Up to 8-MByte L3 Cache" for details.
@param ECX MSR_PENTIUM_4_EFSB_DRDY0 (0x000107D0)
@@ -2516,7 +2516,7 @@ typedef union {
/**
- 3, 4. Shared. IFSB Latency Event Control Register (R/W) See Section 18.17,
+ 3, 4. Shared. IFSB Latency Event Control Register (R/W) See Section 18.21,
"Performance Monitoring on 64-bit Intel Xeon Processor MP with Up to 8-MByte
L3 Cache" for details.
@@ -2537,7 +2537,7 @@ typedef union {
/**
- 3, 4. Shared. IFSB Latency Event Counter Register (R/W) See Section 18.17,
+ 3, 4. Shared. IFSB Latency Event Counter Register (R/W) See Section 18.21,
"Performance Monitoring on 64-bit Intel Xeon Processor MP with Up to 8-MByte
L3 Cache.".
@@ -2558,7 +2558,7 @@ typedef union {
/**
- 6. Shared. GBUSQ Event Control and Counter Register (R/W) See Section 18.17,
+ 6. Shared. GBUSQ Event Control and Counter Register (R/W) See Section 18.21,
"Performance Monitoring on 64-bit Intel Xeon Processor MP with Up to 8-MByte
L3 Cache.".
@@ -2599,7 +2599,7 @@ typedef union {
/**
6. Shared. GSNPQ Event Control and Counter Register (R/W) See Section
- 18.17, "Performance Monitoring on 64-bit Intel Xeon Processor MP with Up to
+ 18.21, "Performance Monitoring on 64-bit Intel Xeon Processor MP with Up to
8-MByte L3 Cache.".
@param ECX MSR_PENTIUM_4_EMON_L3_CTR_CTL2 (0x000107CE)
@@ -2638,7 +2638,7 @@ typedef union {
/**
- 6. Shared. FSB Event Control and Counter Register (R/W) See Section 18.17,
+ 6. Shared. FSB Event Control and Counter Register (R/W) See Section 18.21,
"Performance Monitoring on 64-bit Intel Xeon Processor MP with Up to 8-MByte
L3 Cache" for details.
diff --git a/UefiCpuPkg/Include/Register/Msr/PentiumMMsr.h b/UefiCpuPkg/Include/Register/Msr/PentiumMMsr.h
index 3040631..294a381 100644
--- a/UefiCpuPkg/Include/Register/Msr/PentiumMMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/PentiumMMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-18.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.20.
**/
@@ -27,7 +27,7 @@
#include <Register/ArchitecturalMsr.h>
/**
- See Section 35.20, "MSRs in Pentium Processors.".
+ See Section 35.22, "MSRs in Pentium Processors.".
@param ECX MSR_PENTIUM_M_P5_MC_ADDR (0x00000000)
@param EAX Lower 32-bits of MSR value.
@@ -46,7 +46,7 @@
/**
- See Section 35.20, "MSRs in Pentium Processors.".
+ See Section 35.22, "MSRs in Pentium Processors.".
@param ECX MSR_PENTIUM_M_P5_MC_TYPE (0x00000001)
@param EAX Lower 32-bits of MSR value.
@@ -184,7 +184,7 @@ typedef union {
Last Branch Record n (R/W) One of 8 last branch record registers on the last
branch record stack: bits 31-0 hold the 'from' address and bits 63-32 hold
the to address. See also: - Last Branch Record Stack TOS at 1C9H - Section
- 17.12, "Last Branch, Interrupt, and Exception Recording (Pentium M
+ 17.13, "Last Branch, Interrupt, and Exception Recording (Pentium M
Processors)".
@param ECX MSR_PENTIUM_M_LASTBRANCH_n
@@ -424,9 +424,9 @@ typedef union {
///
UINT32 BTS:1;
///
- /// [Bit 12] Precise Event Based Sampling Unavailable (RO) 1 = Processor
- /// does not support precise event-based sampling (PEBS); 0 = PEBS is
- /// supported. The Pentium M processor does not support PEBS.
+ /// [Bit 12] Processor Event Based Sampling Unavailable (RO) 1 =
+ /// Processor does not support processor event based sampling (PEBS); 0 =
+ /// PEBS is supported. The Pentium M processor does not support PEBS.
///
UINT32 PEBS:1;
UINT32 Reserved5:3;
@@ -461,7 +461,7 @@ typedef union {
/**
Last Branch Record Stack TOS (R/W) Contains an index (bits 0-3) that points
to the MSR containing the most recent branch record. See also: -
- MSR_LASTBRANCH_0_FROM_IP (at 40H) - Section 17.12, "Last Branch, Interrupt,
+ MSR_LASTBRANCH_0_FROM_IP (at 40H) - Section 17.13, "Last Branch, Interrupt,
and Exception Recording (Pentium M Processors)".
@param ECX MSR_PENTIUM_M_LASTBRANCH_TOS (0x000001C9)
@@ -482,7 +482,7 @@ typedef union {
/**
Debug Control (R/W) Controls how several debug features are used. Bit
- definitions are discussed in the referenced section. See Section 17.12,
+ definitions are discussed in the referenced section. See Section 17.13,
"Last Branch, Interrupt, and Exception Recording (Pentium M Processors).".
@param ECX MSR_PENTIUM_M_DEBUGCTLB (0x000001D9)
@@ -505,8 +505,8 @@ typedef union {
Last Exception Record To Linear IP (R) This area contains a pointer to the
target of the last branch instruction that the processor executed prior to
the last exception that was generated or the last interrupt that was
- handled. See Section 17.12, "Last Branch, Interrupt, and Exception Recording
- (Pentium M Processors)" and Section 17.13.2, "Last Branch and Last Exception
+ handled. See Section 17.13, "Last Branch, Interrupt, and Exception Recording
+ (Pentium M Processors)" and Section 17.14.2, "Last Branch and Last Exception
MSRs.".
@param ECX MSR_PENTIUM_M_LER_TO_LIP (0x000001DD)
@@ -528,8 +528,8 @@ typedef union {
Last Exception Record From Linear IP (R) Contains a pointer to the last
branch instruction that the processor executed prior to the last exception
that was generated or the last interrupt that was handled. See Section
- 17.12, "Last Branch, Interrupt, and Exception Recording (Pentium M
- Processors)" and Section 17.13.2, "Last Branch and Last Exception MSRs.".
+ 17.13, "Last Branch, Interrupt, and Exception Recording (Pentium M
+ Processors)" and Section 17.14.2, "Last Branch and Last Exception MSRs.".
@param ECX MSR_PENTIUM_M_LER_FROM_LIP (0x000001DE)
@param EAX Lower 32-bits of MSR value.
diff --git a/UefiCpuPkg/Include/Register/Msr/PentiumMsr.h b/UefiCpuPkg/Include/Register/Msr/PentiumMsr.h
index 62c5b7e..cd846ea 100644
--- a/UefiCpuPkg/Include/Register/Msr/PentiumMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/PentiumMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-20.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.22.
**/
@@ -65,7 +65,7 @@
/**
- See Section 17.14, "Time-Stamp Counter.".
+ See Section 17.15, "Time-Stamp Counter.".
@param ECX MSR_PENTIUM_TSC (0x00000010)
@param EAX Lower 32-bits of MSR value.
@@ -84,7 +84,7 @@
/**
- See Section 18.20.1, "Control and Event Select Register (CESR).".
+ See Section 18.24.1, "Control and Event Select Register (CESR).".
@param ECX MSR_PENTIUM_CESR (0x00000011)
@param EAX Lower 32-bits of MSR value.
@@ -103,7 +103,7 @@
/**
- Section 18.20.3, "Events Counted.".
+ Section 18.24.3, "Events Counted.".
@param ECX MSR_PENTIUM_CTRn
@param EAX Lower 32-bits of MSR value.
diff --git a/UefiCpuPkg/Include/Register/Msr/SandyBridgeMsr.h b/UefiCpuPkg/Include/Register/Msr/SandyBridgeMsr.h
index a50bad2..1819ecb 100644
--- a/UefiCpuPkg/Include/Register/Msr/SandyBridgeMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/SandyBridgeMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-8.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.9.
**/
@@ -508,7 +508,7 @@ typedef union {
///
UINT32 BTS:1;
///
- /// [Bit 12] Thread. Precise Event Based Sampling Unavailable (RO) See
+ /// [Bit 12] Thread. Processor Event Based Sampling Unavailable (RO) See
/// Table 35-2.
///
UINT32 PEBS:1;
@@ -734,7 +734,7 @@ typedef union {
/**
Thread. Last Branch Record Filtering Select Register (R/W) See Section
- 17.6.2, "Filtering of Last Branch Records.".
+ 17.7.2, "Filtering of Last Branch Records.".
@param ECX MSR_SANDY_BRIDGE_LBR_SELECT (0x000001C8)
@param EAX Lower 32-bits of MSR value.
@@ -895,7 +895,7 @@ typedef union {
/**
Package. Always 0 (CMCI not supported).
- @param ECX MSR_SANDY_BRIDGE_MC4_CTL2 (0x00000284)
+ @param ECX MSR_SANDY_BRIDGE_IA32_MC4_CTL2 (0x00000284)
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -903,37 +903,37 @@ typedef union {
@code
UINT64 Msr;
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_MC4_CTL2);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_MC4_CTL2, Msr);
+ Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_IA32_MC4_CTL2);
+ AsmWriteMsr64 (MSR_SANDY_BRIDGE_IA32_MC4_CTL2, Msr);
@endcode
- @note MSR_SANDY_BRIDGE_MC4_CTL2 is defined as MSR_MC4_CTL2 in SDM.
+ @note MSR_SANDY_BRIDGE_IA32_MC4_CTL2 is defined as IA32_MC4_CTL2 in SDM.
**/
-#define MSR_SANDY_BRIDGE_MC4_CTL2 0x00000284
+#define MSR_SANDY_BRIDGE_IA32_MC4_CTL2 0x00000284
/**
See Table 35-2. See Section 18.4.2, "Global Counter Control Facilities.".
- @param ECX MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STAUS (0x0000038E)
+ @param ECX MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STATUS (0x0000038E)
@param EAX Lower 32-bits of MSR value.
- Described by the type MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STAUS_REGISTER.
+ Described by the type MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STATUS_REGISTER.
@param EDX Upper 32-bits of MSR value.
- Described by the type MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STAUS_REGISTER.
+ Described by the type MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STATUS_REGISTER.
<b>Example usage</b>
@code
- MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STAUS_REGISTER Msr;
+ MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STATUS_REGISTER Msr;
- Msr.Uint64 = AsmReadMsr64 (MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STAUS);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STAUS, Msr.Uint64);
+ Msr.Uint64 = AsmReadMsr64 (MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STATUS);
+ AsmWriteMsr64 (MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STATUS, Msr.Uint64);
@endcode
- @note MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STAUS is defined as IA32_PERF_GLOBAL_STAUS in SDM.
+ @note MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STATUS is defined as IA32_PERF_GLOBAL_STATUS in SDM.
**/
-#define MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STAUS 0x0000038E
+#define MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STATUS 0x0000038E
/**
MSR information returned for MSR index
- #MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STAUS
+ #MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STATUS
**/
typedef union {
///
@@ -1003,7 +1003,7 @@ typedef union {
/// All bit fields as a 64-bit value
///
UINT64 Uint64;
-} MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STAUS_REGISTER;
+} MSR_SANDY_BRIDGE_IA32_PERF_GLOBAL_STATUS_REGISTER;
/**
@@ -1190,7 +1190,7 @@ typedef union {
/**
- Thread. See Section 18.7.1.1, "Precise Event Based Sampling (PEBS).".
+ Thread. See Section 18.8.1.1, "Processor Event Based Sampling (PEBS).".
@param ECX MSR_SANDY_BRIDGE_PEBS_ENABLE (0x000003F1)
@param EAX Lower 32-bits of MSR value.
@@ -1264,7 +1264,7 @@ typedef union {
/**
- Thread. see See Section 18.7.1.2, "Load Latency Performance Monitoring
+ Thread. see See Section 18.8.1.2, "Load Latency Performance Monitoring
Facility.".
@param ECX MSR_SANDY_BRIDGE_PEBS_LD_LAT (0x000003F6)
@@ -1446,25 +1446,25 @@ typedef union {
/**
Core. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
- @param ECX MSR_SANDY_BRIDGE_MC4_CTL (0x00000410)
+ @param ECX MSR_SANDY_BRIDGE_IA32_MC4_CTL (0x00000410)
@param EAX Lower 32-bits of MSR value.
- Described by the type MSR_SANDY_BRIDGE_MC4_CTL_REGISTER.
+ Described by the type MSR_SANDY_BRIDGE_IA32_MC4_CTL_REGISTER.
@param EDX Upper 32-bits of MSR value.
- Described by the type MSR_SANDY_BRIDGE_MC4_CTL_REGISTER.
+ Described by the type MSR_SANDY_BRIDGE_IA32_MC4_CTL_REGISTER.
<b>Example usage</b>
@code
- MSR_SANDY_BRIDGE_MC4_CTL_REGISTER Msr;
+ MSR_SANDY_BRIDGE_IA32_MC4_CTL_REGISTER Msr;
- Msr.Uint64 = AsmReadMsr64 (MSR_SANDY_BRIDGE_MC4_CTL);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_MC4_CTL, Msr.Uint64);
+ Msr.Uint64 = AsmReadMsr64 (MSR_SANDY_BRIDGE_IA32_MC4_CTL);
+ AsmWriteMsr64 (MSR_SANDY_BRIDGE_IA32_MC4_CTL, Msr.Uint64);
@endcode
- @note MSR_SANDY_BRIDGE_MC4_CTL is defined as MSR_MC4_CTL in SDM.
+ @note MSR_SANDY_BRIDGE_IA32_MC4_CTL is defined as IA32_MC4_CTL in SDM.
**/
-#define MSR_SANDY_BRIDGE_MC4_CTL 0x00000410
+#define MSR_SANDY_BRIDGE_IA32_MC4_CTL 0x00000410
/**
- MSR information returned for MSR index #MSR_SANDY_BRIDGE_MC4_CTL
+ MSR information returned for MSR index #MSR_SANDY_BRIDGE_IA32_MC4_CTL
**/
typedef union {
///
@@ -1497,7 +1497,7 @@ typedef union {
/// All bit fields as a 64-bit value
///
UINT64 Uint64;
-} MSR_SANDY_BRIDGE_MC4_CTL_REGISTER;
+} MSR_SANDY_BRIDGE_IA32_MC4_CTL_REGISTER;
/**
@@ -1789,7 +1789,8 @@ typedef union {
Thread. Last Branch Record n From IP (R/W) One of sixteen pairs of last
branch record registers on the last branch record stack. This part of the
stack contains pointers to the source instruction. See also: - Last Branch
- Record Stack TOS at 1C9H - Section 17.6.1, "LBR Stack.".
+ Record Stack TOS at 1C9H - Section 17.7.1 and record format in Section
+ 17.4.8.1.
@param ECX MSR_SANDY_BRIDGE_LASTBRANCH_n_FROM_IP
@param EAX Lower 32-bits of MSR value.
@@ -1997,22 +1998,26 @@ typedef union {
///
struct {
///
- /// [Bit 0] Core 0 select.
+ /// [Bit 0] Slice 0 select.
///
- UINT32 PMI_Sel_Core0:1;
+ UINT32 PMI_Sel_Slice0:1;
///
- /// [Bit 1] Core 1 select.
+ /// [Bit 1] Slice 1 select.
///
- UINT32 PMI_Sel_Core1:1;
+ UINT32 PMI_Sel_Slice1:1;
///
- /// [Bit 2] Core 2 select.
+ /// [Bit 2] Slice 2 select.
///
- UINT32 PMI_Sel_Core2:1;
+ UINT32 PMI_Sel_Slice2:1;
///
- /// [Bit 3] Core 3 select.
+ /// [Bit 3] Slice 3 select.
///
- UINT32 PMI_Sel_Core3:1;
- UINT32 Reserved1:15;
+ UINT32 PMI_Sel_Slice3:1;
+ ///
+ /// [Bit 4] Slice 4 select.
+ ///
+ UINT32 PMI_Sel_Slice4:1;
+ UINT32 Reserved1:14;
UINT32 Reserved2:10;
///
/// [Bit 29] Enable all uncore counters.
@@ -2220,7 +2225,8 @@ typedef union {
///
struct {
///
- /// [Bits 3:0] Encoded number of C-Box, derive value by "-1".
+ /// [Bits 3:0] Report the number of C-Box units with performance counters,
+ /// including processor cores and processor graphics".
///
UINT32 CBox:4;
UINT32 Reserved1:28;
@@ -2459,9 +2465,9 @@ typedef union {
/**
- Package. Uncore C-Box 0, counter 0 event select MSR.
+ Package. Uncore C-Box 0, counter n event select MSR.
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL0 (0x00000700)
+ @param ECX MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSELn
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -2473,14 +2479,22 @@ typedef union {
AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL0, Msr);
@endcode
@note MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL0 is defined as MSR_UNC_CBO_0_PERFEVTSEL0 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL1 is defined as MSR_UNC_CBO_0_PERFEVTSEL1 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL2 is defined as MSR_UNC_CBO_0_PERFEVTSEL2 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL3 is defined as MSR_UNC_CBO_0_PERFEVTSEL3 in SDM.
+ @{
**/
#define MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL0 0x00000700
+#define MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL1 0x00000701
+#define MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL2 0x00000702
+#define MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL3 0x00000703
+/// @}
/**
- Package. Uncore C-Box 0, counter 1 event select MSR.
+ Package. Uncore C-Box n, unit status for counter 0-3.
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL1 (0x00000701)
+ @param ECX MSR_SANDY_BRIDGE_UNC_CBO_n_UNIT_STATUS
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -2488,18 +2502,28 @@ typedef union {
@code
UINT64 Msr;
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL1);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL1, Msr);
+ Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_0_UNIT_STATUS);
+ AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_0_UNIT_STATUS, Msr);
@endcode
- @note MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL1 is defined as MSR_UNC_CBO_0_PERFEVTSEL1 in SDM.
+ @note MSR_SANDY_BRIDGE_UNC_CBO_0_UNIT_STATUS is defined as MSR_UNC_CBO_0_UNIT_STATUS in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_1_UNIT_STATUS is defined as MSR_UNC_CBO_1_UNIT_STATUS in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_2_UNIT_STATUS is defined as MSR_UNC_CBO_2_UNIT_STATUS in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_3_UNIT_STATUS is defined as MSR_UNC_CBO_3_UNIT_STATUS in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_4_UNIT_STATUS is defined as MSR_UNC_CBO_4_UNIT_STATUS in SDM.
+ @{
**/
-#define MSR_SANDY_BRIDGE_UNC_CBO_0_PERFEVTSEL1 0x00000701
+#define MSR_SANDY_BRIDGE_UNC_CBO_0_UNIT_STATUS 0x00000705
+#define MSR_SANDY_BRIDGE_UNC_CBO_1_UNIT_STATUS 0x00000715
+#define MSR_SANDY_BRIDGE_UNC_CBO_2_UNIT_STATUS 0x00000725
+#define MSR_SANDY_BRIDGE_UNC_CBO_3_UNIT_STATUS 0x00000735
+#define MSR_SANDY_BRIDGE_UNC_CBO_4_UNIT_STATUS 0x00000745
+/// @}
/**
- Package. Uncore C-Box 0, performance counter 0.
+ Package. Uncore C-Box 0, performance counter n.
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR0 (0x00000706)
+ @param ECX MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTRn
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -2511,33 +2535,22 @@ typedef union {
AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR0, Msr);
@endcode
@note MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR0 is defined as MSR_UNC_CBO_0_PERFCTR0 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR1 is defined as MSR_UNC_CBO_0_PERFCTR1 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR2 is defined as MSR_UNC_CBO_0_PERFCTR2 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR3 is defined as MSR_UNC_CBO_0_PERFCTR3 in SDM.
+ @{
**/
#define MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR0 0x00000706
-
-
-/**
- Package. Uncore C-Box 0, performance counter 1.
-
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR1 (0x00000707)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR1);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR1, Msr);
- @endcode
- @note MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR1 is defined as MSR_UNC_CBO_0_PERFCTR1 in SDM.
-**/
#define MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR1 0x00000707
+#define MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR2 0x00000708
+#define MSR_SANDY_BRIDGE_UNC_CBO_0_PERFCTR3 0x00000709
+/// @}
/**
- Package. Uncore C-Box 1, counter 0 event select MSR.
+ Package. Uncore C-Box 1, counter n event select MSR.
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL0 (0x00000710)
+ @param ECX MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSELn
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -2549,33 +2562,22 @@ typedef union {
AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL0, Msr);
@endcode
@note MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL0 is defined as MSR_UNC_CBO_1_PERFEVTSEL0 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL1 is defined as MSR_UNC_CBO_1_PERFEVTSEL1 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL2 is defined as MSR_UNC_CBO_1_PERFEVTSEL2 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL3 is defined as MSR_UNC_CBO_1_PERFEVTSEL3 in SDM.
+ @{
**/
#define MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL0 0x00000710
-
-
-/**
- Package. Uncore C-Box 1, counter 1 event select MSR.
-
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL1 (0x00000711)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL1);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL1, Msr);
- @endcode
- @note MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL1 is defined as MSR_UNC_CBO_1_PERFEVTSEL1 in SDM.
-**/
#define MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL1 0x00000711
+#define MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL2 0x00000712
+#define MSR_SANDY_BRIDGE_UNC_CBO_1_PERFEVTSEL3 0x00000713
+/// @}
/**
- Package. Uncore C-Box 1, performance counter 0.
+ Package. Uncore C-Box 1, performance counter n.
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR0 (0x00000716)
+ @param ECX MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTRn
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -2587,33 +2589,22 @@ typedef union {
AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR0, Msr);
@endcode
@note MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR0 is defined as MSR_UNC_CBO_1_PERFCTR0 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR1 is defined as MSR_UNC_CBO_1_PERFCTR1 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR2 is defined as MSR_UNC_CBO_1_PERFCTR2 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR3 is defined as MSR_UNC_CBO_1_PERFCTR3 in SDM.
+ @{
**/
#define MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR0 0x00000716
-
-
-/**
- Package. Uncore C-Box 1, performance counter 1.
-
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR1 (0x00000717)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR1);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR1, Msr);
- @endcode
- @note MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR1 is defined as MSR_UNC_CBO_1_PERFCTR1 in SDM.
-**/
#define MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR1 0x00000717
+#define MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR2 0x00000718
+#define MSR_SANDY_BRIDGE_UNC_CBO_1_PERFCTR3 0x00000719
+/// @}
/**
- Package. Uncore C-Box 2, counter 0 event select MSR.
+ Package. Uncore C-Box 2, counter n event select MSR.
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL0 (0x00000720)
+ @param ECX MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSELn
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -2625,33 +2616,22 @@ typedef union {
AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL0, Msr);
@endcode
@note MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL0 is defined as MSR_UNC_CBO_2_PERFEVTSEL0 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL1 is defined as MSR_UNC_CBO_2_PERFEVTSEL1 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL2 is defined as MSR_UNC_CBO_2_PERFEVTSEL2 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL3 is defined as MSR_UNC_CBO_2_PERFEVTSEL3 in SDM.
+ @{
**/
#define MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL0 0x00000720
-
-
-/**
- Package. Uncore C-Box 2, counter 1 event select MSR.
-
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL1 (0x00000721)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL1);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL1, Msr);
- @endcode
- @note MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL1 is defined as MSR_UNC_CBO_2_PERFEVTSEL1 in SDM.
-**/
#define MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL1 0x00000721
+#define MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL2 0x00000722
+#define MSR_SANDY_BRIDGE_UNC_CBO_2_PERFEVTSEL3 0x00000723
+/// @}
/**
- Package. Uncore C-Box 2, performance counter 0.
+ Package. Uncore C-Box 2, performance counter n.
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR0 (0x00000726)
+ @param ECX MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTRn
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -2663,33 +2643,22 @@ typedef union {
AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR0, Msr);
@endcode
@note MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR0 is defined as MSR_UNC_CBO_2_PERFCTR0 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR1 is defined as MSR_UNC_CBO_2_PERFCTR1 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR2 is defined as MSR_UNC_CBO_2_PERFCTR2 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR3 is defined as MSR_UNC_CBO_2_PERFCTR3 in SDM.
+ @{
**/
#define MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR0 0x00000726
-
-
-/**
- Package. Uncore C-Box 2, performance counter 1.
-
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR1 (0x00000727)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR1);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR1, Msr);
- @endcode
- @note MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR1 is defined as MSR_UNC_CBO_2_PERFCTR1 in SDM.
-**/
#define MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR1 0x00000727
+#define MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR2 0x00000728
+#define MSR_SANDY_BRIDGE_UNC_CBO_2_PERFCTR3 0x00000729
+/// @}
/**
- Package. Uncore C-Box 3, counter 0 event select MSR.
+ Package. Uncore C-Box 3, counter n event select MSR.
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL0 (0x00000730)
+ @param ECX MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSELn
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -2701,14 +2670,22 @@ typedef union {
AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL0, Msr);
@endcode
@note MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL0 is defined as MSR_UNC_CBO_3_PERFEVTSEL0 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL1 is defined as MSR_UNC_CBO_3_PERFEVTSEL1 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL2 is defined as MSR_UNC_CBO_3_PERFEVTSEL2 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL3 is defined as MSR_UNC_CBO_3_PERFEVTSEL3 in SDM.
+ @{
**/
#define MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL0 0x00000730
+#define MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL1 0x00000731
+#define MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL2 0x00000732
+#define MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL3 0x00000733
+/// @}
/**
- Package. Uncore C-Box 3, counter 1 event select MSR.
+ Package. Uncore C-Box 3, performance counter n.
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL1 (0x00000731)
+ @param ECX MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTRn
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -2716,18 +2693,26 @@ typedef union {
@code
UINT64 Msr;
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL1);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL1, Msr);
+ Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR0);
+ AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR0, Msr);
@endcode
- @note MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL1 is defined as MSR_UNC_CBO_3_PERFEVTSEL1 in SDM.
+ @note MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR0 is defined as MSR_UNC_CBO_3_PERFCTR0 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR1 is defined as MSR_UNC_CBO_3_PERFCTR1 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR2 is defined as MSR_UNC_CBO_3_PERFCTR2 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR3 is defined as MSR_UNC_CBO_3_PERFCTR3 in SDM.
+ @{
**/
-#define MSR_SANDY_BRIDGE_UNC_CBO_3_PERFEVTSEL1 0x00000731
+#define MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR0 0x00000736
+#define MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR1 0x00000737
+#define MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR2 0x00000738
+#define MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR3 0x00000739
+/// @}
/**
- Package. Uncore C-Box 3, performance counter 0.
+ Package. Uncore C-Box 4, counter n event select MSR.
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR0 (0x00000736)
+ @param ECX MSR_SANDY_BRIDGE_UNC_CBO_4_PERFEVTSELn
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -2735,18 +2720,26 @@ typedef union {
@code
UINT64 Msr;
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR0);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR0, Msr);
+ Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_4_PERFEVTSEL0);
+ AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_4_PERFEVTSEL0, Msr);
@endcode
- @note MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR0 is defined as MSR_UNC_CBO_3_PERFCTR0 in SDM.
+ @note MSR_SANDY_BRIDGE_UNC_CBO_4_PERFEVTSEL0 is defined as MSR_UNC_CBO_4_PERFEVTSEL0 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_4_PERFEVTSEL1 is defined as MSR_UNC_CBO_4_PERFEVTSEL1 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_4_PERFEVTSEL2 is defined as MSR_UNC_CBO_4_PERFEVTSEL2 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_4_PERFEVTSEL3 is defined as MSR_UNC_CBO_4_PERFEVTSEL3 in SDM.
+ @{
**/
-#define MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR0 0x00000736
+#define MSR_SANDY_BRIDGE_UNC_CBO_4_PERFEVTSEL0 0x00000740
+#define MSR_SANDY_BRIDGE_UNC_CBO_4_PERFEVTSEL1 0x00000741
+#define MSR_SANDY_BRIDGE_UNC_CBO_4_PERFEVTSEL2 0x00000742
+#define MSR_SANDY_BRIDGE_UNC_CBO_4_PERFEVTSEL3 0x00000743
+/// @}
/**
- Package. Uncore C-Box 3, performance counter 1.
+ Package. Uncore C-Box 4, performance counter n.
- @param ECX MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR1 (0x00000737)
+ @param ECX MSR_SANDY_BRIDGE_UNC_CBO_4_PERFCTRn
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -2754,12 +2747,20 @@ typedef union {
@code
UINT64 Msr;
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR1);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR1, Msr);
+ Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_4_PERFCTR0);
+ AsmWriteMsr64 (MSR_SANDY_BRIDGE_UNC_CBO_4_PERFCTR0, Msr);
@endcode
- @note MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR1 is defined as MSR_UNC_CBO_3_PERFCTR1 in SDM.
+ @note MSR_SANDY_BRIDGE_UNC_CBO_4_PERFCTR0 is defined as MSR_UNC_CBO_4_PERFCTR0 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_4_PERFCTR1 is defined as MSR_UNC_CBO_4_PERFCTR1 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_4_PERFCTR2 is defined as MSR_UNC_CBO_4_PERFCTR2 in SDM.
+ MSR_SANDY_BRIDGE_UNC_CBO_4_PERFCTR3 is defined as MSR_UNC_CBO_4_PERFCTR3 in SDM.
+ @{
**/
-#define MSR_SANDY_BRIDGE_UNC_CBO_3_PERFCTR1 0x00000737
+#define MSR_SANDY_BRIDGE_UNC_CBO_4_PERFCTR0 0x00000746
+#define MSR_SANDY_BRIDGE_UNC_CBO_4_PERFCTR1 0x00000747
+#define MSR_SANDY_BRIDGE_UNC_CBO_4_PERFCTR2 0x00000748
+#define MSR_SANDY_BRIDGE_UNC_CBO_4_PERFCTR3 0x00000749
+/// @}
/**
@@ -2841,7 +2842,7 @@ typedef union {
///
/// [Bit 0] ENABLE_PEBS_NUM_ALT (RW) Write 1 to enable alternate PEBS
/// counting logic for specific events requiring additional configuration,
- /// see Table 19-9.
+ /// see Table 19-15.
///
UINT32 ENABLE_PEBS_NUM_ALT:1;
UINT32 Reserved1:31;
@@ -2859,202 +2860,6 @@ typedef union {
/**
- Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
-
- @param ECX MSR_SANDY_BRIDGE_MCi_CTL
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_MC5_CTL);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_MC5_CTL, Msr);
- @endcode
- @note MSR_SANDY_BRIDGE_MC5_CTL is defined as MSR_MC5_CTL in SDM.
- MSR_SANDY_BRIDGE_MC6_CTL is defined as MSR_MC6_CTL in SDM.
- MSR_SANDY_BRIDGE_MC7_CTL is defined as MSR_MC7_CTL in SDM.
- MSR_SANDY_BRIDGE_MC8_CTL is defined as MSR_MC8_CTL in SDM.
- MSR_SANDY_BRIDGE_MC9_CTL is defined as MSR_MC9_CTL in SDM.
- MSR_SANDY_BRIDGE_MC10_CTL is defined as MSR_MC10_CTL in SDM.
- MSR_SANDY_BRIDGE_MC11_CTL is defined as MSR_MC11_CTL in SDM.
- MSR_SANDY_BRIDGE_MC12_CTL is defined as MSR_MC12_CTL in SDM.
- MSR_SANDY_BRIDGE_MC13_CTL is defined as MSR_MC13_CTL in SDM.
- MSR_SANDY_BRIDGE_MC14_CTL is defined as MSR_MC14_CTL in SDM.
- MSR_SANDY_BRIDGE_MC15_CTL is defined as MSR_MC15_CTL in SDM.
- MSR_SANDY_BRIDGE_MC16_CTL is defined as MSR_MC16_CTL in SDM.
- MSR_SANDY_BRIDGE_MC17_CTL is defined as MSR_MC17_CTL in SDM.
- MSR_SANDY_BRIDGE_MC18_CTL is defined as MSR_MC18_CTL in SDM.
- MSR_SANDY_BRIDGE_MC19_CTL is defined as MSR_MC19_CTL in SDM.
- @{
-**/
-#define MSR_SANDY_BRIDGE_MC5_CTL 0x00000414
-#define MSR_SANDY_BRIDGE_MC6_CTL 0x00000418
-#define MSR_SANDY_BRIDGE_MC7_CTL 0x0000041C
-#define MSR_SANDY_BRIDGE_MC8_CTL 0x00000420
-#define MSR_SANDY_BRIDGE_MC9_CTL 0x00000424
-#define MSR_SANDY_BRIDGE_MC10_CTL 0x00000428
-#define MSR_SANDY_BRIDGE_MC11_CTL 0x0000042C
-#define MSR_SANDY_BRIDGE_MC12_CTL 0x00000430
-#define MSR_SANDY_BRIDGE_MC13_CTL 0x00000434
-#define MSR_SANDY_BRIDGE_MC14_CTL 0x00000438
-#define MSR_SANDY_BRIDGE_MC15_CTL 0x0000043C
-#define MSR_SANDY_BRIDGE_MC16_CTL 0x00000440
-#define MSR_SANDY_BRIDGE_MC17_CTL 0x00000444
-#define MSR_SANDY_BRIDGE_MC18_CTL 0x00000448
-#define MSR_SANDY_BRIDGE_MC19_CTL 0x0000044C
-/// @}
-
-
-/**
- Package. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS," and Chapter 16.
-
- @param ECX MSR_SANDY_BRIDGE_MCi_STATUS
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_MC5_STATUS);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_MC5_STATUS, Msr);
- @endcode
- @note MSR_SANDY_BRIDGE_MC5_STATUS is defined as MSR_MC5_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC6_STATUS is defined as MSR_MC6_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC7_STATUS is defined as MSR_MC7_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC8_STATUS is defined as MSR_MC8_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC9_STATUS is defined as MSR_MC9_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC10_STATUS is defined as MSR_MC10_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC11_STATUS is defined as MSR_MC11_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC12_STATUS is defined as MSR_MC12_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC13_STATUS is defined as MSR_MC13_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC14_STATUS is defined as MSR_MC14_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC15_STATUS is defined as MSR_MC15_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC16_STATUS is defined as MSR_MC16_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC17_STATUS is defined as MSR_MC17_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC18_STATUS is defined as MSR_MC18_STATUS in SDM.
- MSR_SANDY_BRIDGE_MC19_STATUS is defined as MSR_MC19_STATUS in SDM.
- @{
-**/
-#define MSR_SANDY_BRIDGE_MC5_STATUS 0x00000415
-#define MSR_SANDY_BRIDGE_MC6_STATUS 0x00000419
-#define MSR_SANDY_BRIDGE_MC7_STATUS 0x0000041D
-#define MSR_SANDY_BRIDGE_MC8_STATUS 0x00000421
-#define MSR_SANDY_BRIDGE_MC9_STATUS 0x00000425
-#define MSR_SANDY_BRIDGE_MC10_STATUS 0x00000429
-#define MSR_SANDY_BRIDGE_MC11_STATUS 0x0000042D
-#define MSR_SANDY_BRIDGE_MC12_STATUS 0x00000431
-#define MSR_SANDY_BRIDGE_MC13_STATUS 0x00000435
-#define MSR_SANDY_BRIDGE_MC14_STATUS 0x00000439
-#define MSR_SANDY_BRIDGE_MC15_STATUS 0x0000043D
-#define MSR_SANDY_BRIDGE_MC16_STATUS 0x00000441
-#define MSR_SANDY_BRIDGE_MC17_STATUS 0x00000445
-#define MSR_SANDY_BRIDGE_MC18_STATUS 0x00000449
-#define MSR_SANDY_BRIDGE_MC19_STATUS 0x0000044D
-/// @}
-
-
-/**
- Package. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs.".
-
- @param ECX MSR_SANDY_BRIDGE_MCi_ADDR
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_MC5_ADDR);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_MC5_ADDR, Msr);
- @endcode
- @note MSR_SANDY_BRIDGE_MC5_ADDR is defined as MSR_MC5_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC6_ADDR is defined as MSR_MC6_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC7_ADDR is defined as MSR_MC7_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC8_ADDR is defined as MSR_MC8_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC9_ADDR is defined as MSR_MC9_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC10_ADDR is defined as MSR_MC10_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC11_ADDR is defined as MSR_MC11_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC12_ADDR is defined as MSR_MC12_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC13_ADDR is defined as MSR_MC13_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC14_ADDR is defined as MSR_MC14_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC15_ADDR is defined as MSR_MC15_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC16_ADDR is defined as MSR_MC16_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC17_ADDR is defined as MSR_MC17_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC18_ADDR is defined as MSR_MC18_ADDR in SDM.
- MSR_SANDY_BRIDGE_MC19_ADDR is defined as MSR_MC19_ADDR in SDM.
- @{
-**/
-#define MSR_SANDY_BRIDGE_MC5_ADDR 0x00000416
-#define MSR_SANDY_BRIDGE_MC6_ADDR 0x0000041A
-#define MSR_SANDY_BRIDGE_MC7_ADDR 0x0000041E
-#define MSR_SANDY_BRIDGE_MC8_ADDR 0x00000422
-#define MSR_SANDY_BRIDGE_MC9_ADDR 0x00000426
-#define MSR_SANDY_BRIDGE_MC10_ADDR 0x0000042A
-#define MSR_SANDY_BRIDGE_MC11_ADDR 0x0000042E
-#define MSR_SANDY_BRIDGE_MC12_ADDR 0x00000432
-#define MSR_SANDY_BRIDGE_MC13_ADDR 0x00000436
-#define MSR_SANDY_BRIDGE_MC14_ADDR 0x0000043A
-#define MSR_SANDY_BRIDGE_MC15_ADDR 0x0000043E
-#define MSR_SANDY_BRIDGE_MC16_ADDR 0x00000442
-#define MSR_SANDY_BRIDGE_MC17_ADDR 0x00000446
-#define MSR_SANDY_BRIDGE_MC18_ADDR 0x0000044A
-#define MSR_SANDY_BRIDGE_MC19_ADDR 0x0000044E
-/// @}
-
-
-/**
- Package. See Section 15.3.2.4, "IA32_MCi_MISC MSRs.".
-
- @param ECX MSR_SANDY_BRIDGE_MCi_MISC
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SANDY_BRIDGE_MC5_MISC);
- AsmWriteMsr64 (MSR_SANDY_BRIDGE_MC5_MISC, Msr);
- @endcode
- @note MSR_SANDY_BRIDGE_MC5_MISC is defined as MSR_MC5_MISC in SDM.
- MSR_SANDY_BRIDGE_MC6_MISC is defined as MSR_MC6_MISC in SDM.
- MSR_SANDY_BRIDGE_MC7_MISC is defined as MSR_MC7_MISC in SDM.
- MSR_SANDY_BRIDGE_MC8_MISC is defined as MSR_MC8_MISC in SDM.
- MSR_SANDY_BRIDGE_MC9_MISC is defined as MSR_MC9_MISC in SDM.
- MSR_SANDY_BRIDGE_MC10_MISC is defined as MSR_MC10_MISC in SDM.
- MSR_SANDY_BRIDGE_MC11_MISC is defined as MSR_MC11_MISC in SDM.
- MSR_SANDY_BRIDGE_MC12_MISC is defined as MSR_MC12_MISC in SDM.
- MSR_SANDY_BRIDGE_MC13_MISC is defined as MSR_MC13_MISC in SDM.
- MSR_SANDY_BRIDGE_MC14_MISC is defined as MSR_MC14_MISC in SDM.
- MSR_SANDY_BRIDGE_MC15_MISC is defined as MSR_MC15_MISC in SDM.
- MSR_SANDY_BRIDGE_MC16_MISC is defined as MSR_MC16_MISC in SDM.
- MSR_SANDY_BRIDGE_MC17_MISC is defined as MSR_MC17_MISC in SDM.
- MSR_SANDY_BRIDGE_MC18_MISC is defined as MSR_MC18_MISC in SDM.
- MSR_SANDY_BRIDGE_MC19_MISC is defined as MSR_MC19_MISC in SDM.
- @{
-**/
-#define MSR_SANDY_BRIDGE_MC5_MISC 0x00000417
-#define MSR_SANDY_BRIDGE_MC6_MISC 0x0000041B
-#define MSR_SANDY_BRIDGE_MC7_MISC 0x0000041F
-#define MSR_SANDY_BRIDGE_MC8_MISC 0x00000423
-#define MSR_SANDY_BRIDGE_MC9_MISC 0x00000427
-#define MSR_SANDY_BRIDGE_MC10_MISC 0x0000042B
-#define MSR_SANDY_BRIDGE_MC11_MISC 0x0000042F
-#define MSR_SANDY_BRIDGE_MC12_MISC 0x00000433
-#define MSR_SANDY_BRIDGE_MC13_MISC 0x00000437
-#define MSR_SANDY_BRIDGE_MC14_MISC 0x0000043B
-#define MSR_SANDY_BRIDGE_MC15_MISC 0x0000043F
-#define MSR_SANDY_BRIDGE_MC16_MISC 0x00000443
-#define MSR_SANDY_BRIDGE_MC17_MISC 0x00000447
-#define MSR_SANDY_BRIDGE_MC18_MISC 0x0000044B
-#define MSR_SANDY_BRIDGE_MC19_MISC 0x0000044F
-/// @}
-
-
-/**
Package. Package RAPL Perf Status (R/O).
@param ECX MSR_SANDY_BRIDGE_PKG_PERF_STATUS (0x00000613)
diff --git a/UefiCpuPkg/Include/Register/Msr/SilvermontMsr.h b/UefiCpuPkg/Include/Register/Msr/SilvermontMsr.h
index 335ebb2..b3b6b76 100644
--- a/UefiCpuPkg/Include/Register/Msr/SilvermontMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/SilvermontMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-4.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.4.
**/
@@ -27,7 +27,7 @@
#include <Register/ArchitecturalMsr.h>
/**
- Shared. Model Specific Platform ID (R).
+ Module. Model Specific Platform ID (R).
@param ECX MSR_SILVERMONT_PLATFORM_ID (0x00000017)
@param EAX Lower 32-bits of MSR value.
@@ -74,8 +74,7 @@ typedef union {
/**
- Shared. Processor Hard Power-On Configuration (R/W) Enables and disables
- processor features; (R) indicates current processor configuration.
+ Module. Processor Hard Power-On Configuration (R/W) Writes ignored.
@param ECX MSR_SILVERMONT_EBL_CR_POWERON (0x0000002A)
@param EAX Lower 32-bits of MSR value.
@@ -102,69 +101,8 @@ typedef union {
/// Individual bit fields
///
struct {
- UINT32 Reserved1:1;
- ///
- /// [Bit 1] Data Error Checking Enable (R/W) 1 = Enabled; 0 = Disabled
- /// Always 0.
- ///
- UINT32 DataErrorCheckingEnable:1;
- ///
- /// [Bit 2] Response Error Checking Enable (R/W) 1 = Enabled; 0 = Disabled
- /// Always 0.
- ///
- UINT32 ResponseErrorCheckingEnable:1;
- ///
- /// [Bit 3] AERR# Drive Enable (R/W) 1 = Enabled; 0 = Disabled Always 0.
- ///
- UINT32 AERR_DriveEnable:1;
- ///
- /// [Bit 4] BERR# Enable for initiator bus requests (R/W) 1 = Enabled; 0 =
- /// Disabled Always 0.
- ///
- UINT32 BERR_Enable:1;
- UINT32 Reserved2:1;
- UINT32 Reserved3:1;
- ///
- /// [Bit 7] BINIT# Driver Enable (R/W) 1 = Enabled; 0 = Disabled Always 0.
- ///
- UINT32 BINIT_DriverEnable:1;
- UINT32 Reserved4:1;
- ///
- /// [Bit 9] Execute BIST (R/O) 1 = Enabled; 0 = Disabled.
- ///
- UINT32 ExecuteBIST:1;
- ///
- /// [Bit 10] AERR# Observation Enabled (R/O) 1 = Enabled; 0 = Disabled
- /// Always 0.
- ///
- UINT32 AERR_ObservationEnabled:1;
- UINT32 Reserved5:1;
- ///
- /// [Bit 12] BINIT# Observation Enabled (R/O) 1 = Enabled; 0 = Disabled
- /// Always 0.
- ///
- UINT32 BINIT_ObservationEnabled:1;
- UINT32 Reserved6:1;
- ///
- /// [Bit 14] 1 MByte Power on Reset Vector (R/O) 1 = 1 MByte; 0 = 4 GBytes.
- ///
- UINT32 ResetVector:1;
- UINT32 Reserved7:1;
- ///
- /// [Bits 17:16] APIC Cluster ID (R/O) Always 00B.
- ///
- UINT32 APICClusterID:2;
- UINT32 Reserved8:2;
- ///
- /// [Bits 21:20] Symmetric Arbitration ID (R/O) Always 00B.
- ///
- UINT32 SymmetricArbitrationID:2;
- ///
- /// [Bits 26:22] Integer Bus Frequency Ratio (R/O).
- ///
- UINT32 IntegerBusFrequencyRatio:5;
- UINT32 Reserved9:5;
- UINT32 Reserved10:32;
+ UINT32 Reserved1:32;
+ UINT32 Reserved2:32;
} Bits;
///
/// All bit fields as a 32-bit value
@@ -223,12 +161,64 @@ typedef union {
/**
+ Core. Control Features in Intel 64 Processor (R/W). See Table 35-2.
+
+ @param ECX MSR_IA32_SILVERMONT_FEATURE_CONTROL (0x0000003A)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type
+ MSR_SILVERMONT_IA32_FEATURE_CONTROL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type
+ MSR_SILVERMONT_IA32_FEATURE_CONTROL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_SILVERMONT_IA32_FEATURE_CONTROL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_IA32_FEATURE_CONTROL);
+ AsmWriteMsr64 (MSR_SILVERMONT_IA32_FEATURE_CONTROL, Msr.Uint64);
+ @endcode
+ @note MSR_SILVERMONT_IA32_FEATURE_CONTROL is defined as IA32_FEATURE_CONTROL in SDM.
+**/
+#define MSR_SILVERMONT_IA32_FEATURE_CONTROL 0x0000003A
+
+/**
+ MSR information returned for MSR index #MSR_SILVERMONT_IA32_FEATURE_CONTROL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Lock (R/WL).
+ ///
+ UINT32 Lock:1;
+ UINT32 Reserved1:1;
+ ///
+ /// [Bit 2] Enable VMX outside SMX operation (R/WL).
+ ///
+ UINT32 EnableVmxOutsideSmx:1;
+ UINT32 Reserved2:29;
+ UINT32 Reserved3:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_SILVERMONT_IA32_FEATURE_CONTROL_REGISTER;
+
+
+/**
Core. Last Branch Record n From IP (R/W) One of eight pairs of last branch
- record registers on the last branch record stack. This part of the stack
- contains pointers to the source instruction for one of the last eight
- branches, exceptions, or interrupts taken by the processor. See also: -
- Last Branch Record Stack TOS at 1C9H - Section 17.12, "Last Branch,
- Interrupt, and Exception Recording (Pentium M Processors).".
+ record registers on the last branch record stack. The From_IP part of the
+ stack contains pointers to the source instruction. See also: - Last Branch
+ Record Stack TOS at 1C9H - Section 17.5 and record format in Section
+ 17.4.8.1.
@param ECX MSR_SILVERMONT_LASTBRANCH_n_FROM_IP
@param EAX Lower 32-bits of MSR value.
@@ -264,9 +254,8 @@ typedef union {
/**
Core. Last Branch Record n To IP (R/W) One of eight pairs of last branch
- record registers on the last branch record stack. This part of the stack
- contains pointers to the destination instruction for one of the last eight
- branches, exceptions, or interrupts taken by the processor.
+ record registers on the last branch record stack. The To_IP part of the
+ stack contains pointers to the destination instruction.
@param ECX MSR_SILVERMONT_LASTBRANCH_n_TO_IP
@param EAX Lower 32-bits of MSR value.
@@ -301,7 +290,7 @@ typedef union {
/**
- Shared. Scalable Bus Speed(RO) This field indicates the intended scalable
+ Module. Scalable Bus Speed(RO) This field indicates the intended scalable
bus clock speed for processors based on Silvermont microarchitecture:.
@param ECX MSR_SILVERMONT_FSB_FREQ (0x000000CD)
@@ -367,7 +356,7 @@ typedef union {
/**
- Shared. C-State Configuration Control (R/W) Note: C-state values are
+ Module. C-State Configuration Control (R/W) Note: C-state values are
processor specific C-state code names, unrelated to MWAIT extension C-state
parameters or ACPI CStates. See http://biosbits.org.
@@ -433,7 +422,7 @@ typedef union {
/**
- Shared. Power Management IO Redirection in C-state (R/W) See
+ Module. Power Management IO Redirection in C-state (R/W) See
http://biosbits.org.
@param ECX MSR_SILVERMONT_PMG_IO_CAPTURE_BASE (0x000000E4)
@@ -493,7 +482,7 @@ typedef union {
/**
- Shared.
+ Module.
@param ECX MSR_SILVERMONT_BBL_CR_CTL3 (0x0000011E)
@param EAX Lower 32-bits of MSR value.
@@ -639,8 +628,8 @@ typedef union {
UINT32 FastStrings:1;
UINT32 Reserved1:2;
///
- /// [Bit 3] Shared. Automatic Thermal Control Circuit Enable (R/W) See
- /// Table 35-2.
+ /// [Bit 3] Module. Automatic Thermal Control Circuit Enable (R/W) See
+ /// Table 35-2. Default value is 0.
///
UINT32 AutomaticThermalControlCircuit:1;
UINT32 Reserved2:3;
@@ -654,13 +643,13 @@ typedef union {
///
UINT32 BTS:1;
///
- /// [Bit 12] Core. Precise Event Based Sampling Unavailable (RO) See Table
- /// 35-2.
+ /// [Bit 12] Core. Processor Event Based Sampling Unavailable (RO) See
+ /// Table 35-2.
///
UINT32 PEBS:1;
UINT32 Reserved4:3;
///
- /// [Bit 16] Shared. Enhanced Intel SpeedStep Technology Enable (R/W) See
+ /// [Bit 16] Module. Enhanced Intel SpeedStep Technology Enable (R/W) See
/// Table 35-2.
///
UINT32 EIST:1;
@@ -675,7 +664,7 @@ typedef union {
///
UINT32 LimitCpuidMaxval:1;
///
- /// [Bit 23] Shared. xTPR Message Disable (R/W) See Table 35-2.
+ /// [Bit 23] Module. xTPR Message Disable (R/W) See Table 35-2.
///
UINT32 xTPR_Message_Disable:1;
UINT32 Reserved7:8;
@@ -686,7 +675,7 @@ typedef union {
UINT32 XD:1;
UINT32 Reserved9:3;
///
- /// [Bit 38] Shared. Turbo Mode Disable (R/W) When set to 1 on processors
+ /// [Bit 38] Module. Turbo Mode Disable (R/W) When set to 1 on processors
/// that support Intel Turbo Boost Technology, the turbo mode feature is
/// disabled and the IDA_Enable feature flag will be clear (CPUID.06H:
/// EAX[1]=0). When set to a 0 on processors that support IDA, CPUID.06H:
@@ -763,7 +752,62 @@ typedef union {
/**
- Shared. Offcore Response Event Select Register (R/W).
+ Miscellaneous Feature Control (R/W).
+
+ @param ECX MSR_SILVERMONT_MISC_FEATURE_CONTROL (0x000001A4)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_SILVERMONT_MISC_FEATURE_CONTROL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_SILVERMONT_MISC_FEATURE_CONTROL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_SILVERMONT_MISC_FEATURE_CONTROL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_MISC_FEATURE_CONTROL);
+ AsmWriteMsr64 (MSR_SILVERMONT_MISC_FEATURE_CONTROL, Msr.Uint64);
+ @endcode
+ @note MSR_SILVERMONT_MISC_FEATURE_CONTROL is defined as MSR_MISC_FEATURE_CONTROL in SDM.
+**/
+#define MSR_SILVERMONT_MISC_FEATURE_CONTROL 0x000001A4
+
+/**
+ MSR information returned for MSR index #MSR_SILVERMONT_MISC_FEATURE_CONTROL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Core. L2 Hardware Prefetcher Disable (R/W) If 1, disables the
+ /// L2 hardware prefetcher, which fetches additional lines of code or data
+ /// into the L2 cache.
+ ///
+ UINT32 L2HardwarePrefetcherDisable:1;
+ UINT32 Reserved1:1;
+ ///
+ /// [Bit 2] Core. DCU Hardware Prefetcher Disable (R/W) If 1, disables
+ /// the L1 data cache prefetcher, which fetches the next cache line into
+ /// L1 data cache.
+ ///
+ UINT32 DCUHardwarePrefetcherDisable:1;
+ UINT32 Reserved2:29;
+ UINT32 Reserved3:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_SILVERMONT_MISC_FEATURE_CONTROL_REGISTER;
+
+
+/**
+ Module. Offcore Response Event Select Register (R/W).
@param ECX MSR_SILVERMONT_OFFCORE_RSP_0 (0x000001A6)
@param EAX Lower 32-bits of MSR value.
@@ -782,7 +826,7 @@ typedef union {
/**
- Shared. Offcore Response Event Select Register (R/W).
+ Module. Offcore Response Event Select Register (R/W).
@param ECX MSR_SILVERMONT_OFFCORE_RSP_1 (0x000001A7)
@param EAX Lower 32-bits of MSR value.
@@ -877,9 +921,88 @@ typedef union {
/**
+ Core. Last Branch Record Filtering Select Register (R/W) See Section
+ 17.7.2, "Filtering of Last Branch Records.".
+
+ @param ECX MSR_SILVERMONT_LBR_SELECT (0x000001C8)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_SILVERMONT_LBR_SELECT_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_SILVERMONT_LBR_SELECT_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_SILVERMONT_LBR_SELECT_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_LBR_SELECT);
+ AsmWriteMsr64 (MSR_SILVERMONT_LBR_SELECT, Msr.Uint64);
+ @endcode
+ @note MSR_SILVERMONT_LBR_SELECT is defined as MSR_LBR_SELECT in SDM.
+**/
+#define MSR_SILVERMONT_LBR_SELECT 0x000001C8
+
+/**
+ MSR information returned for MSR index #MSR_SILVERMONT_LBR_SELECT
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] CPL_EQ_0.
+ ///
+ UINT32 CPL_EQ_0:1;
+ ///
+ /// [Bit 1] CPL_NEQ_0.
+ ///
+ UINT32 CPL_NEQ_0:1;
+ ///
+ /// [Bit 2] JCC.
+ ///
+ UINT32 JCC:1;
+ ///
+ /// [Bit 3] NEAR_REL_CALL.
+ ///
+ UINT32 NEAR_REL_CALL:1;
+ ///
+ /// [Bit 4] NEAR_IND_CALL.
+ ///
+ UINT32 NEAR_IND_CALL:1;
+ ///
+ /// [Bit 5] NEAR_RET.
+ ///
+ UINT32 NEAR_RET:1;
+ ///
+ /// [Bit 6] NEAR_IND_JMP.
+ ///
+ UINT32 NEAR_IND_JMP:1;
+ ///
+ /// [Bit 7] NEAR_REL_JMP.
+ ///
+ UINT32 NEAR_REL_JMP:1;
+ ///
+ /// [Bit 8] FAR_BRANCH.
+ ///
+ UINT32 FAR_BRANCH:1;
+ UINT32 Reserved1:23;
+ UINT32 Reserved2:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_SILVERMONT_LBR_SELECT_REGISTER;
+
+
+/**
Core. Last Branch Record Stack TOS (R/W) Contains an index (bits 0-2) that
points to the MSR containing the most recent branch record. See
- MSR_LASTBRANCH_0_FROM_IP (at 40H).
+ MSR_LASTBRANCH_0_FROM_IP.
@param ECX MSR_SILVERMONT_LASTBRANCH_TOS (0x000001C9)
@param EAX Lower 32-bits of MSR value.
@@ -939,27 +1062,7 @@ typedef union {
/**
- Core. See Table 35-2. See Section 18.4.2, "Global Counter Control
- Facilities.".
-
- @param ECX MSR_SILVERMONT_IA32_PERF_GLOBAL_STAUS (0x0000038E)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SILVERMONT_IA32_PERF_GLOBAL_STAUS);
- AsmWriteMsr64 (MSR_SILVERMONT_IA32_PERF_GLOBAL_STAUS, Msr);
- @endcode
- @note MSR_SILVERMONT_IA32_PERF_GLOBAL_STAUS is defined as IA32_PERF_GLOBAL_STAUS in SDM.
-**/
-#define MSR_SILVERMONT_IA32_PERF_GLOBAL_STAUS 0x0000038E
-
-
-/**
- Core. See Table 35-2. See Section 18.4.4, "Precise Event Based Sampling
+ Core. See Table 35-2. See Section 18.4.4, "Processor Event Based Sampling
(PEBS).".
@param ECX MSR_SILVERMONT_PEBS_ENABLE (0x000003F1)
@@ -988,7 +1091,7 @@ typedef union {
///
struct {
///
- /// [Bit 0] Enable PEBS on IA32_PMC0. (R/W).
+ /// [Bit 0] Enable PEBS for precise event on IA32_PMC0. (R/W).
///
UINT32 PEBS:1;
UINT32 Reserved1:31;
@@ -1050,84 +1153,6 @@ typedef union {
/**
- Core. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
-
- @param ECX MSR_SILVERMONT_MCi_CTL
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SILVERMONT_MC3_CTL);
- AsmWriteMsr64 (MSR_SILVERMONT_MC3_CTL, Msr);
- @endcode
- @note MSR_SILVERMONT_MC3_CTL is defined as MSR_MC3_CTL in SDM.
- MSR_SILVERMONT_MC4_CTL is defined as MSR_MC4_CTL in SDM.
- MSR_SILVERMONT_MC5_CTL is defined as MSR_MC5_CTL in SDM.
- @{
-**/
-#define MSR_SILVERMONT_MC3_CTL 0x0000040C
-#define MSR_SILVERMONT_MC4_CTL 0x00000410
-#define MSR_SILVERMONT_MC5_CTL 0x00000414
-/// @}
-
-
-/**
- Core. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
-
- @param ECX MSR_SILVERMONT_MCi_STATUS
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SILVERMONT_MC3_STATUS);
- AsmWriteMsr64 (MSR_SILVERMONT_MC3_STATUS, Msr);
- @endcode
- @note MSR_SILVERMONT_MC3_STATUS is defined as MSR_MC3_STATUS in SDM.
- MSR_SILVERMONT_MC4_STATUS is defined as MSR_MC4_STATUS in SDM.
- MSR_SILVERMONT_MC5_STATUS is defined as MSR_MC5_STATUS in SDM.
- @{
-**/
-#define MSR_SILVERMONT_MC3_STATUS 0x0000040D
-#define MSR_SILVERMONT_MC4_STATUS 0x00000411
-#define MSR_SILVERMONT_MC5_STATUS 0x00000415
-/// @}
-
-
-/**
- Core. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MCi_ADDR register
- is either not implemented or contains no address if the ADDRV flag in the
- MSR_MCi_STATUS register is clear. When not implemented in the processor, all
- reads and writes to this MSR will cause a general-protection exception.
-
- @param ECX MSR_SILVERMONT_MCi_ADDR
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_SILVERMONT_MC3_ADDR);
- AsmWriteMsr64 (MSR_SILVERMONT_MC3_ADDR, Msr);
- @endcode
- @note MSR_SILVERMONT_MC3_ADDR is defined as MSR_MC3_ADDR in SDM.
- MSR_SILVERMONT_MC4_ADDR is defined as MSR_MC4_ADDR in SDM.
- MSR_SILVERMONT_MC5_ADDR is defined as MSR_MC5_ADDR in SDM.
- @{
-**/
-#define MSR_SILVERMONT_MC3_ADDR 0x0000040E
-#define MSR_SILVERMONT_MC4_ADDR 0x00000412
-#define MSR_SILVERMONT_MC5_ADDR 0x00000416
-/// @}
-
-
-/**
Core. Capability Reporting Register of EPT and VPID (R/O) See Table 35-2.
@param ECX MSR_SILVERMONT_IA32_VMX_EPT_VPID_ENUM (0x0000048C)
@@ -1279,7 +1304,7 @@ typedef union {
struct {
///
/// [Bits 14:0] Package Power Limit #1. (R/W) See Section 14.9.3, "Package
- /// RAPL Domain." and MSR_RAPL_POWER_UNIT in Table 35-7.
+ /// RAPL Domain." and MSR_RAPL_POWER_UNIT in Table 35-8.
///
UINT32 Limit:15;
///
@@ -1313,7 +1338,7 @@ typedef union {
/**
Package. PKG Energy Status (R/O) See Section 14.9.3, "Package RAPL Domain."
- and MSR_RAPL_POWER_UNIT in Table 35-7.
+ and MSR_RAPL_POWER_UNIT in Table 35-8.
@param ECX MSR_SILVERMONT_PKG_ENERGY_STATUS (0x00000611)
@param EAX Lower 32-bits of MSR value.
@@ -1332,7 +1357,7 @@ typedef union {
/**
Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
- Domains." and MSR_RAPL_POWER_UNIT in Table 35-7.
+ Domains." and MSR_RAPL_POWER_UNIT in Table 35-8.
@param ECX MSR_SILVERMONT_PP0_ENERGY_STATUS (0x00000639)
@param EAX Lower 32-bits of MSR value.
@@ -1489,7 +1514,7 @@ typedef union {
struct {
///
/// [Bits 14:0] PP0 Power Limit #1. (R/W) See Section 14.9.4, "PP0/PP1
- /// RAPL Domains." and MSR_RAPL_POWER_UNIT in Table 35-7.
+ /// RAPL Domains." and MSR_RAPL_POWER_UNIT in Table 35-8.
///
UINT32 Limit:15;
///
diff --git a/UefiCpuPkg/Include/Register/Msr/Xeon5600Msr.h b/UefiCpuPkg/Include/Register/Msr/Xeon5600Msr.h
index 504c76b..ea22e22 100644
--- a/UefiCpuPkg/Include/Register/Msr/Xeon5600Msr.h
+++ b/UefiCpuPkg/Include/Register/Msr/Xeon5600Msr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-6.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.7.
**/
diff --git a/UefiCpuPkg/Include/Register/Msr/XeonDMsr.h b/UefiCpuPkg/Include/Register/Msr/XeonDMsr.h
index 0a88eb0..5e7e13a 100644
--- a/UefiCpuPkg/Include/Register/Msr/XeonDMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/XeonDMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-13.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.14.
**/
@@ -55,11 +55,11 @@ typedef union {
///
struct {
///
- /// [Bit 0] LockOut (R/WO) See Table 35-21.
+ /// [Bit 0] LockOut (R/WO) See Table 35-24.
///
UINT32 LockOut:1;
///
- /// [Bit 1] Enable_PPIN (R/W) See Table 35-21.
+ /// [Bit 1] Enable_PPIN (R/W) See Table 35-24.
///
UINT32 Enable_PPIN:1;
UINT32 Reserved1:30;
@@ -78,7 +78,7 @@ typedef union {
/**
Package. Protected Processor Inventory Number (R/O). Protected Processor
- Inventory Number (R/O) See Table 35-21.
+ Inventory Number (R/O) See Table 35-24.
@param ECX MSR_XEON_D_PPIN (0x0000004F)
@param EAX Lower 32-bits of MSR value.
@@ -125,33 +125,33 @@ typedef union {
struct {
UINT32 Reserved1:8;
///
- /// [Bits 15:8] Package. Maximum Non-Turbo Ratio (R/O) See Table 35-21.
+ /// [Bits 15:8] Package. Maximum Non-Turbo Ratio (R/O) See Table 35-24.
///
UINT32 MaximumNonTurboRatio:8;
UINT32 Reserved2:7;
///
- /// [Bit 23] Package. PPIN_CAP (R/O) See Table 35-21.
+ /// [Bit 23] Package. PPIN_CAP (R/O) See Table 35-24.
///
UINT32 PPIN_CAP:1;
UINT32 Reserved3:4;
///
/// [Bit 28] Package. Programmable Ratio Limit for Turbo Mode (R/O) See
- /// Table 35-21.
+ /// Table 35-24.
///
UINT32 RatioLimit:1;
///
/// [Bit 29] Package. Programmable TDP Limit for Turbo Mode (R/O) See
- /// Table 35-21.
+ /// Table 35-24.
///
UINT32 TDPLimit:1;
///
- /// [Bit 30] Package. Programmable TJ OFFSET (R/O) See Table 35-21.
+ /// [Bit 30] Package. Programmable TJ OFFSET (R/O) See Table 35-24.
///
UINT32 TJOFFSET:1;
UINT32 Reserved4:1;
UINT32 Reserved5:8;
///
- /// [Bits 47:40] Package. Maximum Efficiency Ratio (R/O) See Table 35-21.
+ /// [Bits 47:40] Package. Maximum Efficiency Ratio (R/O) See Table 35-24.
///
UINT32 MaximumEfficiencyRatio:8;
UINT32 Reserved6:16;
@@ -417,11 +417,11 @@ typedef union {
struct {
UINT32 Reserved1:16;
///
- /// [Bits 23:16] Temperature Target (RO) See Table 35-21.
+ /// [Bits 23:16] Temperature Target (RO) See Table 35-24.
///
UINT32 TemperatureTarget:8;
///
- /// [Bits 27:24] TCC Activation Offset (R/W) See Table 35-21.
+ /// [Bits 27:24] TCC Activation Offset (R/W) See Table 35-24.
///
UINT32 TCCActivationOffset:4;
UINT32 Reserved2:4;
@@ -654,22 +654,49 @@ typedef union {
/**
- Package. DRAM Energy Status (R/O) See Section 14.9.5, "DRAM RAPL Domain.".
+ Package. DRAM Energy Status (R/O) Energy consumed by DRAM devices.
@param ECX MSR_XEON_D_DRAM_ENERGY_STATUS (0x00000619)
@param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_XEON_D_DRAM_ENERGY_STATUS_REGISTER.
@param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_XEON_D_DRAM_ENERGY_STATUS_REGISTER.
<b>Example usage</b>
@code
- UINT64 Msr;
+ MSR_XEON_D_DRAM_ENERGY_STATUS_REGISTER Msr;
- Msr = AsmReadMsr64 (MSR_XEON_D_DRAM_ENERGY_STATUS);
+ Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_DRAM_ENERGY_STATUS);
@endcode
@note MSR_XEON_D_DRAM_ENERGY_STATUS is defined as MSR_DRAM_ENERGY_STATUS in SDM.
**/
#define MSR_XEON_D_DRAM_ENERGY_STATUS 0x00000619
+/**
+ MSR information returned for MSR index #MSR_XEON_D_DRAM_ENERGY_STATUS
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 31:0] Energy in 15.3 micro-joules. Requires BIOS configuration
+ /// to enable DRAM RAPL mode 0 (Direct VR).
+ ///
+ UINT32 Energy:32;
+ UINT32 Reserved:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_XEON_D_DRAM_ENERGY_STATUS_REGISTER;
+
/**
Package. DRAM Performance Throttling Status (R/O) See Section 14.9.5, "DRAM
@@ -710,6 +737,24 @@ typedef union {
/**
+ Package. Reserved (R/O) Reads return 0.
+
+ @param ECX MSR_XEON_D_PP0_ENERGY_STATUS (0x00000639)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_XEON_D_PP0_ENERGY_STATUS);
+ @endcode
+ @note MSR_XEON_D_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.
+**/
+#define MSR_XEON_D_PP0_ENERGY_STATUS 0x00000639
+
+
+/**
Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency
refers to processor core frequency).
@@ -891,7 +936,7 @@ typedef union {
/**
THREAD. Monitoring Event Select Register (R/W) if CPUID.(EAX=07H,
- ECX=0):EBX.PQM[bit 12] = 1.
+ ECX=0):EBX.RDT-M[bit 12] = 1.
@param ECX MSR_XEON_D_IA32_QM_EVTSEL (0x00000C8D)
@param EAX Lower 32-bits of MSR value.
@@ -1110,385 +1155,6 @@ typedef union {
/**
- Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
- 15.3.2.4, "IA32_MCi_MISC MSRs.".
-
- * Bank MC5 reports MC error from the Intel QPI 0 module.
- * Bank MC6 reports MC error from the integrated I/O module.
- * Bank MC7 reports MC error from the home agent HA 0.
- * Bank MC8 reports MC error from the home agent HA 1.
- * Banks MC9 through MC16 report MC error from each channel of the integrated
- memory controllers.
- * Bank MC17 reports MC error from the following pair of CBo/L3 Slices
- (if the pair is present): CBo0, CBo3, CBo6, CBo9, CBo12, CBo15.
- * Bank MC18 reports MC error from the following pair of CBo/L3 Slices
- (if the pair is present): CBo1, CBo4, CBo7, CBo10, CBo13, CBo16.
- * Bank MC19 reports MC error from the following pair of CBo/L3 Slices
- (if the pair is present): CBo2, CBo5, CBo8, CBo11, CBo14, CBo17.
- * Bank MC20 reports MC error from the Intel QPI 1 module.
- * Bank MC21 reports MC error from the Intel QPI 2 module.
-
- @param ECX MSR_XEON_D_MCi_CTL
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_D_MC5_CTL);
- AsmWriteMsr64 (MSR_XEON_D_MC5_CTL, Msr);
- @endcode
- @note MSR_XEON_D_MC5_CTL is defined as MSR_MC5_CTL in SDM.
- MSR_XEON_D_MC6_CTL is defined as MSR_MC6_CTL in SDM.
- MSR_XEON_D_MC7_CTL is defined as MSR_MC7_CTL in SDM.
- MSR_XEON_D_MC8_CTL is defined as MSR_MC8_CTL in SDM.
- MSR_XEON_D_MC9_CTL is defined as MSR_MC9_CTL in SDM.
- MSR_XEON_D_MC10_CTL is defined as MSR_MC10_CTL in SDM.
- MSR_XEON_D_MC11_CTL is defined as MSR_MC11_CTL in SDM.
- MSR_XEON_D_MC12_CTL is defined as MSR_MC12_CTL in SDM.
- MSR_XEON_D_MC13_CTL is defined as MSR_MC13_CTL in SDM.
- MSR_XEON_D_MC14_CTL is defined as MSR_MC14_CTL in SDM.
- MSR_XEON_D_MC15_CTL is defined as MSR_MC15_CTL in SDM.
- MSR_XEON_D_MC16_CTL is defined as MSR_MC16_CTL in SDM.
- MSR_XEON_D_MC17_CTL is defined as MSR_MC17_CTL in SDM.
- MSR_XEON_D_MC18_CTL is defined as MSR_MC18_CTL in SDM.
- MSR_XEON_D_MC19_CTL is defined as MSR_MC19_CTL in SDM.
- MSR_XEON_D_MC20_CTL is defined as MSR_MC20_CTL in SDM.
- MSR_XEON_D_MC21_CTL is defined as MSR_MC21_CTL in SDM.
- @{
-**/
-#define MSR_XEON_D_MC5_CTL 0x00000414
-#define MSR_XEON_D_MC6_CTL 0x00000418
-#define MSR_XEON_D_MC7_CTL 0x0000041C
-#define MSR_XEON_D_MC8_CTL 0x00000420
-#define MSR_XEON_D_MC9_CTL 0x00000424
-#define MSR_XEON_D_MC10_CTL 0x00000428
-#define MSR_XEON_D_MC11_CTL 0x0000042C
-#define MSR_XEON_D_MC12_CTL 0x00000430
-#define MSR_XEON_D_MC13_CTL 0x00000434
-#define MSR_XEON_D_MC14_CTL 0x00000438
-#define MSR_XEON_D_MC15_CTL 0x0000043C
-#define MSR_XEON_D_MC16_CTL 0x00000440
-#define MSR_XEON_D_MC17_CTL 0x00000444
-#define MSR_XEON_D_MC18_CTL 0x00000448
-#define MSR_XEON_D_MC19_CTL 0x0000044C
-#define MSR_XEON_D_MC20_CTL 0x00000450
-#define MSR_XEON_D_MC21_CTL 0x00000454
-/// @}
-
-/**
- Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
- 15.3.2.4, "IA32_MCi_MISC MSRs.".
-
- @param ECX MSR_XEON_D_MCi_STATUS
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_D_MC6_STATUS);
- AsmWriteMsr64 (MSR_XEON_D_MC6_STATUS, Msr);
- @endcode
- @note MSR_XEON_D_MC5_STATUS is defined as MSR_MC5_STATUS in SDM.
- MSR_XEON_D_MC6_STATUS is defined as MSR_MC6_STATUS in SDM.
- MSR_XEON_D_MC7_STATUS is defined as MSR_MC7_STATUS in SDM.
- MSR_XEON_D_MC8_STATUS is defined as MSR_MC8_STATUS in SDM.
- MSR_XEON_D_MC9_STATUS is defined as MSR_MC9_STATUS in SDM.
- MSR_XEON_D_MC10_STATUS is defined as MSR_MC10_STATUS in SDM.
- MSR_XEON_D_MC11_STATUS is defined as MSR_MC11_STATUS in SDM.
- MSR_XEON_D_MC12_STATUS is defined as MSR_MC12_STATUS in SDM.
- MSR_XEON_D_MC13_STATUS is defined as MSR_MC13_STATUS in SDM.
- MSR_XEON_D_MC14_STATUS is defined as MSR_MC14_STATUS in SDM.
- MSR_XEON_D_MC15_STATUS is defined as MSR_MC15_STATUS in SDM.
- MSR_XEON_D_MC16_STATUS is defined as MSR_MC16_STATUS in SDM.
- MSR_XEON_D_MC17_STATUS is defined as MSR_MC17_STATUS in SDM.
- MSR_XEON_D_MC18_STATUS is defined as MSR_MC18_STATUS in SDM.
- MSR_XEON_D_MC19_STATUS is defined as MSR_MC19_STATUS in SDM.
- MSR_XEON_D_MC20_STATUS is defined as MSR_MC20_STATUS in SDM.
- MSR_XEON_D_MC21_STATUS is defined as MSR_MC21_STATUS in SDM.
- @{
-**/
-#define MSR_XEON_D_MC5_STATUS 0x00000415
-#define MSR_XEON_D_MC6_STATUS 0x00000419
-#define MSR_XEON_D_MC7_STATUS 0x0000041D
-#define MSR_XEON_D_MC8_STATUS 0x00000421
-#define MSR_XEON_D_MC9_STATUS 0x00000425
-#define MSR_XEON_D_MC10_STATUS 0x00000429
-#define MSR_XEON_D_MC11_STATUS 0x0000042D
-#define MSR_XEON_D_MC12_STATUS 0x00000431
-#define MSR_XEON_D_MC13_STATUS 0x00000435
-#define MSR_XEON_D_MC14_STATUS 0x00000439
-#define MSR_XEON_D_MC15_STATUS 0x0000043D
-#define MSR_XEON_D_MC16_STATUS 0x00000441
-#define MSR_XEON_D_MC17_STATUS 0x00000445
-#define MSR_XEON_D_MC18_STATUS 0x00000449
-#define MSR_XEON_D_MC19_STATUS 0x0000044D
-#define MSR_XEON_D_MC20_STATUS 0x00000451
-#define MSR_XEON_D_MC21_STATUS 0x00000455
-/// @}
-
-/**
- Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
- 15.3.2.4, "IA32_MCi_MISC MSRs.".
-
- @param ECX MSR_XEON_D_MCi_ADDR
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_D_MC6_ADDR);
- AsmWriteMsr64 (MSR_XEON_D_MC6_ADDR, Msr);
- @endcode
- @note MSR_XEON_D_MC5_ADDR is defined as MSR_MC5_ADDR in SDM.
- MSR_XEON_D_MC6_ADDR is defined as MSR_MC6_ADDR in SDM.
- MSR_XEON_D_MC7_ADDR is defined as MSR_MC7_ADDR in SDM.
- MSR_XEON_D_MC8_ADDR is defined as MSR_MC8_ADDR in SDM.
- MSR_XEON_D_MC9_ADDR is defined as MSR_MC9_ADDR in SDM.
- MSR_XEON_D_MC10_ADDR is defined as MSR_MC10_ADDR in SDM.
- MSR_XEON_D_MC11_ADDR is defined as MSR_MC11_ADDR in SDM.
- MSR_XEON_D_MC12_ADDR is defined as MSR_MC12_ADDR in SDM.
- MSR_XEON_D_MC13_ADDR is defined as MSR_MC13_ADDR in SDM.
- MSR_XEON_D_MC14_ADDR is defined as MSR_MC14_ADDR in SDM.
- MSR_XEON_D_MC15_ADDR is defined as MSR_MC15_ADDR in SDM.
- MSR_XEON_D_MC16_ADDR is defined as MSR_MC16_ADDR in SDM.
- MSR_XEON_D_MC17_ADDR is defined as MSR_MC17_ADDR in SDM.
- MSR_XEON_D_MC18_ADDR is defined as MSR_MC18_ADDR in SDM.
- MSR_XEON_D_MC19_ADDR is defined as MSR_MC19_ADDR in SDM.
- MSR_XEON_D_MC20_ADDR is defined as MSR_MC20_ADDR in SDM.
- MSR_XEON_D_MC21_ADDR is defined as MSR_MC21_ADDR in SDM.
- @{
-**/
-#define MSR_XEON_D_MC5_ADDR 0x00000416
-#define MSR_XEON_D_MC6_ADDR 0x0000041A
-#define MSR_XEON_D_MC7_ADDR 0x0000041E
-#define MSR_XEON_D_MC8_ADDR 0x00000422
-#define MSR_XEON_D_MC9_ADDR 0x00000426
-#define MSR_XEON_D_MC10_ADDR 0x0000042A
-#define MSR_XEON_D_MC11_ADDR 0x0000042E
-#define MSR_XEON_D_MC12_ADDR 0x00000432
-#define MSR_XEON_D_MC13_ADDR 0x00000436
-#define MSR_XEON_D_MC14_ADDR 0x0000043A
-#define MSR_XEON_D_MC15_ADDR 0x0000043E
-#define MSR_XEON_D_MC16_ADDR 0x00000442
-#define MSR_XEON_D_MC17_ADDR 0x00000446
-#define MSR_XEON_D_MC18_ADDR 0x0000044A
-#define MSR_XEON_D_MC19_ADDR 0x0000044E
-#define MSR_XEON_D_MC20_ADDR 0x00000452
-#define MSR_XEON_D_MC21_ADDR 0x00000456
-/// @}
-
-
-/**
- Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section
- 15.3.2.4, "IA32_MCi_MISC MSRs.".
-
- @param ECX MSR_XEON_D_MCi_MISC
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_D_MC6_MISC);
- AsmWriteMsr64 (MSR_XEON_D_MC6_MISC, Msr);
- @endcode
- @note MSR_XEON_D_MC5_MISC is defined as MSR_MC5_MISC in SDM.
- MSR_XEON_D_MC6_MISC is defined as MSR_MC6_MISC in SDM.
- MSR_XEON_D_MC7_MISC is defined as MSR_MC7_MISC in SDM.
- MSR_XEON_D_MC8_MISC is defined as MSR_MC8_MISC in SDM.
- MSR_XEON_D_MC9_MISC is defined as MSR_MC9_MISC in SDM.
- MSR_XEON_D_MC10_MISC is defined as MSR_MC10_MISC in SDM.
- MSR_XEON_D_MC11_MISC is defined as MSR_MC11_MISC in SDM.
- MSR_XEON_D_MC12_MISC is defined as MSR_MC12_MISC in SDM.
- MSR_XEON_D_MC13_MISC is defined as MSR_MC13_MISC in SDM.
- MSR_XEON_D_MC14_MISC is defined as MSR_MC14_MISC in SDM.
- MSR_XEON_D_MC15_MISC is defined as MSR_MC15_MISC in SDM.
- MSR_XEON_D_MC16_MISC is defined as MSR_MC16_MISC in SDM.
- MSR_XEON_D_MC17_MISC is defined as MSR_MC17_MISC in SDM.
- MSR_XEON_D_MC18_MISC is defined as MSR_MC18_MISC in SDM.
- MSR_XEON_D_MC19_MISC is defined as MSR_MC19_MISC in SDM.
- MSR_XEON_D_MC20_MISC is defined as MSR_MC20_MISC in SDM.
- MSR_XEON_D_MC21_MISC is defined as MSR_MC21_MISC in SDM.
- @{
-**/
-#define MSR_XEON_D_MC5_MISC 0x00000417
-#define MSR_XEON_D_MC6_MISC 0x0000041B
-#define MSR_XEON_D_MC7_MISC 0x0000041F
-#define MSR_XEON_D_MC8_MISC 0x00000423
-#define MSR_XEON_D_MC9_MISC 0x00000427
-#define MSR_XEON_D_MC10_MISC 0x0000042B
-#define MSR_XEON_D_MC11_MISC 0x0000042F
-#define MSR_XEON_D_MC12_MISC 0x00000433
-#define MSR_XEON_D_MC13_MISC 0x00000437
-#define MSR_XEON_D_MC14_MISC 0x0000043B
-#define MSR_XEON_D_MC15_MISC 0x0000043F
-#define MSR_XEON_D_MC16_MISC 0x00000443
-#define MSR_XEON_D_MC17_MISC 0x00000447
-#define MSR_XEON_D_MC18_MISC 0x0000044B
-#define MSR_XEON_D_MC19_MISC 0x0000044F
-#define MSR_XEON_D_MC20_MISC 0x00000453
-#define MSR_XEON_D_MC21_MISC 0x00000457
-/// @}
-
-
-/**
- Package. Note: C-state values are processor specific C-state code names,
- unrelated to MWAIT extension C-state parameters or ACPI C-States.
-
- @param ECX MSR_XEON_D_PKG_C8_RESIDENCY (0x00000630)
- @param EAX Lower 32-bits of MSR value.
- Described by the type MSR_XEON_D_PKG_C8_RESIDENCY_REGISTER.
- @param EDX Upper 32-bits of MSR value.
- Described by the type MSR_XEON_D_PKG_C8_RESIDENCY_REGISTER.
-
- <b>Example usage</b>
- @code
- MSR_XEON_D_PKG_C8_RESIDENCY_REGISTER Msr;
-
- Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_PKG_C8_RESIDENCY);
- AsmWriteMsr64 (MSR_XEON_D_PKG_C8_RESIDENCY, Msr.Uint64);
- @endcode
- @note MSR_XEON_D_PKG_C8_RESIDENCY is defined as MSR_PKG_C8_RESIDENCY in SDM.
-**/
-#define MSR_XEON_D_PKG_C8_RESIDENCY 0x00000630
-
-/**
- MSR information returned for MSR index #MSR_XEON_D_PKG_C8_RESIDENCY
-**/
-typedef union {
- ///
- /// Individual bit fields
- ///
- struct {
- ///
- /// [Bits 31:0] Package C8 Residency Counter. (R/O) Value since last reset
- /// that this package is in processor-specific C8 states. Count at the
- /// same frequency as the TSC.
- ///
- UINT32 C8ResidencyCounter:32;
- ///
- /// [Bits 59:32] Package C8 Residency Counter. (R/O) Value since last
- /// reset that this package is in processor-specific C8 states. Count at
- /// the same frequency as the TSC.
- ///
- UINT32 C8ResidencyCounterHi:28;
- UINT32 Reserved:4;
- } Bits;
- ///
- /// All bit fields as a 64-bit value
- ///
- UINT64 Uint64;
-} MSR_XEON_D_PKG_C8_RESIDENCY_REGISTER;
-
-
-/**
- Package. Note: C-state values are processor specific C-state code names,
- unrelated to MWAIT extension C-state parameters or ACPI C-States.
-
- @param ECX MSR_XEON_D_PKG_C9_RESIDENCY (0x00000631)
- @param EAX Lower 32-bits of MSR value.
- Described by the type MSR_XEON_D_PKG_C9_RESIDENCY_REGISTER.
- @param EDX Upper 32-bits of MSR value.
- Described by the type MSR_XEON_D_PKG_C9_RESIDENCY_REGISTER.
-
- <b>Example usage</b>
- @code
- MSR_XEON_D_PKG_C9_RESIDENCY_REGISTER Msr;
-
- Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_PKG_C9_RESIDENCY);
- AsmWriteMsr64 (MSR_XEON_D_PKG_C9_RESIDENCY, Msr.Uint64);
- @endcode
- @note MSR_XEON_D_PKG_C9_RESIDENCY is defined as MSR_PKG_C9_RESIDENCY in SDM.
-**/
-#define MSR_XEON_D_PKG_C9_RESIDENCY 0x00000631
-
-/**
- MSR information returned for MSR index #MSR_XEON_D_PKG_C9_RESIDENCY
-**/
-typedef union {
- ///
- /// Individual bit fields
- ///
- struct {
- ///
- /// [Bits 31:0] Package C9 Residency Counter. (R/O) Value since last reset
- /// that this package is in processor-specific C9 states. Count at the
- /// same frequency as the TSC.
- ///
- UINT32 C9ResidencyCounter:32;
- ///
- /// [Bits 59:32] Package C9 Residency Counter. (R/O) Value since last
- /// reset that this package is in processor-specific C9 states. Count at
- /// the same frequency as the TSC.
- ///
- UINT32 C9ResidencyCounterHi:28;
- UINT32 Reserved:4;
- } Bits;
- ///
- /// All bit fields as a 64-bit value
- ///
- UINT64 Uint64;
-} MSR_XEON_D_PKG_C9_RESIDENCY_REGISTER;
-
-
-/**
- Package. Note: C-state values are processor specific C-state code names,
- unrelated to MWAIT extension C-state parameters or ACPI C-States.
-
- @param ECX MSR_XEON_D_PKG_C10_RESIDENCY (0x00000632)
- @param EAX Lower 32-bits of MSR value.
- Described by the type MSR_XEON_D_PKG_C10_RESIDENCY_REGISTER.
- @param EDX Upper 32-bits of MSR value.
- Described by the type MSR_XEON_D_PKG_C10_RESIDENCY_REGISTER.
-
- <b>Example usage</b>
- @code
- MSR_XEON_D_PKG_C10_RESIDENCY_REGISTER Msr;
-
- Msr.Uint64 = AsmReadMsr64 (MSR_XEON_D_PKG_C10_RESIDENCY);
- AsmWriteMsr64 (MSR_XEON_D_PKG_C10_RESIDENCY, Msr.Uint64);
- @endcode
- @note MSR_XEON_D_PKG_C10_RESIDENCY is defined as MSR_PKG_C10_RESIDENCY in SDM.
-**/
-#define MSR_XEON_D_PKG_C10_RESIDENCY 0x00000632
-
-/**
- MSR information returned for MSR index #MSR_XEON_D_PKG_C10_RESIDENCY
-**/
-typedef union {
- ///
- /// Individual bit fields
- ///
- struct {
- ///
- /// [Bits 31:0] Package C10 Residency Counter. (R/O) Value since last
- /// reset that this package is in processor-specific C10 states. Count at
- /// the same frequency as the TSC.
- ///
- UINT32 C10ResidencyCounter:32;
- ///
- /// [Bits 59:32] Package C10 Residency Counter. (R/O) Value since last
- /// reset that this package is in processor-specific C10 states. Count at
- /// the same frequency as the TSC.
- ///
- UINT32 C10ResidencyCounterHi:28;
- UINT32 Reserved:4;
- } Bits;
- ///
- /// All bit fields as a 64-bit value
- ///
- UINT64 Uint64;
-} MSR_XEON_D_PKG_C10_RESIDENCY_REGISTER;
-
-
-/**
Package. Cache Allocation Technology Configuration (R/W).
@param ECX MSR_XEON_D_IA32_L3_QOS_CFG (0x00000C81)
diff --git a/UefiCpuPkg/Include/Register/Msr/XeonE7Msr.h b/UefiCpuPkg/Include/Register/Msr/XeonE7Msr.h
index 3128c4b..d14ef21 100644
--- a/UefiCpuPkg/Include/Register/Msr/XeonE7Msr.h
+++ b/UefiCpuPkg/Include/Register/Msr/XeonE7Msr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-7.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.8.
**/
@@ -27,6 +27,78 @@
#include <Register/ArchitecturalMsr.h>
/**
+ Core. AES Configuration (RW-L) Privileged post-BIOS agent must provide a #GP
+ handler to handle unsuccessful read of this MSR.
+
+ @param ECX MSR_XEON_E7_FEATURE_CONFIG (0x0000013C)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_XEON_E7_FEATURE_CONFIG_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_XEON_E7_FEATURE_CONFIG_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_XEON_E7_FEATURE_CONFIG_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_XEON_E7_FEATURE_CONFIG);
+ AsmWriteMsr64 (MSR_XEON_E7_FEATURE_CONFIG, Msr.Uint64);
+ @endcode
+ @note MSR_XEON_E7_FEATURE_CONFIG is defined as MSR_FEATURE_CONFIG in SDM.
+**/
+#define MSR_XEON_E7_FEATURE_CONFIG 0x0000013C
+
+/**
+ MSR information returned for MSR index #MSR_XEON_E7_FEATURE_CONFIG
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 1:0] AES Configuration (RW-L) Upon a successful read of this
+ /// MSR, the configuration of AES instruction set availability is as
+ /// follows: 11b: AES instructions are not available until next RESET.
+ /// otherwise, AES instructions are available. Note, AES instruction set
+ /// is not available if read is unsuccessful. If the configuration is not
+ /// 01b, AES instruction can be mis-configured if a privileged agent
+ /// unintentionally writes 11b.
+ ///
+ UINT32 AESConfiguration:2;
+ UINT32 Reserved1:30;
+ UINT32 Reserved2:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_XEON_E7_FEATURE_CONFIG_REGISTER;
+
+
+/**
+ Thread. Offcore Response Event Select Register (R/W).
+
+ @param ECX MSR_XEON_E7_OFFCORE_RSP_1 (0x000001A7)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_XEON_E7_OFFCORE_RSP_1);
+ AsmWriteMsr64 (MSR_XEON_E7_OFFCORE_RSP_1, Msr);
+ @endcode
+ @note MSR_XEON_E7_OFFCORE_RSP_1 is defined as MSR_OFFCORE_RSP_1 in SDM.
+**/
+#define MSR_XEON_E7_OFFCORE_RSP_1 0x000001A7
+
+
+/**
Package. Reserved Attempt to read/write will cause #UD.
@param ECX MSR_XEON_E7_TURBO_RATIO_LIMIT (0x000001AD)
diff --git a/UefiCpuPkg/Include/Register/Msr/XeonPhiMsr.h b/UefiCpuPkg/Include/Register/Msr/XeonPhiMsr.h
index 75f2dce..853d83b 100644
--- a/UefiCpuPkg/Include/Register/Msr/XeonPhiMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/XeonPhiMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-15.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.17.
**/
@@ -302,6 +302,58 @@ typedef union {
/**
+ THREAD. Enhanced SMM Capabilities (SMM-RO) Reports SMM capability
+ Enhancement. Accessible only while in SMM.
+
+ @param ECX MSR_XEON_PHI_SMM_MCA_CAP (0x0000017D)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_XEON_PHI_SMM_MCA_CAP_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_XEON_PHI_SMM_MCA_CAP_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_XEON_PHI_SMM_MCA_CAP_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_SMM_MCA_CAP);
+ AsmWriteMsr64 (MSR_XEON_PHI_SMM_MCA_CAP, Msr.Uint64);
+ @endcode
+ @note MSR_XEON_PHI_SMM_MCA_CAP is defined as MSR_SMM_MCA_CAP in SDM.
+**/
+#define MSR_XEON_PHI_SMM_MCA_CAP 0x0000017D
+
+/**
+ MSR information returned for MSR index #MSR_XEON_PHI_SMM_MCA_CAP
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ UINT32 Reserved1:32;
+ UINT32 Reserved2:26;
+ ///
+ /// [Bit 58] SMM_Code_Access_Chk (SMM-RO) If set to 1 indicates that the
+ /// SMM code access restriction is supported and a host-space interface
+ /// available to SMM handler.
+ ///
+ UINT32 SMM_Code_Access_Chk:1;
+ ///
+ /// [Bit 59] Long_Flow_Indication (SMM-RO) If set to 1 indicates that the
+ /// SMM long flow indicator is supported and a host-space interface
+ /// available to SMM handler.
+ ///
+ UINT32 Long_Flow_Indication:1;
+ UINT32 Reserved3:4;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_XEON_PHI_SMM_MCA_CAP_REGISTER;
+
+
+/**
Thread. Enable Misc. Processor Features (R/W) Allows a variety of processor
functions to be enabled and disabled.
@@ -336,7 +388,8 @@ typedef union {
UINT32 FastStrings:1;
UINT32 Reserved1:2;
///
- /// [Bit 3] Automatic Thermal Control Circuit Enable (R/W).
+ /// [Bit 3] Automatic Thermal Control Circuit Enable (R/W) Default value
+ /// is 1.
///
UINT32 AutomaticThermalControlCircuit:1;
UINT32 Reserved2:3;
@@ -350,7 +403,7 @@ typedef union {
///
UINT32 BTS:1;
///
- /// [Bit 12] Precise Event Based Sampling Unavailable (RO).
+ /// [Bit 12] Processor Event Based Sampling Unavailable (RO).
///
UINT32 PEBS:1;
UINT32 Reserved4:3;
@@ -444,6 +497,58 @@ typedef union {
/**
+ Miscellaneous Feature Control (R/W).
+
+ @param ECX MSR_XEON_PHI_MISC_FEATURE_CONTROL (0x000001A4)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_XEON_PHI_MISC_FEATURE_CONTROL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_XEON_PHI_MISC_FEATURE_CONTROL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_XEON_PHI_MISC_FEATURE_CONTROL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_XEON_PHI_MISC_FEATURE_CONTROL);
+ AsmWriteMsr64 (MSR_XEON_PHI_MISC_FEATURE_CONTROL, Msr.Uint64);
+ @endcode
+ @note MSR_XEON_PHI_MISC_FEATURE_CONTROL is defined as MSR_MISC_FEATURE_CONTROL in SDM.
+**/
+#define MSR_XEON_PHI_MISC_FEATURE_CONTROL 0x000001A4
+
+/**
+ MSR information returned for MSR index #MSR_XEON_PHI_MISC_FEATURE_CONTROL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Core. DCU Hardware Prefetcher Disable (R/W) If 1, disables the
+ /// L1 data cache prefetcher.
+ ///
+ UINT32 DCUHardwarePrefetcherDisable:1;
+ ///
+ /// [Bit 1] Core. L2 Hardware Prefetcher Disable (R/W) If 1, disables the
+ /// L2 hardware prefetcher.
+ ///
+ UINT32 L2HardwarePrefetcherDisable:1;
+ UINT32 Reserved1:30;
+ UINT32 Reserved2:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_XEON_PHI_MISC_FEATURE_CONTROL_REGISTER;
+
+
+/**
Shared. Offcore Response Event Select Register (R/W).
@param ECX MSR_XEON_PHI_OFFCORE_RSP_0 (0x000001A6)
@@ -685,25 +790,6 @@ typedef union {
/**
Thread. See Table 35-2.
- @param ECX MSR_XEON_PHI_IA32_PERF_GLOBAL_STAUS (0x0000038E)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_PHI_IA32_PERF_GLOBAL_STAUS);
- AsmWriteMsr64 (MSR_XEON_PHI_IA32_PERF_GLOBAL_STAUS, Msr);
- @endcode
- @note MSR_XEON_PHI_IA32_PERF_GLOBAL_STAUS is defined as IA32_PERF_GLOBAL_STAUS in SDM.
-**/
-#define MSR_XEON_PHI_IA32_PERF_GLOBAL_STAUS 0x0000038E
-
-
-/**
- Thread. See Table 35-2.
-
@param ECX MSR_XEON_PHI_PEBS_ENABLE (0x000003F1)
@param EAX Lower 32-bits of MSR value.
@param EDX Upper 32-bits of MSR value.
@@ -841,180 +927,6 @@ typedef union {
/**
- Core. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
-
- @param ECX MSR_XEON_PHI_MC3_CTL (0x0000040C)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_PHI_MC3_CTL);
- AsmWriteMsr64 (MSR_XEON_PHI_MC3_CTL, Msr);
- @endcode
- @note MSR_XEON_PHI_MC3_CTL is defined as MSR_MC3_CTL in SDM.
-**/
-#define MSR_XEON_PHI_MC3_CTL 0x0000040C
-
-
-/**
- Core. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
-
- @param ECX MSR_XEON_PHI_MC3_STATUS (0x0000040D)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_PHI_MC3_STATUS);
- AsmWriteMsr64 (MSR_XEON_PHI_MC3_STATUS, Msr);
- @endcode
- @note MSR_XEON_PHI_MC3_STATUS is defined as MSR_MC3_STATUS in SDM.
-**/
-#define MSR_XEON_PHI_MC3_STATUS 0x0000040D
-
-
-/**
- Core. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs.".
-
- @param ECX MSR_XEON_PHI_MC3_ADDR (0x0000040E)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_PHI_MC3_ADDR);
- AsmWriteMsr64 (MSR_XEON_PHI_MC3_ADDR, Msr);
- @endcode
- @note MSR_XEON_PHI_MC3_ADDR is defined as MSR_MC3_ADDR in SDM.
-**/
-#define MSR_XEON_PHI_MC3_ADDR 0x0000040E
-
-
-/**
- Core. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
-
- @param ECX MSR_XEON_PHI_MC4_CTL (0x00000410)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_PHI_MC4_CTL);
- AsmWriteMsr64 (MSR_XEON_PHI_MC4_CTL, Msr);
- @endcode
- @note MSR_XEON_PHI_MC4_CTL is defined as MSR_MC4_CTL in SDM.
-**/
-#define MSR_XEON_PHI_MC4_CTL 0x00000410
-
-
-/**
- Core. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
-
- @param ECX MSR_XEON_PHI_MC4_STATUS (0x00000411)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_PHI_MC4_STATUS);
- AsmWriteMsr64 (MSR_XEON_PHI_MC4_STATUS, Msr);
- @endcode
- @note MSR_XEON_PHI_MC4_STATUS is defined as MSR_MC4_STATUS in SDM.
-**/
-#define MSR_XEON_PHI_MC4_STATUS 0x00000411
-
-
-/**
- Core. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MC4_ADDR register
- is either not implemented or contains no address if the ADDRV flag in the
- MSR_MC4_STATUS register is clear. When not implemented in the processor, all
- reads and writes to this MSR will cause a general-protection exception.
-
- @param ECX MSR_XEON_PHI_MC4_ADDR (0x00000412)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_PHI_MC4_ADDR);
- AsmWriteMsr64 (MSR_XEON_PHI_MC4_ADDR, Msr);
- @endcode
- @note MSR_XEON_PHI_MC4_ADDR is defined as MSR_MC4_ADDR in SDM.
-**/
-#define MSR_XEON_PHI_MC4_ADDR 0x00000412
-
-
-/**
- Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
-
- @param ECX MSR_XEON_PHI_MC5_CTL (0x00000414)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_PHI_MC5_CTL);
- AsmWriteMsr64 (MSR_XEON_PHI_MC5_CTL, Msr);
- @endcode
- @note MSR_XEON_PHI_MC5_CTL is defined as MSR_MC5_CTL in SDM.
-**/
-#define MSR_XEON_PHI_MC5_CTL 0x00000414
-
-
-/**
- Package. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
-
- @param ECX MSR_XEON_PHI_MC5_STATUS (0x00000415)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_PHI_MC5_STATUS);
- AsmWriteMsr64 (MSR_XEON_PHI_MC5_STATUS, Msr);
- @endcode
- @note MSR_XEON_PHI_MC5_STATUS is defined as MSR_MC5_STATUS in SDM.
-**/
-#define MSR_XEON_PHI_MC5_STATUS 0x00000415
-
-
-/**
- Package. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs.".
-
- @param ECX MSR_XEON_PHI_MC5_ADDR (0x00000416)
- @param EAX Lower 32-bits of MSR value.
- @param EDX Upper 32-bits of MSR value.
-
- <b>Example usage</b>
- @code
- UINT64 Msr;
-
- Msr = AsmReadMsr64 (MSR_XEON_PHI_MC5_ADDR);
- AsmWriteMsr64 (MSR_XEON_PHI_MC5_ADDR, Msr);
- @endcode
- @note MSR_XEON_PHI_MC5_ADDR is defined as MSR_MC5_ADDR in SDM.
-**/
-#define MSR_XEON_PHI_MC5_ADDR 0x00000416
-
-
-/**
Core. Capability Reporting Register of EPT and VPID (R/O) See Table 35-2.
@param ECX MSR_XEON_PHI_IA32_VMX_EPT_VPID_ENUM (0x0000048C)
@@ -1323,7 +1235,7 @@ typedef union {
/**
- Package. Base TDP Ratio (R/O) See Table 35-20.
+ Package. Base TDP Ratio (R/O) See Table 35-23.
@param ECX MSR_XEON_PHI_CONFIG_TDP_NOMINAL (0x00000648)
@param EAX Lower 32-bits of MSR value.
@@ -1341,7 +1253,7 @@ typedef union {
/**
- Package. ConfigTDP Level 1 ratio and power level (R/O). See Table 35-20.
+ Package. ConfigTDP Level 1 ratio and power level (R/O). See Table 35-23.
@param ECX MSR_XEON_PHI_CONFIG_TDP_LEVEL1 (0x00000649)
@param EAX Lower 32-bits of MSR value.
@@ -1359,7 +1271,7 @@ typedef union {
/**
- Package. ConfigTDP Level 2 ratio and power level (R/O). See Table 35-20.
+ Package. ConfigTDP Level 2 ratio and power level (R/O). See Table 35-23.
@param ECX MSR_XEON_PHI_CONFIG_TDP_LEVEL2 (0x0000064A)
@param EAX Lower 32-bits of MSR value.
@@ -1377,7 +1289,7 @@ typedef union {
/**
- Package. ConfigTDP Control (R/W) See Table 35-20.
+ Package. ConfigTDP Control (R/W) See Table 35-23.
@param ECX MSR_XEON_PHI_CONFIG_TDP_CONTROL (0x0000064B)
@param EAX Lower 32-bits of MSR value.
@@ -1396,7 +1308,7 @@ typedef union {
/**
- Package. ConfigTDP Control (R/W) See Table 35-20.
+ Package. ConfigTDP Control (R/W) See Table 35-23.
@param ECX MSR_XEON_PHI_TURBO_ACTIVATION_RATIO (0x0000064C)
@param EAX Lower 32-bits of MSR value.
--
1.9.5.msysgit.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/4] UefiCpuPkg/Include: Update Skylake MSR header file with SDM (Sep.2016)
2016-12-14 8:33 [PATCH 0/4] Update CPUID & MSR header files with SDM (Sep.2016) Hao Wu
2016-12-14 8:33 ` [PATCH 1/4] UefiCpuPkg/Include: Update " Hao Wu
@ 2016-12-14 8:33 ` Hao Wu
2016-12-14 8:33 ` [PATCH 3/4] UefiCpuPkg/Include: Add Goldmont " Hao Wu
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Hao Wu @ 2016-12-14 8:33 UTC (permalink / raw)
To: edk2-devel; +Cc: Hao Wu, Michael Kinney, Jeff Fan
https://bugzilla.tianocore.org/show_bug.cgi?id=176
Update the MSR header file of Skylake processor according to Intel(R) 64
and IA-32 Architectures Software Developer's Manual, Volume 3, September
2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.15.
Summary of incompatible changes:
1. MSR (address 38EH) IA32_PERF_GLOBAL_STAUS has been renamed to
IA32_PERF_GLOBAL_STATUS
Typo 'STAUS' has been fixed in SDM.
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
---
UefiCpuPkg/Include/Register/Msr/SkylakeMsr.h | 1189 +++++++++++++++++++++++++-
1 file changed, 1169 insertions(+), 20 deletions(-)
diff --git a/UefiCpuPkg/Include/Register/Msr/SkylakeMsr.h b/UefiCpuPkg/Include/Register/Msr/SkylakeMsr.h
index 604b98f..23ca3e1 100644
--- a/UefiCpuPkg/Include/Register/Msr/SkylakeMsr.h
+++ b/UefiCpuPkg/Include/Register/Msr/SkylakeMsr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-14.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.15.
**/
@@ -146,28 +146,28 @@ typedef union {
/**
- See Table 35-2. See Section 18.2.2.3, "Full-Width Writes to Performance
- Counter Registers.".
+ See Table 35-2. See Section 18.2.4, "Architectural Performance Monitoring
+ Version 4.".
- @param ECX MSR_SKYLAKE_IA32_PERF_GLOBAL_STAUS (0x0000038E)
+ @param ECX MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS (0x0000038E)
@param EAX Lower 32-bits of MSR value.
- Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STAUS_REGISTER.
+ Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER.
@param EDX Upper 32-bits of MSR value.
- Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STAUS_REGISTER.
+ Described by the type MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER.
<b>Example usage</b>
@code
- MSR_SKYLAKE_IA32_PERF_GLOBAL_STAUS_REGISTER Msr;
+ MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER Msr;
- Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STAUS);
- AsmWriteMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STAUS, Msr.Uint64);
+ Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS);
+ AsmWriteMsr64 (MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS, Msr.Uint64);
@endcode
- @note MSR_SKYLAKE_IA32_PERF_GLOBAL_STAUS is defined as IA32_PERF_GLOBAL_STAUS in SDM.
+ @note MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS is defined as IA32_PERF_GLOBAL_STATUS in SDM.
**/
-#define MSR_SKYLAKE_IA32_PERF_GLOBAL_STAUS 0x0000038E
+#define MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS 0x0000038E
/**
- MSR information returned for MSR index #MSR_SKYLAKE_IA32_PERF_GLOBAL_STAUS
+ MSR information returned for MSR index #MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS
**/
typedef union {
///
@@ -254,12 +254,12 @@ typedef union {
/// All bit fields as a 64-bit value
///
UINT64 Uint64;
-} MSR_SKYLAKE_IA32_PERF_GLOBAL_STAUS_REGISTER;
+} MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_REGISTER;
/**
- See Table 35-2. See Section 18.2.2.3, "Full-Width Writes to Performance
- Counter Registers.".
+ See Table 35-2. See Section 18.2.4, "Architectural Performance Monitoring
+ Version 4.".
@param ECX MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_RESET (0x00000390)
@param EAX Lower 32-bits of MSR value.
@@ -371,8 +371,8 @@ typedef union {
/**
- See Table 35-2. See Section 18.2.2.3, "Full-Width Writes to Performance
- Counter Registers.".
+ See Table 35-2. See Section 18.2.4, "Architectural Performance Monitoring
+ Version 4.".
@param ECX MSR_SKYLAKE_IA32_PERF_GLOBAL_STATUS_SET (0x00000391)
@param EAX Lower 32-bits of MSR value.
@@ -541,6 +541,25 @@ typedef union {
/**
+ Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
+ Domains.".
+
+ @param ECX MSR_SKYLAKE_PP0_ENERGY_STATUS (0x00000639)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_PP0_ENERGY_STATUS);
+ @endcode
+ @note MSR_SKYLAKE_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.
+**/
+#define MSR_SKYLAKE_PP0_ENERGY_STATUS 0x00000639
+
+
+/**
Platform*. Platform Energy Counter. (R/O). This MSR is valid only if both
platform vendor hardware implementation and BIOS enablement support it. This
MSR will read 0 if not valid.
@@ -611,6 +630,187 @@ typedef union {
/**
+ Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency
+ refers to processor core frequency).
+
+ @param ECX MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS (0x0000064F)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS);
+ AsmWriteMsr64 (MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS, Msr.Uint64);
+ @endcode
+ @note MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS is defined as MSR_CORE_PERF_LIMIT_REASONS in SDM.
+**/
+#define MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS 0x0000064F
+
+/**
+ MSR information returned for MSR index #MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] PROCHOT Status (R0) When set, frequency is reduced below the
+ /// operating system request due to assertion of external PROCHOT.
+ ///
+ UINT32 PROCHOT_Status:1;
+ ///
+ /// [Bit 1] Thermal Status (R0) When set, frequency is reduced below the
+ /// operating system request due to a thermal event.
+ ///
+ UINT32 ThermalStatus:1;
+ UINT32 Reserved1:2;
+ ///
+ /// [Bit 4] Residency State Regulation Status (R0) When set, frequency is
+ /// reduced below the operating system request due to residency state
+ /// regulation limit.
+ ///
+ UINT32 ResidencyStateRegulationStatus:1;
+ ///
+ /// [Bit 5] Running Average Thermal Limit Status (R0) When set, frequency
+ /// is reduced below the operating system request due to Running Average
+ /// Thermal Limit (RATL).
+ ///
+ UINT32 RunningAverageThermalLimitStatus:1;
+ ///
+ /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced
+ /// below the operating system request due to a thermal alert from a
+ /// processor Voltage Regulator (VR).
+ ///
+ UINT32 VRThermAlertStatus:1;
+ ///
+ /// [Bit 7] VR Therm Design Current Status (R0) When set, frequency is
+ /// reduced below the operating system request due to VR thermal design
+ /// current limit.
+ ///
+ UINT32 VRThermDesignCurrentStatus:1;
+ ///
+ /// [Bit 8] Other Status (R0) When set, frequency is reduced below the
+ /// operating system request due to electrical or other constraints.
+ ///
+ UINT32 OtherStatus:1;
+ UINT32 Reserved2:1;
+ ///
+ /// [Bit 10] Package/Platform-Level Power Limiting PL1 Status (R0) When
+ /// set, frequency is reduced below the operating system request due to
+ /// package/platform-level power limiting PL1.
+ ///
+ UINT32 PL1Status:1;
+ ///
+ /// [Bit 11] Package/Platform-Level PL2 Power Limiting Status (R0) When
+ /// set, frequency is reduced below the operating system request due to
+ /// package/platform-level power limiting PL2/PL3.
+ ///
+ UINT32 PL2Status:1;
+ ///
+ /// [Bit 12] Max Turbo Limit Status (R0) When set, frequency is reduced
+ /// below the operating system request due to multi-core turbo limits.
+ ///
+ UINT32 MaxTurboLimitStatus:1;
+ ///
+ /// [Bit 13] Turbo Transition Attenuation Status (R0) When set, frequency
+ /// is reduced below the operating system request due to Turbo transition
+ /// attenuation. This prevents performance degradation due to frequent
+ /// operating ratio changes.
+ ///
+ UINT32 TurboTransitionAttenuationStatus:1;
+ UINT32 Reserved3:2;
+ ///
+ /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit
+ /// has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 PROCHOT_Log:1;
+ ///
+ /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit
+ /// has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 ThermalLog:1;
+ UINT32 Reserved4:2;
+ ///
+ /// [Bit 20] Residency State Regulation Log When set, indicates that the
+ /// Residency State Regulation Status bit has asserted since the log bit
+ /// was last cleared. This log bit will remain set until cleared by
+ /// software writing 0.
+ ///
+ UINT32 ResidencyStateRegulationLog:1;
+ ///
+ /// [Bit 21] Running Average Thermal Limit Log When set, indicates that
+ /// the RATL Status bit has asserted since the log bit was last cleared.
+ /// This log bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 RunningAverageThermalLimitLog:1;
+ ///
+ /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm
+ /// Alert Status bit has asserted since the log bit was last cleared. This
+ /// log bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 VRThermAlertLog:1;
+ ///
+ /// [Bit 23] VR Thermal Design Current Log When set, indicates that the
+ /// VR TDC Status bit has asserted since the log bit was last cleared.
+ /// This log bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 VRThermalDesignCurrentLog:1;
+ ///
+ /// [Bit 24] Other Log When set, indicates that the Other Status bit has
+ /// asserted since the log bit was last cleared. This log bit will remain
+ /// set until cleared by software writing 0.
+ ///
+ UINT32 OtherLog:1;
+ UINT32 Reserved5:1;
+ ///
+ /// [Bit 26] Package/Platform-Level PL1 Power Limiting Log When set,
+ /// indicates that the Package or Platform Level PL1 Power Limiting Status
+ /// bit has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 PL1Log:1;
+ ///
+ /// [Bit 27] Package/Platform-Level PL2 Power Limiting Log When set,
+ /// indicates that the Package or Platform Level PL2/PL3 Power Limiting
+ /// Status bit has asserted since the log bit was last cleared. This log
+ /// bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 PL2Log:1;
+ ///
+ /// [Bit 28] Max Turbo Limit Log When set, indicates that the Max Turbo
+ /// Limit Status bit has asserted since the log bit was last cleared. This
+ /// log bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 MaxTurboLimitLog:1;
+ ///
+ /// [Bit 29] Turbo Transition Attenuation Log When set, indicates that the
+ /// Turbo Transition Attenuation Status bit has asserted since the log bit
+ /// was last cleared. This log bit will remain set until cleared by
+ /// software writing 0.
+ ///
+ UINT32 TurboTransitionAttenuationLog:1;
+ UINT32 Reserved6:2;
+ UINT32 Reserved7:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_SKYLAKE_CORE_PERF_LIMIT_REASONS_REGISTER;
+
+
+/**
Package. HDC Configuration (R/W)..
@param ECX MSR_SKYLAKE_PKG_HDC_CONFIG (0x00000652)
@@ -899,7 +1099,7 @@ typedef union {
Thread. Last Branch Record n From IP (R/W) One of 32 triplets of last
branch record registers on the last branch record stack. This part of the
stack contains pointers to the source instruction. See also: - Last Branch
- Record Stack TOS at 1C9H - Section 17.9.
+ Record Stack TOS at 1C9H - Section 17.10.
@param ECX MSR_SKYLAKE_LASTBRANCH_n_FROM_IP
@param EAX Lower 32-bits of MSR value.
@@ -948,11 +1148,307 @@ typedef union {
#define MSR_SKYLAKE_LASTBRANCH_31_FROM_IP 0x0000069F
/// @}
+
+/**
+ Package. Indicator of Frequency Clipping in the Processor Graphics (R/W)
+ (frequency refers to processor graphics frequency).
+
+ @param ECX MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS (0x000006B0)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS);
+ AsmWriteMsr64 (MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS, Msr.Uint64);
+ @endcode
+ @note MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS is defined as MSR_GRAPHICS_PERF_LIMIT_REASONS in SDM.
+**/
+#define MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS 0x000006B0
+
+/**
+ MSR information returned for MSR index
+ #MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] PROCHOT Status (R0) When set, frequency is reduced due to
+ /// assertion of external PROCHOT.
+ ///
+ UINT32 PROCHOT_Status:1;
+ ///
+ /// [Bit 1] Thermal Status (R0) When set, frequency is reduced due to a
+ /// thermal event.
+ ///
+ UINT32 ThermalStatus:1;
+ UINT32 Reserved1:3;
+ ///
+ /// [Bit 5] Running Average Thermal Limit Status (R0) When set, frequency
+ /// is reduced due to running average thermal limit.
+ ///
+ UINT32 RunningAverageThermalLimitStatus:1;
+ ///
+ /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced due
+ /// to a thermal alert from a processor Voltage Regulator.
+ ///
+ UINT32 VRThermAlertStatus:1;
+ ///
+ /// [Bit 7] VR Thermal Design Current Status (R0) When set, frequency is
+ /// reduced due to VR TDC limit.
+ ///
+ UINT32 VRThermalDesignCurrentStatus:1;
+ ///
+ /// [Bit 8] Other Status (R0) When set, frequency is reduced due to
+ /// electrical or other constraints.
+ ///
+ UINT32 OtherStatus:1;
+ UINT32 Reserved2:1;
+ ///
+ /// [Bit 10] Package/Platform-Level Power Limiting PL1 Status (R0) When
+ /// set, frequency is reduced due to package/platform-level power limiting
+ /// PL1.
+ ///
+ UINT32 PL1Status:1;
+ ///
+ /// [Bit 11] Package/Platform-Level PL2 Power Limiting Status (R0) When
+ /// set, frequency is reduced due to package/platform-level power limiting
+ /// PL2/PL3.
+ ///
+ UINT32 PL2Status:1;
+ ///
+ /// [Bit 12] Inefficient Operation Status (R0) When set, processor
+ /// graphics frequency is operating below target frequency.
+ ///
+ UINT32 InefficientOperationStatus:1;
+ UINT32 Reserved3:3;
+ ///
+ /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit
+ /// has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 PROCHOT_Log:1;
+ ///
+ /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit
+ /// has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 ThermalLog:1;
+ UINT32 Reserved4:3;
+ ///
+ /// [Bit 21] Running Average Thermal Limit Log When set, indicates that
+ /// the RATL Status bit has asserted since the log bit was last cleared.
+ /// This log bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 RunningAverageThermalLimitLog:1;
+ ///
+ /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm
+ /// Alert Status bit has asserted since the log bit was last cleared. This
+ /// log bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 VRThermAlertLog:1;
+ ///
+ /// [Bit 23] VR Thermal Design Current Log When set, indicates that the
+ /// VR Therm Alert Status bit has asserted since the log bit was last
+ /// cleared. This log bit will remain set until cleared by software
+ /// writing 0.
+ ///
+ UINT32 VRThermalDesignCurrentLog:1;
+ ///
+ /// [Bit 24] Other Log When set, indicates that the OTHER Status bit has
+ /// asserted since the log bit was last cleared. This log bit will remain
+ /// set until cleared by software writing 0.
+ ///
+ UINT32 OtherLog:1;
+ UINT32 Reserved5:1;
+ ///
+ /// [Bit 26] Package/Platform-Level PL1 Power Limiting Log When set,
+ /// indicates that the Package/Platform Level PL1 Power Limiting Status
+ /// bit has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 PL1Log:1;
+ ///
+ /// [Bit 27] Package/Platform-Level PL2 Power Limiting Log When set,
+ /// indicates that the Package/Platform Level PL2 Power Limiting Status
+ /// bit has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 PL2Log:1;
+ ///
+ /// [Bit 28] Inefficient Operation Log When set, indicates that the
+ /// Inefficient Operation Status bit has asserted since the log bit was
+ /// last cleared. This log bit will remain set until cleared by software
+ /// writing 0.
+ ///
+ UINT32 InefficientOperationLog:1;
+ UINT32 Reserved6:3;
+ UINT32 Reserved7:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_SKYLAKE_GRAPHICS_PERF_LIMIT_REASONS_REGISTER;
+
+
+/**
+ Package. Indicator of Frequency Clipping in the Ring Interconnect (R/W)
+ (frequency refers to ring interconnect in the uncore).
+
+ @param ECX MSR_SKYLAKE_RING_PERF_LIMIT_REASONS (0x000006B1)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_RING_PERF_LIMIT_REASONS);
+ AsmWriteMsr64 (MSR_SKYLAKE_RING_PERF_LIMIT_REASONS, Msr.Uint64);
+ @endcode
+ @note MSR_SKYLAKE_RING_PERF_LIMIT_REASONS is defined as MSR_RING_PERF_LIMIT_REASONS in SDM.
+**/
+#define MSR_SKYLAKE_RING_PERF_LIMIT_REASONS 0x000006B1
+
+/**
+ MSR information returned for MSR index #MSR_SKYLAKE_RING_PERF_LIMIT_REASONS
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] PROCHOT Status (R0) When set, frequency is reduced due to
+ /// assertion of external PROCHOT.
+ ///
+ UINT32 PROCHOT_Status:1;
+ ///
+ /// [Bit 1] Thermal Status (R0) When set, frequency is reduced due to a
+ /// thermal event.
+ ///
+ UINT32 ThermalStatus:1;
+ UINT32 Reserved1:3;
+ ///
+ /// [Bit 5] Running Average Thermal Limit Status (R0) When set, frequency
+ /// is reduced due to running average thermal limit.
+ ///
+ UINT32 RunningAverageThermalLimitStatus:1;
+ ///
+ /// [Bit 6] VR Therm Alert Status (R0) When set, frequency is reduced due
+ /// to a thermal alert from a processor Voltage Regulator.
+ ///
+ UINT32 VRThermAlertStatus:1;
+ ///
+ /// [Bit 7] VR Thermal Design Current Status (R0) When set, frequency is
+ /// reduced due to VR TDC limit.
+ ///
+ UINT32 VRThermalDesignCurrentStatus:1;
+ ///
+ /// [Bit 8] Other Status (R0) When set, frequency is reduced due to
+ /// electrical or other constraints.
+ ///
+ UINT32 OtherStatus:1;
+ UINT32 Reserved2:1;
+ ///
+ /// [Bit 10] Package/Platform-Level Power Limiting PL1 Status (R0) When
+ /// set, frequency is reduced due to package/Platform-level power limiting
+ /// PL1.
+ ///
+ UINT32 PL1Status:1;
+ ///
+ /// [Bit 11] Package/Platform-Level PL2 Power Limiting Status (R0) When
+ /// set, frequency is reduced due to package/Platform-level power limiting
+ /// PL2/PL3.
+ ///
+ UINT32 PL2Status:1;
+ UINT32 Reserved3:4;
+ ///
+ /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit
+ /// has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 PROCHOT_Log:1;
+ ///
+ /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit
+ /// has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 ThermalLog:1;
+ UINT32 Reserved4:3;
+ ///
+ /// [Bit 21] Running Average Thermal Limit Log When set, indicates that
+ /// the RATL Status bit has asserted since the log bit was last cleared.
+ /// This log bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 RunningAverageThermalLimitLog:1;
+ ///
+ /// [Bit 22] VR Therm Alert Log When set, indicates that the VR Therm
+ /// Alert Status bit has asserted since the log bit was last cleared. This
+ /// log bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 VRThermAlertLog:1;
+ ///
+ /// [Bit 23] VR Thermal Design Current Log When set, indicates that the
+ /// VR Therm Alert Status bit has asserted since the log bit was last
+ /// cleared. This log bit will remain set until cleared by software
+ /// writing 0.
+ ///
+ UINT32 VRThermalDesignCurrentLog:1;
+ ///
+ /// [Bit 24] Other Log When set, indicates that the OTHER Status bit has
+ /// asserted since the log bit was last cleared. This log bit will remain
+ /// set until cleared by software writing 0.
+ ///
+ UINT32 OtherLog:1;
+ UINT32 Reserved5:1;
+ ///
+ /// [Bit 26] Package/Platform-Level PL1 Power Limiting Log When set,
+ /// indicates that the Package/Platform Level PL1 Power Limiting Status
+ /// bit has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 PL1Log:1;
+ ///
+ /// [Bit 27] Package/Platform-Level PL2 Power Limiting Log When set,
+ /// indicates that the Package/Platform Level PL2 Power Limiting Status
+ /// bit has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 PL2Log:1;
+ UINT32 Reserved6:4;
+ UINT32 Reserved7:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_SKYLAKE_RING_PERF_LIMIT_REASONS_REGISTER;
+
+
/**
Thread. Last Branch Record n To IP (R/W) One of 32 triplets of last branch
record registers on the last branch record stack. This part of the stack
contains pointers to the destination instruction. See also: - Last Branch
- Record Stack TOS at 1C9H - Section 17.9.
+ Record Stack TOS at 1C9H - Section 17.10.
@param ECX MSR_SKYLAKE_LASTBRANCH_n_TO_IP
@param EAX Lower 32-bits of MSR value.
@@ -1006,7 +1502,7 @@ typedef union {
Thread. Last Branch Record n Additional Information (R/W) One of 32 triplet
of last branch record registers on the last branch record stack. This part
of the stack contains flag, TSX-related and elapsed cycle information. See
- also: - Last Branch Record Stack TOS at 1C9H - Section 17.6.1, "LBR
+ also: - Last Branch Record Stack TOS at 1C9H - Section 17.7.1, "LBR
Stack.".
@param ECX MSR_SKYLAKE_LBR_INFO_n
@@ -1088,4 +1584,657 @@ typedef union {
#define MSR_SKYLAKE_LBR_INFO_31 0x00000DDF
/// @}
+
+/**
+ Package. Uncore fixed counter control (R/W).
+
+ @param ECX MSR_SKYLAKE_UNC_PERF_FIXED_CTRL (0x00000394)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTRL);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTRL, Msr.Uint64);
+ @endcode
+ @note MSR_SKYLAKE_UNC_PERF_FIXED_CTRL is defined as MSR_UNC_PERF_FIXED_CTRL in SDM.
+**/
+#define MSR_SKYLAKE_UNC_PERF_FIXED_CTRL 0x00000394
+
+/**
+ MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_FIXED_CTRL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ UINT32 Reserved1:20;
+ ///
+ /// [Bit 20] Enable overflow propagation.
+ ///
+ UINT32 EnableOverflow:1;
+ UINT32 Reserved2:1;
+ ///
+ /// [Bit 22] Enable counting.
+ ///
+ UINT32 EnableCounting:1;
+ UINT32 Reserved3:9;
+ UINT32 Reserved4:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_SKYLAKE_UNC_PERF_FIXED_CTRL_REGISTER;
+
+
+/**
+ Package. Uncore fixed counter.
+
+ @param ECX MSR_SKYLAKE_UNC_PERF_FIXED_CTR (0x00000395)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTR);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_FIXED_CTR, Msr.Uint64);
+ @endcode
+ @note MSR_SKYLAKE_UNC_PERF_FIXED_CTR is defined as MSR_UNC_PERF_FIXED_CTR in SDM.
+**/
+#define MSR_SKYLAKE_UNC_PERF_FIXED_CTR 0x00000395
+
+/**
+ MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_FIXED_CTR
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 31:0] Current count.
+ ///
+ UINT32 CurrentCount:32;
+ ///
+ /// [Bits 43:32] Current count.
+ ///
+ UINT32 CurrentCountHi:12;
+ UINT32 Reserved:20;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_SKYLAKE_UNC_PERF_FIXED_CTR_REGISTER;
+
+
+/**
+ Package. Uncore C-Box configuration information (R/O).
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_CONFIG (0x00000396)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_CONFIG);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_CONFIG is defined as MSR_UNC_CBO_CONFIG in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_CONFIG 0x00000396
+
+/**
+ MSR information returned for MSR index #MSR_SKYLAKE_UNC_CBO_CONFIG
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 3:0] Specifies the number of C-Box units with programmable
+ /// counters (including processor cores and processor graphics),.
+ ///
+ UINT32 CBox:4;
+ UINT32 Reserved1:28;
+ UINT32 Reserved2:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_SKYLAKE_UNC_CBO_CONFIG_REGISTER;
+
+
+/**
+ Package. Uncore Arb unit, performance counter 0.
+
+ @param ECX MSR_SKYLAKE_UNC_ARB_PERFCTR0 (0x000003B0)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR0);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR0, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_ARB_PERFCTR0 is defined as MSR_UNC_ARB_PERFCTR0 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_ARB_PERFCTR0 0x000003B0
+
+
+/**
+ Package. Uncore Arb unit, performance counter 1.
+
+ @param ECX MSR_SKYLAKE_UNC_ARB_PERFCTR1 (0x000003B1)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR1);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFCTR1, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_ARB_PERFCTR1 is defined as MSR_UNC_ARB_PERFCTR1 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_ARB_PERFCTR1 0x000003B1
+
+
+/**
+ Package. Uncore Arb unit, counter 0 event select MSR.
+
+ @param ECX MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0 (0x000003B2)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0 is defined as MSR_UNC_ARB_PERFEVTSEL0 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_ARB_PERFEVTSEL0 0x000003B2
+
+
+/**
+ Package. Uncore Arb unit, counter 1 event select MSR.
+
+ @param ECX MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 (0x000003B3)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 is defined as MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_ARB_PERFEVTSEL1 0x000003B3
+
+
+/**
+ Package. Uncore C-Box 0, counter 0 event select MSR.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0 (0x00000700)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0 is defined as MSR_UNC_CBO_0_PERFEVTSEL0 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL0 0x00000700
+
+
+/**
+ Package. Uncore C-Box 0, counter 1 event select MSR.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1 (0x00000701)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1 is defined as MSR_UNC_CBO_0_PERFEVTSEL1 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_0_PERFEVTSEL1 0x00000701
+
+
+/**
+ Package. Uncore C-Box 0, performance counter 0.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFCTR0 (0x00000706)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR0);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR0, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_0_PERFCTR0 is defined as MSR_UNC_CBO_0_PERFCTR0 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_0_PERFCTR0 0x00000706
+
+
+/**
+ Package. Uncore C-Box 0, performance counter 1.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_0_PERFCTR1 (0x00000707)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR1);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_0_PERFCTR1, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_0_PERFCTR1 is defined as MSR_UNC_CBO_0_PERFCTR1 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_0_PERFCTR1 0x00000707
+
+
+/**
+ Package. Uncore C-Box 1, counter 0 event select MSR.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0 (0x00000710)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0 is defined as MSR_UNC_CBO_1_PERFEVTSEL0 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL0 0x00000710
+
+
+/**
+ Package. Uncore C-Box 1, counter 1 event select MSR.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1 (0x00000711)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1 is defined as MSR_UNC_CBO_1_PERFEVTSEL1 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_1_PERFEVTSEL1 0x00000711
+
+
+/**
+ Package. Uncore C-Box 1, performance counter 0.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFCTR0 (0x00000716)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR0);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR0, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_1_PERFCTR0 is defined as MSR_UNC_CBO_1_PERFCTR0 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_1_PERFCTR0 0x00000716
+
+
+/**
+ Package. Uncore C-Box 1, performance counter 1.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_1_PERFCTR1 (0x00000717)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR1);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_1_PERFCTR1, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_1_PERFCTR1 is defined as MSR_UNC_CBO_1_PERFCTR1 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_1_PERFCTR1 0x00000717
+
+
+/**
+ Package. Uncore C-Box 2, counter 0 event select MSR.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0 (0x00000720)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0 is defined as MSR_UNC_CBO_2_PERFEVTSEL0 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL0 0x00000720
+
+
+/**
+ Package. Uncore C-Box 2, counter 1 event select MSR.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1 (0x00000721)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1 is defined as MSR_UNC_CBO_2_PERFEVTSEL1 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_2_PERFEVTSEL1 0x00000721
+
+
+/**
+ Package. Uncore C-Box 2, performance counter 0.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFCTR0 (0x00000726)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR0);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR0, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_2_PERFCTR0 is defined as MSR_UNC_CBO_2_PERFCTR0 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_2_PERFCTR0 0x00000726
+
+
+/**
+ Package. Uncore C-Box 2, performance counter 1.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_2_PERFCTR1 (0x00000727)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR1);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_2_PERFCTR1, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_2_PERFCTR1 is defined as MSR_UNC_CBO_2_PERFCTR1 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_2_PERFCTR1 0x00000727
+
+
+/**
+ Package. Uncore C-Box 3, counter 0 event select MSR.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0 (0x00000730)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0 is defined as MSR_UNC_CBO_3_PERFEVTSEL0 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL0 0x00000730
+
+
+/**
+ Package. Uncore C-Box 3, counter 1 event select MSR.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1 (0x00000731)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1 is defined as MSR_UNC_CBO_3_PERFEVTSEL1 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_3_PERFEVTSEL1 0x00000731
+
+
+/**
+ Package. Uncore C-Box 3, performance counter 0.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFCTR0 (0x00000736)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR0);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR0, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_3_PERFCTR0 is defined as MSR_UNC_CBO_3_PERFCTR0 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_3_PERFCTR0 0x00000736
+
+
+/**
+ Package. Uncore C-Box 3, performance counter 1.
+
+ @param ECX MSR_SKYLAKE_UNC_CBO_3_PERFCTR1 (0x00000737)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR1);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_CBO_3_PERFCTR1, Msr);
+ @endcode
+ @note MSR_SKYLAKE_UNC_CBO_3_PERFCTR1 is defined as MSR_UNC_CBO_3_PERFCTR1 in SDM.
+**/
+#define MSR_SKYLAKE_UNC_CBO_3_PERFCTR1 0x00000737
+
+
+/**
+ Package. Uncore PMU global control.
+
+ @param ECX MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL (0x00000E01)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL, Msr.Uint64);
+ @endcode
+ @note MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL is defined as MSR_UNC_PERF_GLOBAL_CTRL in SDM.
+**/
+#define MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL 0x00000E01
+
+/**
+ MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Slice 0 select.
+ ///
+ UINT32 PMI_Sel_Slice0:1;
+ ///
+ /// [Bit 1] Slice 1 select.
+ ///
+ UINT32 PMI_Sel_Slice1:1;
+ ///
+ /// [Bit 2] Slice 2 select.
+ ///
+ UINT32 PMI_Sel_Slice2:1;
+ ///
+ /// [Bit 3] Slice 3 select.
+ ///
+ UINT32 PMI_Sel_Slice3:1;
+ ///
+ /// [Bit 4] Slice 4select.
+ ///
+ UINT32 PMI_Sel_Slice4:1;
+ UINT32 Reserved1:14;
+ UINT32 Reserved2:10;
+ ///
+ /// [Bit 29] Enable all uncore counters.
+ ///
+ UINT32 EN:1;
+ ///
+ /// [Bit 30] Enable wake on PMI.
+ ///
+ UINT32 WakePMI:1;
+ ///
+ /// [Bit 31] Enable Freezing counter when overflow.
+ ///
+ UINT32 FREEZE:1;
+ UINT32 Reserved3:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_SKYLAKE_UNC_PERF_GLOBAL_CTRL_REGISTER;
+
+
+/**
+ Package. Uncore PMU main status.
+
+ @param ECX MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS (0x00000E02)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS);
+ AsmWriteMsr64 (MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS, Msr.Uint64);
+ @endcode
+ @note MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS is defined as MSR_UNC_PERF_GLOBAL_STATUS in SDM.
+**/
+#define MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS 0x00000E02
+
+/**
+ MSR information returned for MSR index #MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Fixed counter overflowed.
+ ///
+ UINT32 Fixed:1;
+ ///
+ /// [Bit 1] An ARB counter overflowed.
+ ///
+ UINT32 ARB:1;
+ UINT32 Reserved1:1;
+ ///
+ /// [Bit 3] A CBox counter overflowed (on any slice).
+ ///
+ UINT32 CBox:1;
+ UINT32 Reserved2:28;
+ UINT32 Reserved3:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_SKYLAKE_UNC_PERF_GLOBAL_STATUS_REGISTER;
+
#endif
--
1.9.5.msysgit.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/4] UefiCpuPkg/Include: Add Goldmont MSR header file with SDM (Sep.2016)
2016-12-14 8:33 [PATCH 0/4] Update CPUID & MSR header files with SDM (Sep.2016) Hao Wu
2016-12-14 8:33 ` [PATCH 1/4] UefiCpuPkg/Include: Update " Hao Wu
2016-12-14 8:33 ` [PATCH 2/4] UefiCpuPkg/Include: Update Skylake MSR header file " Hao Wu
@ 2016-12-14 8:33 ` Hao Wu
2016-12-14 8:33 ` [PATCH 4/4] UefiCpuPkg/Cpuid.h: Update CPUID definitions " Hao Wu
2016-12-15 18:16 ` [PATCH 0/4] Update CPUID & MSR header files " Kinney, Michael D
4 siblings, 0 replies; 6+ messages in thread
From: Hao Wu @ 2016-12-14 8:33 UTC (permalink / raw)
To: edk2-devel; +Cc: Hao Wu, Michael Kinney, Jeff Fan
https://bugzilla.tianocore.org/show_bug.cgi?id=176
Add the MSR header file of Goldmont processor according to Intel(R) 64 and
IA-32 Architectures Software Developer's Manual, Volume 3, September 2016,
Chapter 35 Model-Specific-Registers (MSR), Section 35.5.
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
---
UefiCpuPkg/Include/Register/Msr.h | 3 +-
UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h | 2515 +++++++++++++++++++++++++
2 files changed, 2517 insertions(+), 1 deletion(-)
create mode 100644 UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h
diff --git a/UefiCpuPkg/Include/Register/Msr.h b/UefiCpuPkg/Include/Register/Msr.h
index ffa6d44..0ac8d5b 100644
--- a/UefiCpuPkg/Include/Register/Msr.h
+++ b/UefiCpuPkg/Include/Register/Msr.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
- December 2015, Chapter 35 Model-Specific-Registers (MSR), Chapter 35.
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Chapter 35.
**/
@@ -28,6 +28,7 @@
#include <Register/Msr/Core2Msr.h>
#include <Register/Msr/AtomMsr.h>
#include <Register/Msr/SilvermontMsr.h>
+#include <Register/Msr/GoldmontMsr.h>
#include <Register/Msr/NehalemMsr.h>
#include <Register/Msr/Xeon5600Msr.h>
#include <Register/Msr/XeonE7Msr.h>
diff --git a/UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h b/UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h
new file mode 100644
index 0000000..58b9c57
--- /dev/null
+++ b/UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h
@@ -0,0 +1,2515 @@
+/** @file
+ MSR Definitions for Intel Atom processors based on the Goldmont microarchitecture.
+
+ Provides defines for Machine Specific Registers(MSR) indexes. Data structures
+ are provided for MSRs that contain one or more bit fields. If the MSR value
+ returned is a single 32-bit or 64-bit value, then a data structure is not
+ provided for that MSR.
+
+ Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+ This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ @par Specification Reference:
+ Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
+ September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.5.
+
+**/
+
+#ifndef __GOLDMONT_MSR_H__
+#define __GOLDMONT_MSR_H__
+
+#include <Register/ArchitecturalMsr.h>
+
+/**
+ Core. Control Features in Intel 64Processor (R/W).
+
+ @param ECX MSR_GOLDMONT_FEATURE_CONTROL (0x0000003A)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_FEATURE_CONTROL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_FEATURE_CONTROL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_FEATURE_CONTROL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_FEATURE_CONTROL);
+ AsmWriteMsr64 (MSR_GOLDMONT_FEATURE_CONTROL, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_FEATURE_CONTROL is defined as IA32_FEATURE_CONTROL in SDM.
+**/
+#define MSR_GOLDMONT_FEATURE_CONTROL 0x0000003A
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_FEATURE_CONTROL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Lock bit (R/WL)
+ ///
+ UINT32 Lock:1;
+ ///
+ /// [Bit 1] Enable VMX inside SMX operation (R/WL)
+ ///
+ UINT32 EnableVmxInsideSmx:1;
+ ///
+ /// [Bit 2] Enable VMX outside SMX operation (R/WL)
+ ///
+ UINT32 EnableVmxOutsideSmx:1;
+ UINT32 Reserved1:5;
+ ///
+ /// [Bits 14:8] SENTER local function enables (R/WL)
+ ///
+ UINT32 SenterLocalFunctionEnables:7;
+ ///
+ /// [Bit 15] SENTER global functions enable (R/WL)
+ ///
+ UINT32 SenterGlobalEnable:1;
+ UINT32 Reserved2:2;
+ ///
+ /// [Bit 18] SGX global functions enable (R/WL)
+ ///
+ UINT32 SgxEnable:1;
+ UINT32 Reserved3:13;
+ UINT32 Reserved4:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_FEATURE_CONTROL_REGISTER;
+
+
+/**
+ Package. See http://biosbits.org.
+
+ @param ECX MSR_GOLDMONT_PLATFORM_INFO (0x000000CE)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PLATFORM_INFO_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PLATFORM_INFO_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_PLATFORM_INFO_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PLATFORM_INFO);
+ AsmWriteMsr64 (MSR_GOLDMONT_PLATFORM_INFO, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_PLATFORM_INFO is defined as MSR_PLATFORM_INFO in SDM.
+**/
+#define MSR_GOLDMONT_PLATFORM_INFO 0x000000CE
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_PLATFORM_INFO
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ UINT32 Reserved1:8;
+ ///
+ /// [Bits 15:8] Package. Maximum Non-Turbo Ratio (R/O) The is the ratio
+ /// of the frequency that invariant TSC runs at. Frequency = ratio * 100
+ /// MHz.
+ ///
+ UINT32 MaximumNonTurboRatio:8;
+ UINT32 Reserved2:12;
+ ///
+ /// [Bit 28] Package. Programmable Ratio Limit for Turbo Mode (R/O) When
+ /// set to 1, indicates that Programmable Ratio Limits for Turbo mode is
+ /// enabled, and when set to 0, indicates Programmable Ratio Limits for
+ /// Turbo mode is disabled.
+ ///
+ UINT32 RatioLimit:1;
+ ///
+ /// [Bit 29] Package. Programmable TDP Limit for Turbo Mode (R/O) When
+ /// set to 1, indicates that TDP Limits for Turbo mode are programmable,
+ /// and when set to 0, indicates TDP Limit for Turbo mode is not
+ /// programmable.
+ ///
+ UINT32 TDPLimit:1;
+ ///
+ /// [Bit 30] Package. Programmable TJ OFFSET (R/O) When set to 1,
+ /// indicates that MSR_TEMPERATURE_TARGET.[27:24] is valid and writable to
+ /// specify an temperature offset.
+ ///
+ UINT32 TJOFFSET:1;
+ UINT32 Reserved3:1;
+ UINT32 Reserved4:8;
+ ///
+ /// [Bits 47:40] Package. Maximum Efficiency Ratio (R/O) The is the
+ /// minimum ratio (maximum efficiency) that the processor can operates, in
+ /// units of 100MHz.
+ ///
+ UINT32 MaximumEfficiencyRatio:8;
+ UINT32 Reserved5:16;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_PLATFORM_INFO_REGISTER;
+
+
+/**
+ Core. C-State Configuration Control (R/W) Note: C-state values are
+ processor specific C-state code names, unrelated to MWAIT extension C-state
+ parameters or ACPI CStates. See http://biosbits.org.
+
+ @param ECX MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL (0x000000E2)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type
+ MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type
+ MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL);
+ AsmWriteMsr64 (MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL is defined as MSR_PKG_CST_CONFIG_CONTROL in SDM.
+**/
+#define MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL 0x000000E2
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 3:0] Package C-State Limit (R/W) Specifies the lowest
+ /// processor-specific C-state code name (consuming the least power). for
+ /// the package. The default is set as factory-configured package C-state
+ /// limit. The following C-state code name encodings are supported: 0000b:
+ /// No limit 0001b: C1 0010b: C3 0011b: C6 0100b: C7 0101b: C7S 0110b: C8
+ /// 0111b: C9 1000b: C10.
+ ///
+ UINT32 Limit:4;
+ UINT32 Reserved1:6;
+ ///
+ /// [Bit 10] I/O MWAIT Redirection Enable (R/W) When set, will map
+ /// IO_read instructions sent to IO register specified by
+ /// MSR_PMG_IO_CAPTURE_BASE to MWAIT instructions.
+ ///
+ UINT32 IO_MWAIT:1;
+ UINT32 Reserved2:4;
+ ///
+ /// [Bit 15] CFG Lock (R/WO) When set, lock bits 15:0 of this register
+ /// until next reset.
+ ///
+ UINT32 CFGLock:1;
+ UINT32 Reserved3:16;
+ UINT32 Reserved4:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER;
+
+
+/**
+ Core. Enhanced SMM Capabilities (SMM-RO) Reports SMM capability Enhancement.
+ Accessible only while in SMM.
+
+ @param ECX MSR_GOLDMONT_SMM_MCA_CAP (0x0000017D)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_SMM_MCA_CAP_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_SMM_MCA_CAP_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_SMM_MCA_CAP_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_MCA_CAP);
+ AsmWriteMsr64 (MSR_GOLDMONT_SMM_MCA_CAP, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_SMM_MCA_CAP is defined as MSR_SMM_MCA_CAP in SDM.
+**/
+#define MSR_GOLDMONT_SMM_MCA_CAP 0x0000017D
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_SMM_MCA_CAP
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ UINT32 Reserved1:32;
+ UINT32 Reserved2:26;
+ ///
+ /// [Bit 58] SMM_Code_Access_Chk (SMM-RO) If set to 1 indicates that the
+ /// SMM code access restriction is supported and the
+ /// MSR_SMM_FEATURE_CONTROL is supported.
+ ///
+ UINT32 SMM_Code_Access_Chk:1;
+ ///
+ /// [Bit 59] Long_Flow_Indication (SMM-RO) If set to 1 indicates that the
+ /// SMM long flow indicator is supported and the MSR_SMM_DELAYED is
+ /// supported.
+ ///
+ UINT32 Long_Flow_Indication:1;
+ UINT32 Reserved3:4;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_SMM_MCA_CAP_REGISTER;
+
+
+/**
+ Enable Misc. Processor Features (R/W) Allows a variety of processor
+ functions to be enabled and disabled.
+
+ @param ECX MSR_GOLDMONT_IA32_MISC_ENABLE (0x000001A0)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_MISC_ENABLE);
+ AsmWriteMsr64 (MSR_GOLDMONT_IA32_MISC_ENABLE, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_IA32_MISC_ENABLE is defined as IA32_MISC_ENABLE in SDM.
+**/
+#define MSR_GOLDMONT_IA32_MISC_ENABLE 0x000001A0
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_IA32_MISC_ENABLE
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Core. Fast-Strings Enable See Table 35-2.
+ ///
+ UINT32 FastStrings:1;
+ UINT32 Reserved1:2;
+ ///
+ /// [Bit 3] Package. Automatic Thermal Control Circuit Enable (R/W) See
+ /// Table 35-2. Default value is 1.
+ ///
+ UINT32 AutomaticThermalControlCircuit:1;
+ UINT32 Reserved2:3;
+ ///
+ /// [Bit 7] Core. Performance Monitoring Available (R) See Table 35-2.
+ ///
+ UINT32 PerformanceMonitoring:1;
+ UINT32 Reserved3:3;
+ ///
+ /// [Bit 11] Core. Branch Trace Storage Unavailable (RO) See Table 35-2.
+ ///
+ UINT32 BTS:1;
+ ///
+ /// [Bit 12] Core. Processor Event Based Sampling Unavailable (RO) See
+ /// Table 35-2.
+ ///
+ UINT32 PEBS:1;
+ UINT32 Reserved4:3;
+ ///
+ /// [Bit 16] Package. Enhanced Intel SpeedStep Technology Enable (R/W) See
+ /// Table 35-2.
+ ///
+ UINT32 EIST:1;
+ UINT32 Reserved5:1;
+ ///
+ /// [Bit 18] Core. ENABLE MONITOR FSM (R/W) See Table 35-2.
+ ///
+ UINT32 MONITOR:1;
+ UINT32 Reserved6:3;
+ ///
+ /// [Bit 22] Core. Limit CPUID Maxval (R/W) See Table 35-2.
+ ///
+ UINT32 LimitCpuidMaxval:1;
+ ///
+ /// [Bit 23] Package. xTPR Message Disable (R/W) See Table 35-2.
+ ///
+ UINT32 xTPR_Message_Disable:1;
+ UINT32 Reserved7:8;
+ UINT32 Reserved8:2;
+ ///
+ /// [Bit 34] Core. XD Bit Disable (R/W) See Table 35-2.
+ ///
+ UINT32 XD:1;
+ UINT32 Reserved9:3;
+ ///
+ /// [Bit 38] Package. Turbo Mode Disable (R/W) When set to 1 on processors
+ /// that support Intel Turbo Boost Technology, the turbo mode feature is
+ /// disabled and the IDA_Enable feature flag will be clear (CPUID.06H:
+ /// EAX[1]=0). When set to a 0 on processors that support IDA, CPUID.06H:
+ /// EAX[1] reports the processor's support of turbo mode is enabled. Note:
+ /// the power-on default value is used by BIOS to detect hardware support
+ /// of turbo mode. If power-on default value is 1, turbo mode is available
+ /// in the processor. If power-on default value is 0, turbo mode is not
+ /// available.
+ ///
+ UINT32 TurboModeDisable:1;
+ UINT32 Reserved10:25;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER;
+
+
+/**
+ Miscellaneous Feature Control (R/W).
+
+ @param ECX MSR_GOLDMONT_MISC_FEATURE_CONTROL (0x000001A4)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_MISC_FEATURE_CONTROL);
+ AsmWriteMsr64 (MSR_GOLDMONT_MISC_FEATURE_CONTROL, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_MISC_FEATURE_CONTROL is defined as MSR_MISC_FEATURE_CONTROL in SDM.
+**/
+#define MSR_GOLDMONT_MISC_FEATURE_CONTROL 0x000001A4
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_MISC_FEATURE_CONTROL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Core. L2 Hardware Prefetcher Disable (R/W) If 1, disables the
+ /// L2 hardware prefetcher, which fetches additional lines of code or data
+ /// into the L2 cache.
+ ///
+ UINT32 L2HardwarePrefetcherDisable:1;
+ UINT32 Reserved1:1;
+ ///
+ /// [Bit 2] Core. DCU Hardware Prefetcher Disable (R/W) If 1, disables
+ /// the L1 data cache prefetcher, which fetches the next cache line into
+ /// L1 data cache.
+ ///
+ UINT32 DCUHardwarePrefetcherDisable:1;
+ UINT32 Reserved2:29;
+ UINT32 Reserved3:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER;
+
+
+/**
+ Package. See http://biosbits.org.
+
+ @param ECX MSR_GOLDMONT_MISC_PWR_MGMT (0x000001AA)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_MISC_PWR_MGMT);
+ AsmWriteMsr64 (MSR_GOLDMONT_MISC_PWR_MGMT, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_MISC_PWR_MGMT is defined as MSR_MISC_PWR_MGMT in SDM.
+**/
+#define MSR_GOLDMONT_MISC_PWR_MGMT 0x000001AA
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_MISC_PWR_MGMT
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] EIST Hardware Coordination Disable (R/W) When 0, enables
+ /// hardware coordination of Enhanced Intel Speedstep Technology request
+ /// from processor cores; When 1, disables hardware coordination of
+ /// Enhanced Intel Speedstep Technology requests.
+ ///
+ UINT32 EISTHardwareCoordinationDisable:1;
+ UINT32 Reserved1:21;
+ ///
+ /// [Bit 22] Thermal Interrupt Coordination Enable (R/W) If set, then
+ /// thermal interrupt on one core is routed to all cores.
+ ///
+ UINT32 ThermalInterruptCoordinationEnable:1;
+ UINT32 Reserved2:9;
+ UINT32 Reserved3:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER;
+
+
+/**
+ Package. Maximum Ratio Limit of Turbo Mode by Core Groups (RW) Specifies
+ Maximum Ratio Limit for each Core Group. Max ratio for groups with more
+ cores must decrease monotonically. For groups with less than 4 cores, the
+ max ratio must be 32 or less. For groups with 4-5 cores, the max ratio must
+ be 22 or less. For groups with more than 5 cores, the max ratio must be 16
+ or less..
+
+ @param ECX MSR_GOLDMONT_TURBO_RATIO_LIMIT (0x000001AD)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_TURBO_RATIO_LIMIT);
+ AsmWriteMsr64 (MSR_GOLDMONT_TURBO_RATIO_LIMIT, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_TURBO_RATIO_LIMIT is defined as MSR_TURBO_RATIO_LIMIT in SDM.
+**/
+#define MSR_GOLDMONT_TURBO_RATIO_LIMIT 0x000001AD
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_TURBO_RATIO_LIMIT
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 7:0] Package. Maximum Ratio Limit for Active cores in Group 0
+ /// Maximum turbo ratio limit when number of active cores is less or equal
+ /// to Group 0 threshold.
+ ///
+ UINT32 MaxRatioLimitGroup0:8;
+ ///
+ /// [Bits 15:8] Package. Maximum Ratio Limit for Active cores in Group 1
+ /// Maximum turbo ratio limit when number of active cores is less or equal
+ /// to Group 1 threshold and greater than Group 0 threshold.
+ ///
+ UINT32 MaxRatioLimitGroup1:8;
+ ///
+ /// [Bits 23:16] Package. Maximum Ratio Limit for Active cores in Group 2
+ /// Maximum turbo ratio limit when number of active cores is less or equal
+ /// to Group 2 threshold and greater than Group 1 threshold.
+ ///
+ UINT32 MaxRatioLimitGroup2:8;
+ ///
+ /// [Bits 31:24] Package. Maximum Ratio Limit for Active cores in Group 3
+ /// Maximum turbo ratio limit when number of active cores is less or equal
+ /// to Group 3 threshold and greater than Group 2 threshold.
+ ///
+ UINT32 MaxRatioLimitGroup3:8;
+ ///
+ /// [Bits 39:32] Package. Maximum Ratio Limit for Active cores in Group 4
+ /// Maximum turbo ratio limit when number of active cores is less or equal
+ /// to Group 4 threshold and greater than Group 3 threshold.
+ ///
+ UINT32 MaxRatioLimitGroup4:8;
+ ///
+ /// [Bits 47:40] Package. Maximum Ratio Limit for Active cores in Group 5
+ /// Maximum turbo ratio limit when number of active cores is less or equal
+ /// to Group 5 threshold and greater than Group 4 threshold.
+ ///
+ UINT32 MaxRatioLimitGroup5:8;
+ ///
+ /// [Bits 55:48] Package. Maximum Ratio Limit for Active cores in Group 6
+ /// Maximum turbo ratio limit when number of active cores is less or equal
+ /// to Group 6 threshold and greater than Group 5 threshold.
+ ///
+ UINT32 MaxRatioLimitGroup6:8;
+ ///
+ /// [Bits 63:56] Package. Maximum Ratio Limit for Active cores in Group 7
+ /// Maximum turbo ratio limit when number of active cores is less or equal
+ /// to Group 7 threshold and greater than Group 6 threshold.
+ ///
+ UINT32 MaxRatioLimitGroup7:8;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER;
+
+
+/**
+ Package. Group Size of Active Cores for Turbo Mode Operation (RW) Writes of
+ 0 threshold is ignored.
+
+ @param ECX MSR_GOLDMONT_TURBO_GROUP_CORECNT (0x000001AE)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_TURBO_GROUP_CORECNT);
+ AsmWriteMsr64 (MSR_GOLDMONT_TURBO_GROUP_CORECNT, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_TURBO_GROUP_CORECNT is defined as MSR_TURBO_GROUP_CORECNT in SDM.
+**/
+#define MSR_GOLDMONT_TURBO_GROUP_CORECNT 0x000001AE
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_TURBO_GROUP_CORECNT
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 7:0] Package. Group 0 Core Count Threshold Maximum number of
+ /// active cores to operate under Group 0 Max Turbo Ratio limit.
+ ///
+ UINT32 CoreCountThresholdGroup0:8;
+ ///
+ /// [Bits 15:8] Package. Group 1 Core Count Threshold Maximum number of
+ /// active cores to operate under Group 1 Max Turbo Ratio limit. Must be
+ /// greater than Group 0 Core Count.
+ ///
+ UINT32 CoreCountThresholdGroup1:8;
+ ///
+ /// [Bits 23:16] Package. Group 2 Core Count Threshold Maximum number of
+ /// active cores to operate under Group 2 Max Turbo Ratio limit. Must be
+ /// greater than Group 1 Core Count.
+ ///
+ UINT32 CoreCountThresholdGroup2:8;
+ ///
+ /// [Bits 31:24] Package. Group 3 Core Count Threshold Maximum number of
+ /// active cores to operate under Group 3 Max Turbo Ratio limit. Must be
+ /// greater than Group 2 Core Count.
+ ///
+ UINT32 CoreCountThresholdGroup3:8;
+ ///
+ /// [Bits 39:32] Package. Group 4 Core Count Threshold Maximum number of
+ /// active cores to operate under Group 4 Max Turbo Ratio limit. Must be
+ /// greater than Group 3 Core Count.
+ ///
+ UINT32 CoreCountThresholdGroup4:8;
+ ///
+ /// [Bits 47:40] Package. Group 5 Core Count Threshold Maximum number of
+ /// active cores to operate under Group 5 Max Turbo Ratio limit. Must be
+ /// greater than Group 4 Core Count.
+ ///
+ UINT32 CoreCountThresholdGroup5:8;
+ ///
+ /// [Bits 55:48] Package. Group 6 Core Count Threshold Maximum number of
+ /// active cores to operate under Group 6 Max Turbo Ratio limit. Must be
+ /// greater than Group 5 Core Count.
+ ///
+ UINT32 CoreCountThresholdGroup6:8;
+ ///
+ /// [Bits 63:56] Package. Group 7 Core Count Threshold Maximum number of
+ /// active cores to operate under Group 7 Max Turbo Ratio limit. Must be
+ /// greater than Group 6 Core Count and not less than the total number of
+ /// processor cores in the package. E.g. specify 255.
+ ///
+ UINT32 CoreCountThresholdGroup7:8;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER;
+
+
+/**
+ Core. Last Branch Record Filtering Select Register (R/W) See Section
+ 17.7.2, "Filtering of Last Branch Records.".
+
+ @param ECX MSR_GOLDMONT_LBR_SELECT (0x000001C8)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_LBR_SELECT_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_LBR_SELECT_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_LBR_SELECT_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_LBR_SELECT);
+ AsmWriteMsr64 (MSR_GOLDMONT_LBR_SELECT, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_LBR_SELECT is defined as MSR_LBR_SELECT in SDM.
+**/
+#define MSR_GOLDMONT_LBR_SELECT 0x000001C8
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_LBR_SELECT
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] CPL_EQ_0.
+ ///
+ UINT32 CPL_EQ_0:1;
+ ///
+ /// [Bit 1] CPL_NEQ_0.
+ ///
+ UINT32 CPL_NEQ_0:1;
+ ///
+ /// [Bit 2] JCC.
+ ///
+ UINT32 JCC:1;
+ ///
+ /// [Bit 3] NEAR_REL_CALL.
+ ///
+ UINT32 NEAR_REL_CALL:1;
+ ///
+ /// [Bit 4] NEAR_IND_CALL.
+ ///
+ UINT32 NEAR_IND_CALL:1;
+ ///
+ /// [Bit 5] NEAR_RET.
+ ///
+ UINT32 NEAR_RET:1;
+ ///
+ /// [Bit 6] NEAR_IND_JMP.
+ ///
+ UINT32 NEAR_IND_JMP:1;
+ ///
+ /// [Bit 7] NEAR_REL_JMP.
+ ///
+ UINT32 NEAR_REL_JMP:1;
+ ///
+ /// [Bit 8] FAR_BRANCH.
+ ///
+ UINT32 FAR_BRANCH:1;
+ ///
+ /// [Bit 9] EN_CALL_STACK.
+ ///
+ UINT32 EN_CALL_STACK:1;
+ UINT32 Reserved1:22;
+ UINT32 Reserved2:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_LBR_SELECT_REGISTER;
+
+
+/**
+ Core. Last Branch Record Stack TOS (R/W) Contains an index (bits 0-4) that
+ points to the MSR containing the most recent branch record. See
+ MSR_LASTBRANCH_0_FROM_IP.
+
+ @param ECX MSR_GOLDMONT_LASTBRANCH_TOS (0x000001C9)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_LASTBRANCH_TOS);
+ AsmWriteMsr64 (MSR_GOLDMONT_LASTBRANCH_TOS, Msr);
+ @endcode
+ @note MSR_GOLDMONT_LASTBRANCH_TOS is defined as MSR_LASTBRANCH_TOS in SDM.
+**/
+#define MSR_GOLDMONT_LASTBRANCH_TOS 0x000001C9
+
+
+/**
+ Core. Power Control Register. See http://biosbits.org.
+
+ @param ECX MSR_GOLDMONT_POWER_CTL (0x000001FC)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_POWER_CTL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_POWER_CTL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_POWER_CTL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_POWER_CTL);
+ AsmWriteMsr64 (MSR_GOLDMONT_POWER_CTL, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_POWER_CTL is defined as MSR_POWER_CTL in SDM.
+**/
+#define MSR_GOLDMONT_POWER_CTL 0x000001FC
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_POWER_CTL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ UINT32 Reserved1:1;
+ ///
+ /// [Bit 1] Package. C1E Enable (R/W) When set to '1', will enable the
+ /// CPU to switch to the Minimum Enhanced Intel SpeedStep Technology
+ /// operating point when all execution cores enter MWAIT (C1).
+ ///
+ UINT32 C1EEnable:1;
+ UINT32 Reserved2:30;
+ UINT32 Reserved3:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_POWER_CTL_REGISTER;
+
+
+/**
+ Package. Lower 64 Bit OwnerEpoch Component of SGX Key (RO). Low 64 bits of
+ an 128-bit external entropy value for key derivation of an enclave.
+
+ @param ECX MSR_GOLDMONT_SGXOWNER0 (0x00000300)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_SGXOWNER0);
+ @endcode
+ @note MSR_GOLDMONT_SGXOWNER0 is defined as MSR_SGXOWNER0 in SDM.
+**/
+#define MSR_GOLDMONT_SGXOWNER0 0x00000300
+
+
+/**
+ Package. Upper 64 Bit OwnerEpoch Component of SGX Key (RO). Upper 64 bits of
+ an 128-bit external entropy value for key derivation of an enclave.
+
+ @param ECX MSR_GOLDMONT_SGXOWNER1 (0x00000301)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_SGXOWNER1);
+ @endcode
+ @note MSR_GOLDMONT_SGXOWNER1 is defined as MSR_SGXOWNER1 in SDM.
+**/
+#define MSR_GOLDMONT_SGXOWNER1 0x00000301
+
+
+/**
+ Core. See Table 35-2. See Section 18.2.4, "Architectural Performance
+ Monitoring Version 4.".
+
+ @param ECX MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET (0x00000390)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET);
+ AsmWriteMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET is defined as IA32_PERF_GLOBAL_STATUS_RESET in SDM.
+**/
+#define MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET 0x00000390
+
+/**
+ MSR information returned for MSR index
+ #MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Set 1 to clear Ovf_PMC0.
+ ///
+ UINT32 Ovf_PMC0:1;
+ ///
+ /// [Bit 1] Set 1 to clear Ovf_PMC1.
+ ///
+ UINT32 Ovf_PMC1:1;
+ ///
+ /// [Bit 2] Set 1 to clear Ovf_PMC2.
+ ///
+ UINT32 Ovf_PMC2:1;
+ ///
+ /// [Bit 3] Set 1 to clear Ovf_PMC3.
+ ///
+ UINT32 Ovf_PMC3:1;
+ UINT32 Reserved1:28;
+ ///
+ /// [Bit 32] Set 1 to clear Ovf_FixedCtr0.
+ ///
+ UINT32 Ovf_FixedCtr0:1;
+ ///
+ /// [Bit 33] Set 1 to clear Ovf_FixedCtr1.
+ ///
+ UINT32 Ovf_FixedCtr1:1;
+ ///
+ /// [Bit 34] Set 1 to clear Ovf_FixedCtr2.
+ ///
+ UINT32 Ovf_FixedCtr2:1;
+ UINT32 Reserved2:20;
+ ///
+ /// [Bit 55] Set 1 to clear Trace_ToPA_PMI.
+ ///
+ UINT32 Trace_ToPA_PMI:1;
+ UINT32 Reserved3:2;
+ ///
+ /// [Bit 58] Set 1 to clear LBR_Frz.
+ ///
+ UINT32 LBR_Frz:1;
+ ///
+ /// [Bit 59] Set 1 to clear CTR_Frz.
+ ///
+ UINT32 CTR_Frz:1;
+ ///
+ /// [Bit 60] Set 1 to clear ASCI.
+ ///
+ UINT32 ASCI:1;
+ ///
+ /// [Bit 61] Set 1 to clear Ovf_Uncore.
+ ///
+ UINT32 Ovf_Uncore:1;
+ ///
+ /// [Bit 62] Set 1 to clear Ovf_BufDSSAVE.
+ ///
+ UINT32 Ovf_BufDSSAVE:1;
+ ///
+ /// [Bit 63] Set 1 to clear CondChgd.
+ ///
+ UINT32 CondChgd:1;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER;
+
+
+/**
+ Core. See Table 35-2. See Section 18.2.4, "Architectural Performance
+ Monitoring Version 4.".
+
+ @param ECX MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET (0x00000391)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET);
+ AsmWriteMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET is defined as IA32_PERF_GLOBAL_STATUS_SET in SDM.
+**/
+#define MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET 0x00000391
+
+/**
+ MSR information returned for MSR index
+ #MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Set 1 to cause Ovf_PMC0 = 1.
+ ///
+ UINT32 Ovf_PMC0:1;
+ ///
+ /// [Bit 1] Set 1 to cause Ovf_PMC1 = 1.
+ ///
+ UINT32 Ovf_PMC1:1;
+ ///
+ /// [Bit 2] Set 1 to cause Ovf_PMC2 = 1.
+ ///
+ UINT32 Ovf_PMC2:1;
+ ///
+ /// [Bit 3] Set 1 to cause Ovf_PMC3 = 1.
+ ///
+ UINT32 Ovf_PMC3:1;
+ UINT32 Reserved1:28;
+ ///
+ /// [Bit 32] Set 1 to cause Ovf_FixedCtr0 = 1.
+ ///
+ UINT32 Ovf_FixedCtr0:1;
+ ///
+ /// [Bit 33] Set 1 to cause Ovf_FixedCtr1 = 1.
+ ///
+ UINT32 Ovf_FixedCtr1:1;
+ ///
+ /// [Bit 34] Set 1 to cause Ovf_FixedCtr2 = 1.
+ ///
+ UINT32 Ovf_FixedCtr2:1;
+ UINT32 Reserved2:20;
+ ///
+ /// [Bit 55] Set 1 to cause Trace_ToPA_PMI = 1.
+ ///
+ UINT32 Trace_ToPA_PMI:1;
+ UINT32 Reserved3:2;
+ ///
+ /// [Bit 58] Set 1 to cause LBR_Frz = 1.
+ ///
+ UINT32 LBR_Frz:1;
+ ///
+ /// [Bit 59] Set 1 to cause CTR_Frz = 1.
+ ///
+ UINT32 CTR_Frz:1;
+ ///
+ /// [Bit 60] Set 1 to cause ASCI = 1.
+ ///
+ UINT32 ASCI:1;
+ ///
+ /// [Bit 61] Set 1 to cause Ovf_Uncore.
+ ///
+ UINT32 Ovf_Uncore:1;
+ ///
+ /// [Bit 62] Set 1 to cause Ovf_BufDSSAVE.
+ ///
+ UINT32 Ovf_BufDSSAVE:1;
+ UINT32 Reserved4:1;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER;
+
+
+/**
+ Core. See Table 35-2. See Section 18.4.4, "Processor Event Based Sampling
+ (PEBS).".
+
+ @param ECX MSR_GOLDMONT_PEBS_ENABLE (0x000003F1)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PEBS_ENABLE_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PEBS_ENABLE_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_PEBS_ENABLE_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PEBS_ENABLE);
+ AsmWriteMsr64 (MSR_GOLDMONT_PEBS_ENABLE, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_PEBS_ENABLE is defined as MSR_PEBS_ENABLE in SDM.
+**/
+#define MSR_GOLDMONT_PEBS_ENABLE 0x000003F1
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_PEBS_ENABLE
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Enable PEBS trigger and recording for the programmed event
+ /// (precise or otherwise) on IA32_PMC0. (R/W).
+ ///
+ UINT32 Enable:1;
+ UINT32 Reserved1:31;
+ UINT32 Reserved2:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_PEBS_ENABLE_REGISTER;
+
+
+/**
+ Package. Note: C-state values are processor specific C-state code names,
+ unrelated to MWAIT extension C-state parameters or ACPI CStates. Package C3
+ Residency Counter. (R/O) Value since last reset that this package is in
+ processor-specific C3 states. Count at the same frequency as the TSC.
+
+ @param ECX MSR_GOLDMONT_PKG_C3_RESIDENCY (0x000003F8)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C3_RESIDENCY);
+ AsmWriteMsr64 (MSR_GOLDMONT_PKG_C3_RESIDENCY, Msr);
+ @endcode
+ @note MSR_GOLDMONT_PKG_C3_RESIDENCY is defined as MSR_PKG_C3_RESIDENCY in SDM.
+**/
+#define MSR_GOLDMONT_PKG_C3_RESIDENCY 0x000003F8
+
+
+/**
+ Package. Note: C-state values are processor specific C-state code names,
+ unrelated to MWAIT extension C-state parameters or ACPI CStates. Package C6
+ Residency Counter. (R/O) Value since last reset that this package is in
+ processor-specific C6 states. Count at the same frequency as the TSC.
+
+ @param ECX MSR_GOLDMONT_PKG_C6_RESIDENCY (0x000003F9)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C6_RESIDENCY);
+ AsmWriteMsr64 (MSR_GOLDMONT_PKG_C6_RESIDENCY, Msr);
+ @endcode
+ @note MSR_GOLDMONT_PKG_C6_RESIDENCY is defined as MSR_PKG_C6_RESIDENCY in SDM.
+**/
+#define MSR_GOLDMONT_PKG_C6_RESIDENCY 0x000003F9
+
+
+/**
+ Core. Note: C-state values are processor specific C-state code names,
+ unrelated to MWAIT extension C-state parameters or ACPI CStates. CORE C3
+ Residency Counter. (R/O) Value since last reset that this core is in
+ processor-specific C3 states. Count at the same frequency as the TSC.
+
+ @param ECX MSR_GOLDMONT_CORE_C3_RESIDENCY (0x000003FC)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_CORE_C3_RESIDENCY);
+ AsmWriteMsr64 (MSR_GOLDMONT_CORE_C3_RESIDENCY, Msr);
+ @endcode
+ @note MSR_GOLDMONT_CORE_C3_RESIDENCY is defined as MSR_CORE_C3_RESIDENCY in SDM.
+**/
+#define MSR_GOLDMONT_CORE_C3_RESIDENCY 0x000003FC
+
+
+/**
+ Package. Enhanced SMM Feature Control (SMM-RW) Reports SMM capability
+ Enhancement. Accessible only while in SMM.
+
+ @param ECX MSR_GOLDMONT_SMM_FEATURE_CONTROL (0x000004E0)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_FEATURE_CONTROL);
+ AsmWriteMsr64 (MSR_GOLDMONT_SMM_FEATURE_CONTROL, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_SMM_FEATURE_CONTROL is defined as MSR_SMM_FEATURE_CONTROL in SDM.
+**/
+#define MSR_GOLDMONT_SMM_FEATURE_CONTROL 0x000004E0
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_SMM_FEATURE_CONTROL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] Lock (SMM-RWO) When set to '1' locks this register from
+ /// further changes.
+ ///
+ UINT32 Lock:1;
+ UINT32 Reserved1:1;
+ ///
+ /// [Bit 2] SMM_Code_Chk_En (SMM-RW) This control bit is available only if
+ /// MSR_SMM_MCA_CAP[58] == 1. When set to '0' (default) none of the
+ /// logical processors are prevented from executing SMM code outside the
+ /// ranges defined by the SMRR. When set to '1' any logical processor in
+ /// the package that attempts to execute SMM code not within the ranges
+ /// defined by the SMRR will assert an unrecoverable MCE.
+ ///
+ UINT32 SMM_Code_Chk_En:1;
+ UINT32 Reserved2:29;
+ UINT32 Reserved3:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER;
+
+
+/**
+ Package. SMM Delayed (SMM-RO) Reports the interruptible state of all logical
+ processors in the package. Available only while in SMM and
+ MSR_SMM_MCA_CAP[LONG_FLOW_INDICATION] == 1.
+
+ @param ECX MSR_GOLDMONT_SMM_DELAYED (0x000004E2)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_SMM_DELAYED_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_SMM_DELAYED_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_SMM_DELAYED_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_DELAYED);
+ AsmWriteMsr64 (MSR_GOLDMONT_SMM_DELAYED, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_SMM_DELAYED is defined as MSR_SMM_DELAYED in SDM.
+**/
+#define MSR_GOLDMONT_SMM_DELAYED 0x000004E2
+
+
+/**
+ Package. SMM Blocked (SMM-RO) Reports the blocked state of all logical
+ processors in the package. Available only while in SMM.
+
+ @param ECX MSR_GOLDMONT_SMM_BLOCKED (0x000004E3)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_SMM_BLOCKED_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_SMM_BLOCKED_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_SMM_BLOCKED_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_BLOCKED);
+ AsmWriteMsr64 (MSR_GOLDMONT_SMM_BLOCKED, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_SMM_BLOCKED is defined as MSR_SMM_BLOCKED in SDM.
+**/
+#define MSR_GOLDMONT_SMM_BLOCKED 0x000004E3
+
+
+/**
+ Core. Trace Control Register (R/W).
+
+ @param ECX MSR_GOLDMONT_IA32_RTIT_CTL (0x00000570)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_RTIT_CTL);
+ AsmWriteMsr64 (MSR_GOLDMONT_IA32_RTIT_CTL, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_IA32_RTIT_CTL is defined as IA32_RTIT_CTL in SDM.
+**/
+#define MSR_IA32_RTIT_CTL 0x00000570
+
+/**
+ MSR information returned for MSR index #MSR_IA32_RTIT_CTL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] TraceEn.
+ ///
+ UINT32 TraceEn:1;
+ ///
+ /// [Bit 1] CYCEn.
+ ///
+ UINT32 CYCEn:1;
+ ///
+ /// [Bit 2] OS.
+ ///
+ UINT32 OS:1;
+ ///
+ /// [Bit 3] User.
+ ///
+ UINT32 User:1;
+ UINT32 Reserved1:3;
+ ///
+ /// [Bit 7] CR3 filter.
+ ///
+ UINT32 CR3:1;
+ ///
+ /// [Bit 8] ToPA. Writing 0 will #GP if also setting TraceEn.
+ ///
+ UINT32 ToPA:1;
+ ///
+ /// [Bit 9] MTCEn.
+ ///
+ UINT32 MTCEn:1;
+ ///
+ /// [Bit 10] TSCEn.
+ ///
+ UINT32 TSCEn:1;
+ ///
+ /// [Bit 11] DisRETC.
+ ///
+ UINT32 DisRETC:1;
+ UINT32 Reserved2:1;
+ ///
+ /// [Bit 13] BranchEn.
+ ///
+ UINT32 BranchEn:1;
+ ///
+ /// [Bits 17:14] MTCFreq.
+ ///
+ UINT32 MTCFreq:4;
+ UINT32 Reserved3:1;
+ ///
+ /// [Bits 22:19] CYCThresh.
+ ///
+ UINT32 CYCThresh:4;
+ UINT32 Reserved4:1;
+ ///
+ /// [Bits 27:24] PSBFreq.
+ ///
+ UINT32 PSBFreq:4;
+ UINT32 Reserved5:4;
+ ///
+ /// [Bits 35:32] ADDR0_CFG.
+ ///
+ UINT32 ADDR0_CFG:4;
+ ///
+ /// [Bits 39:36] ADDR1_CFG.
+ ///
+ UINT32 ADDR1_CFG:4;
+ UINT32 Reserved6:24;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER;
+
+
+/**
+ Package. Unit Multipliers used in RAPL Interfaces (R/O) See Section 14.9.1,
+ "RAPL Interfaces.".
+
+ @param ECX MSR_GOLDMONT_RAPL_POWER_UNIT (0x00000606)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_RAPL_POWER_UNIT);
+ @endcode
+ @note MSR_GOLDMONT_RAPL_POWER_UNIT is defined as MSR_RAPL_POWER_UNIT in SDM.
+**/
+#define MSR_GOLDMONT_RAPL_POWER_UNIT 0x00000606
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_RAPL_POWER_UNIT
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 3:0] Power Units. Power related information (in Watts) is in
+ /// unit of, 1W/2^PU; where PU is an unsigned integer represented by bits
+ /// 3:0. Default value is 1000b, indicating power unit is in 3.9
+ /// milliWatts increment.
+ ///
+ UINT32 PowerUnits:4;
+ UINT32 Reserved1:4;
+ ///
+ /// [Bits 12:8] Energy Status Units. Energy related information (in
+ /// Joules) is in unit of, 1Joule/ (2^ESU); where ESU is an unsigned
+ /// integer represented by bits 12:8. Default value is 01110b, indicating
+ /// energy unit is in 61 microJoules.
+ ///
+ UINT32 EnergyStatusUnits:5;
+ UINT32 Reserved2:3;
+ ///
+ /// [Bits 19:16] Time Unit. Time related information (in seconds) is in
+ /// unit of, 1S/2^TU; where TU is an unsigned integer represented by bits
+ /// 19:16. Default value is 1010b, indicating power unit is in 0.977
+ /// millisecond.
+ ///
+ UINT32 TimeUnit:4;
+ UINT32 Reserved3:12;
+ UINT32 Reserved4:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER;
+
+
+/**
+ Package. Package C3 Interrupt Response Limit (R/W) Note: C-state values are
+ processor specific C-state code names, unrelated to MWAIT extension C-state
+ parameters or ACPI CStates.
+
+ @param ECX MSR_GOLDMONT_PKGC3_IRTL (0x0000060A)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PKGC3_IRTL_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PKGC3_IRTL_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_PKGC3_IRTL_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKGC3_IRTL);
+ AsmWriteMsr64 (MSR_GOLDMONT_PKGC3_IRTL, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_PKGC3_IRTL is defined as MSR_PKGC3_IRTL in SDM.
+**/
+#define MSR_GOLDMONT_PKGC3_IRTL 0x0000060A
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_PKGC3_IRTL
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 9:0] Interrupt response time limit (R/W) Specifies the limit
+ /// that should be used to decide if the package should be put into a
+ /// package C3 state.
+ ///
+ UINT32 InterruptResponseTimeLimit:10;
+ ///
+ /// [Bits 12:10] Time Unit (R/W) Specifies the encoding value of time
+ /// unit of the interrupt response time limit. See Table 35-18 for
+ /// supported time unit encodings.
+ ///
+ UINT32 TimeUnit:3;
+ UINT32 Reserved1:2;
+ ///
+ /// [Bit 15] Valid (R/W) Indicates whether the values in bits 12:0 are
+ /// valid and can be used by the processor for package C-sate management.
+ ///
+ UINT32 Valid:1;
+ UINT32 Reserved2:16;
+ UINT32 Reserved3:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_PKGC3_IRTL_REGISTER;
+
+
+/**
+ Package. Package C6/C7S Interrupt Response Limit 1 (R/W) This MSR defines
+ the interrupt response time limit used by the processor to manage transition
+ to package C6 or C7S state. Note: C-state values are processor specific
+ C-state code names, unrelated to MWAIT extension C-state parameters or ACPI
+ CStates.
+
+ @param ECX MSR_GOLDMONT_PKGC_IRTL1 (0x0000060B)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PKGC_IRTL1_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PKGC_IRTL1_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_PKGC_IRTL1_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKGC_IRTL1);
+ AsmWriteMsr64 (MSR_GOLDMONT_PKGC_IRTL1, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_PKGC_IRTL1 is defined as MSR_PKGC_IRTL1 in SDM.
+**/
+#define MSR_GOLDMONT_PKGC_IRTL1 0x0000060B
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_PKGC_IRTL1
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 9:0] Interrupt response time limit (R/W) Specifies the limit
+ /// that should be used to decide if the package should be put into a
+ /// package C6 or C7S state.
+ ///
+ UINT32 InterruptResponseTimeLimit:10;
+ ///
+ /// [Bits 12:10] Time Unit (R/W) Specifies the encoding value of time
+ /// unit of the interrupt response time limit. See Table 35-18 for
+ /// supported time unit encodings.
+ ///
+ UINT32 TimeUnit:3;
+ UINT32 Reserved1:2;
+ ///
+ /// [Bit 15] Valid (R/W) Indicates whether the values in bits 12:0 are
+ /// valid and can be used by the processor for package C-sate management.
+ ///
+ UINT32 Valid:1;
+ UINT32 Reserved2:16;
+ UINT32 Reserved3:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_PKGC_IRTL1_REGISTER;
+
+
+/**
+ Package. Package C7 Interrupt Response Limit 2 (R/W) This MSR defines the
+ interrupt response time limit used by the processor to manage transition to
+ package C7 state. Note: C-state values are processor specific C-state code
+ names, unrelated to MWAIT extension C-state parameters or ACPI CStates.
+
+ @param ECX MSR_GOLDMONT_PKGC_IRTL2 (0x0000060C)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PKGC_IRTL2_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PKGC_IRTL2_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_PKGC_IRTL2_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKGC_IRTL2);
+ AsmWriteMsr64 (MSR_GOLDMONT_PKGC_IRTL2, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_PKGC_IRTL2 is defined as MSR_PKGC_IRTL2 in SDM.
+**/
+#define MSR_GOLDMONT_PKGC_IRTL2 0x0000060C
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_PKGC_IRTL2
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 9:0] Interrupt response time limit (R/W) Specifies the limit
+ /// that should be used to decide if the package should be put into a
+ /// package C7 state.
+ ///
+ UINT32 InterruptResponseTimeLimit:10;
+ ///
+ /// [Bits 12:10] Time Unit (R/W) Specifies the encoding value of time
+ /// unit of the interrupt response time limit. See Table 35-18 for
+ /// supported time unit encodings.
+ ///
+ UINT32 TimeUnit:3;
+ UINT32 Reserved1:2;
+ ///
+ /// [Bit 15] Valid (R/W) Indicates whether the values in bits 12:0 are
+ /// valid and can be used by the processor for package C-sate management.
+ ///
+ UINT32 Valid:1;
+ UINT32 Reserved2:16;
+ UINT32 Reserved3:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_PKGC_IRTL2_REGISTER;
+
+
+/**
+ Package. Note: C-state values are processor specific C-state code names,
+ unrelated to MWAIT extension C-state parameters or ACPI CStates. Package C2
+ Residency Counter. (R/O) Value since last reset that this package is in
+ processor-specific C2 states. Count at the same frequency as the TSC.
+
+ @param ECX MSR_GOLDMONT_PKG_C2_RESIDENCY (0x0000060D)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C2_RESIDENCY);
+ AsmWriteMsr64 (MSR_GOLDMONT_PKG_C2_RESIDENCY, Msr);
+ @endcode
+ @note MSR_GOLDMONT_PKG_C2_RESIDENCY is defined as MSR_PKG_C2_RESIDENCY in SDM.
+**/
+#define MSR_GOLDMONT_PKG_C2_RESIDENCY 0x0000060D
+
+
+/**
+ Package. PKG RAPL Power Limit Control (R/W) See Section 14.9.3, "Package
+ RAPL Domain.".
+
+ @param ECX MSR_GOLDMONT_PKG_POWER_LIMIT (0x00000610)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_POWER_LIMIT);
+ AsmWriteMsr64 (MSR_GOLDMONT_PKG_POWER_LIMIT, Msr);
+ @endcode
+ @note MSR_GOLDMONT_PKG_POWER_LIMIT is defined as MSR_PKG_POWER_LIMIT in SDM.
+**/
+#define MSR_GOLDMONT_PKG_POWER_LIMIT 0x00000610
+
+
+/**
+ Package. PKG Energy Status (R/O) See Section 14.9.3, "Package RAPL Domain.".
+
+ @param ECX MSR_GOLDMONT_PKG_ENERGY_STATUS (0x00000611)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_ENERGY_STATUS);
+ @endcode
+ @note MSR_GOLDMONT_PKG_ENERGY_STATUS is defined as MSR_PKG_ENERGY_STATUS in SDM.
+**/
+#define MSR_GOLDMONT_PKG_ENERGY_STATUS 0x00000611
+
+
+/**
+ Package. PKG Perf Status (R/O) See Section 14.9.3, "Package RAPL Domain.".
+
+ @param ECX MSR_GOLDMONT_PKG_PERF_STATUS (0x00000613)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_PERF_STATUS);
+ @endcode
+ @note MSR_GOLDMONT_PKG_PERF_STATUS is defined as MSR_PKG_PERF_STATUS in SDM.
+**/
+#define MSR_GOLDMONT_PKG_PERF_STATUS 0x00000613
+
+
+/**
+ Package. PKG RAPL Parameters (R/W).
+
+ @param ECX MSR_GOLDMONT_PKG_POWER_INFO (0x00000614)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PKG_POWER_INFO_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_PKG_POWER_INFO_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_PKG_POWER_INFO_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKG_POWER_INFO);
+ AsmWriteMsr64 (MSR_GOLDMONT_PKG_POWER_INFO, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_PKG_POWER_INFO is defined as MSR_PKG_POWER_INFO in SDM.
+**/
+#define MSR_GOLDMONT_PKG_POWER_INFO 0x00000614
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_PKG_POWER_INFO
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 14:0] Thermal Spec Power (R/W) See Section 14.9.3, "Package
+ /// RAPL Domain.".
+ ///
+ UINT32 ThermalSpecPower:15;
+ UINT32 Reserved1:1;
+ ///
+ /// [Bits 30:16] Minimum Power (R/W) See Section 14.9.3, "Package RAPL
+ /// Domain.".
+ ///
+ UINT32 MinimumPower:15;
+ UINT32 Reserved2:1;
+ ///
+ /// [Bits 46:32] Maximum Power (R/W) See Section 14.9.3, "Package RAPL
+ /// Domain.".
+ ///
+ UINT32 MaximumPower:15;
+ UINT32 Reserved3:1;
+ ///
+ /// [Bits 54:48] Maximum Time Window (R/W) Specified by 2^Y * (1.0 +
+ /// Z/4.0) * Time_Unit, where "Y" is the unsigned integer value
+ /// represented. by bits 52:48, "Z" is an unsigned integer represented by
+ /// bits 54:53. "Time_Unit" is specified by the "Time Units" field of
+ /// MSR_RAPL_POWER_UNIT.
+ ///
+ UINT32 MaximumTimeWindow:7;
+ UINT32 Reserved4:9;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_PKG_POWER_INFO_REGISTER;
+
+
+/**
+ Package. DRAM RAPL Power Limit Control (R/W) See Section 14.9.5, "DRAM RAPL
+ Domain.".
+
+ @param ECX MSR_GOLDMONT_DRAM_POWER_LIMIT (0x00000618)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_POWER_LIMIT);
+ AsmWriteMsr64 (MSR_GOLDMONT_DRAM_POWER_LIMIT, Msr);
+ @endcode
+ @note MSR_GOLDMONT_DRAM_POWER_LIMIT is defined as MSR_DRAM_POWER_LIMIT in SDM.
+**/
+#define MSR_GOLDMONT_DRAM_POWER_LIMIT 0x00000618
+
+
+/**
+ Package. DRAM Energy Status (R/O) See Section 14.9.5, "DRAM RAPL Domain.".
+
+ @param ECX MSR_GOLDMONT_DRAM_ENERGY_STATUS (0x00000619)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_ENERGY_STATUS);
+ @endcode
+ @note MSR_GOLDMONT_DRAM_ENERGY_STATUS is defined as MSR_DRAM_ENERGY_STATUS in SDM.
+**/
+#define MSR_GOLDMONT_DRAM_ENERGY_STATUS 0x00000619
+
+
+/**
+ Package. DRAM Performance Throttling Status (R/O) See Section 14.9.5, "DRAM
+ RAPL Domain.".
+
+ @param ECX MSR_GOLDMONT_DRAM_PERF_STATUS (0x0000061B)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_PERF_STATUS);
+ @endcode
+ @note MSR_GOLDMONT_DRAM_PERF_STATUS is defined as MSR_DRAM_PERF_STATUS in SDM.
+**/
+#define MSR_GOLDMONT_DRAM_PERF_STATUS 0x0000061B
+
+
+/**
+ Package. DRAM RAPL Parameters (R/W) See Section 14.9.5, "DRAM RAPL Domain.".
+
+ @param ECX MSR_GOLDMONT_DRAM_POWER_INFO (0x0000061C)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_POWER_INFO);
+ AsmWriteMsr64 (MSR_GOLDMONT_DRAM_POWER_INFO, Msr);
+ @endcode
+ @note MSR_GOLDMONT_DRAM_POWER_INFO is defined as MSR_DRAM_POWER_INFO in SDM.
+**/
+#define MSR_GOLDMONT_DRAM_POWER_INFO 0x0000061C
+
+
+/**
+ Package. Note: C-state values are processor specific C-state code names,.
+ Package C10 Residency Counter. (R/O) Value since last reset that the entire
+ SOC is in an S0i3 state. Count at the same frequency as the TSC.
+
+ @param ECX MSR_GOLDMONT_PKG_C10_RESIDENCY (0x00000632)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C10_RESIDENCY);
+ AsmWriteMsr64 (MSR_GOLDMONT_PKG_C10_RESIDENCY, Msr);
+ @endcode
+ @note MSR_GOLDMONT_PKG_C10_RESIDENCY is defined as MSR_PKG_C10_RESIDENCY in SDM.
+**/
+#define MSR_GOLDMONT_PKG_C10_RESIDENCY 0x00000632
+
+
+/**
+ Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
+ Domains.".
+
+ @param ECX MSR_GOLDMONT_PP0_ENERGY_STATUS (0x00000639)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_PP0_ENERGY_STATUS);
+ @endcode
+ @note MSR_GOLDMONT_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.
+**/
+#define MSR_GOLDMONT_PP0_ENERGY_STATUS 0x00000639
+
+
+/**
+ Package. PP1 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL
+ Domains.".
+
+ @param ECX MSR_GOLDMONT_PP1_ENERGY_STATUS (0x00000641)
+ @param EAX Lower 32-bits of MSR value.
+ @param EDX Upper 32-bits of MSR value.
+
+ <b>Example usage</b>
+ @code
+ UINT64 Msr;
+
+ Msr = AsmReadMsr64 (MSR_GOLDMONT_PP1_ENERGY_STATUS);
+ @endcode
+ @note MSR_GOLDMONT_PP1_ENERGY_STATUS is defined as MSR_PP1_ENERGY_STATUS in SDM.
+**/
+#define MSR_GOLDMONT_PP1_ENERGY_STATUS 0x00000641
+
+
+/**
+ Package. ConfigTDP Control (R/W).
+
+ @param ECX MSR_GOLDMONT_TURBO_ACTIVATION_RATIO (0x0000064C)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_TURBO_ACTIVATION_RATIO);
+ AsmWriteMsr64 (MSR_GOLDMONT_TURBO_ACTIVATION_RATIO, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_TURBO_ACTIVATION_RATIO is defined as MSR_TURBO_ACTIVATION_RATIO in SDM.
+**/
+#define MSR_GOLDMONT_TURBO_ACTIVATION_RATIO 0x0000064C
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_TURBO_ACTIVATION_RATIO
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 7:0] MAX_NON_TURBO_RATIO (RW/L) System BIOS can program this
+ /// field.
+ ///
+ UINT32 MAX_NON_TURBO_RATIO:8;
+ UINT32 Reserved1:23;
+ ///
+ /// [Bit 31] TURBO_ACTIVATION_RATIO_Lock (RW/L) When this bit is set, the
+ /// content of this register is locked until a reset.
+ ///
+ UINT32 TURBO_ACTIVATION_RATIO_Lock:1;
+ UINT32 Reserved2:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER;
+
+
+/**
+ Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency
+ refers to processor core frequency).
+
+ @param ECX MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS (0x0000064F)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS);
+ AsmWriteMsr64 (MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS is defined as MSR_CORE_PERF_LIMIT_REASONS in SDM.
+**/
+#define MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS 0x0000064F
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 0] PROCHOT Status (R0) When set, processor core frequency is
+ /// reduced below the operating system request due to assertion of
+ /// external PROCHOT.
+ ///
+ UINT32 PROCHOTStatus:1;
+ ///
+ /// [Bit 1] Thermal Status (R0) When set, frequency is reduced below the
+ /// operating system request due to a thermal event.
+ ///
+ UINT32 ThermalStatus:1;
+ ///
+ /// [Bit 2] Package-Level Power Limiting PL1 Status (R0) When set,
+ /// frequency is reduced below the operating system request due to
+ /// package-level power limiting PL1.
+ ///
+ UINT32 PL1Status:1;
+ ///
+ /// [Bit 3] Package-Level PL2 Power Limiting Status (R0) When set,
+ /// frequency is reduced below the operating system request due to
+ /// package-level power limiting PL2.
+ ///
+ UINT32 PL2Status:1;
+ UINT32 Reserved1:5;
+ ///
+ /// [Bit 9] Core Power Limiting Status (R0) When set, frequency is reduced
+ /// below the operating system request due to domain-level power limiting.
+ ///
+ UINT32 PowerLimitingStatus:1;
+ ///
+ /// [Bit 10] VR Therm Alert Status (R0) When set, frequency is reduced
+ /// below the operating system request due to a thermal alert from the
+ /// Voltage Regulator.
+ ///
+ UINT32 VRThermAlertStatus:1;
+ ///
+ /// [Bit 11] Max Turbo Limit Status (R0) When set, frequency is reduced
+ /// below the operating system request due to multi-core turbo limits.
+ ///
+ UINT32 MaxTurboLimitStatus:1;
+ ///
+ /// [Bit 12] Electrical Design Point Status (R0) When set, frequency is
+ /// reduced below the operating system request due to electrical design
+ /// point constraints (e.g. maximum electrical current consumption).
+ ///
+ UINT32 ElectricalDesignPointStatus:1;
+ ///
+ /// [Bit 13] Turbo Transition Attenuation Status (R0) When set, frequency
+ /// is reduced below the operating system request due to Turbo transition
+ /// attenuation. This prevents performance degradation due to frequent
+ /// operating ratio changes.
+ ///
+ UINT32 TurboTransitionAttenuationStatus:1;
+ ///
+ /// [Bit 14] Maximum Efficiency Frequency Status (R0) When set, frequency
+ /// is reduced below the maximum efficiency frequency.
+ ///
+ UINT32 MaximumEfficiencyFrequencyStatus:1;
+ UINT32 Reserved2:1;
+ ///
+ /// [Bit 16] PROCHOT Log When set, indicates that the PROCHOT Status bit
+ /// has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 PROCHOT:1;
+ ///
+ /// [Bit 17] Thermal Log When set, indicates that the Thermal Status bit
+ /// has asserted since the log bit was last cleared. This log bit will
+ /// remain set until cleared by software writing 0.
+ ///
+ UINT32 ThermalLog:1;
+ ///
+ /// [Bit 18] Package-Level PL1 Power Limiting Log When set, indicates
+ /// that the Package Level PL1 Power Limiting Status bit has asserted
+ /// since the log bit was last cleared. This log bit will remain set until
+ /// cleared by software writing 0.
+ ///
+ UINT32 PL1Log:1;
+ ///
+ /// [Bit 19] Package-Level PL2 Power Limiting Log When set, indicates that
+ /// the Package Level PL2 Power Limiting Status bit has asserted since the
+ /// log bit was last cleared. This log bit will remain set until cleared
+ /// by software writing 0.
+ ///
+ UINT32 PL2Log:1;
+ UINT32 Reserved3:5;
+ ///
+ /// [Bit 25] Core Power Limiting Log When set, indicates that the Core
+ /// Power Limiting Status bit has asserted since the log bit was last
+ /// cleared. This log bit will remain set until cleared by software
+ /// writing 0.
+ ///
+ UINT32 CorePowerLimitingLog:1;
+ ///
+ /// [Bit 26] VR Therm Alert Log When set, indicates that the VR Therm
+ /// Alert Status bit has asserted since the log bit was last cleared. This
+ /// log bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 VRThermAlertLog:1;
+ ///
+ /// [Bit 27] Max Turbo Limit Log When set, indicates that the Max Turbo
+ /// Limit Status bit has asserted since the log bit was last cleared. This
+ /// log bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 MaxTurboLimitLog:1;
+ ///
+ /// [Bit 28] Electrical Design Point Log When set, indicates that the EDP
+ /// Status bit has asserted since the log bit was last cleared. This log
+ /// bit will remain set until cleared by software writing 0.
+ ///
+ UINT32 ElectricalDesignPointLog:1;
+ ///
+ /// [Bit 29] Turbo Transition Attenuation Log When set, indicates that the
+ /// Turbo Transition Attenuation Status bit has asserted since the log bit
+ /// was last cleared. This log bit will remain set until cleared by
+ /// software writing 0.
+ ///
+ UINT32 TurboTransitionAttenuationLog:1;
+ ///
+ /// [Bit 30] Maximum Efficiency Frequency Log When set, indicates that
+ /// the Maximum Efficiency Frequency Status bit has asserted since the log
+ /// bit was last cleared. This log bit will remain set until cleared by
+ /// software writing 0.
+ ///
+ UINT32 MaximumEfficiencyFrequencyLog:1;
+ UINT32 Reserved4:1;
+ UINT32 Reserved5:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER;
+
+
+/**
+ Core. Last Branch Record n From IP (R/W) One of 32 pairs of last branch
+ record registers on the last branch record stack. The From_IP part of the
+ stack contains pointers to the source instruction . See also: - Last Branch
+ Record Stack TOS at 1C9H - Section 17.6 and record format in Section
+ 17.4.8.1.
+
+ @param ECX MSR_GOLDMONT_LASTBRANCH_n_FROM_IP
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_LASTBRANCH_n_FROM_IP);
+ AsmWriteMsr64 (MSR_GOLDMONT_LASTBRANCH_n_FROM_IP, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_LASTBRANCH_0_FROM_IP is defined as MSR_LASTBRANCH_0_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_1_FROM_IP is defined as MSR_LASTBRANCH_1_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_2_FROM_IP is defined as MSR_LASTBRANCH_2_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_3_FROM_IP is defined as MSR_LASTBRANCH_3_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_4_FROM_IP is defined as MSR_LASTBRANCH_4_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_5_FROM_IP is defined as MSR_LASTBRANCH_5_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_6_FROM_IP is defined as MSR_LASTBRANCH_6_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_7_FROM_IP is defined as MSR_LASTBRANCH_7_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_8_FROM_IP is defined as MSR_LASTBRANCH_8_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_9_FROM_IP is defined as MSR_LASTBRANCH_9_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_10_FROM_IP is defined as MSR_LASTBRANCH_10_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_11_FROM_IP is defined as MSR_LASTBRANCH_11_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_12_FROM_IP is defined as MSR_LASTBRANCH_12_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_13_FROM_IP is defined as MSR_LASTBRANCH_13_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_14_FROM_IP is defined as MSR_LASTBRANCH_14_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_15_FROM_IP is defined as MSR_LASTBRANCH_15_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_16_FROM_IP is defined as MSR_LASTBRANCH_16_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_17_FROM_IP is defined as MSR_LASTBRANCH_17_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_18_FROM_IP is defined as MSR_LASTBRANCH_18_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_19_FROM_IP is defined as MSR_LASTBRANCH_19_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_20_FROM_IP is defined as MSR_LASTBRANCH_20_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_21_FROM_IP is defined as MSR_LASTBRANCH_21_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_22_FROM_IP is defined as MSR_LASTBRANCH_22_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_23_FROM_IP is defined as MSR_LASTBRANCH_23_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_24_FROM_IP is defined as MSR_LASTBRANCH_24_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_25_FROM_IP is defined as MSR_LASTBRANCH_25_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_26_FROM_IP is defined as MSR_LASTBRANCH_26_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_27_FROM_IP is defined as MSR_LASTBRANCH_27_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_28_FROM_IP is defined as MSR_LASTBRANCH_28_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_29_FROM_IP is defined as MSR_LASTBRANCH_29_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_30_FROM_IP is defined as MSR_LASTBRANCH_30_FROM_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_31_FROM_IP is defined as MSR_LASTBRANCH_31_FROM_IP in SDM.
+ @{
+**/
+#define MSR_GOLDMONT_LASTBRANCH_0_FROM_IP 0x00000680
+#define MSR_GOLDMONT_LASTBRANCH_1_FROM_IP 0x00000681
+#define MSR_GOLDMONT_LASTBRANCH_2_FROM_IP 0x00000682
+#define MSR_GOLDMONT_LASTBRANCH_3_FROM_IP 0x00000683
+#define MSR_GOLDMONT_LASTBRANCH_4_FROM_IP 0x00000684
+#define MSR_GOLDMONT_LASTBRANCH_5_FROM_IP 0x00000685
+#define MSR_GOLDMONT_LASTBRANCH_6_FROM_IP 0x00000686
+#define MSR_GOLDMONT_LASTBRANCH_7_FROM_IP 0x00000687
+#define MSR_GOLDMONT_LASTBRANCH_8_FROM_IP 0x00000688
+#define MSR_GOLDMONT_LASTBRANCH_9_FROM_IP 0x00000689
+#define MSR_GOLDMONT_LASTBRANCH_10_FROM_IP 0x0000068A
+#define MSR_GOLDMONT_LASTBRANCH_11_FROM_IP 0x0000068B
+#define MSR_GOLDMONT_LASTBRANCH_12_FROM_IP 0x0000068C
+#define MSR_GOLDMONT_LASTBRANCH_13_FROM_IP 0x0000068D
+#define MSR_GOLDMONT_LASTBRANCH_14_FROM_IP 0x0000068E
+#define MSR_GOLDMONT_LASTBRANCH_15_FROM_IP 0x0000068F
+#define MSR_GOLDMONT_LASTBRANCH_16_FROM_IP 0x00000690
+#define MSR_GOLDMONT_LASTBRANCH_17_FROM_IP 0x00000691
+#define MSR_GOLDMONT_LASTBRANCH_18_FROM_IP 0x00000692
+#define MSR_GOLDMONT_LASTBRANCH_19_FROM_IP 0x00000693
+#define MSR_GOLDMONT_LASTBRANCH_20_FROM_IP 0x00000694
+#define MSR_GOLDMONT_LASTBRANCH_21_FROM_IP 0x00000695
+#define MSR_GOLDMONT_LASTBRANCH_22_FROM_IP 0x00000696
+#define MSR_GOLDMONT_LASTBRANCH_23_FROM_IP 0x00000697
+#define MSR_GOLDMONT_LASTBRANCH_24_FROM_IP 0x00000698
+#define MSR_GOLDMONT_LASTBRANCH_25_FROM_IP 0x00000699
+#define MSR_GOLDMONT_LASTBRANCH_26_FROM_IP 0x0000069A
+#define MSR_GOLDMONT_LASTBRANCH_27_FROM_IP 0x0000069B
+#define MSR_GOLDMONT_LASTBRANCH_28_FROM_IP 0x0000069C
+#define MSR_GOLDMONT_LASTBRANCH_29_FROM_IP 0x0000069D
+#define MSR_GOLDMONT_LASTBRANCH_30_FROM_IP 0x0000069E
+#define MSR_GOLDMONT_LASTBRANCH_31_FROM_IP 0x0000069F
+/// @}
+
+/**
+ MSR information returned for MSR indexes #MSR_GOLDMONT_LASTBRANCH_0_FROM_IP
+ to #MSR_GOLDMONT_LASTBRANCH_31_FROM_IP.
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 31:0] From Linear Address (R/W).
+ ///
+ UINT32 FromLinearAddress:32;
+ ///
+ /// [Bit 47:32] From Linear Address (R/W).
+ ///
+ UINT32 FromLinearAddressHi:16;
+ ///
+ /// [Bits 62:48] Signed extension of bits 47:0.
+ ///
+ UINT32 SignedExtension:15;
+ ///
+ /// [Bit 63] Mispred.
+ ///
+ UINT32 Mispred:1;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER;
+
+
+/**
+ Core. Last Branch Record n To IP (R/W) One of 32 pairs of last branch record
+ registers on the last branch record stack. The To_IP part of the stack
+ contains pointers to the Destination instruction and elapsed cycles from
+ last LBR update. See also: - Section 17.6.
+
+ @param ECX MSR_GOLDMONT_LASTBRANCH_n_TO_IP
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_LASTBRANCH_0_TO_IP);
+ AsmWriteMsr64 (MSR_GOLDMONT_LASTBRANCH_0_TO_IP, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_LASTBRANCH_0_TO_IP is defined as MSR_LASTBRANCH_0_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_1_TO_IP is defined as MSR_LASTBRANCH_1_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_2_TO_IP is defined as MSR_LASTBRANCH_2_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_3_TO_IP is defined as MSR_LASTBRANCH_3_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_4_TO_IP is defined as MSR_LASTBRANCH_4_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_5_TO_IP is defined as MSR_LASTBRANCH_5_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_6_TO_IP is defined as MSR_LASTBRANCH_6_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_7_TO_IP is defined as MSR_LASTBRANCH_7_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_8_TO_IP is defined as MSR_LASTBRANCH_8_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_9_TO_IP is defined as MSR_LASTBRANCH_9_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_10_TO_IP is defined as MSR_LASTBRANCH_10_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_11_TO_IP is defined as MSR_LASTBRANCH_11_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_12_TO_IP is defined as MSR_LASTBRANCH_12_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_13_TO_IP is defined as MSR_LASTBRANCH_13_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_14_TO_IP is defined as MSR_LASTBRANCH_14_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_15_TO_IP is defined as MSR_LASTBRANCH_15_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_16_TO_IP is defined as MSR_LASTBRANCH_16_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_17_TO_IP is defined as MSR_LASTBRANCH_17_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_18_TO_IP is defined as MSR_LASTBRANCH_18_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_19_TO_IP is defined as MSR_LASTBRANCH_19_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_20_TO_IP is defined as MSR_LASTBRANCH_20_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_21_TO_IP is defined as MSR_LASTBRANCH_21_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_22_TO_IP is defined as MSR_LASTBRANCH_22_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_23_TO_IP is defined as MSR_LASTBRANCH_23_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_24_TO_IP is defined as MSR_LASTBRANCH_24_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_25_TO_IP is defined as MSR_LASTBRANCH_25_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_26_TO_IP is defined as MSR_LASTBRANCH_26_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_27_TO_IP is defined as MSR_LASTBRANCH_27_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_28_TO_IP is defined as MSR_LASTBRANCH_28_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_29_TO_IP is defined as MSR_LASTBRANCH_29_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_30_TO_IP is defined as MSR_LASTBRANCH_30_TO_IP in SDM.
+ MSR_GOLDMONT_LASTBRANCH_31_TO_IP is defined as MSR_LASTBRANCH_31_TO_IP in SDM.
+ @{
+**/
+#define MSR_GOLDMONT_LASTBRANCH_0_TO_IP 0x000006C0
+#define MSR_GOLDMONT_LASTBRANCH_1_TO_IP 0x000006C1
+#define MSR_GOLDMONT_LASTBRANCH_2_TO_IP 0x000006C2
+#define MSR_GOLDMONT_LASTBRANCH_3_TO_IP 0x000006C3
+#define MSR_GOLDMONT_LASTBRANCH_4_TO_IP 0x000006C4
+#define MSR_GOLDMONT_LASTBRANCH_5_TO_IP 0x000006C5
+#define MSR_GOLDMONT_LASTBRANCH_6_TO_IP 0x000006C6
+#define MSR_GOLDMONT_LASTBRANCH_7_TO_IP 0x000006C7
+#define MSR_GOLDMONT_LASTBRANCH_8_TO_IP 0x000006C8
+#define MSR_GOLDMONT_LASTBRANCH_9_TO_IP 0x000006C9
+#define MSR_GOLDMONT_LASTBRANCH_10_TO_IP 0x000006CA
+#define MSR_GOLDMONT_LASTBRANCH_11_TO_IP 0x000006CB
+#define MSR_GOLDMONT_LASTBRANCH_12_TO_IP 0x000006CC
+#define MSR_GOLDMONT_LASTBRANCH_13_TO_IP 0x000006CD
+#define MSR_GOLDMONT_LASTBRANCH_14_TO_IP 0x000006CE
+#define MSR_GOLDMONT_LASTBRANCH_15_TO_IP 0x000006CF
+#define MSR_GOLDMONT_LASTBRANCH_16_TO_IP 0x000006D0
+#define MSR_GOLDMONT_LASTBRANCH_17_TO_IP 0x000006D1
+#define MSR_GOLDMONT_LASTBRANCH_18_TO_IP 0x000006D2
+#define MSR_GOLDMONT_LASTBRANCH_19_TO_IP 0x000006D3
+#define MSR_GOLDMONT_LASTBRANCH_20_TO_IP 0x000006D4
+#define MSR_GOLDMONT_LASTBRANCH_21_TO_IP 0x000006D5
+#define MSR_GOLDMONT_LASTBRANCH_22_TO_IP 0x000006D6
+#define MSR_GOLDMONT_LASTBRANCH_23_TO_IP 0x000006D7
+#define MSR_GOLDMONT_LASTBRANCH_24_TO_IP 0x000006D8
+#define MSR_GOLDMONT_LASTBRANCH_25_TO_IP 0x000006D9
+#define MSR_GOLDMONT_LASTBRANCH_26_TO_IP 0x000006DA
+#define MSR_GOLDMONT_LASTBRANCH_27_TO_IP 0x000006DB
+#define MSR_GOLDMONT_LASTBRANCH_28_TO_IP 0x000006DC
+#define MSR_GOLDMONT_LASTBRANCH_29_TO_IP 0x000006DD
+#define MSR_GOLDMONT_LASTBRANCH_30_TO_IP 0x000006DE
+#define MSR_GOLDMONT_LASTBRANCH_31_TO_IP 0x000006DF
+/// @}
+
+/**
+ MSR information returned for MSR indexes #MSR_GOLDMONT_LASTBRANCH_0_TO_IP to
+ #MSR_GOLDMONT_LASTBRANCH_31_TO_IP.
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bit 31:0] Target Linear Address (R/W).
+ ///
+ UINT32 TargetLinearAddress:32;
+ ///
+ /// [Bit 47:32] Target Linear Address (R/W).
+ ///
+ UINT32 TargetLinearAddressHi:16;
+ ///
+ /// [Bits 63:48] Elapsed cycles from last update to the LBR.
+ ///
+ UINT32 ElapsedCycles:16;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER;
+
+
+/**
+ Core. Resource Association Register (R/W).
+
+ @param ECX MSR_GOLDMONT_IA32_PQR_ASSOC (0x00000C8F)
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_PQR_ASSOC);
+ AsmWriteMsr64 (MSR_GOLDMONT_IA32_PQR_ASSOC, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_IA32_PQR_ASSOC is defined as IA32_PQR_ASSOC in SDM.
+**/
+#define MSR_GOLDMONT_IA32_PQR_ASSOC 0x00000C8F
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_IA32_PQR_ASSOC
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ UINT32 Reserved1:32;
+ ///
+ /// [Bits 33:32] COS (R/W).
+ ///
+ UINT32 COS:2;
+ UINT32 Reserved2:30;
+ } Bits;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER;
+
+
+/**
+ Module. L2 Class Of Service Mask - COS n (R/W) if CPUID.(EAX=10H,
+ ECX=1):EDX.COS_MAX[15:0] >=n.
+
+ @param ECX MSR_GOLDMONT_IA32_L2_QOS_MASK_n
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_n);
+ AsmWriteMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_n, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_IA32_L2_QOS_MASK_0 is defined as IA32_L2_QOS_MASK_0 in SDM.
+ MSR_GOLDMONT_IA32_L2_QOS_MASK_1 is defined as IA32_L2_QOS_MASK_1 in SDM.
+ MSR_GOLDMONT_IA32_L2_QOS_MASK_2 is defined as IA32_L2_QOS_MASK_2 in SDM.
+ @{
+**/
+#define MSR_GOLDMONT_IA32_L2_QOS_MASK_0 0x00000D10
+#define MSR_GOLDMONT_IA32_L2_QOS_MASK_1 0x00000D11
+#define MSR_GOLDMONT_IA32_L2_QOS_MASK_2 0x00000D12
+/// @}
+
+/**
+ MSR information returned for MSR indexes #MSR_GOLDMONT_IA32_L2_QOS_MASK_0 to
+ #MSR_GOLDMONT_IA32_L2_QOS_MASK_2.
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 7:0] CBM: Bit vector of available L2 ways for COS 0 enforcement
+ ///
+ UINT32 CBM:8;
+ UINT32 Reserved1:24;
+ UINT32 Reserved2:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER;
+
+
+/**
+ Package. L2 Class Of Service Mask - COS 3 (R/W) if CPUID.(EAX=10H,
+ ECX=1):EDX.COS_MAX[15:0] >=3.
+
+ @param ECX MSR_GOLDMONT_IA32_L2_QOS_MASK_3
+ @param EAX Lower 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER.
+ @param EDX Upper 32-bits of MSR value.
+ Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER.
+
+ <b>Example usage</b>
+ @code
+ MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER Msr;
+
+ Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_3);
+ AsmWriteMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_3, Msr.Uint64);
+ @endcode
+ @note MSR_GOLDMONT_IA32_L2_QOS_MASK_3 is defined as IA32_L2_QOS_MASK_3 in SDM.
+**/
+#define MSR_GOLDMONT_IA32_L2_QOS_MASK_3 0x00000D13
+
+/**
+ MSR information returned for MSR index #MSR_GOLDMONT_IA32_L2_QOS_MASK_3.
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 19:0] CBM: Bit vector of available L2 ways for COS 0 enforcement
+ ///
+ UINT32 CBM:20;
+ UINT32 Reserved1:12;
+ UINT32 Reserved2:32;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+ ///
+ /// All bit fields as a 64-bit value
+ ///
+ UINT64 Uint64;
+} MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER;
+
+
+#endif
--
1.9.5.msysgit.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/4] UefiCpuPkg/Cpuid.h: Update CPUID definitions with SDM (Sep.2016)
2016-12-14 8:33 [PATCH 0/4] Update CPUID & MSR header files with SDM (Sep.2016) Hao Wu
` (2 preceding siblings ...)
2016-12-14 8:33 ` [PATCH 3/4] UefiCpuPkg/Include: Add Goldmont " Hao Wu
@ 2016-12-14 8:33 ` Hao Wu
2016-12-15 18:16 ` [PATCH 0/4] Update CPUID & MSR header files " Kinney, Michael D
4 siblings, 0 replies; 6+ messages in thread
From: Hao Wu @ 2016-12-14 8:33 UTC (permalink / raw)
To: edk2-devel; +Cc: Hao Wu, Michael Kinney, Jeff Fan
https://bugzilla.tianocore.org/show_bug.cgi?id=176
Update CPUID leaf and sub-leaf indexes and structures as described by
Intel(R) 64 and IA-32 Architectures Software Developer's Manual,
Volume 2A, September 2016, CPUID instruction.
Summary of incompatible changes:
1. Field name changes in CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_EBX
Bit 12 has been renamed from 'PQM' to 'RDT_M' and bit 15 has been renamed
from 'PQE' to 'RDT_A'.
2. Stucture and filed name changes for 'CPUID Platform QoS Monitoring
Information' related definitions
Definition 'CPUID_PLATFORM_QOS_MONITORING' has been renamed to
'CPUID_INTEL_RDT_MONITORING'.
Definition 'CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF' has been
renamed to 'CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF'.
Definition 'CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF' has been
renamed to 'CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF'.
3. Stucture and filed name changes for 'CPUID Platform QoS Enforcement
Information' related definitions
Definition 'CPUID_PLATFORM_QOS_ENFORCEMENT' has been renamed to
'CPUID_INTEL_RDT_ALLOCATION'.
Definition 'CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF' has been renamed to
'CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF'.
Definition 'CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF' has been
renamed to 'CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF'.
This commit also updates the relating codes in
UefiCpuPkg/Application/Cpuid to reflect the changes.
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
---
UefiCpuPkg/Application/Cpuid/Cpuid.c | 115 +++++++----
UefiCpuPkg/Include/Register/Cpuid.h | 363 ++++++++++++++++++++++++-----------
2 files changed, 325 insertions(+), 153 deletions(-)
diff --git a/UefiCpuPkg/Application/Cpuid/Cpuid.c b/UefiCpuPkg/Application/Cpuid/Cpuid.c
index ac14c41..2efad68 100644
--- a/UefiCpuPkg/Application/Cpuid/Cpuid.c
+++ b/UefiCpuPkg/Application/Cpuid/Cpuid.c
@@ -88,13 +88,14 @@ CPUID_CACHE_INFO_DESCRIPTION mCpuidCacheInfoDescription[] = {
{ 0x56 , "TLB" , "Data TLB0: 4 MByte pages, 4-way set associative, 16 entries" },
{ 0x57 , "TLB" , "Data TLB0: 4 KByte pages, 4-way associative, 16 entries" },
{ 0x59 , "TLB" , "Data TLB0: 4 KByte pages, fully associative, 16 entries" },
- { 0x5A , "TLB" , "Data TLB0: 2-MByte or 4 MByte pages, 4-way set associative, 32 entries" },
+ { 0x5A , "TLB" , "Data TLB0: 2 MByte or 4 MByte pages, 4-way set associative, 32 entries" },
{ 0x5B , "TLB" , "Data TLB: 4 KByte and 4 MByte pages, 64 entries" },
{ 0x5C , "TLB" , "Data TLB: 4 KByte and 4 MByte pages,128 entries" },
{ 0x5D , "TLB" , "Data TLB: 4 KByte and 4 MByte pages,256 entries" },
{ 0x60 , "Cache" , "1st-level data cache: 16 KByte, 8-way set associative, 64 byte line size" },
{ 0x61 , "TLB" , "Instruction TLB: 4 KByte pages, fully associative, 48 entries" },
- { 0x63 , "TLB" , "Data TLB: 1 GByte pages, 4-way set associative, 4 entries" },
+ { 0x63 , "TLB" , "Data TLB: 2 MByte or 4 MByte pages, 4-way set associative, 32 entries and a separate array with 1 GByte pages, 4-way set associative, 4 entries" },
+ { 0x64 , "TLB" , "Data TLB: 4 KByte pages, 4-way set associative, 512 entries" },
{ 0x66 , "Cache" , "1st-level data cache: 8 KByte, 4-way set associative, 64 byte line size" },
{ 0x67 , "Cache" , "1st-level data cache: 16 KByte, 4-way set associative, 64 byte line size" },
{ 0x68 , "Cache" , "1st-level data cache: 32 KByte, 4-way set associative, 64 byte line size" },
@@ -133,6 +134,7 @@ CPUID_CACHE_INFO_DESCRIPTION mCpuidCacheInfoDescription[] = {
{ 0xC1 , "STLB" , "Shared 2nd-Level TLB: 4 KByte/2MByte pages, 8-way associative, 1024 entries" },
{ 0xC2 , "DTLB" , "DTLB: 4 KByte/2 MByte pages, 4-way associative, 16 entries" },
{ 0xC3 , "STLB" , "Shared 2nd-Level TLB: 4 KByte /2 MByte pages, 6-way associative, 1536 entries. Also 1GBbyte pages, 4-way, 16 entries." },
+ { 0xC4 , "DTLB" , "DTLB: 2M/4M Byte pages, 4-way associative, 32 entries" },
{ 0xCA , "STLB" , "Shared 2nd-Level TLB: 4 KByte pages, 4-way associative, 512 entries" },
{ 0xD0 , "Cache" , "3rd-level cache: 512 KByte, 4-way set associative, 64 byte line size" },
{ 0xD1 , "Cache" , "3rd-level cache: 1 MByte, 4-way set associative, 64 byte line size" },
@@ -604,18 +606,24 @@ CpuidStructuredExtendedFeatureFlags (
PRINT_BIT_FIELD (Ebx, EnhancedRepMovsbStosb);
PRINT_BIT_FIELD (Ebx, INVPCID);
PRINT_BIT_FIELD (Ebx, RTM);
- PRINT_BIT_FIELD (Ebx, PQM);
+ PRINT_BIT_FIELD (Ebx, RDT_M);
PRINT_BIT_FIELD (Ebx, DeprecateFpuCsDs);
PRINT_BIT_FIELD (Ebx, MPX);
- PRINT_BIT_FIELD (Ebx, PQE);
+ PRINT_BIT_FIELD (Ebx, RDT_A);
PRINT_BIT_FIELD (Ebx, RDSEED);
PRINT_BIT_FIELD (Ebx, ADX);
PRINT_BIT_FIELD (Ebx, SMAP);
PRINT_BIT_FIELD (Ebx, CLFLUSHOPT);
+ PRINT_BIT_FIELD (Ebx, CLWB);
PRINT_BIT_FIELD (Ebx, IntelProcessorTrace);
+ PRINT_BIT_FIELD (Ebx, SHA);
PRINT_BIT_FIELD (Ecx, PREFETCHWT1);
+ PRINT_BIT_FIELD (Ecx, UMIP);
PRINT_BIT_FIELD (Ecx, PKU);
PRINT_BIT_FIELD (Ecx, OSPKE);
+ PRINT_BIT_FIELD (Ecx, MAWAU);
+ PRINT_BIT_FIELD (Ecx, RDPID);
+ PRINT_BIT_FIELD (Ecx, SGX_LC);
}
}
}
@@ -815,78 +823,81 @@ CpuidExtendedStateMainLeaf (
}
/**
- Display CPUID_PLATFORM_QOS_MONITORING enumeration sub-leaf.
+ Display CPUID_INTEL_RDT_MONITORING enumeration sub-leaf.
**/
VOID
-CpuidPlatformQosMonitoringEnumerationSubLeaf (
+CpuidIntelRdtMonitoringEnumerationSubLeaf (
VOID
)
{
UINT32 Ebx;
- CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF_EDX Edx;
+ CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF_EDX Edx;
- if (CPUID_PLATFORM_QOS_MONITORING > gMaximumBasicFunction) {
+ if (CPUID_INTEL_RDT_MONITORING > gMaximumBasicFunction) {
return;
}
AsmCpuidEx (
- CPUID_PLATFORM_QOS_MONITORING, CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF,
+ CPUID_INTEL_RDT_MONITORING, CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF,
NULL, &Ebx, NULL, &Edx.Uint32
);
- Print (L"CPUID_PLATFORM_QOS_MONITORING (Leaf %08x, Sub-Leaf %08x)\n", CPUID_PLATFORM_QOS_MONITORING, CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF);
+ Print (L"CPUID_INTEL_RDT_MONITORING (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_RDT_MONITORING, CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF);
Print (L" EAX:%08x EBX:%08x ECX:%08x EDX:%08x\n", 0, Ebx, 0, Edx.Uint32);
PRINT_VALUE (Ebx, Maximum_RMID_Range);
- PRINT_BIT_FIELD (Edx, L3CacheQosEnforcement);
+ PRINT_BIT_FIELD (Edx, L3CacheRDT_M);
}
/**
- Display CPUID_PLATFORM_QOS_MONITORING capability sub-leaf.
+ Display CPUID_INTEL_RDT_MONITORING L3 cache capability sub-leaf.
**/
VOID
-CpuidPlatformQosMonitoringCapabilitySubLeaf (
+CpuidIntelRdtMonitoringL3CacheCapabilitySubLeaf (
VOID
)
{
UINT32 Ebx;
UINT32 Ecx;
- CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF_EDX Edx;
+ CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF_EDX Edx;
- if (CPUID_PLATFORM_QOS_MONITORING > gMaximumBasicFunction) {
+ if (CPUID_INTEL_RDT_MONITORING > gMaximumBasicFunction) {
return;
}
AsmCpuidEx (
- CPUID_PLATFORM_QOS_MONITORING, CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF,
+ CPUID_INTEL_RDT_MONITORING, CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF,
NULL, &Ebx, &Ecx, &Edx.Uint32
);
- Print (L"CPUID_PLATFORM_QOS_MONITORING (Leaf %08x, Sub-Leaf %08x)\n", CPUID_PLATFORM_QOS_MONITORING, CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF);
+ Print (L"CPUID_INTEL_RDT_MONITORING (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_RDT_MONITORING, CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF);
Print (L" EAX:%08x EBX:%08x ECX:%08x EDX:%08x\n", 0, Ebx, Ecx, Edx.Uint32);
PRINT_VALUE (Ebx, OccupancyConversionFactor);
PRINT_VALUE (Ecx, Maximum_RMID_Range);
PRINT_BIT_FIELD (Edx, L3CacheOccupancyMonitoring);
+ PRINT_BIT_FIELD (Edx, L3CacheTotalBandwidthMonitoring);
+ PRINT_BIT_FIELD (Edx, L3CacheLocalBandwidthMonitoring);
}
/**
- Display CPUID_PLATFORM_QOS_ENFORCEMENT sub-leaf.
+ Display CPUID_INTEL_RDT_ALLOCATION L3 cache allocation technology enumeration
+ sub-leaf.
**/
VOID
-CpuidPlatformQosEnforcementResidSubLeaf (
+CpuidIntelRdtAllocationL3CacheSubLeaf (
VOID
)
{
- CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_EAX Eax;
+ CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_EAX Eax;
UINT32 Ebx;
- CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_ECX Ecx;
- CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_EDX Edx;
+ CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_ECX Ecx;
+ CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_EDX Edx;
AsmCpuidEx (
- CPUID_PLATFORM_QOS_ENFORCEMENT, CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF,
+ CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF,
&Eax.Uint32, &Ebx, &Ecx.Uint32, &Edx.Uint32
);
- Print (L"CPUID_PLATFORM_QOS_ENFORCEMENT (Leaf %08x, Sub-Leaf %08x)\n", CPUID_PLATFORM_QOS_ENFORCEMENT, CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF);
+ Print (L"CPUID_INTEL_RDT_ALLOCATION (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF);
Print (L" EAX:%08x EBX:%08x ECX:%08x EDX:%08x\n", Eax.Uint32, Ebx, Ecx.Uint32, Edx.Uint32);
PRINT_BIT_FIELD (Eax, CapacityLength);
PRINT_VALUE (Ebx, AllocationUnitBitMap);
@@ -896,29 +907,56 @@ CpuidPlatformQosEnforcementResidSubLeaf (
}
/**
- Display CPUID_PLATFORM_QOS_ENFORCEMENT main leaf and sub-leaf.
+ Display CPUID_INTEL_RDT_ALLOCATION L2 cache allocation technology enumeration
+ sub-leaf.
**/
VOID
-CpuidPlatformQosEnforcementMainLeaf (
+CpuidIntelRdtAllocationL2CacheSubLeaf (
VOID
)
{
- CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF_EBX Ebx;
+ CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF_EAX Eax;
+ UINT32 Ebx;
+ CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF_EDX Edx;
+
+ AsmCpuidEx (
+ CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF,
+ &Eax.Uint32, &Ebx, NULL, &Edx.Uint32
+ );
+ Print (L"CPUID_INTEL_RDT_ALLOCATION (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF);
+ Print (L" EAX:%08x EBX:%08x ECX:%08x EDX:%08x\n", Eax.Uint32, Ebx, 0, Edx.Uint32);
+ PRINT_BIT_FIELD (Eax, CapacityLength);
+ PRINT_VALUE (Ebx, AllocationUnitBitMap);
+ PRINT_BIT_FIELD (Edx, HighestCosNumber);
+}
+
+/**
+ Display CPUID_INTEL_RDT_ALLOCATION main leaf and sub-leaves.
+
+**/
+VOID
+CpuidIntelRdtAllocationMainLeaf (
+ VOID
+ )
+{
+ CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF_EBX Ebx;
- if (CPUID_PLATFORM_QOS_ENFORCEMENT > gMaximumBasicFunction) {
+ if (CPUID_INTEL_RDT_ALLOCATION > gMaximumBasicFunction) {
return;
}
AsmCpuidEx (
- CPUID_PLATFORM_QOS_ENFORCEMENT, CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF,
+ CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF,
NULL, &Ebx.Uint32, NULL, NULL
);
- Print (L"CPUID_PLATFORM_QOS_ENFORCEMENT (Leaf %08x, Sub-Leaf %08x)\n", CPUID_PLATFORM_QOS_ENFORCEMENT, CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF);
+ Print (L"CPUID_INTEL_RDT_ALLOCATION (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF);
Print (L" EAX:%08x EBX:%08x ECX:%08x EDX:%08x\n", 0, Ebx.Uint32, 0, 0);
- PRINT_BIT_FIELD (Ebx, L3CacheQosEnforcement);
+ PRINT_BIT_FIELD (Ebx, L3CacheAllocation);
+ PRINT_BIT_FIELD (Ebx, L2CacheAllocation);
- CpuidPlatformQosEnforcementResidSubLeaf ();
+ CpuidIntelRdtAllocationL3CacheSubLeaf ();
+ CpuidIntelRdtAllocationL2CacheSubLeaf ();
}
/**
@@ -1093,6 +1131,8 @@ CpuidIntelProcessorTraceMainLeaf (
PRINT_BIT_FIELD (Ebx, ConfigurablePsb);
PRINT_BIT_FIELD (Ebx, IpTraceStopFiltering);
PRINT_BIT_FIELD (Ebx, Mtc);
+ PRINT_BIT_FIELD (Ebx, PTWrite);
+ PRINT_BIT_FIELD (Ebx, PowerEventTrace);
PRINT_BIT_FIELD (Ecx, RTIT);
PRINT_BIT_FIELD (Ecx, ToPA);
PRINT_BIT_FIELD (Ecx, SingleRangeOutput);
@@ -1113,14 +1153,15 @@ CpuidTimeStampCounter (
{
UINT32 Eax;
UINT32 Ebx;
+ UINT32 Ecx;
if (CPUID_TIME_STAMP_COUNTER > gMaximumBasicFunction) {
return;
}
- AsmCpuid (CPUID_TIME_STAMP_COUNTER, &Eax, &Ebx, NULL, NULL);
+ AsmCpuid (CPUID_TIME_STAMP_COUNTER, &Eax, &Ebx, &Ecx, NULL);
Print (L"CPUID_TIME_STAMP_COUNTER (Leaf %08x)\n", CPUID_TIME_STAMP_COUNTER);
- Print (L" EAX:%08x EBX:%08x ECX:%08x EDX:%08x\n", Eax, Ebx, 0, 0);
+ Print (L" EAX:%08x EBX:%08x ECX:%08x EDX:%08x\n", Eax, Ebx, Ecx, 0);
}
/**
@@ -1446,9 +1487,9 @@ UefiMain (
CpuidArchitecturalPerformanceMonitoring ();
CpuidExtendedTopology ();
CpuidExtendedStateMainLeaf ();
- CpuidPlatformQosMonitoringEnumerationSubLeaf ();
- CpuidPlatformQosMonitoringCapabilitySubLeaf ();
- CpuidPlatformQosEnforcementMainLeaf ();
+ CpuidIntelRdtMonitoringEnumerationSubLeaf ();
+ CpuidIntelRdtMonitoringL3CacheCapabilitySubLeaf ();
+ CpuidIntelRdtAllocationMainLeaf ();
CpuidEnumerationOfIntelSgx ();
CpuidIntelProcessorTraceMainLeaf ();
CpuidTimeStampCounter ();
diff --git a/UefiCpuPkg/Include/Register/Cpuid.h b/UefiCpuPkg/Include/Register/Cpuid.h
index 864108d..5eb9650 100644
--- a/UefiCpuPkg/Include/Register/Cpuid.h
+++ b/UefiCpuPkg/Include/Register/Cpuid.h
@@ -17,7 +17,7 @@
@par Specification Reference:
Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 2A,
- December 2015, CPUID instruction.
+ September 2016, CPUID instruction.
**/
@@ -433,11 +433,10 @@ typedef union {
///
UINT32 PGE:1;
///
- /// [Bit 14] Machine Check Architecture. The Machine Check Architecture,
- /// which provides a compatible mechanism for error reporting in P6 family,
- /// Pentium 4, Intel Xeon processors, and future processors, is supported.
- /// The MCG_CAP MSR contains feature bits describing how many banks of error
- /// reporting MSRs are supported.
+ /// [Bit 14] Machine Check Architecture. A value of 1 indicates the Machine
+ /// Check Architecture of reporting machine errors is supported. The MCG_CAP
+ /// MSR contains feature bits describing how many banks of error reporting
+ /// MSRs are supported.
///
UINT32 MCA:1;
///
@@ -634,13 +633,16 @@ typedef union {
<tr><td> 0x56 </td><td> TLB </td><td> Data TLB0: 4 MByte pages, 4-way set associative, 16 entries</td></tr>
<tr><td> 0x57 </td><td> TLB </td><td> Data TLB0: 4 KByte pages, 4-way associative, 16 entries</td></tr>
<tr><td> 0x59 </td><td> TLB </td><td> Data TLB0: 4 KByte pages, fully associative, 16 entries</td></tr>
- <tr><td> 0x5A </td><td> TLB </td><td> Data TLB0: 2-MByte or 4 MByte pages, 4-way set associative, 32 entries</td></tr>
+ <tr><td> 0x5A </td><td> TLB </td><td> Data TLB0: 2 MByte or 4 MByte pages, 4-way set associative, 32 entries</td></tr>
<tr><td> 0x5B </td><td> TLB </td><td> Data TLB: 4 KByte and 4 MByte pages, 64 entries</td></tr>
<tr><td> 0x5C </td><td> TLB </td><td> Data TLB: 4 KByte and 4 MByte pages,128 entries</td></tr>
<tr><td> 0x5D </td><td> TLB </td><td> Data TLB: 4 KByte and 4 MByte pages,256 entries</td></tr>
<tr><td> 0x60 </td><td> Cache </td><td> 1st-level data cache: 16 KByte, 8-way set associative, 64 byte line size</td></tr>
<tr><td> 0x61 </td><td> TLB </td><td> Instruction TLB: 4 KByte pages, fully associative, 48 entries</td></tr>
- <tr><td> 0x63 </td><td> TLB </td><td> Data TLB: 1 GByte pages, 4-way set associative, 4 entries</td></tr>
+ <tr><td> 0x63 </td><td> TLB </td><td> Data TLB: 2 MByte or 4 MByte pages, 4-way set associative,
+ 32 entries and a separate array with 1 GByte pages, 4-way set associative,
+ 4 entries</td></tr>
+ <tr><td> 0x64 </td><td> TLB </td><td> Data TLB: 4 KByte pages, 4-way set associative, 512 entries</td></tr>
<tr><td> 0x66 </td><td> Cache </td><td> 1st-level data cache: 8 KByte, 4-way set associative, 64 byte line size</td></tr>
<tr><td> 0x67 </td><td> Cache </td><td> 1st-level data cache: 16 KByte, 4-way set associative, 64 byte line size</td></tr>
<tr><td> 0x68 </td><td> Cache </td><td> 1st-level data cache: 32 KByte, 4-way set associative, 64 byte line size</td></tr>
@@ -686,6 +688,7 @@ typedef union {
<tr><td> 0xC2 </td><td> DTLB </td><td> DTLB: 4 KByte/2 MByte pages, 4-way associative, 16 entries</td></tr>
<tr><td> 0xC3 </td><td> STLB </td><td> Shared 2nd-Level TLB: 4 KByte /2 MByte pages, 6-way associative,
1536 entries. Also 1GBbyte pages, 4-way, 16 entries.</td></tr>
+ <tr><td> 0xC4 </td><td> DTLB </td><td> DTLB: 2M/4M Byte pages, 4-way associative, 32 entries</td></tr>
<tr><td> 0xCA </td><td> STLB </td><td> Shared 2nd-Level TLB: 4 KByte pages, 4-way associative, 512 entries</td></tr>
<tr><td> 0xD0 </td><td> Cache </td><td> 3rd-level cache: 512 KByte, 4-way set associative, 64 byte line size</td></tr>
<tr><td> 0xD1 </td><td> Cache </td><td> 3rd-level cache: 1 MByte, 4-way set associative, 64 byte line size</td></tr>
@@ -1349,10 +1352,10 @@ typedef union {
///
UINT32 RTM:1;
///
- /// [Bit 12] Supports Platform Quality of Service Monitoring (PQM)
- /// capability if 1.
+ /// [Bit 12] Supports Intel(R) Resource Director Technology (Intel(R) RDT)
+ /// Monitoring capability if 1.
///
- UINT32 PQM:1;
+ UINT32 RDT_M:1;
///
/// [Bit 13] Deprecates FPU CS and FPU DS values if 1.
///
@@ -1362,10 +1365,10 @@ typedef union {
///
UINT32 MPX:1;
///
- /// [Bit 15] Supports Platform Quality of Service Enforcement (PQE)
- /// capability if 1.
+ /// [Bit 15] Supports Intel(R) Resource Director Technology (Intel(R) RDT)
+ /// Allocation capability if 1.
///
- UINT32 PQE:1;
+ UINT32 RDT_A:1;
UINT32 Reserved2:2;
///
/// [Bit 18] If 1 indicates the processor supports the RDSEED instruction.
@@ -1386,13 +1389,22 @@ typedef union {
/// [Bit 23] If 1 indicates the processor supports the CLFLUSHOPT instruction.
///
UINT32 CLFLUSHOPT:1;
- UINT32 Reserved4:1;
+ ///
+ /// [Bit 24] If 1 indicates the processor supports the CLWB instruction.
+ ///
+ UINT32 CLWB:1;
///
/// [Bit 25] If 1 indicates the processor supports the Intel Processor Trace
/// extensions.
///
UINT32 IntelProcessorTrace:1;
- UINT32 Reserved5:6;
+ UINT32 Reserved4:3;
+ ///
+ /// [Bit 29] Supports Intel(R) Secure Hash Algorithm Extensions (Intel(R)
+ /// SHA Extensions) if 1.
+ ///
+ UINT32 SHA:1;
+ UINT32 Reserved5:2;
} Bits;
///
/// All bit fields as a 32-bit value
@@ -1414,7 +1426,11 @@ typedef union {
/// [Bit 0] If 1 indicates the processor supports the PREFETCHWT1 instruction.
///
UINT32 PREFETCHWT1:1;
- UINT32 Reserved1:2;
+ UINT32 Reserved1:1;
+ ///
+ /// [Bit 2] Supports user-mode instruction prevention if 1.
+ ///
+ UINT32 UMIP:1;
///
/// [Bit 3] Supports protection keys for user-mode pages if 1.
///
@@ -1424,7 +1440,22 @@ typedef union {
/// RDPKRU/WRPKRU instructions).
///
UINT32 OSPKE:1;
- UINT32 Reserved2:27;
+ UINT32 Reserved2:12;
+ ///
+ /// [Bits 21:17] The value of MAWAU used by the BNDLDX and BNDSTX instructions
+ /// in 64-bit mode.
+ ///
+ UINT32 MAWAU:5;
+ ///
+ /// [Bit 22] Supports Read Processor ID if 1.
+ ///
+ UINT32 RDPID:1;
+ UINT32 Reserved3:7;
+ ///
+ /// [Bit 30] Supports SGX Launch Configuration if 1.
+ ///
+ UINT32 SGX_LC:1;
+ UINT32 Reserved4:1;
} Bits;
///
/// All bit fields as a 32-bit value
@@ -1756,7 +1787,7 @@ typedef union {
enabled.
@retval ECX Maximum size (bytes, from the beginning of the XSAVE/XRSTOR save
area) of the XSAVE/XRSTOR save area required by all supported
- features in the processor, i.e all the valid bit fields in XCR0.
+ features in the processor, i.e., all the valid bit fields in XCR0.
@retval EDX Reports the supported bits of the upper 32 bits of XCR0.
XCR0[n+32] can be set to 1 only if EDX[n] is 1.
@@ -1991,45 +2022,46 @@ typedef union {
/**
- CPUID Platform QoS Monitoring Information
+ CPUID Intel Resource Director Technology (Intel RDT) Monitoring Information
- @param EAX CPUID_PLATFORM_QOS_MONITORING (0x0F)
- @param ECX CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF (0x00).
- CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF (0x01).
+ @param EAX CPUID_INTEL_RDT_MONITORING (0x0F)
+ @param ECX CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF (0x00).
+ CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF (0x01).
**/
-#define CPUID_PLATFORM_QOS_MONITORING 0x0F
+#define CPUID_INTEL_RDT_MONITORING 0x0F
/**
- CPUID Platform QoS Monitoring Information Enumeration Sub-leaf
+ CPUID Intel Resource Director Technology (Intel RDT) Monitoring Information
+ Enumeration Sub-leaf
- @param EAX CPUID_PLATFORM_QOS_MONITORING (0x0F)
- @param ECX CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF (0x00)
+ @param EAX CPUID_INTEL_RDT_MONITORING (0x0F)
+ @param ECX CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF (0x00)
@retval EAX Reserved.
@retval EBX Maximum range (zero-based) of RMID within this physical
processor of all types.
@retval ECX Reserved.
- @retval EDX L3 Cache QoS Monitoring Information Enumeration described by the
- type CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF_EDX.
+ @retval EDX L3 Cache Intel RDT Monitoring Information Enumeration described by
+ the type CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF_EDX.
<b>Example usage</b>
@code
UINT32 Ebx;
- CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF_EDX Edx;
+ CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF_EDX Edx;
AsmCpuidEx (
- CPUID_PLATFORM_QOS_MONITORING, CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF,
+ CPUID_INTEL_RDT_MONITORING, CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF,
NULL, &Ebx, NULL, &Edx.Uint32
);
@endcode
**/
-#define CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF 0x00
+#define CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF 0x00
/**
- CPUID Platform QoS Monitoring Information EDX for CPUID leaf
- #CPUID_PLATFORM_QOS_MONITORING, sub-leaf
- #CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF.
+ CPUID Intel RDT Monitoring Information EDX for CPUID leaf
+ #CPUID_INTEL_RDT_MONITORING, sub-leaf
+ #CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF.
**/
typedef union {
///
@@ -2038,47 +2070,47 @@ typedef union {
struct {
UINT32 Reserved1:1;
///
- /// [Bit 1] Supports L3 Cache QoS Monitoring if 1.
+ /// [Bit 1] Supports L3 Cache Intel RDT Monitoring if 1.
///
- UINT32 L3CacheQosEnforcement:1;
+ UINT32 L3CacheRDT_M:1;
UINT32 Reserved2:30;
} Bits;
///
/// All bit fields as a 32-bit value
///
UINT32 Uint32;
-} CPUID_PLATFORM_QOS_MONITORING_ENUMERATION_SUB_LEAF_EDX;
+} CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF_EDX;
/**
- CPUID Platform QoS Monitoring Information Capability Sub-leaf
+ CPUID L3 Cache Intel RDT Monitoring Capability Enumeration Sub-leaf
- @param EAX CPUID_PLATFORM_QOS_MONITORING (0x0F)
- @param ECX CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF (0x01)
+ @param EAX CPUID_INTEL_RDT_MONITORING (0x0F)
+ @param ECX CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF (0x01)
@retval EAX Reserved.
@retval EBX Conversion factor from reported IA32_QM_CTR value to occupancy metric (bytes).
@retval ECX Maximum range (zero-based) of RMID of this resource type.
- @retval EDX L3 Cache QoS Monitoring Capability information described by the
- type CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF_EDX.
+ @retval EDX L3 Cache Intel RDT Monitoring Capability information described by the
+ type CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF_EDX.
<b>Example usage</b>
@code
- UINT32 Ebx;
- UINT32 Ecx;
- CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF_EDX Edx;
+ UINT32 Ebx;
+ UINT32 Ecx;
+ CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF_EDX Edx;
AsmCpuidEx (
- CPUID_PLATFORM_QOS_MONITORING, CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF,
+ CPUID_INTEL_RDT_MONITORING, CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF,
NULL, &Ebx, &Ecx, &Edx.Uint32
);
@endcode
**/
-#define CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF 0x01
+#define CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF 0x01
/**
- CPUID Platform QoS Monitoring Information Capability EDX for CPUID leaf
- #CPUID_PLATFORM_QOS_MONITORING, sub-leaf
- #CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF.
+ CPUID L3 Cache Intel RDT Monitoring Capability Information EDX for CPUID leaf
+ #CPUID_INTEL_RDT_MONITORING, sub-leaf
+ #CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF.
**/
typedef union {
///
@@ -2089,53 +2121,61 @@ typedef union {
/// [Bit 0] Supports L3 occupancy monitoring if 1.
///
UINT32 L3CacheOccupancyMonitoring:1;
- UINT32 Reserved:31;
+ ///
+ /// [Bit 1] Supports L3 Total Bandwidth monitoring if 1.
+ ///
+ UINT32 L3CacheTotalBandwidthMonitoring:1;
+ ///
+ /// [Bit 2] Supports L3 Local Bandwidth monitoring if 1.
+ ///
+ UINT32 L3CacheLocalBandwidthMonitoring:1;
+ UINT32 Reserved:29;
} Bits;
///
/// All bit fields as a 32-bit value
///
UINT32 Uint32;
-} CPUID_PLATFORM_QOS_MONITORING_CAPABILITY_SUB_LEAF_EDX;
+} CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF_EDX;
/**
- CPUID Platform QoS Enforcement Information
+ CPUID Intel Resource Director Technology (Intel RDT) Allocation Information
- @param EAX CPUID_PLATFORM_QOS_ENFORCEMENT (0x10).
- @param ECX CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF (0x00).
- CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF (0x01).
- Additional sub leafs 1..n based in RESID from sub leaf 0x00.
+ @param EAX CPUID_INTEL_RDT_ALLOCATION (0x10).
+ @param ECX CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF (0x00).
+ CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF (0x01).
+ CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF (0x02).
**/
-#define CPUID_PLATFORM_QOS_ENFORCEMENT 0x10
+#define CPUID_INTEL_RDT_ALLOCATION 0x10
/**
- CPUID Platform QoS Enforcement Information
+ Intel Resource Director Technology (Intel RDT) Allocation Enumeration Sub-leaf
- @param EAX CPUID_PLATFORM_QOS_ENFORCEMENT (0x10)
- @param ECX CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF (0x00).
+ @param EAX CPUID_INTEL_RDT_ALLOCATION (0x10)
+ @param ECX CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF (0x00).
@retval EAX Reserved.
- @retval EBX L3 Cache QoS Enforcement information described by the
- type CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF_EBX.
+ @retval EBX L3 and L2 Cache Allocation Technology information described by
+ the type CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF_EBX.
@retval ECX Reserved.
@retval EDX Reserved.
<b>Example usage</b>
@code
- CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF_EBX Ebx;
+ CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF_EBX Ebx;
AsmCpuidEx (
- CPUID_PLATFORM_QOS_ENFORCEMENT, CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF,
+ CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF,
NULL, &Ebx.Uint32, NULL, NULL
);
@endcode
**/
-#define CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF 0x00
+#define CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF 0x00
/**
- CPUID Platform QoS Enforcement Information EBX for CPUID leaf
- #CPUID_PLATFORM_QOS_ENFORCEMENT, sub-leaf
- #CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF.
+ CPUID L3 and L2 Cache Allocation Support Information EBX for CPUID leaf
+ #CPUID_INTEL_RDT_ALLOCATION, sub-leaf
+ #CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF.
**/
typedef union {
///
@@ -2144,52 +2184,55 @@ typedef union {
struct {
UINT32 Reserved1:1;
///
- /// [Bit 1] Supports L3 Cache QoS Enforcement if 1.
+ /// [Bit 1] Supports L3 Cache Allocation Technology if 1.
///
- UINT32 L3CacheQosEnforcement:1;
- UINT32 Reserved2:30;
+ UINT32 L3CacheAllocation:1;
+ ///
+ /// [Bit 2] Supports L2 Cache Allocation Technology if 1.
+ ///
+ UINT32 L2CacheAllocation:1;
+ UINT32 Reserved2:29;
} Bits;
///
/// All bit fields as a 32-bit value
///
UINT32 Uint32;
-} CPUID_PLATFORM_QOS_ENFORCEMENT_MAIN_LEAF_EBX;
+} CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF_EBX;
/**
- CPUID Platform QoS Enforcement Information
+ L3 Cache Allocation Technology Enumeration Sub-leaf
- @param EAX CPUID_PLATFORM_QOS_ENFORCEMENT (0x10)
- @param ECX CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF (0x00)
- Additional sub leafs 1..n based in RESID from sub leaf 0x00.
+ @param EAX CPUID_INTEL_RDT_ALLOCATION (0x10)
+ @param ECX CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF (0x01)
- @retval EAX RESID L3 Cache3 QoS Enforcement information described by the
- type CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_EAX.
+ @retval EAX RESID L3 Cache Allocation Technology information described by
+ the type CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_EAX.
@retval EBX Bit-granular map of isolation/contention of allocation units.
- @retval ECX RESID L3 Cache3 QoS Enforcement information described by the
- type CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_ECX.
- @retval EDX RESID L3 Cache3 QoS Enforcement information described by the
- type CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_EDX.
+ @retval ECX RESID L3 Cache Allocation Technology information described by
+ the type CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_ECX.
+ @retval EDX RESID L3 Cache Allocation Technology information described by
+ the type CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_EDX.
<b>Example usage</b>
@code
- CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_EAX Eax;
+ CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_EAX Eax;
UINT32 Ebx;
- CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_ECX Ecx;
- CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_EDX Edx;
+ CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_ECX Ecx;
+ CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_EDX Edx;
AsmCpuidEx (
- CPUID_PLATFORM_QOS_ENFORCEMENT, CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF,
+ CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF,
&Eax.Uint32, &Ebx, &Ecx.Uint32, &Edx.Uint32
);
@endcode
**/
-#define CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF 0x01
+#define CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF 0x01
/**
- CPUID Platform QoS Enforcement Information EAX for CPUID leaf
- #CPUID_PLATFORM_QOS_ENFORCEMENT, sub-leaf
- #CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF.
+ CPUID L3 Cache Allocation Technology Information EAX for CPUID leaf
+ #CPUID_INTEL_RDT_ALLOCATION, sub-leaf
+ #CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF.
**/
typedef union {
///
@@ -2197,21 +2240,22 @@ typedef union {
///
struct {
///
- /// [Bits 3:0] Length of the capacity bit mask for the corresponding ResID.
+ /// [Bits 4:0] Length of the capacity bit mask for the corresponding ResID
+ /// using minus-one notation.
///
- UINT32 CapacityLength:4;
- UINT32 Reserved:28;
+ UINT32 CapacityLength:5;
+ UINT32 Reserved:27;
} Bits;
///
/// All bit fields as a 32-bit value
///
UINT32 Uint32;
-} CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_EAX;
+} CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_EAX;
/**
- CPUID Platform QoS Enforcement Information ECX for CPUID leaf
- #CPUID_PLATFORM_QOS_ENFORCEMENT, sub-leaf
- #CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF.
+ CPUID L3 Cache Allocation Technology Information ECX for CPUID leaf
+ #CPUID_INTEL_RDT_ALLOCATION, sub-leaf
+ #CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF.
**/
typedef union {
///
@@ -2233,12 +2277,12 @@ typedef union {
/// All bit fields as a 32-bit value
///
UINT32 Uint32;
-} CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_ECX;
+} CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_ECX;
/**
- CPUID Platform QoS Enforcement Information EDX for CPUID leaf
- #CPUID_PLATFORM_QOS_ENFORCEMENT, sub-leaf
- #CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF.
+ CPUID L3 Cache Allocation Technology Information EDX for CPUID leaf
+ #CPUID_INTEL_RDT_ALLOCATION, sub-leaf
+ #CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF.
**/
typedef union {
///
@@ -2255,7 +2299,79 @@ typedef union {
/// All bit fields as a 32-bit value
///
UINT32 Uint32;
-} CPUID_PLATFORM_QOS_ENFORCEMENT_RESID_SUB_LEAF_EDX;
+} CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_EDX;
+
+/**
+ L2 Cache Allocation Technology Enumeration Sub-leaf
+
+ @param EAX CPUID_INTEL_RDT_ALLOCATION (0x10)
+ @param ECX CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF (0x02)
+
+ @retval EAX RESID L2 Cache Allocation Technology information described by
+ the type CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF_EAX.
+ @retval EBX Bit-granular map of isolation/contention of allocation units.
+ @retval ECX Reserved.
+ @retval EDX RESID L2 Cache Allocation Technology information described by
+ the type CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF_EDX.
+
+ <b>Example usage</b>
+ @code
+ CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF_EAX Eax;
+ UINT32 Ebx;
+ CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF_EDX Edx;
+
+ AsmCpuidEx (
+ CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF,
+ &Eax.Uint32, &Ebx, NULL, &Edx.Uint32
+ );
+ @endcode
+**/
+#define CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF 0x02
+
+/**
+ CPUID L2 Cache Allocation Technology Information EAX for CPUID leaf
+ #CPUID_INTEL_RDT_ALLOCATION, sub-leaf
+ #CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF.
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 4:0] Length of the capacity bit mask for the corresponding ResID
+ /// using minus-one notation.
+ ///
+ UINT32 CapacityLength:5;
+ UINT32 Reserved:27;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+} CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF_EAX;
+
+/**
+ CPUID L2 Cache Allocation Technology Information EDX for CPUID leaf
+ #CPUID_INTEL_RDT_ALLOCATION, sub-leaf
+ #CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF.
+**/
+typedef union {
+ ///
+ /// Individual bit fields
+ ///
+ struct {
+ ///
+ /// [Bits 15:0] Highest COS number supported for this ResID.
+ ///
+ UINT32 HighestCosNumber:16;
+ UINT32 Reserved:16;
+ } Bits;
+ ///
+ /// All bit fields as a 32-bit value
+ ///
+ UINT32 Uint32;
+} CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF_EDX;
/**
@@ -2580,26 +2696,38 @@ typedef union {
///
struct {
///
- /// [Bit 0] If 1, Indicates that IA32_RTIT_CTL.CR3Filter can be set to 1,
+ /// [Bit 0] If 1, indicates that IA32_RTIT_CTL.CR3Filter can be set to 1,
/// and that IA32_RTIT_CR3_MATCH MSR can be accessed.
///
UINT32 Cr3Filter:1;
///
- /// [Bit 1] If 1, Indicates support of Configurable PSB and Cycle-Accurate
+ /// [Bit 1] If 1, indicates support of Configurable PSB and Cycle-Accurate
/// Mode.
///
UINT32 ConfigurablePsb:1;
///
- /// [Bit 2] If 1, Indicates support of IP Filtering, TraceStop filtering,
+ /// [Bit 2] If 1, indicates support of IP Filtering, TraceStop filtering,
/// and preservation of Intel PT MSRs across warm reset.
///
UINT32 IpTraceStopFiltering:1;
///
- /// [Bit 3] If 1, Indicates support of MTC timing packet and suppression of
+ /// [Bit 3] If 1, indicates support of MTC timing packet and suppression of
/// COFI-based packets.
///
UINT32 Mtc:1;
- UINT32 Reserved:28;
+ ///
+ /// [Bit 4] If 1, indicates support of PTWRITE. Writes can set
+ /// IA32_RTIT_CTL[12] (PTWEn) and IA32_RTIT_CTL[5] (FUPonPTW), and PTWRITE
+ /// can generate packets.
+ ///
+ UINT32 PTWrite:1;
+ ///
+ /// [Bit 5] If 1, indicates support of Power Event Trace. Writes can set
+ /// IA32_RTIT_CTL[4] (PwrEvtEn), enabling Power Event Trace packet
+ /// generation.
+ ///
+ UINT32 PowerEventTrace:1;
+ UINT32 Reserved:26;
} Bits;
///
/// All bit fields as a 32-bit value
@@ -2629,16 +2757,16 @@ typedef union {
///
UINT32 ToPA:1;
///
- /// [Bit 2] If 1, Indicates support of Single-Range Output scheme.
+ /// [Bit 2] If 1, indicates support of Single-Range Output scheme.
///
UINT32 SingleRangeOutput:1;
///
- /// [Bit 3] If 1, Indicates support of output to Trace Transport subsystem.
+ /// [Bit 3] If 1, indicates support of output to Trace Transport subsystem.
///
UINT32 TraceTransportSubsystem:1;
UINT32 Reserved:27;
///
- /// [Bit 31] If 1, Generated packets which contain IP payloads have LIP
+ /// [Bit 31] If 1, generated packets which contain IP payloads have LIP
/// values, which include the CS base component.
///
UINT32 LIP:1;
@@ -2738,13 +2866,14 @@ typedef union {
/**
- CPUID Time Stamp Counter Information
+ CPUID Time Stamp Counter and Nominal Core Crystal Clock Information
@note
If EBX[31:0] is 0, the TSC/"core crystal clock" ratio is not enumerated.
EBX[31:0]/EAX[31:0] indicates the ratio of the TSC frequency and the core
crystal clock frequency.
- "TSC frequency" = "core crystal clock frequency" * EBX/EAX.
+ If ECX is 0, the nominal core crystal clock frequency is not enumerated.
+ "TSC frequency" = "core crystal clock frequency" * EBX/EAX.
The core crystal clock may differ from the reference clock, bus clock, or core
clock frequencies.
@@ -2754,15 +2883,17 @@ typedef union {
TSC/"core crystal clock" ratio
@retval EBX An unsigned integer which is the numerator of the
TSC/"core crystal clock" ratio.
- @retval ECX Reserved.
+ @retval ECX An unsigned integer which is the nominal frequency
+ of the core crystal clock in Hz.
@retval EDX Reserved.
<b>Example usage</b>
@code
UINT32 Eax;
UINT32 Ebx;
+ UINT32 Ecx;
- AsmCpuid (CPUID_TIME_STAMP_COUNTER, &Eax, &Ebx, NULL, NULL);
+ AsmCpuid (CPUID_TIME_STAMP_COUNTER, &Eax, &Ebx, &Ecx, NULL);
@endcode
**/
#define CPUID_TIME_STAMP_COUNTER 0x15
--
1.9.5.msysgit.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] Update CPUID & MSR header files with SDM (Sep.2016)
2016-12-14 8:33 [PATCH 0/4] Update CPUID & MSR header files with SDM (Sep.2016) Hao Wu
` (3 preceding siblings ...)
2016-12-14 8:33 ` [PATCH 4/4] UefiCpuPkg/Cpuid.h: Update CPUID definitions " Hao Wu
@ 2016-12-15 18:16 ` Kinney, Michael D
4 siblings, 0 replies; 6+ messages in thread
From: Kinney, Michael D @ 2016-12-15 18:16 UTC (permalink / raw)
To: Wu, Hao A, edk2-devel@lists.01.org, Kinney, Michael D; +Cc: Fan, Jeff
Series
Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
Mike
> -----Original Message-----
> From: Wu, Hao A
> Sent: Wednesday, December 14, 2016 12:33 AM
> To: edk2-devel@lists.01.org
> Cc: Wu, Hao A <hao.a.wu@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>;
> Fan, Jeff <jeff.fan@intel.com>
> Subject: [PATCH 0/4] Update CPUID & MSR header files with SDM (Sep.2016)
>
> https://bugzilla.tianocore.org/show_bug.cgi?id=176
>
> According to the latest version (Sep.'16) of Intel(R) 64 and IA-32
> Architectures Software Developer's Manual (SDM), this patch series will
> update the MSR and CPUID related definitions in .h files under
> UefiCpuPkg/Include/Register.
>
> Cc: Michael Kinney <michael.d.kinney@intel.com>
> Cc: Jeff Fan <jeff.fan@intel.com>
>
> Hao Wu (4):
> UefiCpuPkg/Include: Update MSR header files with SDM (Sep.2016)
> UefiCpuPkg/Include: Update Skylake MSR header file with SDM (Sep.2016)
> UefiCpuPkg/Include: Add Goldmont MSR header file with SDM (Sep.2016)
> UefiCpuPkg/Cpuid.h: Update CPUID definitions with SDM (Sep.2016)
>
> UefiCpuPkg/Application/Cpuid/Cpuid.c | 115 +-
> UefiCpuPkg/Include/Register/ArchitecturalMsr.h | 159 +-
> UefiCpuPkg/Include/Register/Cpuid.h | 363 +++-
> UefiCpuPkg/Include/Register/Msr.h | 3 +-
> UefiCpuPkg/Include/Register/Msr/AtomMsr.h | 167 +-
> UefiCpuPkg/Include/Register/Msr/BroadwellMsr.h | 43 +-
> UefiCpuPkg/Include/Register/Msr/Core2Msr.h | 286 +--
> UefiCpuPkg/Include/Register/Msr/CoreMsr.h | 64 +-
> UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h | 2515 ++++++++++++++++++++++
> UefiCpuPkg/Include/Register/Msr/HaswellEMsr.h | 451 ++--
> UefiCpuPkg/Include/Register/Msr/HaswellMsr.h | 62 +-
> UefiCpuPkg/Include/Register/Msr/IvyBridgeMsr.h | 416 ++--
> UefiCpuPkg/Include/Register/Msr/NehalemMsr.h | 340 +--
> UefiCpuPkg/Include/Register/Msr/P6Msr.h | 6 +-
> UefiCpuPkg/Include/Register/Msr/Pentium4Msr.h | 146 +-
> UefiCpuPkg/Include/Register/Msr/PentiumMMsr.h | 26 +-
> UefiCpuPkg/Include/Register/Msr/PentiumMsr.h | 8 +-
> UefiCpuPkg/Include/Register/Msr/SandyBridgeMsr.h | 537 ++---
> UefiCpuPkg/Include/Register/Msr/SilvermontMsr.h | 411 ++--
> UefiCpuPkg/Include/Register/Msr/SkylakeMsr.h | 1189 +++++++++-
> UefiCpuPkg/Include/Register/Msr/Xeon5600Msr.h | 2 +-
> UefiCpuPkg/Include/Register/Msr/XeonDMsr.h | 456 +---
> UefiCpuPkg/Include/Register/Msr/XeonE7Msr.h | 74 +-
> UefiCpuPkg/Include/Register/Msr/XeonPhiMsr.h | 314 +--
> 24 files changed, 5323 insertions(+), 2830 deletions(-)
> create mode 100644 UefiCpuPkg/Include/Register/Msr/GoldmontMsr.h
>
> --
> 1.9.5.msysgit.0
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-12-15 18:16 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-14 8:33 [PATCH 0/4] Update CPUID & MSR header files with SDM (Sep.2016) Hao Wu
2016-12-14 8:33 ` [PATCH 1/4] UefiCpuPkg/Include: Update " Hao Wu
2016-12-14 8:33 ` [PATCH 2/4] UefiCpuPkg/Include: Update Skylake MSR header file " Hao Wu
2016-12-14 8:33 ` [PATCH 3/4] UefiCpuPkg/Include: Add Goldmont " Hao Wu
2016-12-14 8:33 ` [PATCH 4/4] UefiCpuPkg/Cpuid.h: Update CPUID definitions " Hao Wu
2016-12-15 18:16 ` [PATCH 0/4] Update CPUID & MSR header files " Kinney, Michael D
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox