]> 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 a7cc2f7682008cf660af067ee188a41e4753821b..d898953ea444f7882df0cbdf4a69514ebf377d3a 100644 (file)
@@ -1,18 +1,18 @@
 /** @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
+  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
-  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
@@ -51,7 +51,7 @@ extern  EFI_GUID  gEfiMiscSubClassGuid;
 \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
@@ -146,7 +146,7 @@ typedef struct _FLOOPY_CONN_DEVICE_PATH {
 \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
@@ -167,7 +167,7 @@ typedef union _EFI_MISC_PORT_DEVICE_PATH {
 /// 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
@@ -269,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
-/// 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
@@ -287,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_PART_NUMBER_DATA;\r
 \r
 typedef struct {\r
   UINT32                            ProcessorSteppingId:4;\r
@@ -302,7 +303,7 @@ typedef struct {
 \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
@@ -452,7 +453,7 @@ typedef enum {
   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
@@ -494,37 +495,37 @@ typedef enum {
   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
-  /// 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
-  /// 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
-  /// 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
-  /// 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
-  /// 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
-  /// 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
@@ -532,48 +533,61 @@ typedef enum {
   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
-  /// 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
-  /// 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
-  /// 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
-  /// 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
-  /// 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
-  /// 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
-  /// 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
+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
@@ -661,22 +675,22 @@ typedef enum {
   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
-  /// 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
-  /// 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
-  /// 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
@@ -686,7 +700,7 @@ typedef STRING_REF                  EFI_PROCESSOR_SOCKET_NAME_DATA;
 \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
@@ -695,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
-/// 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
@@ -711,10 +725,21 @@ typedef enum {
 ///\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
@@ -765,12 +790,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
+/// 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
@@ -795,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_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
@@ -809,7 +846,7 @@ typedef struct {
 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
@@ -859,8 +896,8 @@ typedef enum {
 \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
@@ -901,8 +938,8 @@ 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
@@ -930,7 +967,7 @@ typedef enum {
 \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
@@ -1097,7 +1134,7 @@ typedef enum _EFI_MEMORY_FORM_FACTOR {
   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
@@ -1123,12 +1160,12 @@ typedef enum _EFI_MEMORY_ARRAY_TYPE {
   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
-  /// 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
@@ -1159,7 +1196,7 @@ typedef enum {
   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
@@ -1240,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
-       /// 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
@@ -1389,14 +1426,14 @@ typedef struct {
 //\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
-/// 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
@@ -1412,7 +1449,7 @@ typedef enum {
 \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
@@ -1427,7 +1464,7 @@ typedef struct {
 \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
@@ -1442,7 +1479,7 @@ typedef enum {
 \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
@@ -1456,7 +1493,7 @@ typedef struct {
 \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
@@ -1476,7 +1513,7 @@ typedef struct {
 \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
@@ -1491,7 +1528,7 @@ typedef struct {
 /// 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
@@ -1510,7 +1547,7 @@ typedef struct {
 \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
@@ -1531,13 +1568,13 @@ typedef struct {
 /// 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
-/// 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
@@ -1558,7 +1595,7 @@ typedef enum {
 } 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
@@ -1569,7 +1606,7 @@ typedef enum {
 } 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
@@ -1581,7 +1618,7 @@ typedef enum {
 } 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
@@ -1595,17 +1632,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
+/// 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
+/// 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
@@ -1620,7 +1657,7 @@ typedef struct {
 \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
@@ -1721,26 +1758,26 @@ typedef struct {
                                     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
-  /// 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
-  /// 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
-  /// 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
@@ -1771,14 +1808,14 @@ typedef struct {
   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
-  /// 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
@@ -1863,7 +1900,7 @@ typedef enum {
 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
@@ -2012,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
+  ///\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
@@ -2038,7 +2081,7 @@ typedef enum {
   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
@@ -2052,10 +2095,15 @@ typedef enum {
   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
@@ -2065,7 +2113,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
@@ -2133,7 +2193,7 @@ typedef struct {
   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
@@ -2250,15 +2310,15 @@ typedef struct {
 //\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
-/// 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
@@ -2274,8 +2334,8 @@ typedef enum {
 \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
@@ -2336,9 +2396,9 @@ typedef struct {
 \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
-/// 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
@@ -2415,8 +2475,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
@@ -2435,18 +2495,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
@@ -2514,7 +2580,7 @@ typedef struct {
 \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
@@ -2535,7 +2601,7 @@ typedef enum {
 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
@@ -2591,10 +2657,16 @@ typedef struct {
   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
+  /// 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
@@ -2624,12 +2696,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
+/// In MiscSubclass specification 0.9, the type of all fields are UINT32.\r
 /// Keep it unchanged for backward compatibilty.\r
 ///\r
 typedef struct {\r
@@ -2644,7 +2721,7 @@ typedef struct {
 \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
@@ -2669,8 +2746,8 @@ typedef struct {
 /// 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
@@ -2682,7 +2759,7 @@ typedef struct {
 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
@@ -2695,15 +2772,15 @@ typedef struct {
 /// 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
-/// 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
@@ -2734,14 +2811,14 @@ typedef struct {
 /// 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
-/// 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
@@ -2781,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
+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
+/// 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
@@ -2826,7 +2905,7 @@ typedef union {
 \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
@@ -2837,13 +2916,13 @@ typedef struct {
 \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
-/// 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