]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkPkg/Include/Guid/DataHubRecords.h
Remove IntelFrameworkModulePkg
[mirror_edk2.git] / IntelFrameworkPkg / Include / Guid / DataHubRecords.h
index 10d33ec9204863272fb593babedcc9f6153e1fac..569911388f5aa3f03c95deaddab877e2b2652e54 100644 (file)
@@ -1,23 +1,22 @@
 /** @file\r
-  DataHubRecord.h includes all data hub sub class GUID definitions.\r
+  DataHubRecord.h includes all data hub subclass GUID definitions.\r
 \r
-  This file includes all data hub sub class defitions from \r
-  Cache subclass spec 0.9, DataHub SubClass spec 0.9, Memory SubClass Spec 0.9,\r
-  Processor Subclass spec 0.9, and Misc SubClass spec 0.9.\r
-  \r
-  Copyright (c) 2007 - 2009, Intel Corporation\r
-  All rights reserved. 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
+  This file includes all data hub sub class defitions from\r
+  Cache subclass specification 0.9, DataHub SubClass specification 0.9, Memory SubClass Spec 0.9,\r
+  Processor Subclass specification 0.9, and Misc SubClass specification 0.9.\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) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 #ifndef _DATAHUB_RECORDS_GUID_H_\r
 #define _DATAHUB_RECORDS_GUID_H_\r
 \r
+//\r
+// The include is required to retrieve type EFI_EXP_BASE10_DATA\r
+//\r
+#include <Guid/StatusCodeDataTypeId.h>\r
+\r
 #define EFI_PROCESSOR_SUBCLASS_GUID \\r
   { 0x26fdeb7e, 0xb8af, 0x4ccf, {0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7 } }\r
 \r
@@ -30,7 +29,7 @@ extern  EFI_GUID gEfiProcessorSubClassGuid;
 extern  EFI_GUID gEfiCacheSubClassGuid;\r
 \r
 ///\r
-/// The memory subclass belongs to the data class and is identified as the memory \r
+/// The memory subclass belongs to the data class and is identified as the memory\r
 /// subclass by the GUID.\r
 ///\r
 #define EFI_MEMORY_SUBCLASS_GUID \\r
@@ -45,8 +44,8 @@ extern  EFI_GUID  gEfiMiscSubClassGuid;
 \r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In ProcSubclass spec 0.9, the value is 0x0100.\r
+/// Inconsistent with specification here:\r
+/// In ProcSubclass specification 0.9, the value is 0x0100.\r
 /// Keep it unchanged from the perspective of binary consistency.\r
 ///\r
 #define EFI_PROCESSOR_SUBCLASS_VERSION    0x00010000\r
@@ -140,8 +139,8 @@ typedef struct _FLOOPY_CONN_DEVICE_PATH {
 } FLOOPY_CONN_DEVICE_PATH;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
 /// It's implementation-specific to simplify the code logic.\r
 ///\r
 typedef union _EFI_MISC_PORT_DEVICE_PATH {\r
@@ -161,74 +160,74 @@ typedef union _EFI_MISC_PORT_DEVICE_PATH {
 ///\r
 /// String Token Definition\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// The macro isn't defined by any spec.\r
+/// Inconsistent with specification here:\r
+/// The macro isn't defined by any specification.\r
 /// Keep it unchanged for backward compatibility.\r
 ///\r
 #define EFI_STRING_TOKEN          UINT16\r
 \r
 ///\r
-/// Each data record that is a member of some subclass starts with a standard \r
+/// Each data record that is a member of some subclass starts with a standard\r
 /// header of type EFI_SUBCLASS_TYPE1_HEADER.\r
-/// This header is only a guideline and applicable only to a data \r
-/// subclass that is producing SMBIOS data records. A subclass can start with a \r
-/// different header if needed. \r
+/// This header is only a guideline and applicable only to a data\r
+/// subclass that is producing SMBIOS data records. A subclass can start with a\r
+/// different header if needed.\r
 ///\r
 typedef struct {\r
   ///\r
-  /// The version of the specification to which a specific subclass data record adheres. \r
+  /// The version of the specification to which a specific subclass data record adheres.\r
   ///\r
   UINT32                            Version;\r
   ///\r
-  /// The size in bytes of this data class header. \r
+  /// The size in bytes of this data class header.\r
   ///\r
   UINT32                            HeaderSize;\r
   ///\r
-  /// The instance number of the subclass with the same ProducerName. This number is \r
-  /// applicable in cases where multiple subclass instances that were produced by the same \r
-  /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not \r
-  /// Applicable. All data consumer drivers should be able to handle all the possible values \r
-  /// of Instance, including Not Applicable and Reserved. \r
+  /// The instance number of the subclass with the same ProducerName. This number is\r
+  /// applicable in cases where multiple subclass instances that were produced by the same\r
+  /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not\r
+  /// Applicable. All data consumer drivers should be able to handle all the possible values\r
+  /// of Instance, including Not Applicable and Reserved.\r
   ///\r
   UINT16                            Instance;\r
   ///\r
-  /// The instance number of the RecordType for the same Instance. This number is \r
-  /// applicable in cases where multiple instances of the RecordType exist for a specific \r
-  /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable. \r
-  /// All data consumer drivers should be able to handle all the possible values of \r
-  /// SubInstance, including Not Applicable and Reserved. \r
+  /// The instance number of the RecordType for the same Instance. This number is\r
+  /// applicable in cases where multiple instances of the RecordType exist for a specific\r
+  /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.\r
+  /// All data consumer drivers should be able to handle all the possible values of\r
+  /// SubInstance, including Not Applicable and Reserved.\r
   ///\r
   UINT16                            SubInstance;\r
   ///\r
-  /// The record number for the data record being specified. The numbering scheme and \r
-  /// definition is defined in the specific subclass specification. \r
+  /// The record number for the data record being specified. The numbering scheme and\r
+  /// definition is defined in the specific subclass specification.\r
   ///\r
   UINT32                            RecordType;\r
 } EFI_SUBCLASS_TYPE1_HEADER;\r
 \r
 ///\r
-/// This structure is used to link data records in the same subclasses. A data record is \r
-/// defined as a link to another data record in the same subclass using this structure. \r
+/// This structure is used to link data records in the same subclasses. A data record is\r
+/// defined as a link to another data record in the same subclass using this structure.\r
 ///\r
 typedef struct {\r
   ///\r
-  /// An EFI_GUID that identifies the component that produced this data record. Type \r
-  /// EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification. \r
+  /// An EFI_GUID that identifies the component that produced this data record. Type\r
+  /// EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification.\r
   ///\r
   EFI_GUID                          ProducerName;\r
   ///\r
-  /// The instance number of the subclass with the same ProducerName. This number is \r
-  /// applicable in cases where multiple subclass instances that were produced by the same \r
-  /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not \r
-  /// Applicable. All data consumer drivers should be able to handle all the possible values \r
-  /// of Instance, including Not Applicable and Reserved. \r
+  /// The instance number of the subclass with the same ProducerName. This number is\r
+  /// applicable in cases where multiple subclass instances that were produced by the same\r
+  /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not\r
+  /// Applicable. All data consumer drivers should be able to handle all the possible values\r
+  /// of Instance, including Not Applicable and Reserved.\r
   ///\r
   UINT16                            Instance;\r
-  /// The instance number of the RecordType for the same Instance. This number is \r
-  /// applicable in cases where multiple instances of the RecordType exist for a specific \r
-  /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable. \r
-  /// All data consumer drivers should be able to handle all the possible values of \r
-  /// SubInstance, including Not Applicable and Reserved.   \r
+  /// The instance number of the RecordType for the same Instance. This number is\r
+  /// applicable in cases where multiple instances of the RecordType exist for a specific\r
+  /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable.\r
+  /// All data consumer drivers should be able to handle all the possible values of\r
+  /// SubInstance, including Not Applicable and Reserved.\r
   UINT16                            SubInstance;\r
 } EFI_INTER_LINK_DATA;\r
 \r
@@ -236,60 +235,45 @@ typedef struct {
 // EXP data\r
 //\r
 ///\r
-/// This macro provides a calculation for base-10 representations. Value and Exponent are each \r
+/// This macro provides a calculation for base-10 representations. Value and Exponent are each\r
 /// INT16. It is signed to cover negative values and is 16 bits wide (15 bits for data and 1 bit\r
-/// for the sign).  \r
+/// for the sign).\r
 ///\r
 typedef struct {\r
   ///\r
-  /// The INT16 number by which to multiply the base-10 representation. \r
+  /// The INT16 number by which to multiply the base-10 representation.\r
   ///\r
   UINT16                            Value;\r
   ///\r
-  /// The INT16 number by which to raise the base-10 calculation. \r
+  /// The INT16 number by which to raise the base-10 calculation.\r
   ///\r
   UINT16                            Exponent;\r
 } EFI_EXP_BASE2_DATA;\r
 \r
-///\r
-/// This macro provides a calculation for base-2 representations. Value and Exponent are each \r
-/// INT16. It is 16 bits wide and is unsigned to mean nonnegative values.  \r
-///\r
-typedef struct {\r
-  ///\r
-  /// The INT16 number by which to multiply the base-2 representation.\r
-  ///\r
-  INT16                            Value;\r
-  ///\r
-  /// The INT16 number by which to raise the base-2 calculation. \r
-  ///\r
-  INT16                            Exponent;\r
-} EFI_EXP_BASE10_DATA;\r
-\r
 typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;\r
 typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;\r
 typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_CORE_FREQUENCY_DATA;\r
 \r
 ///\r
-/// This data record refers to the list of frequencies that the processor core supports. The list of \r
-/// supported frequencies is determined by the firmware based on hardware capabilities--for example, \r
-/// it could be a common subset of all processors and the chipset. The unit of measurement of this data \r
-/// record is in Hertz. For asynchronous processors, the content of this data record is zero.  \r
-/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means \r
-/// that the processor/driver supports automatic frequency selection. \r
+/// This data record refers to the list of frequencies that the processor core supports. The list of\r
+/// supported frequencies is determined by the firmware based on hardware capabilities--for example,\r
+/// it could be a common subset of all processors and the chipset. The unit of measurement of this data\r
+/// record is in Hertz. For asynchronous processors, the content of this data record is zero.\r
+/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means\r
+/// that the processor/driver supports automatic frequency selection.\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// According to MiscSubclass 0.9 spec, it should be a pointer since it refers to a list of frequencies.\r
+/// Inconsistent with specification here:\r
+/// According to MiscSubclass 0.9 specification, it should be a pointer since it refers to a list of frequencies.\r
 ///\r
 typedef EFI_EXP_BASE10_DATA        *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;\r
 \r
 ///\r
-/// This data record refers to the list of supported frequencies of the processor external bus. The list of \r
-/// supported frequencies is determined by the firmware based on hardware capabilities--for example, \r
-/// it could be a common subset of all processors and the chipset. The unit of measurement of this data \r
-/// record is in Hertz. For asynchronous processors, the content of this data record is NULL.  \r
-/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means \r
-/// that the processor/driver supports automatic frequency selection. \r
+/// This data record refers to the list of supported frequencies of the processor external bus. The list of\r
+/// supported frequencies is determined by the firmware based on hardware capabilities--for example,\r
+/// it could be a common subset of all processors and the chipset. The unit of measurement of this data\r
+/// record is in Hertz. For asynchronous processors, the content of this data record is NULL.\r
+/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means\r
+/// that the processor/driver supports automatic frequency selection.\r
 ///\r
 typedef EFI_EXP_BASE10_DATA        *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;\r
 typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_FSB_FREQUENCY_DATA;\r
@@ -297,6 +281,7 @@ typedef STRING_REF                 EFI_PROCESSOR_VERSION_DATA;
 typedef STRING_REF                 EFI_PROCESSOR_MANUFACTURER_DATA;\r
 typedef STRING_REF                 EFI_PROCESSOR_SERIAL_NUMBER_DATA;\r
 typedef STRING_REF                 EFI_PROCESSOR_ASSET_TAG_DATA;\r
+typedef STRING_REF                 EFI_PROCESSOR_PART_NUMBER_DATA;\r
 \r
 typedef struct {\r
   UINT32                            ProcessorSteppingId:4;\r
@@ -311,8 +296,8 @@ typedef struct {
 \r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// The name of third field in ProcSubClass spec0.9 is LogicalProcessorCount.\r
+/// Inconsistent with specification here:\r
+/// The name of third field in ProcSubClass specification 0.9 is LogicalProcessorCount.\r
 /// Keep it unchanged for backward compatibility.\r
 ///\r
 typedef struct {\r
@@ -357,10 +342,10 @@ typedef struct {
 } EFI_PROCESSOR_FEATURE_FLAGS;\r
 \r
 ///\r
-/// This data record refers to the unique ID that identifies a set of processors. This data record is 16 \r
-/// bytes in length. The data in this structure is processor specific and reserved values can be defined \r
-/// for future use. The consumer of this data should not make any assumption and should use this data \r
-/// with respect to the processor family defined in the Family record number.  \r
+/// This data record refers to the unique ID that identifies a set of processors. This data record is 16\r
+/// bytes in length. The data in this structure is processor specific and reserved values can be defined\r
+/// for future use. The consumer of this data should not make any assumption and should use this data\r
+/// with respect to the processor family defined in the Family record number.\r
 ///\r
 typedef struct {\r
   ///\r
@@ -368,22 +353,22 @@ typedef struct {
   ///\r
   EFI_PROCESSOR_SIGNATURE           Signature;\r
   ///\r
-  /// Provides additional processor information. \r
+  /// Provides additional processor information.\r
   ///\r
   EFI_PROCESSOR_MISC_INFO           MiscInfo;\r
   ///\r
-  /// Reserved for future use. \r
+  /// Reserved for future use.\r
   ///\r
   UINT32                            Reserved;\r
   ///\r
-  /// Provides additional processor information. \r
+  /// Provides additional processor information.\r
   ///\r
   EFI_PROCESSOR_FEATURE_FLAGS       FeatureFlags;\r
 } EFI_PROCESSOR_ID_DATA;\r
 \r
 ///\r
-/// This data record refers to the general classification of the processor. This data record is 4 bytes in \r
-/// length. \r
+/// This data record refers to the general classification of the processor. This data record is 4 bytes in\r
+/// length.\r
 ///\r
 typedef enum {\r
   EfiProcessorOther    = 1,\r
@@ -395,27 +380,27 @@ typedef enum {
 } EFI_PROCESSOR_TYPE_DATA;\r
 \r
 ///\r
-/// This data record refers to the family of the processor as defined by the DMTF.  \r
-/// This data record is 4 bytes in length. \r
+/// This data record refers to the family of the processor as defined by the DMTF.\r
+/// This data record is 4 bytes in length.\r
 ///\r
 typedef enum {\r
-  EfiProcessorFamilyOther                  = 0x01, \r
+  EfiProcessorFamilyOther                  = 0x01,\r
   EfiProcessorFamilyUnknown                = 0x02,\r
-  EfiProcessorFamily8086                   = 0x03, \r
+  EfiProcessorFamily8086                   = 0x03,\r
   EfiProcessorFamily80286                  = 0x04,\r
-  EfiProcessorFamilyIntel386               = 0x05, \r
+  EfiProcessorFamilyIntel386               = 0x05,\r
   EfiProcessorFamilyIntel486               = 0x06,\r
   EfiProcessorFamily8087                   = 0x07,\r
   EfiProcessorFamily80287                  = 0x08,\r
-  EfiProcessorFamily80387                  = 0x09, \r
+  EfiProcessorFamily80387                  = 0x09,\r
   EfiProcessorFamily80487                  = 0x0A,\r
-  EfiProcessorFamilyPentium                = 0x0B, \r
+  EfiProcessorFamilyPentium                = 0x0B,\r
   EfiProcessorFamilyPentiumPro             = 0x0C,\r
   EfiProcessorFamilyPentiumII              = 0x0D,\r
   EfiProcessorFamilyPentiumMMX             = 0x0E,\r
   EfiProcessorFamilyCeleron                = 0x0F,\r
   EfiProcessorFamilyPentiumIIXeon          = 0x10,\r
-  EfiProcessorFamilyPentiumIII             = 0x11, \r
+  EfiProcessorFamilyPentiumIII             = 0x11,\r
   EfiProcessorFamilyM1                     = 0x12,\r
   EfiProcessorFamilyM2                     = 0x13,\r
   EfiProcessorFamilyM1Reserved2            = 0x14,\r
@@ -423,7 +408,7 @@ typedef enum {
   EfiProcessorFamilyM1Reserved4            = 0x16,\r
   EfiProcessorFamilyM1Reserved5            = 0x17,\r
   EfiProcessorFamilyAmdDuron               = 0x18,\r
-  EfiProcessorFamilyK5                     = 0x19, \r
+  EfiProcessorFamilyK5                     = 0x19,\r
   EfiProcessorFamilyK6                     = 0x1A,\r
   EfiProcessorFamilyK6_2                   = 0x1B,\r
   EfiProcessorFamilyK6_3                   = 0x1C,\r
@@ -461,8 +446,8 @@ typedef enum {
   EfiProcessorFamilyUltraSparcIIi          = 0x56,\r
   EfiProcessorFamilyUltraSparcIII          = 0x57,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field in ProcSubClass spec 0.9 is defined as EfiProcessorFamilyUltraSparcIIi.\r
+  /// Inconsistent with specification here:\r
+  /// This field in ProcSubClass specification 0.9 is defined as EfiProcessorFamilyUltraSparcIIi.\r
   /// Change it to EfiProcessorFamilyUltraSparcIIIi to avoid build break.\r
   ///\r
   EfiProcessorFamilyUltraSparcIIIi         = 0x58,\r
@@ -503,108 +488,121 @@ typedef enum {
   EfiProcessorFamilyAMDAthlonMP            = 0xB7,\r
   EfiProcessorFamilyIntelItanium2          = 0xB8,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyIntelPentiumM          = 0xB9,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyIntelCeleronD          = 0xBA,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyIntelPentiumD          = 0xBB,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyIntelPentiumEx         = 0xBC,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
-  EfiProcessorFamilyIntelCoreSolo          = 0xBD,  \r
+  EfiProcessorFamilyIntelCoreSolo          = 0xBD,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
-  EfiProcessorFamilyReserved               = 0xBE,  \r
+  EfiProcessorFamilyReserved               = 0xBE,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyIntelCore2             = 0xBF,\r
   EfiProcessorFamilyIBM390                 = 0xC8,\r
   EfiProcessorFamilyG4                     = 0xC9,\r
   EfiProcessorFamilyG5                     = 0xCA,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification  0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyG6                     = 0xCB,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyzArchitectur           = 0xCC,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyViaC7M                 = 0xD2,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyViaC7D                 = 0xD3,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyViaC7                  = 0xD4,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyViaEden                = 0xD5,\r
   EfiProcessorFamilyi860                   = 0xFA,\r
   EfiProcessorFamilyi960                   = 0xFB,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyIndicatorFamily2       = 0xFE,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyReserved1              = 0xFF\r
 } EFI_PROCESSOR_FAMILY_DATA;\r
 \r
-///\r
-/// This data record refers to the core voltage of the processor being defined. The unit of measurement \r
-/// of this data record is in volts.  \r
+typedef enum {\r
+  EfiProcessorFamilySh3           = 0x104,\r
+  EfiProcessorFamilySh4           = 0x105,\r
+  EfiProcessorFamilyArm           = 0x118,\r
+  EfiProcessorFamilyStrongArm     = 0x119,\r
+  EfiProcessorFamily6x86          = 0x12C,\r
+  EfiProcessorFamilyMediaGx       = 0x12D,\r
+  EfiProcessorFamilyMii           = 0x12E,\r
+  EfiProcessorFamilyWinChip       = 0x140,\r
+  EfiProcessorFamilyDsp           = 0x15E,\r
+  EfiProcessorFamilyVideo         = 0x1F4\r
+} EFI_PROCESSOR_FAMILY2_DATA;\r
+\r
+///\r
+/// This data record refers to the core voltage of the processor being defined. The unit of measurement\r
+/// of this data record is in volts.\r
 ///\r
 typedef EFI_EXP_BASE10_DATA         EFI_PROCESSOR_VOLTAGE_DATA;\r
 \r
 ///\r
-/// This data record refers to the base address of the APIC of the processor being defined. This data \r
-/// record is a physical address location. \r
+/// This data record refers to the base address of the APIC of the processor being defined. This data\r
+/// record is a physical address location.\r
 ///\r
 typedef EFI_PHYSICAL_ADDRESS        EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;\r
 \r
 ///\r
-/// This data record refers to the ID of the APIC of the processor being defined. This data record is a \r
-/// 4-byte entry.  \r
+/// This data record refers to the ID of the APIC of the processor being defined. This data record is a\r
+/// 4-byte entry.\r
 ///\r
 typedef UINT32                      EFI_PROCESSOR_APIC_ID_DATA;\r
 \r
 ///\r
-/// This data record refers to the version number of the APIC of the processor being defined. This data \r
-/// record is a 4-byte entry. \r
+/// This data record refers to the version number of the APIC of the processor being defined. This data\r
+/// record is a 4-byte entry.\r
 ///\r
 typedef UINT32                      EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;\r
 \r
@@ -615,16 +613,16 @@ typedef enum {
 } EFI_PROCESSOR_MICROCODE_TYPE;\r
 \r
 ///\r
-/// This data record refers to the revision of the processor microcode that is loaded in the processor. \r
-/// This data record is a 4-byte entry. \r
+/// This data record refers to the revision of the processor microcode that is loaded in the processor.\r
+/// This data record is a 4-byte entry.\r
 ///\r
 typedef struct {\r
   ///\r
-  /// Identifies what type of microcode the data is. \r
-  /// \r
+  /// Identifies what type of microcode the data is.\r
+  ///\r
   EFI_PROCESSOR_MICROCODE_TYPE      ProcessorMicrocodeType;\r
   ///\r
-  /// Indicates the revision number of this microcode. \r
+  /// Indicates the revision number of this microcode.\r
   ///\r
   UINT32                            ProcessorMicrocodeRevisionNumber;\r
 } EFI_PROCESSOR_MICROCODE_REVISION_DATA;\r
@@ -633,13 +631,13 @@ typedef struct {
 /// This data record refers to the status of the processor.\r
 ///\r
 typedef struct {\r
-  UINT32       CpuStatus                 :3; ///< Indicates the status of the processor. \r
-  UINT32       Reserved1                 :3; ///< Reserved for future use. Should be set to zero.  \r
-  UINT32       SocketPopulated           :1; ///< Indicates if the processor is socketed or not. \r
-  UINT32       Reserved2                 :1; ///< Reserved for future use. Should be set to zero. \r
-  UINT32       ApicEnable                :1; ///< Indicates if the APIC is enabled or not. \r
-  UINT32       BootApplicationProcessor  :1; ///< Indicates if this processor is the boot processor. \r
-  UINT32       Reserved3                 :22;///< Reserved for future use. Should be set to zero. \r
+  UINT32       CpuStatus                 :3; ///< Indicates the status of the processor.\r
+  UINT32       Reserved1                 :3; ///< Reserved for future use. Should be set to zero.\r
+  UINT32       SocketPopulated           :1; ///< Indicates if the processor is socketed or not.\r
+  UINT32       Reserved2                 :1; ///< Reserved for future use. Should be set to zero.\r
+  UINT32       ApicEnable                :1; ///< Indicates if the APIC is enabled or not.\r
+  UINT32       BootApplicationProcessor  :1; ///< Indicates if this processor is the boot processor.\r
+  UINT32       Reserved3                 :22;///< Reserved for future use. Should be set to zero.\r
 } EFI_PROCESSOR_STATUS_DATA;\r
 \r
 typedef enum {\r
@@ -670,23 +668,23 @@ typedef enum {
   EfiProcessorSocket754              = 0x10,\r
   EfiProcessorSocket940              = 0x11,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorSocket939              = 0x12,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorSocketmPGA604          = 0x13,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorSocketLGA771           = 0x14,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorSocketLGA775           = 0x15\r
 \r
@@ -695,36 +693,47 @@ typedef enum {
 typedef STRING_REF                  EFI_PROCESSOR_SOCKET_NAME_DATA;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In ProcSubclass spec 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA.\r
+/// Inconsistent with specification here:\r
+/// In ProcSubclass specification 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA.\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef EFI_INTER_LINK_DATA         EFI_CACHE_ASSOCIATION_DATA;\r
 \r
 ///\r
-/// This data record refers to the health status of the processor. \r
+/// This data record refers to the health status of the processor.\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In ProcSubclass spec 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA.\r
+/// Inconsistent with specification here:\r
+/// In ProcSubclass specification 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA.\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef enum {\r
   EfiProcessorHealthy        = 1,\r
   EfiProcessorPerfRestricted = 2,\r
-  EfiProcessorFuncRestricted = 3 \r
+  EfiProcessorFuncRestricted = 3\r
 } EFI_PROCESSOR_HEALTH_STATUS;\r
 \r
 ///\r
-/// This data record refers to the package number of this processor. Multiple logical processors can \r
-/// exist in a system and each logical processor can be correlated to the physical processor using this \r
-/// record type. \r
+/// This data record refers to the package number of this processor. Multiple logical processors can\r
+/// exist in a system and each logical processor can be correlated to the physical processor using this\r
+/// record type.\r
 ///\r
 typedef UINTN                       EFI_PROCESSOR_PACKAGE_NUMBER_DATA;\r
 \r
+typedef UINT8                       EFI_PROCESSOR_CORE_COUNT_DATA;\r
+typedef UINT8                       EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA;\r
+typedef UINT8                       EFI_PROCESSOR_THREAD_COUNT_DATA;\r
+\r
+typedef struct {\r
+  UINT16  Reserved              :1;\r
+  UINT16  Unknown               :1;\r
+  UINT16  Capable64Bit          :1;\r
+  UINT16  Reserved2             :13;\r
+} EFI_PROCESSOR_CHARACTERISTICS_DATA;\r
+\r
 ///\r
 /// Inconsistent with specification here:\r
-/// In ProcSubclass spec 0.9, the enumeration type data structure is NOT defined.\r
-/// The equivalent in spec is \r
+/// In ProcSubclass specification 0.9, the enumeration type data structure is NOT defined.\r
+/// The equivalent in specification is\r
 ///      #define EFI_PROCESSOR_FREQUENCY_RECORD_NUMBER           0x00000001\r
 ///      #define EFI_PROCESSOR_BUS_FREQUENCY_RECORD_NUMBER       0x00000002\r
 ///      #define EFI_PROCESSOR_VERSION_RECORD_NUMBER             0x00000003\r
@@ -775,12 +784,18 @@ typedef enum {
   ProcessorPackageNumberRecordType     = 21,\r
   ProcessorCoreFrequencyListRecordType = 22,\r
   ProcessorFsbFrequencyListRecordType  = 23,\r
-  ProcessorHealthStatusRecordType      = 24\r
+  ProcessorHealthStatusRecordType      = 24,\r
+  ProcessorCoreCountRecordType         = 25,\r
+  ProcessorEnabledCoreCountRecordType  = 26,\r
+  ProcessorThreadCountRecordType       = 27,\r
+  ProcessorCharacteristicsRecordType   = 28,\r
+  ProcessorFamily2RecordType           = 29,\r
+  ProcessorPartNumberRecordType        = 30,\r
 } EFI_CPU_VARIABLE_RECORD_TYPE;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In ProcSubclass spec 0.9, the union type data structure is NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In ProcSubclass specification 0.9, the union type data structure is NOT defined.\r
 /// It's implementation-specific to simplify the code logic.\r
 ///\r
 typedef union {\r
@@ -805,8 +820,14 @@ typedef union {
   EFI_PROCESSOR_SOCKET_TYPE_DATA          ProcessorSocketType;\r
   EFI_PROCESSOR_SOCKET_NAME_DATA          ProcessorSocketName;\r
   EFI_PROCESSOR_ASSET_TAG_DATA            ProcessorAssetTag;\r
+  EFI_PROCESSOR_PART_NUMBER_DATA          ProcessorPartNumber;\r
   EFI_PROCESSOR_HEALTH_STATUS             ProcessorHealthStatus;\r
   EFI_PROCESSOR_PACKAGE_NUMBER_DATA       ProcessorPackageNumber;\r
+  EFI_PROCESSOR_CORE_COUNT_DATA           ProcessorCoreCount;\r
+  EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA   ProcessorEnabledCoreCount;\r
+  EFI_PROCESSOR_THREAD_COUNT_DATA         ProcessorThreadCount;\r
+  EFI_PROCESSOR_CHARACTERISTICS_DATA      ProcessorCharacteristics;\r
+  EFI_PROCESSOR_FAMILY2_DATA              ProcessorFamily2;\r
 } EFI_CPU_VARIABLE_RECORD;\r
 \r
 typedef struct {\r
@@ -818,8 +839,8 @@ typedef struct {
 \r
 typedef EFI_EXP_BASE2_DATA          EFI_CACHE_SIZE_DATA;\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In CacheSubclass spec 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA.\r
+/// Inconsistent with specification here:\r
+/// In CacheSubclass specification 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA.\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef EFI_EXP_BASE2_DATA          EFI_MAXIMUM_CACHE_SIZE_DATA;\r
@@ -832,6 +853,11 @@ typedef struct {
   UINT32                            NonBurst      :1;\r
   UINT32                            Burst         :1;\r
   UINT32                            PipelineBurst :1;\r
+  ///\r
+  /// Inconsistent between CacheSubclass 0.9 and SMBIOS specifications here:\r
+  /// In CacheSubclass specification 0.9, the sequence of Asynchronous and Synchronous fileds\r
+  /// are opposite to SMBIOS specification.\r
+  ///\r
   UINT32                            Asynchronous  :1;\r
   UINT32                            Synchronous   :1;\r
   UINT32                            Reserved      :25;\r
@@ -868,9 +894,9 @@ typedef enum {
 } EFI_CACHE_ASSOCIATIVITY_DATA;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In CacheSubclass 0.9 spec. It defines the field type as UINT16.\r
-/// In fact, it should be UINT32 type since it refers to a 32bit width data.\r
+/// Inconsistent with specification here:\r
+/// In CacheSubclass 0.9 specification. It defines the field type as UINT16.\r
+/// In fact, it should be UINT32 type because it refers to a 32bit width data.\r
 ///\r
 typedef struct {\r
   UINT32                            Level           :3;\r
@@ -911,14 +937,14 @@ typedef enum {
 \r
 ///\r
 /// Inconsistent with specification here:\r
-/// In CacheSubclass spec 0.9, the enumeration type data structure is NOT defined.\r
-/// The equivalent in spec is \r
+/// In CacheSubclass specification 0.9, the enumeration type data structure is NOT defined.\r
+/// The equivalent in specification is\r
 ///      #define EFI_CACHE_SIZE_RECORD_NUMBER                    0x00000001\r
 ///      #define EFI_CACHE_MAXIMUM_SIZE_RECORD_NUMBER            0x00000002\r
 ///      #define EFI_CACHE_SPEED_RECORD_NUMBER                   0x00000003\r
 ///      #define EFI_CACHE_SOCKET_RECORD_NUMBER                  0x00000004\r
-///      #define EFI_CACHE_SRAM_SUPPORT_RECORD_NUMBER            0x00000005 \r
-///      #define EFI_CACHE_SRAM_INSTALL_RECORD_NUMBER            0x00000006 \r
+///      #define EFI_CACHE_SRAM_SUPPORT_RECORD_NUMBER            0x00000005\r
+///      #define EFI_CACHE_SRAM_INSTALL_RECORD_NUMBER            0x00000006\r
 ///      #define EFI_CACHE_ERROR_SUPPORT_RECORD_NUMBER           0x00000007\r
 ///      #define EFI_CACHE_TYPE_RECORD_NUMBER                    0x00000008\r
 ///      #define EFI_CACHE_ASSOCIATIVITY_RECORD_NUMBER           0x00000009\r
@@ -939,8 +965,8 @@ typedef enum {
 } EFI_CACHE_VARIABLE_RECORD_TYPE;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In CacheSubclass spec0.9, the union type data structure is NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In CacheSubclass specification 0.9, the union type data structure is NOT defined.\r
 /// It's implementation-specific to simplify the code logic.\r
 ///\r
 typedef union {\r
@@ -973,39 +999,39 @@ typedef enum _EFI_MEMORY_REGION_TYPE {
 } EFI_MEMORY_REGION_TYPE;\r
 \r
 ///\r
-/// This data record refers to the size of a memory region. The regions that are \r
-/// described can refer to physical memory, memory-mapped I/O, or reserved BIOS memory regions. \r
-/// The unit of measurement of this data record is in bytes.  \r
+/// This data record refers to the size of a memory region. The regions that are\r
+/// described can refer to physical memory, memory-mapped I/O, or reserved BIOS memory regions.\r
+/// The unit of measurement of this data record is in bytes.\r
 ///\r
 typedef struct {\r
   ///\r
-  /// A zero-based value that indicates which processor(s) can access the memory region. \r
-  /// A value of 0xFFFF indicates the region is accessible by all processors. \r
+  /// A zero-based value that indicates which processor(s) can access the memory region.\r
+  /// A value of 0xFFFF indicates the region is accessible by all processors.\r
   ///\r
   UINT32                            ProcessorNumber;\r
   ///\r
-  /// A zero-based value that indicates the starting bus that can access the memory region.  \r
+  /// A zero-based value that indicates the starting bus that can access the memory region.\r
   ///\r
   UINT16                            StartBusNumber;\r
   ///\r
-  /// A zero-based value that indicates the ending bus that can access the memory region. \r
-  /// A value of 0xFF for a PCI system indicates the region is accessible by all buses and \r
-  /// is global in scope. An example of the EndBusNumber not being 0xFF is a system \r
-  /// with two or more peer-to-host PCI bridges. \r
+  /// A zero-based value that indicates the ending bus that can access the memory region.\r
+  /// A value of 0xFF for a PCI system indicates the region is accessible by all buses and\r
+  /// is global in scope. An example of the EndBusNumber not being 0xFF is a system\r
+  /// with two or more peer-to-host PCI bridges.\r
   ///\r
   UINT16                            EndBusNumber;\r
   ///\r
-  /// The type of memory region from the operating system's point of view. \r
-  /// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS \r
-  /// command values. \r
+  /// The type of memory region from the operating system's point of view.\r
+  /// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS\r
+  /// command values.\r
   ///\r
   EFI_MEMORY_REGION_TYPE            MemoryRegionType;\r
   ///\r
-  /// The size of the memory region in bytes. \r
+  /// The size of the memory region in bytes.\r
   ///\r
   EFI_EXP_BASE2_DATA                MemorySize;\r
   ///\r
-  /// The starting physical address of the memory region. \r
+  /// The starting physical address of the memory region.\r
   ///\r
   EFI_PHYSICAL_ADDRESS              MemoryStartAddress;\r
 } EFI_MEMORY_SIZE_DATA;\r
@@ -1051,19 +1077,19 @@ typedef enum _EFI_MEMORY_ERROR_CORRECTION {
 } EFI_MEMORY_ERROR_CORRECTION;\r
 \r
 ///\r
-/// This data record refers to the physical memory array. This data record is a structure.  \r
-/// The type definition structure for EFI_MEMORY_ARRAY_LOCATION_DATA is in SMBIOS 2.3.4: \r
-/// - Table 3.3.17.1, Type 16, Offset 0x4 \r
-/// - Table 3.3.17.2, Type 16, Offset 0x5 \r
-/// - Table 3.3.17.3, Type 16, with the following offsets: \r
-///     -- Offset 0x6 \r
-///     -- Offset 0x7 \r
-///     -- Offset 0xB \r
-///     -- Offset 0xD \r
-/// \r
+/// This data record refers to the physical memory array. This data record is a structure.\r
+/// The type definition structure for EFI_MEMORY_ARRAY_LOCATION_DATA is in SMBIOS 2.3.4:\r
+/// - Table 3.3.17.1, Type 16, Offset 0x4\r
+/// - Table 3.3.17.2, Type 16, Offset 0x5\r
+/// - Table 3.3.17.3, Type 16, with the following offsets:\r
+///     -- Offset 0x6\r
+///     -- Offset 0x7\r
+///     -- Offset 0xB\r
+///     -- Offset 0xD\r
+///\r
 typedef struct {\r
   ///\r
-  /// The physical location of the memory array. \r
+  /// The physical location of the memory array.\r
   ///\r
   EFI_MEMORY_ARRAY_LOCATION         MemoryArrayLocation;\r
   ///\r
@@ -1075,14 +1101,14 @@ typedef struct {
   ///\r
   EFI_MEMORY_ERROR_CORRECTION       MemoryErrorCorrection;\r
   ///\r
-  /// The maximum memory capacity size in kilobytes. If capacity is unknown, then \r
-  /// values of MaximumMemoryCapacity.Value = 0x00 and \r
+  /// The maximum memory capacity size in kilobytes. If capacity is unknown, then\r
+  /// values of MaximumMemoryCapacity.Value = 0x00 and\r
   /// MaximumMemoryCapacity.Exponent = 0x8000 are used.\r
   ///\r
   EFI_EXP_BASE2_DATA                MaximumMemoryCapacity;\r
   ///\r
-  /// The number of memory slots or sockets that are available for memory devices  \r
-  /// in this array.    \r
+  /// The number of memory slots or sockets that are available for memory devices\r
+  /// in this array.\r
   ///\r
   UINT16                            NumberMemoryDevices;\r
 } EFI_MEMORY_ARRAY_LOCATION_DATA;\r
@@ -1106,8 +1132,8 @@ typedef enum _EFI_MEMORY_FORM_FACTOR {
   EfiMemoryFormFactorSodimm                   = 0x0D,\r
   EfiMemoryFormFactorSrimm                    = 0x0E,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiMemoryFormFactorFbDimm                   = 0x0F\r
 } EFI_MEMORY_FORM_FACTOR;\r
@@ -1132,13 +1158,13 @@ typedef enum _EFI_MEMORY_ARRAY_TYPE {
   EfiMemoryTypeRdram                          = 0x11,\r
   EfiMemoryTypeDdr                            = 0x12,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiMemoryTypeDdr2                           = 0x13,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiMemoryTypeDdr2FbDimm                     = 0x14\r
 } EFI_MEMORY_ARRAY_TYPE;\r
@@ -1168,44 +1194,44 @@ typedef enum {
   EfiMemoryStateAbsent       = 4,\r
   EfiMemoryStateDisabled     = 5,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+  /// Inconsistent with specification here:\r
+  /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiMemoryStatePartial      = 6\r
 } EFI_MEMORY_STATE;\r
 \r
 ///\r
-/// This data record describes a memory device. This data record is a structure. \r
+/// This data record describes a memory device. This data record is a structure.\r
 /// The type definition structure for EFI_MEMORY_ARRAY_LINK_DATA is in SMBIOS 2.3.4.\r
 ///\r
 typedef struct {\r
   ///\r
-  /// A string that identifies the physically labeled socket or board position where the \r
+  /// A string that identifies the physically labeled socket or board position where the\r
   /// memory device is located.\r
   ///\r
   STRING_REF                        MemoryDeviceLocator;\r
   ///\r
-  /// A string denoting the physically labeled bank where the memory device is located. \r
+  /// A string denoting the physically labeled bank where the memory device is located.\r
   ///\r
   STRING_REF                        MemoryBankLocator;\r
   ///\r
-  /// A string denoting the memory manufacturer.  \r
-  ///  \r
+  /// A string denoting the memory manufacturer.\r
+  ///\r
   STRING_REF                        MemoryManufacturer;\r
   ///\r
-  /// A string denoting the serial number of the memory device.  \r
+  /// A string denoting the serial number of the memory device.\r
   ///\r
   STRING_REF                        MemorySerialNumber;\r
   ///\r
-  /// The asset tag of the memory device. \r
+  /// The asset tag of the memory device.\r
   ///\r
   STRING_REF                        MemoryAssetTag;\r
   ///\r
-  /// A string denoting the part number of the memory device.  \r
+  /// A string denoting the part number of the memory device.\r
   ///\r
   STRING_REF                        MemoryPartNumber;\r
   ///\r
-  /// A link to a memory array structure set. \r
+  /// A link to a memory array structure set.\r
   ///\r
   EFI_INTER_LINK_DATA               MemoryArrayLink;\r
   ///\r
@@ -1213,49 +1239,49 @@ typedef struct {
   ///\r
   EFI_INTER_LINK_DATA               MemorySubArrayLink;\r
   ///\r
-  /// The total width in bits of this memory device. If there are no error correcting bits, \r
-  /// then the total width equals the data width. If the width is unknown, then set the field \r
-  /// to 0xFFFF. \r
+  /// The total width in bits of this memory device. If there are no error correcting bits,\r
+  /// then the total width equals the data width. If the width is unknown, then set the field\r
+  /// to 0xFFFF.\r
   ///\r
   UINT16                            MemoryTotalWidth;\r
   ///\r
-  /// The data width in bits of the memory device. A data width of 0x00 and a total width \r
-  /// of 0x08 indicate that the device is used solely for error correction. \r
+  /// The data width in bits of the memory device. A data width of 0x00 and a total width\r
+  /// of 0x08 indicate that the device is used solely for error correction.\r
   ///\r
   UINT16                            MemoryDataWidth;\r
   ///\r
-  /// The size in bytes of the memory device. A value of 0x00 denotes that no device is \r
+  /// The size in bytes of the memory device. A value of 0x00 denotes that no device is\r
   /// installed, while a value of all Fs denotes that the size is not known.\r
   ///\r
   EFI_EXP_BASE2_DATA                MemoryDeviceSize;\r
   ///\r
-  /// The form factor of the memory device. \r
+  /// The form factor of the memory device.\r
   ///\r
   EFI_MEMORY_FORM_FACTOR            MemoryFormFactor;\r
   ///\r
-  /// A memory device set that must be populated with all devices of the same type and \r
-  /// size. A value of 0x00 indicates that the device is not part of any set. A value of 0xFF \r
-  /// indicates that the attribute is unknown. Any other value denotes the set number. \r
+  /// A memory device set that must be populated with all devices of the same type and\r
+  /// size. A value of 0x00 indicates that the device is not part of any set. A value of 0xFF\r
+  /// indicates that the attribute is unknown. Any other value denotes the set number.\r
   ///\r
   UINT8                             MemoryDeviceSet;\r
   ///\r
-  /// The memory type in the socket. \r
+  /// The memory type in the socket.\r
   ///\r
   EFI_MEMORY_ARRAY_TYPE             MemoryType;\r
   ///\r
-  /// The memory type details. \r
+  /// The memory type details.\r
   ///\r
   EFI_MEMORY_TYPE_DETAIL            MemoryTypeDetail;\r
   ///\r
-  /// The memory speed in megahertz (MHz). A value of 0x00 denotes that \r
+  /// The memory speed in megahertz (MHz). A value of 0x00 denotes that\r
   /// the speed is unknown.\r
-       /// Inconsistent with specification here:  \r
-       /// In MemSubclass spec 0.9, the naming is MemoryTypeSpeed.\r
-       /// Keep it unchanged for backward compatibilty.\r
-       ///\r
+  /// Inconsistent with specification here:\r
+  /// In MemSubclass specification 0.9, the naming is MemoryTypeSpeed.\r
+  /// Keep it unchanged for backward compatibilty.\r
+  ///\r
   EFI_EXP_BASE10_DATA               MemorySpeed;\r
   ///\r
-  /// The memory state. \r
+  /// The memory state.\r
   ///\r
   EFI_MEMORY_STATE                  MemoryState;\r
 } EFI_MEMORY_ARRAY_LINK_DATA;\r
@@ -1264,18 +1290,18 @@ typedef struct {
 #define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER    0x00000004\r
 \r
 ///\r
-/// This data record refers to a specified physical memory array associated with \r
-/// a given memory range. \r
-/// \r
+/// This data record refers to a specified physical memory array associated with\r
+/// a given memory range.\r
+///\r
 typedef struct {\r
   ///\r
-  /// The starting physical address in bytes of memory mapped to a specified physical \r
-  /// memory array. \r
+  /// The starting physical address in bytes of memory mapped to a specified physical\r
+  /// memory array.\r
   ///\r
   EFI_PHYSICAL_ADDRESS              MemoryArrayStartAddress;\r
   ///\r
-  /// The last physical address in bytes of memory mapped to a specified physical memory \r
-  /// array.  \r
+  /// The last physical address in bytes of memory mapped to a specified physical memory\r
+  /// array.\r
   ///\r
   EFI_PHYSICAL_ADDRESS              MemoryArrayEndAddress;\r
   ///\r
@@ -1283,8 +1309,8 @@ typedef struct {
   ///\r
   EFI_INTER_LINK_DATA               PhysicalMemoryArrayLink;\r
   ///\r
-  /// The number of memory devices that form a single row of memory for the address \r
-  /// partition.  \r
+  /// The number of memory devices that form a single row of memory for the address\r
+  /// partition.\r
   ///\r
   UINT16                            MemoryArrayPartitionWidth;\r
 } EFI_MEMORY_ARRAY_START_ADDRESS_DATA;\r
@@ -1293,39 +1319,39 @@ typedef struct {
 #define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER    0x00000005\r
 \r
 ///\r
-/// This data record refers to a physical memory device that is associated with \r
+/// This data record refers to a physical memory device that is associated with\r
 /// a given memory range.\r
-/// \r
+///\r
 typedef struct {\r
   ///\r
-  /// The starting physical address that is associated with the device. \r
+  /// The starting physical address that is associated with the device.\r
   ///\r
   EFI_PHYSICAL_ADDRESS              MemoryDeviceStartAddress;\r
   ///\r
-  /// The ending physical address that is associated with the device. \r
+  /// The ending physical address that is associated with the device.\r
   ///\r
   EFI_PHYSICAL_ADDRESS              MemoryDeviceEndAddress;\r
   ///\r
-  /// A link to the memory device data structure. \r
+  /// A link to the memory device data structure.\r
   ///\r
   EFI_INTER_LINK_DATA               PhysicalMemoryDeviceLink;\r
-  /// \r
-  /// A link to the memory array data structure. \r
+  ///\r
+  /// A link to the memory array data structure.\r
   ///\r
   EFI_INTER_LINK_DATA               PhysicalMemoryArrayLink;\r
   ///\r
-  /// The position of the memory device in a row. A value of 0x00 is reserved and a value \r
-  /// of 0xFF indicates that the position is unknown. \r
+  /// The position of the memory device in a row. A value of 0x00 is reserved and a value\r
+  /// of 0xFF indicates that the position is unknown.\r
   ///\r
   UINT8                             MemoryDevicePartitionRowPosition;\r
   ///\r
-  /// The position of the device in an interleave. \r
+  /// The position of the device in an interleave.\r
   ///\r
   UINT8                             MemoryDeviceInterleavePosition;\r
   ///\r
-  /// The maximum number of consecutive rows from the device that are accessed in a \r
-  /// single interleave transfer. A value of 0x00 indicates that the device is not interleaved \r
-  /// and a value of 0xFF indicates that the interleave configuration is unknown. \r
+  /// The maximum number of consecutive rows from the device that are accessed in a\r
+  /// single interleave transfer. A value of 0x00 indicates that the device is not interleaved\r
+  /// and a value of 0xFF indicates that the interleave configuration is unknown.\r
   ///\r
   UINT8                             MemoryDeviceInterleaveDataDepth;\r
 } EFI_MEMORY_DEVICE_START_ADDRESS_DATA;\r
@@ -1345,25 +1371,25 @@ typedef enum _EFI_MEMORY_CHANNEL_TYPE {
 } EFI_MEMORY_CHANNEL_TYPE;\r
 \r
 ///\r
-/// This data record refers the type of memory that is associated with the channel. This data record is a \r
-/// structure. \r
-/// The type definition structure for EFI_MEMORY_CHANNEL_TYPE_DATA is in SMBIOS 2.3.4, \r
-/// Table 3.3.38, Type 37, with the following offsets: \r
-///   - Offset 0x4 \r
-///   - Offset 0x5 \r
+/// This data record refers the type of memory that is associated with the channel. This data record is a\r
+/// structure.\r
+/// The type definition structure for EFI_MEMORY_CHANNEL_TYPE_DATA is in SMBIOS 2.3.4,\r
+/// Table 3.3.38, Type 37, with the following offsets:\r
+///   - Offset 0x4\r
+///   - Offset 0x5\r
 ///   - Offset 0x6\r
-/// \r
+///\r
 typedef struct {\r
   ///\r
-  /// The type of memory that is associated with the channel. \r
-  /// \r
+  /// The type of memory that is associated with the channel.\r
+  ///\r
   EFI_MEMORY_CHANNEL_TYPE           MemoryChannelType;\r
   ///\r
   /// The maximum load that is supported by the channel.\r
   ///\r
   UINT8                             MemoryChannelMaximumLoad;\r
   ///\r
-  /// The number of memory devices on this channel. \r
+  /// The number of memory devices on this channel.\r
   ///\r
   UINT8                             MemoryChannelDeviceCount;\r
 } EFI_MEMORY_CHANNEL_TYPE_DATA;\r
@@ -1371,25 +1397,25 @@ typedef struct {
 #define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER    0x00000007\r
 \r
 ///\r
-/// This data record refers to the memory device that is associated with the memory channel. This data \r
-/// record is a structure. \r
-/// The type definition structure for EFI_MEMORY_CHANNEL_DEVICE_DATA is in SMBIOS 2.3.4, \r
-/// Table 3.3.38, Type 37, with the following offsets:  \r
-///   - Offset 0x7 \r
+/// This data record refers to the memory device that is associated with the memory channel. This data\r
+/// record is a structure.\r
+/// The type definition structure for EFI_MEMORY_CHANNEL_DEVICE_DATA is in SMBIOS 2.3.4,\r
+/// Table 3.3.38, Type 37, with the following offsets:\r
+///   - Offset 0x7\r
 ///   - Offset 0x8\r
 ///\r
 typedef struct {\r
   ///\r
-  /// A number between one and MemoryChannelDeviceCount plus an arbitrary base.  \r
-  /// \r
+  /// A number between one and MemoryChannelDeviceCount plus an arbitrary base.\r
+  ///\r
   UINT8                             DeviceId;\r
   ///\r
-  /// The Link of the associated memory device. See Memory Device (Type 17) for \r
-  /// memory devices. \r
+  /// The Link of the associated memory device. See Memory Device (Type 17) for\r
+  /// memory devices.\r
   ///\r
   EFI_INTER_LINK_DATA               DeviceLink;\r
   ///\r
-  /// The number of load units that this device consumes. \r
+  /// The number of load units that this device consumes.\r
   ///\r
   UINT8                             MemoryChannelDeviceLoad;\r
 } EFI_MEMORY_CHANNEL_DEVICE_DATA;\r
@@ -1398,18 +1424,18 @@ typedef struct {
 //  Memory. Controller Information - SMBIOS Type 5\r
 //\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 #define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER    0x00000008\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
-typedef enum {  \r
+typedef enum {\r
   EfiErrorDetectingMethodOther   = 1,\r
   EfiErrorDetectingMethodUnknown = 2,\r
   EfiErrorDetectingMethodNone    = 3,\r
@@ -1421,8 +1447,8 @@ typedef enum {
 } EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1436,11 +1462,11 @@ typedef struct {
 } EFI_MEMORY_ERROR_CORRECT_CAPABILITY;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
-typedef enum {  \r
+typedef enum {\r
   EfiMemoryInterleaveOther      = 1,\r
   EfiMemoryInterleaveUnknown    = 2,\r
   EfiMemoryInterleaveOneWay     = 3,\r
@@ -1451,8 +1477,8 @@ typedef enum {
 } EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1465,8 +1491,8 @@ typedef struct {
 } EFI_MEMORY_SPEED_TYPE;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1485,8 +1511,8 @@ typedef struct {
 } EFI_MEMORY_SUPPORTED_TYPE;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1500,8 +1526,8 @@ typedef struct {
 /// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete\r
 /// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1519,8 +1545,8 @@ typedef struct {
 } EFI_MEMORY_CONTROLLER_INFORMATION;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1540,17 +1566,17 @@ typedef struct {
 ///\r
 /// Memory. Error Information - SMBIOS Type 18\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 18.\r
 ///\r
 #define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER    0x00000009\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 18.\r
 ///\r
-typedef enum {  \r
+typedef enum {\r
   EfiMemoryErrorOther             = 1,\r
   EfiMemoryErrorUnknown           = 2,\r
   EfiMemoryErrorOk                = 3,\r
@@ -1567,22 +1593,22 @@ typedef enum {
   EfiMemoryErrorUnCorrectable     = 14\r
 } EFI_MEMORY_ERROR_TYPE;\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 18.\r
 ///\r
-typedef enum {  \r
+typedef enum {\r
   EfiMemoryGranularityOther               = 1,\r
   EfiMemoryGranularityOtherUnknown        = 2,\r
   EfiMemoryGranularityDeviceLevel         = 3,\r
   EfiMemoryGranularityMemPartitionLevel   = 4\r
 } EFI_MEMORY_ERROR_GRANULARITY_TYPE;\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 18.\r
 ///\r
-typedef enum {  \r
+typedef enum {\r
   EfiMemoryErrorOperationOther            = 1,\r
   EfiMemoryErrorOperationUnknown          = 2,\r
   EfiMemoryErrorOperationRead             = 3,\r
@@ -1590,8 +1616,8 @@ typedef enum {
   EfiMemoryErrorOperationPartialWrite     = 5\r
 } EFI_MEMORY_ERROR_OPERATION_TYPE;\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 18.\r
 ///\r
 typedef struct {\r
@@ -1605,17 +1631,17 @@ typedef struct {
 } EFI_MEMORY_32BIT_ERROR_INFORMATION;\r
 \r
 ///\r
-/// Memory. Error Information - SMBIOS Type 33\r
+/// Memory. Error Information - SMBIOS Type 33.\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 33.\r
 ///\r
 #define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER    0x0000000A\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It's introduced for SmBios 2.6 type 33.\r
 ///\r
 typedef struct {\r
@@ -1629,8 +1655,8 @@ typedef struct {
 } EFI_MEMORY_64BIT_ERROR_INFORMATION;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It is implementation-specific to simplify the code logic.\r
 ///\r
 typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
@@ -1727,30 +1753,30 @@ typedef struct {
   EFI_PHYSICAL_ADDRESS              BiosStartingAddress;\r
   EFI_EXP_BASE2_DATA                BiosPhysicalDeviceSize;\r
   EFI_MISC_BIOS_CHARACTERISTICS     BiosCharacteristics1;\r
-  EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION  \r
+  EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION\r
                                     BiosCharacteristics2;\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 spec type 0.\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
+  /// It's introduced for SmBios 2.6 specification type 0.\r
   ///\r
   UINT8                             BiosMajorRelease;\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 spec type 0.\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
+  /// It's introduced for SmBios 2.6 specification type 0.\r
   ///\r
   UINT8                             BiosMinorRelease;\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 spec type 0.\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
+  /// It's introduced for SmBios 2.6 specification type 0.\r
   ///\r
   UINT8                             BiosEmbeddedFirmwareMajorRelease;\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 spec type 0.\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
+  /// It's introduced for SmBios 2.6 specification type 0.\r
   ///\r
   UINT8                             BiosEmbeddedFirmwareMinorRelease;\r
 } EFI_MISC_BIOS_VENDOR_DATA;\r
@@ -1780,15 +1806,15 @@ typedef struct {
   EFI_GUID                          SystemUuid;\r
   EFI_MISC_SYSTEM_WAKEUP_TYPE       SystemWakeupType;\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 spec type 1.\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
+  /// It's introduced for SmBios 2.6 specification type 1.\r
   ///\r
   STRING_REF                        SystemSKUNumber;\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
-  /// It's introduced for SmBios 2.6 spec type 1.\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined.\r
+  /// It's introduced for SmBios 2.6 specification type 1.\r
   ///\r
   STRING_REF                        SystemFamily;\r
 } EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
@@ -1872,8 +1898,8 @@ typedef enum {
 \r
 typedef struct {\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass 0.9 spec, it has a wrong field name "EFI_MISC_CHASSIS_TYPE".\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass 0.9 specification, it has the incorrect field name "EFI_MISC_CHASSIS_TYPE".\r
   /// Change it to "ChassisType" to pass build.\r
   ///\r
   UINT32                            ChassisType       :16;\r
@@ -2022,6 +2048,12 @@ typedef struct {
   EFI_MISC_PORT_CONNECTOR_TYPE      PortInternalConnectorType;\r
   EFI_MISC_PORT_CONNECTOR_TYPE      PortExternalConnectorType;\r
   EFI_MISC_PORT_TYPE                PortType;\r
+  ///\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, this type of field is defined as EFI_DEVICE_PATH_PROTOCOL,\r
+  /// which causes the implementation some complexity. Keep it unchanged for backward\r
+  /// compatibility.\r
+  ///\r
   EFI_MISC_PORT_DEVICE_PATH         PortPath;\r
 } EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;\r
 \r
@@ -2047,8 +2079,8 @@ typedef enum {
   EfiSlotTypePci66MhzCapable              = 0x0E,\r
   EfiSlotTypeAgp                          = 0x0F,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, its naming should be EfiSlotTypeAgp2X\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, its naming should be EfiSlotTypeAgp2X\r
   /// rather than EfiSlotTypeApg2X.\r
   ///\r
   EfiSlotTypeAgp2X                        = 0x10,\r
@@ -2061,11 +2093,16 @@ typedef enum {
   EfiSlotTypePC98LocalBus                 = 0xA3,\r
   EfiSlotTypePC98Card                     = 0xA4,\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, this field isn't defined.\r
-  /// It's introduced for SmBios 2.6 spec type 9.\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, these fields aren't defined.\r
+  /// They're introduced for SmBios 2.6 specification type 9.\r
   ///\r
-  EfiSlotTypePciExpress                   = 0xA5\r
+  EfiSlotTypePciExpress                   = 0xA5,\r
+  EfiSlotTypePciExpressX1                 = 0xA6,\r
+  EfiSlotTypePciExpressX2                 = 0xA7,\r
+  EfiSlotTypePciExpressX4                 = 0xA8,\r
+  EfiSlotTypePciExpressX8                 = 0xA9,\r
+  EfiSlotTypePciExpressX16                = 0xAA\r
 } EFI_MISC_SLOT_TYPE;\r
 \r
 typedef enum {\r
@@ -2075,7 +2112,19 @@ typedef enum {
   EfiSlotDataBusWidth16Bit      = 0x04,\r
   EfiSlotDataBusWidth32Bit      = 0x05,\r
   EfiSlotDataBusWidth64Bit      = 0x06,\r
-  EfiSlotDataBusWidth128Bit     = 0x07\r
+  EfiSlotDataBusWidth128Bit     = 0x07,\r
+  ///\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, these fields aren't defined.\r
+  /// They're introduced for SmBios 2.6 specification type 9.\r
+  ///\r
+  EfiSlotDataBusWidth1xOrx1     = 0x8,\r
+  EfiSlotDataBusWidth2xOrx2     = 0x9,\r
+  EfiSlotDataBusWidth4xOrx4     = 0xA,\r
+  EfiSlotDataBusWidth8xOrx8     = 0xB,\r
+  EfiSlotDataBusWidth12xOrx12   = 0xC,\r
+  EfiSlotDataBusWidth16xOrx16   = 0xD,\r
+  EfiSlotDataBusWidth32xOrx32   = 0xE\r
 } EFI_MISC_SLOT_DATA_BUS_WIDTH;\r
 \r
 typedef enum {\r
@@ -2142,8 +2191,8 @@ typedef struct {
 typedef struct {\r
   STRING_REF                        OnBoardDeviceDescription;\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, the naming is OnBoardDeviceType.\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, the name is OnBoardDeviceType.\r
   /// Keep it unchanged for backward compatibilty.\r
   ///\r
   EFI_MISC_ONBOARD_DEVICE_STATUS    OnBoardDeviceStatus;\r
@@ -2259,19 +2308,19 @@ typedef struct {
 // Portable Battery - SMBIOS Type 22\r
 //\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the naming is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER.\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, the name is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER.\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 #define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER   0x00000010\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY.\r
-/// And all field namings are also different with spec.\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY.\r
+/// And all field namings are also different with specification.\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
-typedef enum {  \r
+typedef enum {\r
   EfiPortableBatteryDeviceChemistryOther = 1,\r
   EfiPortableBatteryDeviceChemistryUnknown = 2,\r
   EfiPortableBatteryDeviceChemistryLeadAcid = 3,\r
@@ -2283,9 +2332,9 @@ typedef enum {
 } EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA.\r
-/// And the name and the order of the fields are also different with spec.\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA.\r
+/// Also, the name and the order of the fields vary with specifications.\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef struct {\r
@@ -2294,7 +2343,7 @@ typedef struct {
   STRING_REF                        ManufactureDate;\r
   STRING_REF                        SerialNumber;\r
   STRING_REF                        DeviceName;\r
-  EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY  \r
+  EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY\r
                                     DeviceChemistry;\r
   UINT16                            DesignCapacity;\r
   UINT16                            DesignVoltage;\r
@@ -2304,8 +2353,8 @@ typedef struct {
   UINT16                            SBDSManufactureDate;\r
   STRING_REF                        SBDSDeviceChemistry;\r
   UINT8                             DesignCapacityMultiplier;\r
-  UINT32                            OEMSpecific;  \r
-  UINT8                             BatteryNumber; // Temporary   \r
+  UINT32                            OEMSpecific;\r
+  UINT8                             BatteryNumber; // Temporary\r
   BOOLEAN                           Valid; // Is entry valid - Temporary\r
 } EFI_MISC_PORTABLE_BATTERY;\r
 \r
@@ -2345,10 +2394,10 @@ typedef struct {
 #define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER    0x00000012\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, it only mention the possible value of each field in\r
-/// EFI_MISC_HARDWARE_SECURITY_SETTINGS. \r
-/// It's implementation-specific to simplify the code logic.\r
+/// Inconsistent with specification here:\r
+/// The MiscSubclass specification 0.9 only mentions the possible value of each field in\r
+/// EFI_MISC_HARDWARE_SECURITY_SETTINGS.\r
+/// It's implementation-specific in order to to simplify the code logic.\r
 ///\r
 typedef enum {\r
   EfiHardwareSecurityStatusDisabled       = 0,\r
@@ -2425,8 +2474,8 @@ typedef struct {
 typedef struct {\r
   EFI_MISC_COOLING_DEVICE_TYPE      CoolingDeviceType;\r
   EFI_INTER_LINK_DATA               CoolingDeviceTemperatureLink;\r
-  UINT16                            CoolingDeviceUnitGroup;\r
-  EFI_EXP_BASE10_DATA               CoolingDeviceNominalSpeed;\r
+  UINT                            CoolingDeviceUnitGroup;\r
+  UINT16                            CoolingDeviceNominalSpeed;\r
   UINT32                            CoolingDeviceOemDefined;\r
 } EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;\r
 \r
@@ -2445,18 +2494,24 @@ typedef struct {
   STRING_REF                        TemperatureProbeDescription;\r
   EFI_MISC_TEMPERATURE_PROBE_LOCATION\r
                                     TemperatureProbeLocation;\r
-  EFI_EXP_BASE10_DATA               TemperatureProbeMaximumValue;\r
-  EFI_EXP_BASE10_DATA               TemperatureProbeMinimumValue;\r
-  EFI_EXP_BASE10_DATA               TemperatureProbeResolution;\r
-  EFI_EXP_BASE10_DATA               TemperatureProbeTolerance;\r
-  EFI_EXP_BASE10_DATA               TemperatureProbeAccuracy;\r
-  EFI_EXP_BASE10_DATA               TemperatureProbeNominalValue;\r
-  EFI_EXP_BASE10_DATA               MDLowerNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperNoncriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDLowerCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperCriticalThreshold;\r
-  EFI_EXP_BASE10_DATA               MDLowerNonrecoverableThreshold;\r
-  EFI_EXP_BASE10_DATA               MDUpperNonrecoverableThreshold;\r
+  ///\r
+  /// Inconsistent with specification here:\r
+  /// MiscSubclass 0.9 specification defines the fields type as EFI_EXP_BASE10_DATA.\r
+  /// In fact, they should be UINT16 type because they refer to 16bit width data.\r
+  /// Keeping this inconsistency for backward compatibility.\r
+  ///\r
+  UINT16                            TemperatureProbeMaximumValue;\r
+  UINT16                            TemperatureProbeMinimumValue;\r
+  UINT16                            TemperatureProbeResolution;\r
+  UINT16                            TemperatureProbeTolerance;\r
+  UINT16                            TemperatureProbeAccuracy;\r
+  UINT16                            TemperatureProbeNominalValue;\r
+  UINT16                            MDLowerNoncriticalThreshold;\r
+  UINT16                            MDUpperNoncriticalThreshold;\r
+  UINT16                            MDLowerCriticalThreshold;\r
+  UINT16                            MDUpperCriticalThreshold;\r
+  UINT16                            MDLowerNonrecoverableThreshold;\r
+  UINT16                            MDUpperNonrecoverableThreshold;\r
   UINT32                            TemperatureProbeOemDefined;\r
 } EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;\r
 \r
@@ -2523,8 +2578,8 @@ typedef struct {
 #define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER    0x0000001A\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef enum {\r
@@ -2544,8 +2599,8 @@ typedef enum {
 \r
 typedef struct {\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
   /// Keep it unchanged for backward compatibilty.\r
   ///\r
   EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
@@ -2600,11 +2655,17 @@ typedef struct {
   EFI_INTER_LINK_DATA               ManagementDeviceLink;\r
   EFI_INTER_LINK_DATA               ManagementDeviceComponentLink;\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, this field is NOT defined.\r
-  /// It's introduced for SmBios 2.6 spec type 35.\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, this field is NOT defined.\r
+  /// It's introduced for SmBios 2.6 specification type 35.\r
   ///\r
   EFI_INTER_LINK_DATA               ManagementDeviceThresholdLink;\r
+  ///\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, this field is NOT defined.\r
+  /// It's implementation-specific to simplify the code logic.\r
+  ///\r
+  UINT8                             ComponentType;\r
 } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
 \r
 //\r
@@ -2625,7 +2686,7 @@ typedef struct {
 \r
 typedef struct {\r
   EFI_MISC_IPMI_INTERFACE_TYPE      IpmiInterfaceType;\r
-  EFI_MISC_IPMI_SPECIFICATION_REVISION  \r
+  EFI_MISC_IPMI_SPECIFICATION_REVISION\r
                                     IpmiSpecificationRevision;\r
   UINT16                            IpmiI2CSlaveAddress;\r
   UINT16                            IpmiNvDeviceAddress;\r
@@ -2634,12 +2695,17 @@ typedef struct {
 } EFI_MISC_IPMI_INTERFACE_TYPE_DATA;\r
 \r
 #define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER    0x0000001D\r
+///\r
+/// The definition above is *NOT* defined in MiscSubclass specifications 0.9.\r
+/// It's defined for backward compatibility.\r
+///\r
+#define EFI_MISC_IPMI_INTERFACE_TYPE_DATA_RECORD_NUMBER EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER\r
 \r
 ///\r
 /// System Power supply Record - SMBIOS Type 39\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the type of all fields are UINT32.\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, the type of all fields are UINT32.\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef struct {\r
@@ -2653,8 +2719,8 @@ typedef struct {
 } EFI_MISC_POWER_SUPPLY_CHARACTERISTICS;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA.\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA.\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef struct {\r
@@ -2678,9 +2744,9 @@ typedef struct {
 ///\r
 /// OEM Data Record - SMBIOS Type 0x80-0xFF\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR.\r
-/// Due to this structure is commonly used by vendor to construct SmBios type 0x80~0xFF table,\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR.\r
+/// Due to this, the structure is commonly used by vendors to construct SmBios type 0x80~0xFF table,\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef struct {\r
@@ -2691,8 +2757,8 @@ typedef struct {
 \r
 typedef struct {\r
   ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR.\r
+  /// Inconsistent with specification here:\r
+  /// In MiscSubclass specification 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR.\r
   /// Keep it unchanged for backward compatibilty.\r
   ///\r
   SMBIOS_STRUCTURE_HDR              Header;\r
@@ -2704,16 +2770,16 @@ typedef struct {
 ///\r
 /// Misc. System Event Log  - SMBIOS Type 15\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 spec type 15.\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 specification type 15.\r
 ///\r
 #define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER    0x00000020\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 spec type 15.\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 specification type 15.\r
 ///\r
 typedef struct {\r
   UINT16                            LogAreaLength;\r
@@ -2733,7 +2799,7 @@ typedef struct {
 //  0x00~0x04:  as following definition\r
 //  0x05~0x7f:  Available for future assignment.\r
 //  0x80~0xff:  BIOS Vendor/OEM-specific.\r
-// \r
+//\r
 #define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT    0x00\r
 #define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT    0X01\r
 #define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT   0X02\r
@@ -2743,15 +2809,15 @@ typedef struct {
 ///\r
 /// Management Device Threshold Data Record - SMBIOS Type 36\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 spec type 36.\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 specification type 36.\r
 ///\r
 #define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER    0x00000021\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
-/// It's introduced for SmBios 2.6 spec type 36.\r
+/// Inconsistent with specification here:\r
+/// In MiscSubclass specification 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 specification type 36.\r
 ///\r
 typedef struct {\r
   UINT16                            LowerThresNonCritical;\r
@@ -2787,14 +2853,16 @@ typedef EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA            EFI_MISC_SCHEDULED_POW
 typedef EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA           EFI_MISC_VOLTAGE_PROBE_DESCRIPTION;\r
 typedef EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA            EFI_MISC_COOLING_DEVICE_TEMP_LINK;\r
 typedef EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA       EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION;\r
-typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA \r
+typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA\r
                                                           EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION;\r
 typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA       EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION;\r
 typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION;\r
+typedef EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA\r
+                                                          EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It is implementation-specific to simplify the code logic.\r
 ///\r
 typedef union {\r
@@ -2835,8 +2903,8 @@ typedef union {
 } EFI_MISC_SUBCLASS_RECORDS;\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In MemSubclass specification 0.9, the following data structures are NOT defined.\r
 /// It is implementation-specific to simplify the code logic.\r
 ///\r
 typedef struct {\r
@@ -2846,14 +2914,14 @@ typedef struct {
 #pragma pack()\r
 \r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In DataHubSubclass specification 0.9 page 16, the following symbol is NOT defined.\r
 /// But value is meaningful, 0 means Reserved.\r
 ///\r
 #define EFI_SUBCLASS_INSTANCE_RESERVED       0\r
 ///\r
-/// Inconsistent with specification here:  \r
-/// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.\r
+/// Inconsistent with specification here:\r
+/// In DataHubSubclass specification 0.9 page 16, the following symbol is NOT defined.\r
 /// But value is meaningful, -1 means Not Applicable.\r
 ///\r
 #define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF\r