* [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 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