X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=IntelFrameworkPkg%2FInclude%2FGuid%2FDataHubRecords.h;h=d898953ea444f7882df0cbdf4a69514ebf377d3a;hb=639a76d1912f8eb07e26b1a8f2393b682be65f2c;hp=cda861a4fbc73e694c501bf825d19abfd4616953;hpb=ccd1862c8bff40b9260993197dae040d204866f7;p=mirror_edk2.git diff --git a/IntelFrameworkPkg/Include/Guid/DataHubRecords.h b/IntelFrameworkPkg/Include/Guid/DataHubRecords.h index cda861a4fb..d898953ea4 100644 --- a/IntelFrameworkPkg/Include/Guid/DataHubRecords.h +++ b/IntelFrameworkPkg/Include/Guid/DataHubRecords.h @@ -1,23 +1,28 @@ /** @file - DataHubRecord.h includes all data hub sub class GUID definitions. + DataHubRecord.h includes all data hub subclass GUID definitions. This file includes all data hub sub class defitions from - Cache subclass spec 0.9, DataHub SubClass spec 0.9, Memory SubClass Spec 0.9, - Processor Subclass spec 0.9, and Misc SubClass spec 0.9. + Cache subclass specification 0.9, DataHub SubClass specification 0.9, Memory SubClass Spec 0.9, + Processor Subclass specification 0.9, and Misc SubClass specification 0.9. - Copyright (c) 2007 - 2009, Intel Corporation - All rights reserved. This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.
+This program and the accompanying materials are licensed and made available under +the terms and conditions of the BSD License that accompanies this distribution. +The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php. + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #ifndef _DATAHUB_RECORDS_GUID_H_ #define _DATAHUB_RECORDS_GUID_H_ +// +// The include is required to retrieve type EFI_EXP_BASE10_DATA +// +#include + #define EFI_PROCESSOR_SUBCLASS_GUID \ { 0x26fdeb7e, 0xb8af, 0x4ccf, {0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7 } } @@ -46,7 +51,7 @@ extern EFI_GUID gEfiMiscSubClassGuid; /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the value is 0x0100. +/// In ProcSubclass specification 0.9, the value is 0x0100. /// Keep it unchanged from the perspective of binary consistency. /// #define EFI_PROCESSOR_SUBCLASS_VERSION 0x00010000 @@ -141,7 +146,7 @@ typedef struct _FLOOPY_CONN_DEVICE_PATH { /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined. +/// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. /// It's implementation-specific to simplify the code logic. /// typedef union _EFI_MISC_PORT_DEVICE_PATH { @@ -162,7 +167,7 @@ typedef union _EFI_MISC_PORT_DEVICE_PATH { /// String Token Definition /// /// Inconsistent with specification here: -/// The macro isn't defined by any spec. +/// The macro isn't defined by any specification. /// Keep it unchanged for backward compatibility. /// #define EFI_STRING_TOKEN UINT16 @@ -251,21 +256,6 @@ typedef struct { UINT16 Exponent; } EFI_EXP_BASE2_DATA; -/// -/// This macro provides a calculation for base-2 representations. Value and Exponent are each -/// INT16. It is 16 bits wide and is unsigned to mean nonnegative values. -/// -typedef struct { - /// - /// The INT16 number by which to multiply the base-2 representation. - /// - INT16 Value; - /// - /// The INT16 number by which to raise the base-2 calculation. - /// - INT16 Exponent; -} EFI_EXP_BASE10_DATA; - typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA; typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA; typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA; @@ -279,7 +269,7 @@ typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA; /// that the processor/driver supports automatic frequency selection. /// /// Inconsistent with specification here: -/// According to MiscSubclass 0.9 spec, it should be a pointer since it refers to a list of frequencies. +/// According to MiscSubclass 0.9 specification, it should be a pointer since it refers to a list of frequencies. /// typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA; @@ -297,6 +287,7 @@ typedef STRING_REF EFI_PROCESSOR_VERSION_DATA; typedef STRING_REF EFI_PROCESSOR_MANUFACTURER_DATA; typedef STRING_REF EFI_PROCESSOR_SERIAL_NUMBER_DATA; typedef STRING_REF EFI_PROCESSOR_ASSET_TAG_DATA; +typedef STRING_REF EFI_PROCESSOR_PART_NUMBER_DATA; typedef struct { UINT32 ProcessorSteppingId:4; @@ -312,7 +303,7 @@ typedef struct { /// /// Inconsistent with specification here: -/// The name of third field in ProcSubClass spec0.9 is LogicalProcessorCount. +/// The name of third field in ProcSubClass specification 0.9 is LogicalProcessorCount. /// Keep it unchanged for backward compatibility. /// typedef struct { @@ -462,7 +453,7 @@ typedef enum { EfiProcessorFamilyUltraSparcIII = 0x57, /// /// Inconsistent with specification here: - /// This field in ProcSubClass spec 0.9 is defined as EfiProcessorFamilyUltraSparcIIi. + /// This field in ProcSubClass specification 0.9 is defined as EfiProcessorFamilyUltraSparcIIi. /// Change it to EfiProcessorFamilyUltraSparcIIIi to avoid build break. /// EfiProcessorFamilyUltraSparcIIIi = 0x58, @@ -504,37 +495,37 @@ typedef enum { EfiProcessorFamilyIntelItanium2 = 0xB8, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyIntelPentiumM = 0xB9, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyIntelCeleronD = 0xBA, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyIntelPentiumD = 0xBB, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyIntelPentiumEx = 0xBC, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyIntelCoreSolo = 0xBD, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyReserved = 0xBE, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyIntelCore2 = 0xBF, EfiProcessorFamilyIBM390 = 0xC8, @@ -542,48 +533,61 @@ typedef enum { EfiProcessorFamilyG5 = 0xCA, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyG6 = 0xCB, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyzArchitectur = 0xCC, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyViaC7M = 0xD2, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyViaC7D = 0xD3, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyViaC7 = 0xD4, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyViaEden = 0xD5, EfiProcessorFamilyi860 = 0xFA, EfiProcessorFamilyi960 = 0xFB, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyIndicatorFamily2 = 0xFE, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorFamilyReserved1 = 0xFF } EFI_PROCESSOR_FAMILY_DATA; +typedef enum { + EfiProcessorFamilySh3 = 0x104, + EfiProcessorFamilySh4 = 0x105, + EfiProcessorFamilyArm = 0x118, + EfiProcessorFamilyStrongArm = 0x119, + EfiProcessorFamily6x86 = 0x12C, + EfiProcessorFamilyMediaGx = 0x12D, + EfiProcessorFamilyMii = 0x12E, + EfiProcessorFamilyWinChip = 0x140, + EfiProcessorFamilyDsp = 0x15E, + EfiProcessorFamilyVideo = 0x1F4 +} EFI_PROCESSOR_FAMILY2_DATA; + /// /// This data record refers to the core voltage of the processor being defined. The unit of measurement /// of this data record is in volts. @@ -671,22 +675,22 @@ typedef enum { EfiProcessorSocket940 = 0x11, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorSocket939 = 0x12, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorSocketmPGA604 = 0x13, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorSocketLGA771 = 0x14, /// /// Inconsistent with specification here: - /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiProcessorSocketLGA775 = 0x15 @@ -696,7 +700,7 @@ typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA; /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA. +/// In ProcSubclass specification 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA. /// Keep it unchanged for backward compatibilty. /// typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA; @@ -705,7 +709,7 @@ typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA; /// This data record refers to the health status of the processor. /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA. +/// In ProcSubclass specification 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA. /// Keep it unchanged for backward compatibilty. /// typedef enum { @@ -721,10 +725,21 @@ typedef enum { /// typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA; +typedef UINT8 EFI_PROCESSOR_CORE_COUNT_DATA; +typedef UINT8 EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA; +typedef UINT8 EFI_PROCESSOR_THREAD_COUNT_DATA; + +typedef struct { + UINT16 Reserved :1; + UINT16 Unknown :1; + UINT16 Capable64Bit :1; + UINT16 Reserved2 :13; +} EFI_PROCESSOR_CHARACTERISTICS_DATA; + /// /// Inconsistent with specification here: -/// In ProcSubclass spec 0.9, the enumeration type data structure is NOT defined. -/// The equivalent in spec is +/// In ProcSubclass specification 0.9, the enumeration type data structure is NOT defined. +/// The equivalent in specification is /// #define EFI_PROCESSOR_FREQUENCY_RECORD_NUMBER 0x00000001 /// #define EFI_PROCESSOR_BUS_FREQUENCY_RECORD_NUMBER 0x00000002 /// #define EFI_PROCESSOR_VERSION_RECORD_NUMBER 0x00000003 @@ -775,12 +790,18 @@ typedef enum { ProcessorPackageNumberRecordType = 21, ProcessorCoreFrequencyListRecordType = 22, ProcessorFsbFrequencyListRecordType = 23, - ProcessorHealthStatusRecordType = 24 + ProcessorHealthStatusRecordType = 24, + ProcessorCoreCountRecordType = 25, + ProcessorEnabledCoreCountRecordType = 26, + ProcessorThreadCountRecordType = 27, + ProcessorCharacteristicsRecordType = 28, + ProcessorFamily2RecordType = 29, + ProcessorPartNumberRecordType = 30, } EFI_CPU_VARIABLE_RECORD_TYPE; /// /// Inconsistent with specification here: -/// In ProcSubclass spec 0.9, the union type data structure is NOT defined. +/// In ProcSubclass specification 0.9, the union type data structure is NOT defined. /// It's implementation-specific to simplify the code logic. /// typedef union { @@ -805,8 +826,14 @@ typedef union { EFI_PROCESSOR_SOCKET_TYPE_DATA ProcessorSocketType; EFI_PROCESSOR_SOCKET_NAME_DATA ProcessorSocketName; EFI_PROCESSOR_ASSET_TAG_DATA ProcessorAssetTag; + EFI_PROCESSOR_PART_NUMBER_DATA ProcessorPartNumber; EFI_PROCESSOR_HEALTH_STATUS ProcessorHealthStatus; EFI_PROCESSOR_PACKAGE_NUMBER_DATA ProcessorPackageNumber; + EFI_PROCESSOR_CORE_COUNT_DATA ProcessorCoreCount; + EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA ProcessorEnabledCoreCount; + EFI_PROCESSOR_THREAD_COUNT_DATA ProcessorThreadCount; + EFI_PROCESSOR_CHARACTERISTICS_DATA ProcessorCharacteristics; + EFI_PROCESSOR_FAMILY2_DATA ProcessorFamily2; } EFI_CPU_VARIABLE_RECORD; typedef struct { @@ -819,7 +846,7 @@ typedef struct { typedef EFI_EXP_BASE2_DATA EFI_CACHE_SIZE_DATA; /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA. +/// In CacheSubclass specification 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA. /// Keep it unchanged for backward compatibilty. /// typedef EFI_EXP_BASE2_DATA EFI_MAXIMUM_CACHE_SIZE_DATA; @@ -869,8 +896,8 @@ typedef enum { /// /// Inconsistent with specification here: -/// In CacheSubclass 0.9 spec. It defines the field type as UINT16. -/// In fact, it should be UINT32 type since it refers to a 32bit width data. +/// In CacheSubclass 0.9 specification. It defines the field type as UINT16. +/// In fact, it should be UINT32 type because it refers to a 32bit width data. /// typedef struct { UINT32 Level :3; @@ -909,7 +936,22 @@ typedef enum { } EFI_CACHE_OPERATIONAL_MODE; - +/// +/// Inconsistent with specification here: +/// In CacheSubclass specification 0.9, the enumeration type data structure is NOT defined. +/// The equivalent in specification is +/// #define EFI_CACHE_SIZE_RECORD_NUMBER 0x00000001 +/// #define EFI_CACHE_MAXIMUM_SIZE_RECORD_NUMBER 0x00000002 +/// #define EFI_CACHE_SPEED_RECORD_NUMBER 0x00000003 +/// #define EFI_CACHE_SOCKET_RECORD_NUMBER 0x00000004 +/// #define EFI_CACHE_SRAM_SUPPORT_RECORD_NUMBER 0x00000005 +/// #define EFI_CACHE_SRAM_INSTALL_RECORD_NUMBER 0x00000006 +/// #define EFI_CACHE_ERROR_SUPPORT_RECORD_NUMBER 0x00000007 +/// #define EFI_CACHE_TYPE_RECORD_NUMBER 0x00000008 +/// #define EFI_CACHE_ASSOCIATIVITY_RECORD_NUMBER 0x00000009 +/// #define EFI_CACHE_CONFIGURATION_RECORD_NUMBER 0x0000000A +/// Keep the definition unchanged for backward compatibility. +/// typedef enum { CacheSizeRecordType = 1, MaximumSizeCacheRecordType = 2, @@ -925,7 +967,7 @@ typedef enum { /// /// Inconsistent with specification here: -/// In CacheSubclass spec0.9, the union type data structure is NOT defined. +/// In CacheSubclass specification 0.9, the union type data structure is NOT defined. /// It's implementation-specific to simplify the code logic. /// typedef union { @@ -1092,7 +1134,7 @@ typedef enum _EFI_MEMORY_FORM_FACTOR { EfiMemoryFormFactorSrimm = 0x0E, /// /// Inconsistent with specification here: - /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiMemoryFormFactorFbDimm = 0x0F } EFI_MEMORY_FORM_FACTOR; @@ -1118,12 +1160,12 @@ typedef enum _EFI_MEMORY_ARRAY_TYPE { EfiMemoryTypeDdr = 0x12, /// /// Inconsistent with specification here: - /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiMemoryTypeDdr2 = 0x13, /// /// Inconsistent with specification here: - /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiMemoryTypeDdr2FbDimm = 0x14 } EFI_MEMORY_ARRAY_TYPE; @@ -1154,7 +1196,7 @@ typedef enum { EfiMemoryStateDisabled = 5, /// /// Inconsistent with specification here: - /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec. + /// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. /// EfiMemoryStatePartial = 6 } EFI_MEMORY_STATE; @@ -1235,7 +1277,7 @@ typedef struct { /// The memory speed in megahertz (MHz). A value of 0x00 denotes that /// the speed is unknown. /// Inconsistent with specification here: - /// In MemSubclass spec 0.9, the naming is MemoryTypeSpeed. + /// In MemSubclass specification 0.9, the naming is MemoryTypeSpeed. /// Keep it unchanged for backward compatibilty. /// EFI_EXP_BASE10_DATA MemorySpeed; @@ -1384,14 +1426,14 @@ typedef struct { // /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 5. /// #define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008 /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 5. /// typedef enum { @@ -1407,7 +1449,7 @@ typedef enum { /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 5. /// typedef struct { @@ -1422,7 +1464,7 @@ typedef struct { /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 5. /// typedef enum { @@ -1437,7 +1479,7 @@ typedef enum { /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 5. /// typedef struct { @@ -1451,7 +1493,7 @@ typedef struct { /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 5. /// typedef struct { @@ -1471,7 +1513,7 @@ typedef struct { /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 5. /// typedef struct { @@ -1486,7 +1528,7 @@ typedef struct { /// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 5. /// typedef struct { @@ -1505,7 +1547,7 @@ typedef struct { /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 5. /// typedef struct { @@ -1526,13 +1568,13 @@ typedef struct { /// Memory. Error Information - SMBIOS Type 18 /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 18. /// #define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009 /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 18. /// typedef enum { @@ -1553,7 +1595,7 @@ typedef enum { } EFI_MEMORY_ERROR_TYPE; /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 18. /// typedef enum { @@ -1564,7 +1606,7 @@ typedef enum { } EFI_MEMORY_ERROR_GRANULARITY_TYPE; /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 18. /// typedef enum { @@ -1576,7 +1618,7 @@ typedef enum { } EFI_MEMORY_ERROR_OPERATION_TYPE; /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 18. /// typedef struct { @@ -1590,17 +1632,17 @@ typedef struct { } EFI_MEMORY_32BIT_ERROR_INFORMATION; /// -/// Memory. Error Information - SMBIOS Type 33 +/// Memory. Error Information - SMBIOS Type 33. /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 33. /// #define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It's introduced for SmBios 2.6 type 33. /// typedef struct { @@ -1615,7 +1657,7 @@ typedef struct { /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It is implementation-specific to simplify the code logic. /// typedef union _EFI_MEMORY_SUBCLASS_RECORDS { @@ -1716,26 +1758,26 @@ typedef struct { BiosCharacteristics2; /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined. - /// It's introduced for SmBios 2.6 spec type 0. + /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. + /// It's introduced for SmBios 2.6 specification type 0. /// UINT8 BiosMajorRelease; /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined. - /// It's introduced for SmBios 2.6 spec type 0. + /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. + /// It's introduced for SmBios 2.6 specification type 0. /// UINT8 BiosMinorRelease; /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined. - /// It's introduced for SmBios 2.6 spec type 0. + /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. + /// It's introduced for SmBios 2.6 specification type 0. /// UINT8 BiosEmbeddedFirmwareMajorRelease; /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined. - /// It's introduced for SmBios 2.6 spec type 0. + /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. + /// It's introduced for SmBios 2.6 specification type 0. /// UINT8 BiosEmbeddedFirmwareMinorRelease; } EFI_MISC_BIOS_VENDOR_DATA; @@ -1766,14 +1808,14 @@ typedef struct { EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType; /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined. - /// It's introduced for SmBios 2.6 spec type 1. + /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. + /// It's introduced for SmBios 2.6 specification type 1. /// STRING_REF SystemSKUNumber; /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined. - /// It's introduced for SmBios 2.6 spec type 1. + /// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. + /// It's introduced for SmBios 2.6 specification type 1. /// STRING_REF SystemFamily; } EFI_MISC_SYSTEM_MANUFACTURER_DATA; @@ -1858,7 +1900,7 @@ typedef enum { typedef struct { /// /// Inconsistent with specification here: - /// In MiscSubclass 0.9 spec. It have a wrong field name "EFI_MISC_CHASSIS_TYPE". + /// In MiscSubclass 0.9 specification, it has the incorrect field name "EFI_MISC_CHASSIS_TYPE". /// Change it to "ChassisType" to pass build. /// UINT32 ChassisType :16; @@ -2007,6 +2049,12 @@ typedef struct { EFI_MISC_PORT_CONNECTOR_TYPE PortInternalConnectorType; EFI_MISC_PORT_CONNECTOR_TYPE PortExternalConnectorType; EFI_MISC_PORT_TYPE PortType; + /// + /// Inconsistent with specification here: + /// In MiscSubclass specification 0.9, this type of field is defined as EFI_DEVICE_PATH_PROTOCOL, + /// which causes the implementation some complexity. Keep it unchanged for backward + /// compatibility. + /// EFI_MISC_PORT_DEVICE_PATH PortPath; } EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA; @@ -2033,7 +2081,7 @@ typedef enum { EfiSlotTypeAgp = 0x0F, /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, its naming should be EfiSlotTypeAgp2X + /// In MiscSubclass specification 0.9, its naming should be EfiSlotTypeAgp2X /// rather than EfiSlotTypeApg2X. /// EfiSlotTypeAgp2X = 0x10, @@ -2047,10 +2095,15 @@ typedef enum { EfiSlotTypePC98Card = 0xA4, /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, this field isn't defined. - /// It's introduced for SmBios 2.6 spec type 9. - /// - EfiSlotTypePciExpress = 0xA5 + /// In MiscSubclass specification 0.9, these fields aren't defined. + /// They're introduced for SmBios 2.6 specification type 9. + /// + EfiSlotTypePciExpress = 0xA5, + EfiSlotTypePciExpressX1 = 0xA6, + EfiSlotTypePciExpressX2 = 0xA7, + EfiSlotTypePciExpressX4 = 0xA8, + EfiSlotTypePciExpressX8 = 0xA9, + EfiSlotTypePciExpressX16 = 0xAA } EFI_MISC_SLOT_TYPE; typedef enum { @@ -2060,7 +2113,19 @@ typedef enum { EfiSlotDataBusWidth16Bit = 0x04, EfiSlotDataBusWidth32Bit = 0x05, EfiSlotDataBusWidth64Bit = 0x06, - EfiSlotDataBusWidth128Bit = 0x07 + EfiSlotDataBusWidth128Bit = 0x07, + /// + /// Inconsistent with specification here: + /// In MiscSubclass specification 0.9, these fields aren't defined. + /// They're introduced for SmBios 2.6 specification type 9. + /// + EfiSlotDataBusWidth1xOrx1 = 0x8, + EfiSlotDataBusWidth2xOrx2 = 0x9, + EfiSlotDataBusWidth4xOrx4 = 0xA, + EfiSlotDataBusWidth8xOrx8 = 0xB, + EfiSlotDataBusWidth12xOrx12 = 0xC, + EfiSlotDataBusWidth16xOrx16 = 0xD, + EfiSlotDataBusWidth32xOrx32 = 0xE } EFI_MISC_SLOT_DATA_BUS_WIDTH; typedef enum { @@ -2128,7 +2193,7 @@ typedef struct { STRING_REF OnBoardDeviceDescription; /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, the naming is OnBoardDeviceType. + /// In MiscSubclass specification 0.9, the name is OnBoardDeviceType. /// Keep it unchanged for backward compatibilty. /// EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus; @@ -2245,15 +2310,15 @@ typedef struct { // /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the naming is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER. +/// In MiscSubclass specification 0.9, the name is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER. /// Keep it unchanged for backward compatibilty. /// #define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010 /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY. -/// And all field namings are also different with spec. +/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY. +/// And all field namings are also different with specification. /// Keep it unchanged for backward compatibilty. /// typedef enum { @@ -2269,8 +2334,8 @@ typedef enum { /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA. -/// And the name and the order of the fields are also different with spec. +/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA. +/// Also, the name and the order of the fields vary with specifications. /// Keep it unchanged for backward compatibilty. /// typedef struct { @@ -2331,9 +2396,9 @@ typedef struct { /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, it only mention the possible value of each field in +/// The MiscSubclass specification 0.9 only mentions the possible value of each field in /// EFI_MISC_HARDWARE_SECURITY_SETTINGS. -/// It's implementation-specific to simplify the code logic. +/// It's implementation-specific in order to to simplify the code logic. /// typedef enum { EfiHardwareSecurityStatusDisabled = 0, @@ -2410,8 +2475,8 @@ typedef struct { typedef struct { EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType; EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink; - UINT16 CoolingDeviceUnitGroup; - EFI_EXP_BASE10_DATA CoolingDeviceNominalSpeed; + UINT8 CoolingDeviceUnitGroup; + UINT16 CoolingDeviceNominalSpeed; UINT32 CoolingDeviceOemDefined; } EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA; @@ -2430,18 +2495,24 @@ typedef struct { STRING_REF TemperatureProbeDescription; EFI_MISC_TEMPERATURE_PROBE_LOCATION TemperatureProbeLocation; - EFI_EXP_BASE10_DATA TemperatureProbeMaximumValue; - EFI_EXP_BASE10_DATA TemperatureProbeMinimumValue; - EFI_EXP_BASE10_DATA TemperatureProbeResolution; - EFI_EXP_BASE10_DATA TemperatureProbeTolerance; - EFI_EXP_BASE10_DATA TemperatureProbeAccuracy; - EFI_EXP_BASE10_DATA TemperatureProbeNominalValue; - EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold; - EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold; - EFI_EXP_BASE10_DATA MDLowerCriticalThreshold; - EFI_EXP_BASE10_DATA MDUpperCriticalThreshold; - EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold; - EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold; + /// + /// Inconsistent with specification here: + /// MiscSubclass 0.9 specification defines the fields type as EFI_EXP_BASE10_DATA. + /// In fact, they should be UINT16 type because they refer to 16bit width data. + /// Keeping this inconsistency for backward compatibility. + /// + UINT16 TemperatureProbeMaximumValue; + UINT16 TemperatureProbeMinimumValue; + UINT16 TemperatureProbeResolution; + UINT16 TemperatureProbeTolerance; + UINT16 TemperatureProbeAccuracy; + UINT16 TemperatureProbeNominalValue; + UINT16 MDLowerNoncriticalThreshold; + UINT16 MDUpperNoncriticalThreshold; + UINT16 MDLowerCriticalThreshold; + UINT16 MDUpperCriticalThreshold; + UINT16 MDLowerNonrecoverableThreshold; + UINT16 MDUpperNonrecoverableThreshold; UINT32 TemperatureProbeOemDefined; } EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA; @@ -2509,7 +2580,7 @@ typedef struct { /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE. +/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE. /// Keep it unchanged for backward compatibilty. /// typedef enum { @@ -2530,7 +2601,7 @@ typedef enum { typedef struct { /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE. + /// In MiscSubclass specification 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE. /// Keep it unchanged for backward compatibilty. /// EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus; @@ -2586,10 +2657,16 @@ typedef struct { EFI_INTER_LINK_DATA ManagementDeviceComponentLink; /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, this field is NOT defined. - /// It's introduced for SmBios 2.6 spec type 35. + /// In MiscSubclass specification 0.9, this field is NOT defined. + /// It's introduced for SmBios 2.6 specification type 35. /// EFI_INTER_LINK_DATA ManagementDeviceThresholdLink; + /// + /// Inconsistent with specification here: + /// In MiscSubclass specification 0.9, this field is NOT defined. + /// It's implementation-specific to simplify the code logic. + /// + UINT8 ComponentType; } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA; // @@ -2619,12 +2696,17 @@ typedef struct { } EFI_MISC_IPMI_INTERFACE_TYPE_DATA; #define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D +/// +/// The definition above is *NOT* defined in MiscSubclass specifications 0.9. +/// It's defined for backward compatibility. +/// +#define EFI_MISC_IPMI_INTERFACE_TYPE_DATA_RECORD_NUMBER EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER /// /// System Power supply Record - SMBIOS Type 39 /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the type of all fields are UINT32. +/// In MiscSubclass specification 0.9, the type of all fields are UINT32. /// Keep it unchanged for backward compatibilty. /// typedef struct { @@ -2639,7 +2721,7 @@ typedef struct { /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the field name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA. +/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA. /// Keep it unchanged for backward compatibilty. /// typedef struct { @@ -2664,8 +2746,8 @@ typedef struct { /// OEM Data Record - SMBIOS Type 0x80-0xFF /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR. -/// Due to this structure is commonly used by vendor to construct SmBios type 0x80~0xFF table, +/// In MiscSubclass specification 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR. +/// Due to this, the structure is commonly used by vendors to construct SmBios type 0x80~0xFF table, /// Keep it unchanged for backward compatibilty. /// typedef struct { @@ -2677,7 +2759,7 @@ typedef struct { typedef struct { /// /// Inconsistent with specification here: - /// In MiscSubclass spec 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR. + /// In MiscSubclass specification 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR. /// Keep it unchanged for backward compatibilty. /// SMBIOS_STRUCTURE_HDR Header; @@ -2690,15 +2772,15 @@ typedef struct { /// Misc. System Event Log - SMBIOS Type 15 /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the following data structures are NOT defined. -/// It's introduced for SmBios 2.6 spec type 15. +/// In MiscSubclass specification 0.9, the following data structures are NOT defined. +/// It's introduced for SmBios 2.6 specification type 15. /// #define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020 /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the following data structures are NOT defined. -/// It's introduced for SmBios 2.6 spec type 15. +/// In MiscSubclass specification 0.9, the following data structures are NOT defined. +/// It's introduced for SmBios 2.6 specification type 15. /// typedef struct { UINT16 LogAreaLength; @@ -2729,14 +2811,14 @@ typedef struct { /// Management Device Threshold Data Record - SMBIOS Type 36 /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the following data structures are NOT defined. -/// It's introduced for SmBios 2.6 spec type 36. +/// In MiscSubclass specification 0.9, the following data structures are NOT defined. +/// It's introduced for SmBios 2.6 specification type 36. /// #define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021 /// /// Inconsistent with specification here: -/// In MiscSubclass spec 0.9, the following data structures are NOT defined. -/// It's introduced for SmBios 2.6 spec type 36. +/// In MiscSubclass specification 0.9, the following data structures are NOT defined. +/// It's introduced for SmBios 2.6 specification type 36. /// typedef struct { UINT16 LowerThresNonCritical; @@ -2776,10 +2858,12 @@ typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION; typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION; typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION; +typedef EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA + EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION; /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It is implementation-specific to simplify the code logic. /// typedef union { @@ -2821,7 +2905,7 @@ typedef union { /// /// Inconsistent with specification here: -/// In MemSubclass spec 0.9, the following data structures are NOT defined. +/// In MemSubclass specification 0.9, the following data structures are NOT defined. /// It is implementation-specific to simplify the code logic. /// typedef struct { @@ -2832,13 +2916,13 @@ typedef struct { /// /// Inconsistent with specification here: -/// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined. +/// In DataHubSubclass specification 0.9 page 16, the following symbol is NOT defined. /// But value is meaningful, 0 means Reserved. /// #define EFI_SUBCLASS_INSTANCE_RESERVED 0 /// /// Inconsistent with specification here: -/// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined. +/// In DataHubSubclass specification 0.9 page 16, the following symbol is NOT defined. /// But value is meaningful, -1 means Not Applicable. /// #define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF