]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/Include/Register/Msr/HaswellEMsr.h
UefiCpuPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / UefiCpuPkg / Include / Register / Msr / HaswellEMsr.h
index f201e9c5a4c10994676b2d2b43153450d0953524..6cde974b1d67a99c5a989242c7e4cfc5aacc1198 100644 (file)
@@ -6,18 +6,12 @@
   returned is a single 32-bit or 64-bit value, then a data structure is not\r
   provided for that MSR.\r
 \r
-  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
-  This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
   @par Specification Reference:\r
-  Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,\r
-  December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-11.\r
+  Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 4,\r
+  May 2018, Volume 4: Model-Specific-Registers (MSR)\r
 \r
 **/\r
 \r
 \r
 #include <Register/ArchitecturalMsr.h>\r
 \r
+/**\r
+  Is Intel processors based on the Haswell-E microarchitecture?\r
+\r
+  @param   DisplayFamily  Display Family ID\r
+  @param   DisplayModel   Display Model ID\r
+\r
+  @retval  TRUE   Yes, it is.\r
+  @retval  FALSE  No, it isn't.\r
+**/\r
+#define IS_HASWELL_E_PROCESSOR(DisplayFamily, DisplayModel) \\r
+  (DisplayFamily == 0x06 && \\r
+   (                        \\r
+    DisplayModel == 0x3F    \\r
+    )                       \\r
+   )\r
+\r
+/**\r
+  Package. Configured State of Enabled Processor Core Count and Logical\r
+  Processor Count (RO) -  After a Power-On RESET, enumerates factory\r
+  configuration of the number of processor cores and logical processors in the\r
+  physical package. -  Following the sequence of (i) BIOS modified a\r
+  Configuration Mask which selects a subset of processor cores to be active\r
+  post RESET and (ii) a RESET event after the modification, enumerates the\r
+  current configuration of enabled processor core count and logical processor\r
+  count in the physical package.\r
+\r
+  @param  ECX  MSR_HASWELL_E_CORE_THREAD_COUNT (0x00000035)\r
+  @param  EAX  Lower 32-bits of MSR value.\r
+               Described by the type MSR_HASWELL_E_CORE_THREAD_COUNT_REGISTER.\r
+  @param  EDX  Upper 32-bits of MSR value.\r
+               Described by the type MSR_HASWELL_E_CORE_THREAD_COUNT_REGISTER.\r
+\r
+  <b>Example usage</b>\r
+  @code\r
+  MSR_HASWELL_E_CORE_THREAD_COUNT_REGISTER  Msr;\r
+\r
+  Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_E_CORE_THREAD_COUNT);\r
+  @endcode\r
+  @note MSR_HASWELL_E_CORE_THREAD_COUNT is defined as MSR_CORE_THREAD_COUNT in SDM.\r
+**/\r
+#define MSR_HASWELL_E_CORE_THREAD_COUNT          0x00000035\r
+\r
+/**\r
+  MSR information returned for MSR index #MSR_HASWELL_E_CORE_THREAD_COUNT\r
+**/\r
+typedef union {\r
+  ///\r
+  /// Individual bit fields\r
+  ///\r
+  struct {\r
+    ///\r
+    /// [Bits 15:0] Core_COUNT (RO) The number of processor cores that are\r
+    /// currently enabled (by either factory configuration or BIOS\r
+    /// configuration) in the physical package.\r
+    ///\r
+    UINT32  Core_Count:16;\r
+    ///\r
+    /// [Bits 31:16] THREAD_COUNT (RO) The number of logical processors that\r
+    /// are currently enabled (by either factory configuration or BIOS\r
+    /// configuration) in the physical package.\r
+    ///\r
+    UINT32  Thread_Count:16;\r
+    UINT32  Reserved:32;\r
+  } Bits;\r
+  ///\r
+  /// All bit fields as a 32-bit value\r
+  ///\r
+  UINT32  Uint32;\r
+  ///\r
+  /// All bit fields as a 64-bit value\r
+  ///\r
+  UINT64  Uint64;\r
+} MSR_HASWELL_E_CORE_THREAD_COUNT_REGISTER;\r
+\r
+\r
+/**\r
+  Thread. A Hardware Assigned ID for the Logical Processor (RO).\r
+\r
+  @param  ECX  MSR_HASWELL_E_THREAD_ID_INFO (0x00000053)\r
+  @param  EAX  Lower 32-bits of MSR value.\r
+               Described by the type MSR_HASWELL_E_THREAD_ID_INFO_REGISTER.\r
+  @param  EDX  Upper 32-bits of MSR value.\r
+               Described by the type MSR_HASWELL_E_THREAD_ID_INFO_REGISTER.\r
+\r
+  <b>Example usage</b>\r
+  @code\r
+  MSR_HASWELL_E_THREAD_ID_INFO_REGISTER  Msr;\r
+\r
+  Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_E_THREAD_ID_INFO);\r
+  @endcode\r
+  @note MSR_HASWELL_E_THREAD_ID_INFO is defined as MSR_THREAD_ID_INFO in SDM.\r
+**/\r
+#define MSR_HASWELL_E_THREAD_ID_INFO             0x00000053\r
+\r
+/**\r
+  MSR information returned for MSR index #MSR_HASWELL_E_THREAD_ID_INFO\r
+**/\r
+typedef union {\r
+  ///\r
+  /// Individual bit fields\r
+  ///\r
+  struct {\r
+    ///\r
+    /// [Bits 7:0] Logical_Processor_ID (RO) An implementation-specific\r
+    /// numerical. value physically assigned to each logical processor. This\r
+    /// ID is not related to Initial APIC ID or x2APIC ID, it is unique within\r
+    /// a physical package.\r
+    ///\r
+    UINT32  Logical_Processor_ID:8;\r
+    UINT32  Reserved1:24;\r
+    UINT32  Reserved2:32;\r
+  } Bits;\r
+  ///\r
+  /// All bit fields as a 32-bit value\r
+  ///\r
+  UINT32  Uint32;\r
+  ///\r
+  /// All bit fields as a 64-bit value\r
+  ///\r
+  UINT64  Uint64;\r
+} MSR_HASWELL_E_THREAD_ID_INFO_REGISTER;\r
+\r
+\r
 /**\r
   Core. C-State Configuration Control (R/W) Note: C-state values are processor\r
   specific C-state code names, unrelated to MWAIT extension C-state parameters\r
@@ -501,236 +618,6 @@ typedef union {
 } MSR_HASWELL_E_TURBO_RATIO_LIMIT2_REGISTER;\r
 \r
 \r
-/**\r
-  Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section\r
-  15.3.2.4, "IA32_MCi_MISC MSRs.".\r
-\r
-  * Bank MC5 reports MC error from the Intel QPI 0 module.\r
-  * Bank MC6 reports MC error from the integrated I/O module.\r
-  * Bank MC7 reports MC error from the home agent HA 0.\r
-  * Bank MC8 reports MC error from the home agent HA 1.\r
-  * Banks MC9 through MC16 report MC error from each channel of the integrated\r
-    memory controllers.\r
-  * Bank MC17 reports MC error from the following pair of CBo/L3 Slices\r
-    (if the pair is present): CBo0, CBo3, CBo6, CBo9, CBo12, CBo15.\r
-  * Bank MC18 reports MC error from the following pair of CBo/L3 Slices\r
-    (if the pair is present): CBo1, CBo4, CBo7, CBo10, CBo13, CBo16.\r
-  * Bank MC19 reports MC error from the following pair of CBo/L3 Slices\r
-    (if the pair is present): CBo2, CBo5, CBo8, CBo11, CBo14, CBo17.\r
-  * Bank MC20 reports MC error from the Intel QPI 1 module.\r
-  * Bank MC21 reports MC error from the Intel QPI 2 module.\r
-\r
-  @param  ECX  MSR_HASWELL_E_MCi_CTL\r
-  @param  EAX  Lower 32-bits of MSR value.\r
-  @param  EDX  Upper 32-bits of MSR value.\r
-\r
-  <b>Example usage</b>\r
-  @code\r
-  UINT64  Msr;\r
-\r
-  Msr = AsmReadMsr64 (MSR_HASWELL_E_MC5_CTL);\r
-  AsmWriteMsr64 (MSR_HASWELL_E_MC5_CTL, Msr);\r
-  @endcode\r
-  @note MSR_HASWELL_E_MC5_CTL  is defined as MSR_MC5_CTL  in SDM.\r
-        MSR_HASWELL_E_MC6_CTL  is defined as MSR_MC6_CTL  in SDM.\r
-        MSR_HASWELL_E_MC7_CTL  is defined as MSR_MC7_CTL  in SDM.\r
-        MSR_HASWELL_E_MC8_CTL  is defined as MSR_MC8_CTL  in SDM.\r
-        MSR_HASWELL_E_MC9_CTL  is defined as MSR_MC9_CTL  in SDM.\r
-        MSR_HASWELL_E_MC10_CTL is defined as MSR_MC10_CTL in SDM.\r
-        MSR_HASWELL_E_MC11_CTL is defined as MSR_MC11_CTL in SDM.\r
-        MSR_HASWELL_E_MC12_CTL is defined as MSR_MC12_CTL in SDM.\r
-        MSR_HASWELL_E_MC13_CTL is defined as MSR_MC13_CTL in SDM.\r
-        MSR_HASWELL_E_MC14_CTL is defined as MSR_MC14_CTL in SDM.\r
-        MSR_HASWELL_E_MC15_CTL is defined as MSR_MC15_CTL in SDM.\r
-        MSR_HASWELL_E_MC16_CTL is defined as MSR_MC16_CTL in SDM.\r
-        MSR_HASWELL_E_MC17_CTL is defined as MSR_MC17_CTL in SDM.\r
-        MSR_HASWELL_E_MC18_CTL is defined as MSR_MC18_CTL in SDM.\r
-        MSR_HASWELL_E_MC19_CTL is defined as MSR_MC19_CTL in SDM.\r
-        MSR_HASWELL_E_MC20_CTL is defined as MSR_MC20_CTL in SDM.\r
-        MSR_HASWELL_E_MC21_CTL is defined as MSR_MC21_CTL in SDM.\r
-  @{\r
-**/\r
-#define MSR_HASWELL_E_MC5_CTL                    0x00000414\r
-#define MSR_HASWELL_E_MC6_CTL                    0x00000418\r
-#define MSR_HASWELL_E_MC7_CTL                    0x0000041C\r
-#define MSR_HASWELL_E_MC8_CTL                    0x00000420\r
-#define MSR_HASWELL_E_MC9_CTL                    0x00000424\r
-#define MSR_HASWELL_E_MC10_CTL                   0x00000428\r
-#define MSR_HASWELL_E_MC11_CTL                   0x0000042C\r
-#define MSR_HASWELL_E_MC12_CTL                   0x00000430\r
-#define MSR_HASWELL_E_MC13_CTL                   0x00000434\r
-#define MSR_HASWELL_E_MC14_CTL                   0x00000438\r
-#define MSR_HASWELL_E_MC15_CTL                   0x0000043C\r
-#define MSR_HASWELL_E_MC16_CTL                   0x00000440\r
-#define MSR_HASWELL_E_MC17_CTL                   0x00000444\r
-#define MSR_HASWELL_E_MC18_CTL                   0x00000448\r
-#define MSR_HASWELL_E_MC19_CTL                   0x0000044C\r
-#define MSR_HASWELL_E_MC20_CTL                   0x00000450\r
-#define MSR_HASWELL_E_MC21_CTL                   0x00000454\r
-/// @}\r
-\r
-\r
-/**\r
-  Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section\r
-  15.3.2.4, "IA32_MCi_MISC MSRs.".\r
-\r
-  @param  ECX  MSR_HASWELL_E_MCi_STATUS\r
-  @param  EAX  Lower 32-bits of MSR value.\r
-  @param  EDX  Upper 32-bits of MSR value.\r
-\r
-  <b>Example usage</b>\r
-  @code\r
-  UINT64  Msr;\r
-\r
-  Msr = AsmReadMsr64 (MSR_HASWELL_E_MC5_STATUS);\r
-  AsmWriteMsr64 (MSR_HASWELL_E_MC5_STATUS, Msr);\r
-  @endcode\r
-  @note MSR_HASWELL_E_MC5_STATUS  is defined as MSR_MC5_STATUS  in SDM.\r
-        MSR_HASWELL_E_MC6_STATUS  is defined as MSR_MC6_STATUS  in SDM.\r
-        MSR_HASWELL_E_MC7_STATUS  is defined as MSR_MC7_STATUS  in SDM.\r
-        MSR_HASWELL_E_MC8_STATUS  is defined as MSR_MC8_STATUS  in SDM.\r
-        MSR_HASWELL_E_MC9_STATUS  is defined as MSR_MC9_STATUS  in SDM.\r
-        MSR_HASWELL_E_MC10_STATUS is defined as MSR_MC10_STATUS in SDM.\r
-        MSR_HASWELL_E_MC11_STATUS is defined as MSR_MC11_STATUS in SDM.\r
-        MSR_HASWELL_E_MC12_STATUS is defined as MSR_MC12_STATUS in SDM.\r
-        MSR_HASWELL_E_MC13_STATUS is defined as MSR_MC13_STATUS in SDM.\r
-        MSR_HASWELL_E_MC14_STATUS is defined as MSR_MC14_STATUS in SDM.\r
-        MSR_HASWELL_E_MC15_STATUS is defined as MSR_MC15_STATUS in SDM.\r
-        MSR_HASWELL_E_MC16_STATUS is defined as MSR_MC16_STATUS in SDM.\r
-        MSR_HASWELL_E_MC17_STATUS is defined as MSR_MC17_STATUS in SDM.\r
-        MSR_HASWELL_E_MC18_STATUS is defined as MSR_MC18_STATUS in SDM.\r
-        MSR_HASWELL_E_MC19_STATUS is defined as MSR_MC19_STATUS in SDM.\r
-        MSR_HASWELL_E_MC20_STATUS is defined as MSR_MC20_STATUS in SDM.\r
-        MSR_HASWELL_E_MC21_STATUS is defined as MSR_MC21_STATUS in SDM.\r
-  @{\r
-**/\r
-#define MSR_HASWELL_E_MC5_STATUS                 0x00000415\r
-#define MSR_HASWELL_E_MC6_STATUS                 0x00000419\r
-#define MSR_HASWELL_E_MC7_STATUS                 0x0000041D\r
-#define MSR_HASWELL_E_MC8_STATUS                 0x00000421\r
-#define MSR_HASWELL_E_MC9_STATUS                 0x00000425\r
-#define MSR_HASWELL_E_MC10_STATUS                0x00000429\r
-#define MSR_HASWELL_E_MC11_STATUS                0x0000042D\r
-#define MSR_HASWELL_E_MC12_STATUS                0x00000431\r
-#define MSR_HASWELL_E_MC13_STATUS                0x00000435\r
-#define MSR_HASWELL_E_MC14_STATUS                0x00000439\r
-#define MSR_HASWELL_E_MC15_STATUS                0x0000043D\r
-#define MSR_HASWELL_E_MC16_STATUS                0x00000441\r
-#define MSR_HASWELL_E_MC17_STATUS                0x00000445\r
-#define MSR_HASWELL_E_MC18_STATUS                0x00000449\r
-#define MSR_HASWELL_E_MC19_STATUS                0x0000044D\r
-#define MSR_HASWELL_E_MC20_STATUS                0x00000451\r
-#define MSR_HASWELL_E_MC21_STATUS                0x00000455\r
-/// @}\r
-\r
-/**\r
-  Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section\r
-  15.3.2.4, "IA32_MCi_MISC MSRs.".\r
-\r
-  @param  ECX  MSR_HASWELL_E_MCi_ADDR\r
-  @param  EAX  Lower 32-bits of MSR value.\r
-  @param  EDX  Upper 32-bits of MSR value.\r
-\r
-  <b>Example usage</b>\r
-  @code\r
-  UINT64  Msr;\r
-\r
-  Msr = AsmReadMsr64 (MSR_HASWELL_E_MC5_ADDR);\r
-  AsmWriteMsr64 (MSR_HASWELL_E_MC5_ADDR, Msr);\r
-  @endcode\r
-  @note MSR_HASWELL_E_MC5_ADDR  is defined as MSR_MC5_ADDR  in SDM.\r
-        MSR_HASWELL_E_MC6_ADDR  is defined as MSR_MC6_ADDR  in SDM.\r
-        MSR_HASWELL_E_MC7_ADDR  is defined as MSR_MC7_ADDR  in SDM.\r
-        MSR_HASWELL_E_MC8_ADDR  is defined as MSR_MC8_ADDR  in SDM.\r
-        MSR_HASWELL_E_MC9_ADDR  is defined as MSR_MC9_ADDR  in SDM.\r
-        MSR_HASWELL_E_MC10_ADDR is defined as MSR_MC10_ADDR in SDM.\r
-        MSR_HASWELL_E_MC11_ADDR is defined as MSR_MC11_ADDR in SDM.\r
-        MSR_HASWELL_E_MC12_ADDR is defined as MSR_MC12_ADDR in SDM.\r
-        MSR_HASWELL_E_MC13_ADDR is defined as MSR_MC13_ADDR in SDM.\r
-        MSR_HASWELL_E_MC14_ADDR is defined as MSR_MC14_ADDR in SDM.\r
-        MSR_HASWELL_E_MC15_ADDR is defined as MSR_MC15_ADDR in SDM.\r
-        MSR_HASWELL_E_MC16_ADDR is defined as MSR_MC16_ADDR in SDM.\r
-        MSR_HASWELL_E_MC17_ADDR is defined as MSR_MC17_ADDR in SDM.\r
-        MSR_HASWELL_E_MC18_ADDR is defined as MSR_MC18_ADDR in SDM.\r
-        MSR_HASWELL_E_MC19_ADDR is defined as MSR_MC19_ADDR in SDM.\r
-        MSR_HASWELL_E_MC20_ADDR is defined as MSR_MC20_ADDR in SDM.\r
-        MSR_HASWELL_E_MC21_ADDR is defined as MSR_MC21_ADDR in SDM.\r
-  @{\r
-**/\r
-#define MSR_HASWELL_E_MC5_ADDR                   0x00000416\r
-#define MSR_HASWELL_E_MC6_ADDR                   0x0000041A\r
-#define MSR_HASWELL_E_MC7_ADDR                   0x0000041E\r
-#define MSR_HASWELL_E_MC8_ADDR                   0x00000422\r
-#define MSR_HASWELL_E_MC9_ADDR                   0x00000426\r
-#define MSR_HASWELL_E_MC10_ADDR                  0x0000042A\r
-#define MSR_HASWELL_E_MC11_ADDR                  0x0000042E\r
-#define MSR_HASWELL_E_MC12_ADDR                  0x00000432\r
-#define MSR_HASWELL_E_MC13_ADDR                  0x00000436\r
-#define MSR_HASWELL_E_MC14_ADDR                  0x0000043A\r
-#define MSR_HASWELL_E_MC15_ADDR                  0x0000043E\r
-#define MSR_HASWELL_E_MC16_ADDR                  0x00000442\r
-#define MSR_HASWELL_E_MC17_ADDR                  0x00000446\r
-#define MSR_HASWELL_E_MC18_ADDR                  0x0000044A\r
-#define MSR_HASWELL_E_MC19_ADDR                  0x0000044E\r
-#define MSR_HASWELL_E_MC20_ADDR                  0x00000452\r
-#define MSR_HASWELL_E_MC21_ADDR                  0x00000456\r
-/// @}\r
-\r
-\r
-/**\r
-  Package. See Section 15.3.2.1, "IA32_MCi_CTL MSRs." through Section\r
-  15.3.2.4, "IA32_MCi_MISC MSRs.".\r
-\r
-  @param  ECX  MSR_HASWELL_E_MCi_MISC\r
-  @param  EAX  Lower 32-bits of MSR value.\r
-  @param  EDX  Upper 32-bits of MSR value.\r
-\r
-  <b>Example usage</b>\r
-  @code\r
-  UINT64  Msr;\r
-\r
-  Msr = AsmReadMsr64 (MSR_HASWELL_E_MC5_MISC);\r
-  AsmWriteMsr64 (MSR_HASWELL_E_MC5_MISC, Msr);\r
-  @endcode\r
-  @note MSR_HASWELL_E_MC5_MISC  is defined as MSR_MC5_MISC  in SDM.\r
-        MSR_HASWELL_E_MC6_MISC  is defined as MSR_MC6_MISC  in SDM.\r
-        MSR_HASWELL_E_MC7_MISC  is defined as MSR_MC7_MISC  in SDM.\r
-        MSR_HASWELL_E_MC8_MISC  is defined as MSR_MC8_MISC  in SDM.\r
-        MSR_HASWELL_E_MC9_MISC  is defined as MSR_MC9_MISC  in SDM.\r
-        MSR_HASWELL_E_MC10_MISC is defined as MSR_MC10_MISC in SDM.\r
-        MSR_HASWELL_E_MC11_MISC is defined as MSR_MC11_MISC in SDM.\r
-        MSR_HASWELL_E_MC12_MISC is defined as MSR_MC12_MISC in SDM.\r
-        MSR_HASWELL_E_MC13_MISC is defined as MSR_MC13_MISC in SDM.\r
-        MSR_HASWELL_E_MC14_MISC is defined as MSR_MC14_MISC in SDM.\r
-        MSR_HASWELL_E_MC15_MISC is defined as MSR_MC15_MISC in SDM.\r
-        MSR_HASWELL_E_MC16_MISC is defined as MSR_MC16_MISC in SDM.\r
-        MSR_HASWELL_E_MC17_MISC is defined as MSR_MC17_MISC in SDM.\r
-        MSR_HASWELL_E_MC18_MISC is defined as MSR_MC18_MISC in SDM.\r
-        MSR_HASWELL_E_MC19_MISC is defined as MSR_MC19_MISC in SDM.\r
-        MSR_HASWELL_E_MC20_MISC is defined as MSR_MC20_MISC in SDM.\r
-        MSR_HASWELL_E_MC21_MISC is defined as MSR_MC21_MISC in SDM.\r
-  @{\r
-**/\r
-#define MSR_HASWELL_E_MC5_MISC                   0x00000417\r
-#define MSR_HASWELL_E_MC6_MISC                   0x0000041B\r
-#define MSR_HASWELL_E_MC7_MISC                   0x0000041F\r
-#define MSR_HASWELL_E_MC8_MISC                   0x00000423\r
-#define MSR_HASWELL_E_MC9_MISC                   0x00000427\r
-#define MSR_HASWELL_E_MC10_MISC                  0x0000042B\r
-#define MSR_HASWELL_E_MC11_MISC                  0x0000042F\r
-#define MSR_HASWELL_E_MC12_MISC                  0x00000433\r
-#define MSR_HASWELL_E_MC13_MISC                  0x00000437\r
-#define MSR_HASWELL_E_MC14_MISC                  0x0000043B\r
-#define MSR_HASWELL_E_MC15_MISC                  0x0000043F\r
-#define MSR_HASWELL_E_MC16_MISC                  0x00000443\r
-#define MSR_HASWELL_E_MC17_MISC                  0x00000447\r
-#define MSR_HASWELL_E_MC18_MISC                  0x0000044B\r
-#define MSR_HASWELL_E_MC19_MISC                  0x0000044F\r
-#define MSR_HASWELL_E_MC20_MISC                  0x00000453\r
-#define MSR_HASWELL_E_MC21_MISC                  0x00000457\r
-/// @}\r
-\r
-\r
 /**\r
   Package. Unit Multipliers used in RAPL Interfaces (R/O).\r
 \r
@@ -811,22 +698,49 @@ typedef union {
 \r
 \r
 /**\r
-  Package. DRAM Energy Status (R/O)  See Section 14.9.5, "DRAM RAPL Domain.".\r
+  Package. DRAM Energy Status (R/O)  Energy Consumed by DRAM devices.\r
 \r
   @param  ECX  MSR_HASWELL_E_DRAM_ENERGY_STATUS (0x00000619)\r
   @param  EAX  Lower 32-bits of MSR value.\r
+               Described by the type MSR_HASWELL_E_DRAM_ENERGY_STATUS_REGISTER.\r
   @param  EDX  Upper 32-bits of MSR value.\r
+               Described by the type MSR_HASWELL_E_DRAM_ENERGY_STATUS_REGISTER.\r
 \r
   <b>Example usage</b>\r
   @code\r
-  UINT64  Msr;\r
+  MSR_HASWELL_E_DRAM_ENERGY_STATUS_REGISTER  Msr;\r
 \r
-  Msr = AsmReadMsr64 (MSR_HASWELL_E_DRAM_ENERGY_STATUS);\r
+  Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_E_DRAM_ENERGY_STATUS);\r
   @endcode\r
   @note MSR_HASWELL_E_DRAM_ENERGY_STATUS is defined as MSR_DRAM_ENERGY_STATUS in SDM.\r
 **/\r
 #define MSR_HASWELL_E_DRAM_ENERGY_STATUS         0x00000619\r
 \r
+/**\r
+  MSR information returned for MSR index #MSR_HASWELL_E_DRAM_ENERGY_STATUS\r
+**/\r
+typedef union {\r
+  ///\r
+  /// Individual bit fields\r
+  ///\r
+  struct {\r
+    ///\r
+    /// [Bits 31:0] Energy in 15.3 micro-joules. Requires BIOS configuration\r
+    /// to enable DRAM RAPL mode 0 (Direct VR).\r
+    ///\r
+    UINT32  Energy:32;\r
+    UINT32  Reserved:32;\r
+  } Bits;\r
+  ///\r
+  /// All bit fields as a 32-bit value\r
+  ///\r
+  UINT32  Uint32;\r
+  ///\r
+  /// All bit fields as a 64-bit value\r
+  ///\r
+  UINT64  Uint64;\r
+} MSR_HASWELL_E_DRAM_ENERGY_STATUS_REGISTER;\r
+\r
 \r
 /**\r
   Package. DRAM Performance Throttling Status (R/O) See Section 14.9.5, "DRAM\r
@@ -866,6 +780,137 @@ typedef union {
 #define MSR_HASWELL_E_DRAM_POWER_INFO            0x0000061C\r
 \r
 \r
+/**\r
+  Package. Configuration of PCIE PLL Relative to BCLK(R/W).\r
+\r
+  @param  ECX  MSR_HASWELL_E_PCIE_PLL_RATIO (0x0000061E)\r
+  @param  EAX  Lower 32-bits of MSR value.\r
+               Described by the type MSR_HASWELL_E_PCIE_PLL_RATIO_REGISTER.\r
+  @param  EDX  Upper 32-bits of MSR value.\r
+               Described by the type MSR_HASWELL_E_PCIE_PLL_RATIO_REGISTER.\r
+\r
+  <b>Example usage</b>\r
+  @code\r
+  MSR_HASWELL_E_PCIE_PLL_RATIO_REGISTER  Msr;\r
+\r
+  Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_E_PCIE_PLL_RATIO);\r
+  AsmWriteMsr64 (MSR_HASWELL_E_PCIE_PLL_RATIO, Msr.Uint64);\r
+  @endcode\r
+  @note MSR_HASWELL_E_PCIE_PLL_RATIO is defined as MSR_PCIE_PLL_RATIO in SDM.\r
+**/\r
+#define MSR_HASWELL_E_PCIE_PLL_RATIO             0x0000061E\r
+\r
+/**\r
+  MSR information returned for MSR index #MSR_HASWELL_E_PCIE_PLL_RATIO\r
+**/\r
+typedef union {\r
+  ///\r
+  /// Individual bit fields\r
+  ///\r
+  struct {\r
+    ///\r
+    /// [Bits 1:0] Package. PCIE Ratio (R/W) 00b: Use 5:5 mapping for100MHz\r
+    /// operation (default) 01b: Use 5:4 mapping for125MHz operation 10b: Use\r
+    /// 5:3 mapping for166MHz operation 11b: Use 5:2 mapping for250MHz\r
+    /// operation.\r
+    ///\r
+    UINT32  PCIERatio:2;\r
+    ///\r
+    /// [Bit 2] Package. LPLL Select (R/W) if 1, use configured setting of\r
+    /// PCIE Ratio.\r
+    ///\r
+    UINT32  LPLLSelect:1;\r
+    ///\r
+    /// [Bit 3] Package. LONG RESET (R/W) if 1, wait additional time-out\r
+    /// before re-locking Gen2/Gen3 PLLs.\r
+    ///\r
+    UINT32  LONGRESET:1;\r
+    UINT32  Reserved1:28;\r
+    UINT32  Reserved2:32;\r
+  } Bits;\r
+  ///\r
+  /// All bit fields as a 32-bit value\r
+  ///\r
+  UINT32  Uint32;\r
+  ///\r
+  /// All bit fields as a 64-bit value\r
+  ///\r
+  UINT64  Uint64;\r
+} MSR_HASWELL_E_PCIE_PLL_RATIO_REGISTER;\r
+\r
+\r
+/**\r
+  Package. Uncore Ratio Limit (R/W) Out of reset, the min_ratio and max_ratio\r
+  fields represent the widest possible range of uncore frequencies. Writing to\r
+  these fields allows software to control the minimum and the maximum\r
+  frequency that hardware will select.\r
+\r
+  @param  ECX  MSR_HASWELL_E_MSRUNCORE_RATIO_LIMIT (0x00000620)\r
+  @param  EAX  Lower 32-bits of MSR value.\r
+               Described by the type MSR_HASWELL_E_MSRUNCORE_RATIO_LIMIT_REGISTER.\r
+  @param  EDX  Upper 32-bits of MSR value.\r
+               Described by the type MSR_HASWELL_E_MSRUNCORE_RATIO_LIMIT_REGISTER.\r
+\r
+  <b>Example usage</b>\r
+  @code\r
+  MSR_HASWELL_E_MSRUNCORE_RATIO_LIMIT_REGISTER  Msr;\r
+\r
+  Msr.Uint64 = AsmReadMsr64 (MSR_HASWELL_E_MSRUNCORE_RATIO_LIMIT);\r
+  AsmWriteMsr64 (MSR_HASWELL_E_MSRUNCORE_RATIO_LIMIT, Msr.Uint64);\r
+  @endcode\r
+**/\r
+#define MSR_HASWELL_E_MSRUNCORE_RATIO_LIMIT      0x00000620\r
+\r
+/**\r
+  MSR information returned for MSR index #MSR_HASWELL_E_MSRUNCORE_RATIO_LIMIT\r
+**/\r
+typedef union {\r
+  ///\r
+  /// Individual bit fields\r
+  ///\r
+  struct {\r
+    ///\r
+    /// [Bits 6:0] MAX_RATIO This field is used to limit the max ratio of the\r
+    /// LLC/Ring.\r
+    ///\r
+    UINT32  MAX_RATIO:7;\r
+    UINT32  Reserved1:1;\r
+    ///\r
+    /// [Bits 14:8] MIN_RATIO Writing to this field controls the minimum\r
+    /// possible ratio of the LLC/Ring.\r
+    ///\r
+    UINT32  MIN_RATIO:7;\r
+    UINT32  Reserved2:17;\r
+    UINT32  Reserved3:32;\r
+  } Bits;\r
+  ///\r
+  /// All bit fields as a 32-bit value\r
+  ///\r
+  UINT32  Uint32;\r
+  ///\r
+  /// All bit fields as a 64-bit value\r
+  ///\r
+  UINT64  Uint64;\r
+} MSR_HASWELL_E_MSRUNCORE_RATIO_LIMIT_REGISTER;\r
+\r
+/**\r
+  Package. Reserved (R/O) Reads return 0.\r
+\r
+  @param  ECX  MSR_HASWELL_E_PP0_ENERGY_STATUS (0x00000639)\r
+  @param  EAX  Lower 32-bits of MSR value.\r
+  @param  EDX  Upper 32-bits of MSR value.\r
+\r
+  <b>Example usage</b>\r
+  @code\r
+  UINT64  Msr;\r
+\r
+  Msr = AsmReadMsr64 (MSR_HASWELL_E_PP0_ENERGY_STATUS);\r
+  @endcode\r
+  @note MSR_HASWELL_E_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.\r
+**/\r
+#define MSR_HASWELL_E_PP0_ENERGY_STATUS          0x00000639\r
+\r
+\r
 /**\r
   Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency\r
   refers to processor core frequency).\r
@@ -1048,7 +1093,7 @@ typedef union {
 \r
 /**\r
   THREAD. Monitoring Event Select Register (R/W). if CPUID.(EAX=07H,\r
-  ECX=0):EBX.PQM[bit 12] = 1.\r
+  ECX=0):EBX.RDT-M[bit 12] = 1.\r
 \r
   @param  ECX  MSR_HASWELL_E_IA32_QM_EVTSEL (0x00000C8D)\r
   @param  EAX  Lower 32-bits of MSR value.\r