]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkPkg/Include/Guid/DataHubRecords.h
Update for NetworkPkg.
[mirror_edk2.git] / IntelFrameworkPkg / Include / Guid / DataHubRecords.h
index 10d33ec9204863272fb593babedcc9f6153e1fac..d898953ea444f7882df0cbdf4a69514ebf377d3a 100644 (file)
@@ -1,23 +1,28 @@
 /** @file\r
 /** @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
 \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
+  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
   \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
-\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 - 2011, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution.  \r
+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
 \r
 **/\r
 #ifndef _DATAHUB_RECORDS_GUID_H_\r
 #define _DATAHUB_RECORDS_GUID_H_\r
 \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
 #define EFI_PROCESSOR_SUBCLASS_GUID \\r
   { 0x26fdeb7e, 0xb8af, 0x4ccf, {0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7 } }\r
 \r
@@ -46,7 +51,7 @@ extern  EFI_GUID  gEfiMiscSubClassGuid;
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In ProcSubclass spec 0.9, the value is 0x0100.\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
 /// Keep it unchanged from the perspective of binary consistency.\r
 ///\r
 #define EFI_PROCESSOR_SUBCLASS_VERSION    0x00010000\r
@@ -141,7 +146,7 @@ typedef struct _FLOOPY_CONN_DEVICE_PATH {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\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
 /// It's implementation-specific to simplify the code logic.\r
 ///\r
 typedef union _EFI_MISC_PORT_DEVICE_PATH {\r
@@ -162,7 +167,7 @@ typedef union _EFI_MISC_PORT_DEVICE_PATH {
 /// String Token Definition\r
 ///\r
 /// Inconsistent with specification here:  \r
 /// String Token Definition\r
 ///\r
 /// Inconsistent with specification here:  \r
-/// The macro isn't defined by any spec.\r
+/// The macro isn't defined by any specification.\r
 /// Keep it unchanged for backward compatibility.\r
 ///\r
 #define EFI_STRING_TOKEN          UINT16\r
 /// Keep it unchanged for backward compatibility.\r
 ///\r
 #define EFI_STRING_TOKEN          UINT16\r
@@ -251,21 +256,6 @@ typedef struct {
   UINT16                            Exponent;\r
 } EFI_EXP_BASE2_DATA;\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
 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
@@ -279,7 +269,7 @@ typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_CORE_FREQUENCY_DATA;
 /// that the processor/driver supports automatic frequency selection. \r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 typedef EFI_EXP_BASE10_DATA        *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;\r
 \r
@@ -297,6 +287,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_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
 \r
 typedef struct {\r
   UINT32                            ProcessorSteppingId:4;\r
@@ -312,7 +303,7 @@ typedef struct {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// The name of third field in ProcSubClass spec0.9 is LogicalProcessorCount.\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
 /// Keep it unchanged for backward compatibility.\r
 ///\r
 typedef struct {\r
@@ -462,7 +453,7 @@ typedef enum {
   EfiProcessorFamilyUltraSparcIII          = 0x57,\r
   ///\r
   /// Inconsistent with specification here:  \r
   EfiProcessorFamilyUltraSparcIII          = 0x57,\r
   ///\r
   /// Inconsistent with specification here:  \r
-  /// This field in ProcSubClass spec 0.9 is defined as EfiProcessorFamilyUltraSparcIIi.\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
   /// Change it to EfiProcessorFamilyUltraSparcIIIi to avoid build break.\r
   ///\r
   EfiProcessorFamilyUltraSparcIIIi         = 0x58,\r
@@ -504,37 +495,37 @@ typedef enum {
   EfiProcessorFamilyIntelItanium2          = 0xB8,\r
   ///\r
   /// Inconsistent with specification here:  \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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyIntelCoreSolo          = 0xBD,  \r
   ///\r
   /// Inconsistent with specification here:  \r
   ///\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
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorFamilyReserved               = 0xBE,  \r
   ///\r
   /// Inconsistent with specification here:  \r
   ///\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
+  /// 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
   ///\r
   EfiProcessorFamilyIntelCore2             = 0xBF,\r
   EfiProcessorFamilyIBM390                 = 0xC8,\r
@@ -542,48 +533,61 @@ typedef enum {
   EfiProcessorFamilyG5                     = 0xCA,\r
   ///\r
   /// Inconsistent with specification here:  \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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// 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
   EfiProcessorFamilyReserved1              = 0xFF\r
 } EFI_PROCESSOR_FAMILY_DATA;\r
 \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
 /// 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
@@ -671,22 +675,22 @@ typedef enum {
   EfiProcessorSocket940              = 0x11,\r
   ///\r
   /// Inconsistent with specification here:  \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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification.\r
   ///\r
   EfiProcessorSocketLGA775           = 0x15\r
 \r
   ///\r
   EfiProcessorSocketLGA775           = 0x15\r
 \r
@@ -696,7 +700,7 @@ typedef STRING_REF                  EFI_PROCESSOR_SOCKET_NAME_DATA;
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In ProcSubclass spec 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA.\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
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef EFI_INTER_LINK_DATA         EFI_CACHE_ASSOCIATION_DATA;\r
@@ -705,7 +709,7 @@ typedef EFI_INTER_LINK_DATA         EFI_CACHE_ASSOCIATION_DATA;
 /// This data record refers to the health status of the processor. \r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef enum {\r
@@ -721,10 +725,21 @@ typedef enum {
 ///\r
 typedef UINTN                       EFI_PROCESSOR_PACKAGE_NUMBER_DATA;\r
 \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
 ///\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
 ///      #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 +790,18 @@ typedef enum {
   ProcessorPackageNumberRecordType     = 21,\r
   ProcessorCoreFrequencyListRecordType = 22,\r
   ProcessorFsbFrequencyListRecordType  = 23,\r
   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
 } 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
+/// 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
 /// It's implementation-specific to simplify the code logic.\r
 ///\r
 typedef union {\r
@@ -805,8 +826,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_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_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
 } EFI_CPU_VARIABLE_RECORD;\r
 \r
 typedef struct {\r
@@ -819,7 +846,7 @@ typedef struct {
 typedef EFI_EXP_BASE2_DATA          EFI_CACHE_SIZE_DATA;\r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef EFI_EXP_BASE2_DATA          EFI_MAXIMUM_CACHE_SIZE_DATA;\r
@@ -869,8 +896,8 @@ typedef enum {
 \r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 ///\r
 typedef struct {\r
   UINT32                            Level           :3;\r
@@ -911,8 +938,8 @@ typedef enum {
 \r
 ///\r
 /// Inconsistent with specification here:\r
 \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_SIZE_RECORD_NUMBER                    0x00000001\r
 ///      #define EFI_CACHE_MAXIMUM_SIZE_RECORD_NUMBER            0x00000002\r
 ///      #define EFI_CACHE_SPEED_RECORD_NUMBER                   0x00000003\r
@@ -940,7 +967,7 @@ typedef enum {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In CacheSubclass spec0.9, the union type data structure is NOT defined.\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
 /// It's implementation-specific to simplify the code logic.\r
 ///\r
 typedef union {\r
@@ -1107,7 +1134,7 @@ typedef enum _EFI_MEMORY_FORM_FACTOR {
   EfiMemoryFormFactorSrimm                    = 0x0E,\r
   ///\r
   /// Inconsistent with specification here:  \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
+  /// 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
   ///\r
   EfiMemoryFormFactorFbDimm                   = 0x0F\r
 } EFI_MEMORY_FORM_FACTOR;\r
@@ -1133,12 +1160,12 @@ typedef enum _EFI_MEMORY_ARRAY_TYPE {
   EfiMemoryTypeDdr                            = 0x12,\r
   ///\r
   /// Inconsistent with specification here:  \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
+  /// 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
   ///\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
+  /// 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
   ///\r
   EfiMemoryTypeDdr2FbDimm                     = 0x14\r
 } EFI_MEMORY_ARRAY_TYPE;\r
@@ -1169,7 +1196,7 @@ typedef enum {
   EfiMemoryStateDisabled     = 5,\r
   ///\r
   /// Inconsistent with specification here:  \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
+  /// 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
   EfiMemoryStatePartial      = 6\r
 } EFI_MEMORY_STATE;\r
@@ -1250,7 +1277,7 @@ typedef struct {
   /// The memory speed in megahertz (MHz). A value of 0x00 denotes that \r
   /// the speed is unknown.\r
        /// Inconsistent with specification here:  \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
+       /// In MemSubclass specification 0.9, the naming is MemoryTypeSpeed.\r
        /// Keep it unchanged for backward compatibilty.\r
        ///\r
   EFI_EXP_BASE10_DATA               MemorySpeed;\r
        /// Keep it unchanged for backward compatibilty.\r
        ///\r
   EFI_EXP_BASE10_DATA               MemorySpeed;\r
@@ -1399,14 +1426,14 @@ typedef struct {
 //\r
 ///\r
 /// Inconsistent with specification here:  \r
 //\r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\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
 /// 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
+/// 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
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef enum {  \r
@@ -1422,7 +1449,7 @@ typedef enum {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\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
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1437,7 +1464,7 @@ typedef struct {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\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
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef enum {  \r
@@ -1452,7 +1479,7 @@ typedef enum {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\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
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1466,7 +1493,7 @@ typedef struct {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\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
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1486,7 +1513,7 @@ typedef struct {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\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
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1501,7 +1528,7 @@ typedef struct {
 /// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead\r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1520,7 +1547,7 @@ typedef struct {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\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
 /// It's introduced for SmBios 2.6 type 5.\r
 ///\r
 typedef struct {\r
@@ -1541,13 +1568,13 @@ typedef struct {
 /// Memory. Error Information - SMBIOS Type 18\r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 /// 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
+/// 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
 /// It's introduced for SmBios 2.6 type 18.\r
 ///\r
 typedef enum {  \r
@@ -1568,7 +1595,7 @@ typedef enum {
 } EFI_MEMORY_ERROR_TYPE;\r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 /// It's introduced for SmBios 2.6 type 18.\r
 ///\r
 typedef enum {  \r
@@ -1579,7 +1606,7 @@ typedef enum {
 } EFI_MEMORY_ERROR_GRANULARITY_TYPE;\r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 /// It's introduced for SmBios 2.6 type 18.\r
 ///\r
 typedef enum {  \r
@@ -1591,7 +1618,7 @@ typedef enum {
 } EFI_MEMORY_ERROR_OPERATION_TYPE;\r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 /// It's introduced for SmBios 2.6 type 18.\r
 ///\r
 typedef struct {\r
@@ -1605,17 +1632,17 @@ typedef struct {
 } EFI_MEMORY_32BIT_ERROR_INFORMATION;\r
 \r
 ///\r
 } 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
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\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
 /// 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
+/// 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
 /// It's introduced for SmBios 2.6 type 33.\r
 ///\r
 typedef struct {\r
@@ -1630,7 +1657,7 @@ typedef struct {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\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
 /// It is implementation-specific to simplify the code logic.\r
 ///\r
 typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
@@ -1731,26 +1758,26 @@ typedef struct {
                                     BiosCharacteristics2;\r
   ///\r
   /// Inconsistent with specification here:  \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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// 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
   ///\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
+  /// 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
   ///\r
   UINT8                             BiosEmbeddedFirmwareMinorRelease;\r
 } EFI_MISC_BIOS_VENDOR_DATA;\r
@@ -1781,14 +1808,14 @@ typedef struct {
   EFI_MISC_SYSTEM_WAKEUP_TYPE       SystemWakeupType;\r
   ///\r
   /// Inconsistent with specification here:  \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
+  /// 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
   ///\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
+  /// 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
   ///\r
   STRING_REF                        SystemFamily;\r
 } EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
@@ -1873,7 +1900,7 @@ typedef enum {
 typedef struct {\r
   ///\r
   /// Inconsistent with specification here:  \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
+  /// 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
   /// Change it to "ChassisType" to pass build.\r
   ///\r
   UINT32                            ChassisType       :16;\r
@@ -2022,6 +2049,12 @@ typedef struct {
   EFI_MISC_PORT_CONNECTOR_TYPE      PortInternalConnectorType;\r
   EFI_MISC_PORT_CONNECTOR_TYPE      PortExternalConnectorType;\r
   EFI_MISC_PORT_TYPE                PortType;\r
   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
   EFI_MISC_PORT_DEVICE_PATH         PortPath;\r
 } EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;\r
 \r
@@ -2048,7 +2081,7 @@ typedef enum {
   EfiSlotTypeAgp                          = 0x0F,\r
   ///\r
   /// Inconsistent with specification here:  \r
   EfiSlotTypeAgp                          = 0x0F,\r
   ///\r
   /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, its naming should be EfiSlotTypeAgp2X\r
+  /// In MiscSubclass specification 0.9, its naming should be EfiSlotTypeAgp2X\r
   /// rather than EfiSlotTypeApg2X.\r
   ///\r
   EfiSlotTypeAgp2X                        = 0x10,\r
   /// rather than EfiSlotTypeApg2X.\r
   ///\r
   EfiSlotTypeAgp2X                        = 0x10,\r
@@ -2062,10 +2095,15 @@ typedef enum {
   EfiSlotTypePC98Card                     = 0xA4,\r
   ///\r
   /// Inconsistent with specification here:  \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
-  ///\r
-  EfiSlotTypePciExpress                   = 0xA5\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
+  EfiSlotTypePciExpressX1                 = 0xA6,\r
+  EfiSlotTypePciExpressX2                 = 0xA7,\r
+  EfiSlotTypePciExpressX4                 = 0xA8,\r
+  EfiSlotTypePciExpressX8                 = 0xA9,\r
+  EfiSlotTypePciExpressX16                = 0xAA\r
 } EFI_MISC_SLOT_TYPE;\r
 \r
 typedef enum {\r
 } EFI_MISC_SLOT_TYPE;\r
 \r
 typedef enum {\r
@@ -2075,7 +2113,19 @@ typedef enum {
   EfiSlotDataBusWidth16Bit      = 0x04,\r
   EfiSlotDataBusWidth32Bit      = 0x05,\r
   EfiSlotDataBusWidth64Bit      = 0x06,\r
   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
 } EFI_MISC_SLOT_DATA_BUS_WIDTH;\r
 \r
 typedef enum {\r
@@ -2143,7 +2193,7 @@ typedef struct {
   STRING_REF                        OnBoardDeviceDescription;\r
   ///\r
   /// Inconsistent with specification here:  \r
   STRING_REF                        OnBoardDeviceDescription;\r
   ///\r
   /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, the naming is OnBoardDeviceType.\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
   /// Keep it unchanged for backward compatibilty.\r
   ///\r
   EFI_MISC_ONBOARD_DEVICE_STATUS    OnBoardDeviceStatus;\r
@@ -2260,15 +2310,15 @@ typedef struct {
 //\r
 ///\r
 /// Inconsistent with specification here:  \r
 //\r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the naming is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER.\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
 /// 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
+/// 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
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef enum {  \r
@@ -2284,8 +2334,8 @@ typedef enum {
 \r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef struct {\r
@@ -2346,9 +2396,9 @@ typedef struct {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, it only mention the possible value of each field in\r
+/// The MiscSubclass specification 0.9 only mentions the possible value of each field in\r
 /// EFI_MISC_HARDWARE_SECURITY_SETTINGS. \r
 /// EFI_MISC_HARDWARE_SECURITY_SETTINGS. \r
-/// It's implementation-specific to simplify the code logic.\r
+/// It's implementation-specific in order to to simplify the code logic.\r
 ///\r
 typedef enum {\r
   EfiHardwareSecurityStatusDisabled       = 0,\r
 ///\r
 typedef enum {\r
   EfiHardwareSecurityStatusDisabled       = 0,\r
@@ -2425,8 +2475,8 @@ typedef struct {
 typedef struct {\r
   EFI_MISC_COOLING_DEVICE_TYPE      CoolingDeviceType;\r
   EFI_INTER_LINK_DATA               CoolingDeviceTemperatureLink;\r
 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
   UINT32                            CoolingDeviceOemDefined;\r
 } EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;\r
 \r
@@ -2445,18 +2495,24 @@ typedef struct {
   STRING_REF                        TemperatureProbeDescription;\r
   EFI_MISC_TEMPERATURE_PROBE_LOCATION\r
                                     TemperatureProbeLocation;\r
   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
   UINT32                            TemperatureProbeOemDefined;\r
 } EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;\r
 \r
@@ -2524,7 +2580,7 @@ typedef struct {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\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
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef enum {\r
@@ -2545,7 +2601,7 @@ typedef enum {
 typedef struct {\r
   ///\r
   /// Inconsistent with specification here:  \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
+  /// 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
   /// Keep it unchanged for backward compatibilty.\r
   ///\r
   EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
@@ -2601,10 +2657,16 @@ typedef struct {
   EFI_INTER_LINK_DATA               ManagementDeviceComponentLink;\r
   ///\r
   /// Inconsistent with specification here:  \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
+  /// 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
   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
 } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
 \r
 //\r
@@ -2634,12 +2696,17 @@ typedef struct {
 } EFI_MISC_IPMI_INTERFACE_TYPE_DATA;\r
 \r
 #define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER    0x0000001D\r
 } 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
 \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
+/// In MiscSubclass specification 0.9, the type of all fields are UINT32.\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef struct {\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef struct {\r
@@ -2654,7 +2721,7 @@ typedef struct {
 \r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef struct {\r
@@ -2679,8 +2746,8 @@ typedef struct {
 /// OEM Data Record - SMBIOS Type 0x80-0xFF\r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef struct {\r
@@ -2692,7 +2759,7 @@ typedef struct {
 typedef struct {\r
   ///\r
   /// Inconsistent with specification here:  \r
 typedef struct {\r
   ///\r
   /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR.\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
   /// Keep it unchanged for backward compatibilty.\r
   ///\r
   SMBIOS_STRUCTURE_HDR              Header;\r
@@ -2705,15 +2772,15 @@ typedef struct {
 /// Misc. System Event Log  - SMBIOS Type 15\r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 ///\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
+/// 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
 ///\r
 typedef struct {\r
   UINT16                            LogAreaLength;\r
@@ -2744,14 +2811,14 @@ typedef struct {
 /// Management Device Threshold Data Record - SMBIOS Type 36\r
 ///\r
 /// Inconsistent with specification here:  \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
+/// 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
 ///\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
+/// 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
 ///\r
 typedef struct {\r
   UINT16                            LowerThresNonCritical;\r
@@ -2791,10 +2858,12 @@ typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
                                                           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
                                                           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
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\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
 /// It is implementation-specific to simplify the code logic.\r
 ///\r
 typedef union {\r
@@ -2836,7 +2905,7 @@ typedef union {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MemSubclass spec 0.9, the following data structures are NOT defined.\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
 /// It is implementation-specific to simplify the code logic.\r
 ///\r
 typedef struct {\r
@@ -2847,13 +2916,13 @@ typedef struct {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.\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
 /// 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
+/// 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
 /// But value is meaningful, -1 means Not Applicable.\r
 ///\r
 #define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF\r