+++ /dev/null
-##\r
-# This file is used to document mismatches between Intel Platform Innovation Framework specification\r
-# (http://www.intel.com/technology/framework/spec.htm) and data structures defind at IntelFrameworkPkg\r
-# package in EdkII Open Source Project (https://github.com/tianocore/edk2/tree/master/IntelFrameworkPkg)\r
-##\r
-\r
-##\r
-# The general consideration about keeping the mismatches in EdkII:\r
-# 1. Some definitions defined in Framework specification may bring a little complexity on implementation. EdkII\r
-# makes changes on them from the view of code development.\r
-# 2. Some definitions are NOT defined in Framework specification, but introduced in Edk. EdkII chooses to keep\r
-# them for backward-compatibility.\r
-# 3. The name of some definitions are NOT consistent with Framework specification. If the name doesn't bring\r
-# misunderstanding literally, EdkII chooses to keep them for backward-compatibility.\r
-# 4. Some defintitions don't exactly match Framework specification, some new field members are introduced in EdkII\r
-# to reflect the latest industry standard.\r
-#\r
-# Note:\r
-# The IntelFrameworkPkg contains Framework specification contents that were not adopted by UEFI/PI, and names may be\r
-# changed (such as adding "FRAMEWORK_") to avoid name collisions with approved UEFI/PI specifications.\r
-##\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for DataHubSubclass Specification (Version 0.90)\r
-##\r
- 1. Guid/DataHubRecords.h\r
- #define EFI_STRING_TOKEN UINT16\r
-\r
- This macro named "EFI_STRING_TOKEN" is *NOT* defined in Framework specification. Keeping this inconsistency\r
- for backward compatibility.\r
-\r
- 2. Guid/DataHubRecords.h\r
- #pragma pack(1)\r
- typedef struct {\r
- UINT8 LastPciBus;\r
- } EFI_MISC_LAST_PCI_BUS_DATA;\r
- ...\r
- typedef struct {\r
- EFI_SUBCLASS_TYPE1_HEADER Header;\r
- EFI_MISC_SUBCLASS_RECORDS Record;\r
- } EFI_MISC_SUBCLASS_DRIVER_DATA;\r
- #pragma pack()\r
-\r
- Section "Alignment" in DataHubSubclass specification say "Fields in a data hub record should be aligned at their\r
- natural boundaries". But in EdkII, the data structures above are packed.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 3. Guid/DataHubRecords.h\r
- #define EFI_SUBCLASS_INSTANCE_RESERVED 0\r
- #define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF\r
-\r
- The symbols above are *NOT* defined in DataHubSubclass specification. But the values are defined and are meaningful.\r
- According to DataHubSubclass spec, value 0 means Reserved and -1 means Not Applicable. EdkII introduces these macros\r
- to faciliate user development.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for CacheSubclass Specification (Version 0.90)\r
-##\r
- 1. Guid/DataHubRecords.h\r
- typedef EFI_EXP_BASE2_DATA EFI_MAXIMUM_CACHE_SIZE_DATA;\r
-\r
- The definition named "EFI_MAXIMUM_CACHE_SIZE_DATA" is *NOT* consistent with CacheSubclass specification, in which\r
- the name should be EFI_CACHE_MAXIMUM_SIZE_DATA. Keeping this inconsistency for backward compatibility.\r
-\r
- 2. Guid/DataHubRecords.h\r
- typedef struct {\r
- UINT32 Level :3;\r
- UINT32 Socketed :1;\r
- UINT32 Reserved2 :1;\r
- UINT32 Location :2;\r
- UINT32 Enable :1;\r
- UINT32 OperationalMode :2;\r
- UINT32 Reserved1 :22;\r
- } EFI_CACHE_CONFIGURATION_DATA;\r
-\r
- The field type of the definition is *NOT* consistent with CacheSubclass specification. Specification defines\r
- them as UINT16, which is incorrect and should be UINT32 because the total width of bit-fields is 32bits width.\r
-\r
- 3. Guid/DataHubRecords.h\r
- typedef enum {\r
- CacheSizeRecordType = 1,\r
- MaximumSizeCacheRecordType = 2,\r
- CacheSpeedRecordType = 3,\r
- CacheSocketRecordType = 4,\r
- CacheSramTypeRecordType = 5,\r
- CacheInstalledSramTypeRecordType = 6,\r
- CacheErrorTypeRecordType = 7,\r
- CacheTypeRecordType = 8,\r
- CacheAssociativityRecordType = 9,\r
- CacheConfigRecordType = 10\r
- } EFI_CACHE_VARIABLE_RECORD_TYPE;\r
-\r
- The data structure and all enumeration fields are *NOT* defined in CacheSubclass specification, which only\r
- defines the following macros to specify the record number of the data record:\r
- #define EFI_CACHE_SIZE_RECORD_NUMBER 0x00000001\r
- #define EFI_CACHE_MAXIMUM_SIZE_RECORD_NUMBER 0x00000002\r
- #define EFI_CACHE_SPEED_RECORD_NUMBER 0x00000003\r
- #define EFI_CACHE_SOCKET_RECORD_NUMBER 0x00000004\r
- #define EFI_CACHE_SRAM_SUPPORT_RECORD_NUMBER 0x00000005\r
- #define EFI_CACHE_SRAM_INSTALL_RECORD_NUMBER 0x00000006\r
- #define EFI_CACHE_ERROR_SUPPORT_RECORD_NUMBER 0x00000007\r
- #define EFI_CACHE_TYPE_RECORD_NUMBER 0x00000008\r
- #define EFI_CACHE_ASSOCIATIVITY_RECORD_NUMBER 0x00000009\r
- #define EFI_CACHE_CONFIGURATION_RECORD_NUMBER 0x0000000A\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 4. Guid/DataHubRecords.h\r
- typedef union {\r
- EFI_CACHE_SIZE_DATA CacheSize;\r
- ...\r
- EFI_CACHE_ASSOCIATION_DATA CacheAssociation;\r
- } EFI_CACHE_VARIABLE_RECORD;\r
-\r
- typedef struct {\r
- EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;\r
- EFI_CACHE_VARIABLE_RECORD VariableRecord;\r
- } EFI_CACHE_DATA_RECORD;\r
-\r
- The definitions above are *NOT* defined in CacheSubclass specification. EdkII introduces them to simplify the\r
- code logic. Therefore developer doesn't need to allocate memory dynamically to construct variable length data record.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for ProcSubclass Specification (Version 0.90)\r
-##\r
- 1. Guid/DataHubRecords.h\r
- #define EFI_PROCESSOR_SUBCLASS_VERSION 0x00010000\r
-\r
- The value of the definition is *NOT* consistent with ProcSubclass specification, in which the value is 0x0100.\r
- Keeping this inconsistency from the perspective of binary consistency.\r
-\r
- 2. Guid/DataHubRecords.h\r
- typedef struct {\r
- UINT32 ProcessorBrandIndex :8;\r
- UINT32 ProcessorClflush :8;\r
- UINT32 ProcessorReserved :8;\r
- UINT32 ProcessorDfltApicId :8;\r
- } EFI_PROCESSOR_MISC_INFO;\r
-\r
- The definition is *NOT* consistent with ProcSubclass specification, in which the name of third field is defined\r
- as "LogicalProcessorCount" rather than "ProcessorReserved".\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 3. Guid/DataHubRecords.h\r
- typedef enum {\r
- ...\r
- EfiProcessorFamilyUltraSparcIIIi = 0x58,\r
- ...\r
- EfiProcessorFamilyIntelPentiumM = 0xB9,\r
- EfiProcessorFamilyIntelCeleronD = 0xBA,\r
- EfiProcessorFamilyIntelPentiumD = 0xBB,\r
- EfiProcessorFamilyIntelPentiumEx = 0xBC,\r
- EfiProcessorFamilyIntelCoreSolo = 0xBD,\r
- EfiProcessorFamilyReserved = 0xBE,\r
- EfiProcessorFamilyIntelCore2 = 0xBF,\r
- ...\r
- EfiProcessorFamilyG6 = 0xCB,\r
- EfiProcessorFamilyzArchitectur = 0xCC,\r
- EfiProcessorFamilyViaC7M = 0xD2,\r
- EfiProcessorFamilyViaC7D = 0xD3,\r
- EfiProcessorFamilyViaC7 = 0xD4,\r
- EfiProcessorFamilyViaEden = 0xD5,\r
- ...\r
- EfiProcessorFamilyIndicatorFamily2 = 0xFE,\r
- EfiProcessorFamilyReserved1 = 0xFF\r
- } EFI_PROCESSOR_FAMILY_DATA;\r
-\r
- a. In ProcSubclass specification 0.9, the field name whose value equals to 0x58 is "EfiProcessorFamilyUltraSparcIIi".\r
- Due to the name has been defined in previous field, changing it to "EfiProcessorFamilyUltraSparcIIIi" to avoid\r
- build break.\r
- b. The other fields listed here are *NOT* defined in ProcSubclass specification 0.9. They are introduced to\r
- support new processor family (type 4) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 4. Guid/DataHubRecords.h\r
- typedef enum {\r
- ...\r
- EfiProcessorSocket939 = 0x12,\r
- EfiProcessorSocketmPGA604 = 0x13,\r
- EfiProcessorSocketLGA771 = 0x14,\r
- EfiProcessorSocketLGA775 = 0x15\r
- } EFI_PROCESSOR_SOCKET_TYPE_DATA;\r
-\r
- The fields listed here are *NOT* defined in ProcSubclass specification 0.9. They are introduced to support\r
- new processor upgrade (type 4 offset 19h) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 5. Guid/DataHubRecords.h\r
- typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA;\r
-\r
- The definition name "EFI_CACHE_ASSOCIATION_DATA" is *NOT* consistent with ProcSubclass specification 0.9, in which\r
- the name should be "EFI_PROCESSOR_CACHE_ASSOCIATION_DATA". Keeping this inconsistency for backward compatibility.\r
-\r
- 6. Guid/DataHubRecords.h\r
- typedef enum {\r
- EfiProcessorHealthy = 1,\r
- EfiProcessorPerfRestricted = 2,\r
- EfiProcessorFuncRestricted = 3\r
- } EFI_PROCESSOR_HEALTH_STATUS;\r
-\r
- The structure name "EFI_PROCESSOR_HEALTH_STATUS" is *NOT* consistent with ProcSubclass specification 0.9, in which\r
- the name should be "EFI_PROCESSOR_HEALTH_STATUS_DATA". Keeping this inconsistency for backward compatibility.\r
-\r
- 7. Guid/DataHubRecords.h\r
- typedef enum {\r
- ProcessorCoreFrequencyRecordType = 1,\r
- ProcessorFsbFrequencyRecordType = 2,\r
- ProcessorVersionRecordType = 3,\r
- ProcessorManufacturerRecordType = 4,\r
- ProcessorSerialNumberRecordType = 5,\r
- ProcessorIdRecordType = 6,\r
- ProcessorTypeRecordType = 7,\r
- ProcessorFamilyRecordType = 8,\r
- ProcessorVoltageRecordType = 9,\r
- ProcessorApicBaseAddressRecordType = 10,\r
- ProcessorApicIdRecordType = 11,\r
- ProcessorApicVersionNumberRecordType = 12,\r
- CpuUcodeRevisionDataRecordType = 13,\r
- ProcessorStatusRecordType = 14,\r
- ProcessorSocketTypeRecordType = 15,\r
- ProcessorSocketNameRecordType = 16,\r
- CacheAssociationRecordType = 17,\r
- ProcessorMaxCoreFrequencyRecordType = 18,\r
- ProcessorAssetTagRecordType = 19,\r
- ProcessorMaxFsbFrequencyRecordType = 20,\r
- ProcessorPackageNumberRecordType = 21,\r
- ProcessorCoreFrequencyListRecordType = 22,\r
- ProcessorFsbFrequencyListRecordType = 23,\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
- The enumeration fields from ProcessorCoreFrequencyRecordType to ProcessorHealthStatusRecordType are *NOT* defined\r
- in ProcSubclass specification 0.9, which only defines the following macros to specify the record number of the data record:\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_MANUFACTURER_RECORD_NUMBER 0x00000004\r
- #define EFI_PROCESSOR_SERIAL_NUMBER_RECORD_NUMBER 0x00000005\r
- #define EFI_PROCESSOR_ID_RECORD_NUMBER 0x00000006\r
- #define EFI_PROCESSOR_TYPE_RECORD_NUMBER 0x00000007\r
- #define EFI_PROCESSOR_FAMILY_RECORD_NUMBER 0x00000008\r
- #define EFI_PROCESSOR_VOLTAGE_RECORD_NUMBER 0x00000009\r
- #define EFI_PROCESSOR_APIC_BASE_ADDRESS_RECORD_NUMBER 0x0000000A\r
- #define EFI_PROCESSOR_APIC_ID_RECORD_NUMBER 0x0000000B\r
- #define EFI_PROCESSOR_APIC_VER_NUMBER_RECORD_NUMBER 0x0000000C\r
- #define EFI_PROCESSOR_MICROCODE_REVISION_RECORD_NUMBER 0x0000000D\r
- #define EFI_PROCESSOR_STATUS_RECORD_NUMBER 0x0000000E\r
- #define EFI_PROCESSOR_SOCKET_TYPE_RECORD_NUMBER 0x0000000F\r
- #define EFI_PROCESSOR_SOCKET_NAME_RECORD_NUMBER 0x00000010\r
- #define EFI_PROCESSOR_CACHE_ASSOCIATION_RECORD_NUMBER 0x00000011\r
- #define EFI_PROCESSOR_MAX_FREQUENCY_RECORD_NUMBER 0x00000012\r
- #define EFI_PROCESSOR_ASSET_TAG_RECORD_NUMBER 0x00000013\r
- #define EFI_PROCESSOR_MAX_FSB_FREQUENCY_RECORD_NUMBER 0x00000014\r
- #define EFI_PROCESSOR_PACKAGE_NUMBER_RECORD_NUMBER 0x00000015\r
- #define EFI_PROCESSOR_FREQUENCY_LIST_RECORD_NUMBER 0x00000016\r
- #define EFI_PROCESSOR_FSB_FREQUENCY_LIST_RECORD_NUMBER 0x00000017\r
- #define EFI_PROCESSOR_HEALTH_STATUS_RECORD_NUMBER 0x00000018\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- The enumeration fields from ProcessorCoreCountRecordType to ProcessorPartNumberRecordType are *NOT* defined\r
- in ProcSubclass specification 0.9.\r
- They are introduced to support new fields for type 4 defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 8. Guid/DataHubRecords.h\r
- typedef union {\r
- EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList;\r
- ...\r
- EFI_PROCESSOR_FAMILY2_DATA ProcessorFamily2;\r
- } EFI_CPU_VARIABLE_RECORD;\r
-\r
- typedef struct {\r
- EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;\r
- EFI_CPU_VARIABLE_RECORD VariableRecord;\r
- } EFI_CPU_DATA_RECORD;\r
-\r
- The definitions above are *NOT* defined in ProcSubclass specification 0.9. EdkII introduces them to simplify the\r
- code logic. Therefore developer doesn't need to allocate memory dynamically to construct variable length data record.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 9. Guid/DataHubRecords.h\r
- typedef STRING_REF EFI_PROCESSOR_PART_NUMBER_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
- typedef UINT8 EFI_PROCESSOR_CORE_COUNT_DATA;\r
-\r
- typedef UINT8 EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA;\r
-\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
- The fields listed here are *NOT* defined in ProcSubclass specification 0.9. They are introduced to support\r
- new fields for type 4 defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for MemSubclass Specification (Version 0.90)\r
-##\r
- 1. Guid/DataHubRecords.h\r
- typedef enum _EFI_MEMORY_FORM_FACTOR {\r
- ...\r
- EfiMemoryFormFactorFbDimm = 0x0F\r
- } EFI_MEMORY_FORM_FACTOR;\r
-\r
- typedef enum _EFI_MEMORY_ARRAY_TYPE {\r
- ...\r
- EfiMemoryTypeDdr2 = 0x13,\r
- EfiMemoryTypeDdr2FbDimm = 0x14\r
- } EFI_MEMORY_ARRAY_TYPE;\r
-\r
- typedef enum {\r
- ...\r
- EfiMemoryStatePartial = 6\r
- } EFI_MEMORY_STATE;\r
-\r
- The fields listed above are *NOT* defined in MemSubclass specification 0.9. They are introduced to support\r
- new memory device (type 17) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 2. Guid/DataHubRecords.h\r
- typedef struct {\r
- ...\r
- EFI_EXP_BASE10_DATA MemorySpeed;\r
- ...\r
- } EFI_MEMORY_ARRAY_LINK_DATA;\r
-\r
- The field name "MemorySpeed" in the definition above is *NOT* consistent with MemSubclass specification 0.9,\r
- in which it is defined as MemoryTypeSpeed. Keeping this inconsistency for backward compatibility.\r
-\r
- 3. Guid/DataHubRecords.h\r
- #define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008\r
-\r
- typedef enum {\r
- EfiErrorDetectingMethodOther = 1,\r
- EfiErrorDetectingMethodUnknown = 2,\r
- EfiErrorDetectingMethodNone = 3,\r
- EfiErrorDetectingMethodParity = 4,\r
- EfiErrorDetectingMethod32Ecc = 5,\r
- EfiErrorDetectingMethod64Ecc = 6,\r
- EfiErrorDetectingMethod128Ecc = 7,\r
- EfiErrorDetectingMethodCrc = 8\r
- } EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;\r
-\r
- typedef struct {\r
- UINT8 Other :1;\r
- UINT8 Unknown :1;\r
- UINT8 None :1;\r
- UINT8 SingleBitErrorCorrect :1;\r
- UINT8 DoubleBitErrorCorrect :1;\r
- UINT8 ErrorScrubbing :1;\r
- UINT8 Reserved :2;\r
- } EFI_MEMORY_ERROR_CORRECT_CAPABILITY;\r
-\r
- typedef enum {\r
- EfiMemoryInterleaveOther = 1,\r
- EfiMemoryInterleaveUnknown = 2,\r
- EfiMemoryInterleaveOneWay = 3,\r
- EfiMemoryInterleaveTwoWay = 4,\r
- EfiMemoryInterleaveFourWay = 5,\r
- EfiMemoryInterleaveEightWay = 6,\r
- EfiMemoryInterleaveSixteenWay = 7\r
- } EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;\r
-\r
- typedef struct {\r
- UINT16 Other :1;\r
- UINT16 Unknown :1;\r
- UINT16 SeventyNs:1;\r
- UINT16 SixtyNs :1;\r
- UINT16 FiftyNs :1;\r
- UINT16 Reserved :11;\r
- } EFI_MEMORY_SPEED_TYPE;\r
-\r
- typedef struct {\r
- UINT16 Other :1;\r
- UINT16 Unknown :1;\r
- UINT16 Standard :1;\r
- UINT16 FastPageMode:1;\r
- UINT16 EDO :1;\r
- UINT16 Parity :1;\r
- UINT16 ECC :1;\r
- UINT16 SIMM :1;\r
- UINT16 DIMM :1;\r
- UINT16 BurstEdo :1;\r
- UINT16 SDRAM :1;\r
- UINT16 Reserved :5;\r
- } EFI_MEMORY_SUPPORTED_TYPE;\r
-\r
- typedef struct {\r
- UINT8 Five :1;\r
- UINT8 Three :1;\r
- UINT8 Two :1;\r
- UINT8 Reserved:5;\r
- } EFI_MEMORY_MODULE_VOLTAGE_TYPE;\r
-\r
- typedef struct {\r
- EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
- EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
- EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave;\r
- EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave;\r
- UINT8 MaxMemoryModuleSize;\r
- EFI_MEMORY_SPEED_TYPE MemorySpeedType;\r
- EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType;\r
- EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage;\r
- UINT8 NumberofMemorySlot;\r
- EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
- UINT16 *MemoryModuleConfigHandles;\r
- } EFI_MEMORY_CONTROLLER_INFORMATION;\r
-\r
- typedef struct {\r
- EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
- EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
- EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave;\r
- EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave;\r
- UINT8 MaxMemoryModuleSize;\r
- EFI_MEMORY_SPEED_TYPE MemorySpeedType;\r
- EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType;\r
- EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage;\r
- UINT8 NumberofMemorySlot;\r
- EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
- EFI_INTER_LINK_DATA MemoryModuleConfig[1];\r
- } EFI_MEMORY_CONTROLLER_INFORMATION_DATA;\r
-\r
- The definitions above are *NOT* defined in MemSubclass specification 0.9. They are introduced to support\r
- new memory controller information (type 5) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 4. Guid/DataHubRecords.h\r
- #define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009\r
-\r
- typedef enum {\r
- EfiMemoryErrorOther = 1,\r
- EfiMemoryErrorUnknown = 2,\r
- EfiMemoryErrorOk = 3,\r
- EfiMemoryErrorBadRead = 4,\r
- EfiMemoryErrorParity = 5,\r
- EfiMemoryErrorSigleBit = 6,\r
- EfiMemoryErrorDoubleBit = 7,\r
- EfiMemoryErrorMultiBit = 8,\r
- EfiMemoryErrorNibble = 9,\r
- EfiMemoryErrorChecksum = 10,\r
- EfiMemoryErrorCrc = 11,\r
- EfiMemoryErrorCorrectSingleBit = 12,\r
- EfiMemoryErrorCorrected = 13,\r
- EfiMemoryErrorUnCorrectable = 14\r
- } EFI_MEMORY_ERROR_TYPE;\r
-\r
- typedef enum {\r
- EfiMemoryGranularityOther = 1,\r
- EfiMemoryGranularityOtherUnknown = 2,\r
- EfiMemoryGranularityDeviceLevel = 3,\r
- EfiMemoryGranularityMemPartitionLevel = 4\r
- } EFI_MEMORY_ERROR_GRANULARITY_TYPE;\r
-\r
- typedef enum {\r
- EfiMemoryErrorOperationOther = 1,\r
- EfiMemoryErrorOperationUnknown = 2,\r
- EfiMemoryErrorOperationRead = 3,\r
- EfiMemoryErrorOperationWrite = 4,\r
- EfiMemoryErrorOperationPartialWrite = 5\r
- } EFI_MEMORY_ERROR_OPERATION_TYPE;\r
-\r
- typedef struct {\r
- EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
- EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
- EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;\r
- UINT32 VendorSyndrome;\r
- UINT32 MemoryArrayErrorAddress;\r
- UINT32 DeviceErrorAddress;\r
- UINT32 DeviceErrorResolution;\r
- } EFI_MEMORY_32BIT_ERROR_INFORMATION;\r
-\r
- The definitions above are *NOT* defined in MemSubclass specification 0.9. They are introduced to support\r
- new 32-bit memory error information (type 18) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 5. Guid/DataHubRecords.h\r
- #define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A\r
-\r
- typedef struct {\r
- EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
- EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
- EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;\r
- UINT32 VendorSyndrome;\r
- UINT64 MemoryArrayErrorAddress;\r
- UINT64 DeviceErrorAddress;\r
- UINT32 DeviceErrorResolution;\r
- } EFI_MEMORY_64BIT_ERROR_INFORMATION;\r
-\r
- The definitions above are *NOT* defined in MemSubclass specification 0.9. They are introduced to support\r
- new 64-bit memory error information (type 33) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 6. Guid/DataHubRecords.h\r
- typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
- EFI_MEMORY_SIZE_DATA SizeData;\r
- ...\r
- EFI_MEMORY_64BIT_ERROR_INFORMATION Memory64bitErrorInfo;\r
- } EFI_MEMORY_SUBCLASS_RECORDS;\r
-\r
- typedef struct {\r
- EFI_SUBCLASS_TYPE1_HEADER Header;\r
- EFI_MEMORY_SUBCLASS_RECORDS Record;\r
- } EFI_MEMORY_SUBCLASS_DRIVER_DATA;\r
-\r
- The definitions above are *NOT* defined in MemSubclass specification 0.9. EdkII introduces them to simplify the\r
- code logic. Therefore developer doesn't need to allocate memory dynamically to construct variable length data record.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for MiscSubclass Specification (Version 0.90)\r
-##\r
- 1. Guid/DataHubRecords.h\r
- #pragma pack(1)\r
- typedef struct _USB_PORT_DEVICE_PATH {\r
- ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
- PCI_DEVICE_PATH PciBusDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
- } USB_PORT_DEVICE_PATH;\r
-\r
- typedef struct _IDE_DEVICE_PATH {\r
- ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
- PCI_DEVICE_PATH PciBusDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
- } IDE_DEVICE_PATH;\r
-\r
- typedef struct _RMC_CONN_DEVICE_PATH {\r
- ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
- PCI_DEVICE_PATH PciBridgeDevicePath;\r
- PCI_DEVICE_PATH PciBusDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
- } RMC_CONN_DEVICE_PATH;\r
-\r
- typedef struct _RIDE_DEVICE_PATH {\r
- ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
- PCI_DEVICE_PATH PciBridgeDevicePath;\r
- PCI_DEVICE_PATH PciBusDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
- } RIDE_DEVICE_PATH;\r
-\r
- typedef struct _GB_NIC_DEVICE_PATH {\r
- ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
- PCI_DEVICE_PATH PciBridgeDevicePath;\r
- PCI_DEVICE_PATH PciXBridgeDevicePath;\r
- PCI_DEVICE_PATH PciXBusDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
- } GB_NIC_DEVICE_PATH;\r
-\r
- typedef struct _PS2_CONN_DEVICE_PATH {\r
- ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
- PCI_DEVICE_PATH LpcBridgeDevicePath;\r
- ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
- } PS2_CONN_DEVICE_PATH;\r
-\r
- typedef struct _SERIAL_CONN_DEVICE_PATH {\r
- ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
- PCI_DEVICE_PATH LpcBridgeDevicePath;\r
- ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
- } SERIAL_CONN_DEVICE_PATH;\r
-\r
- typedef struct _PARALLEL_CONN_DEVICE_PATH {\r
- ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
- PCI_DEVICE_PATH LpcBridgeDevicePath;\r
- ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
- } PARALLEL_CONN_DEVICE_PATH;\r
-\r
- typedef struct _FLOOPY_CONN_DEVICE_PATH {\r
- ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
- PCI_DEVICE_PATH LpcBridgeDevicePath;\r
- ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
- } FLOOPY_CONN_DEVICE_PATH;\r
-\r
- typedef union _EFI_MISC_PORT_DEVICE_PATH {\r
- USB_PORT_DEVICE_PATH UsbDevicePath;\r
- IDE_DEVICE_PATH IdeDevicePath;\r
- RMC_CONN_DEVICE_PATH RmcConnDevicePath;\r
- RIDE_DEVICE_PATH RideDevicePath;\r
- GB_NIC_DEVICE_PATH GbNicDevicePath;\r
- PS2_CONN_DEVICE_PATH Ps2ConnDevicePath;\r
- SERIAL_CONN_DEVICE_PATH SerialConnDevicePath;\r
- PARALLEL_CONN_DEVICE_PATH ParallelConnDevicePath;\r
- FLOOPY_CONN_DEVICE_PATH FloppyConnDevicePath;\r
- } EFI_MISC_PORT_DEVICE_PATH;\r
- #pragma pack()\r
-\r
- a. The definitions above are *NOT* defined in MiscSubclass specifications 0.9. EdkII introduces them to simplify the\r
- code logic. Therefore developer doesn't need to allocate memory dynamically to construct variable length device\r
- path for various device.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- b. The definitions above are packed. This way violates the rule of alignment defined in DataHubSubclass specification.\r
- Section "Alignment" in DataHubSubclass specification say "Fields in a data hub record should be aligned at their\r
- natural boundaries". Keeping this inconsistency for backward compatibility.\r
-\r
- 2. Guid/DataHubRecords.h\r
- typedef struct {\r
- ...\r
- EFI_MISC_PORT_DEVICE_PATH PortPath;\r
- } EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;\r
-\r
- The definition is *NOT* consistent with MiscSubclass specification, in which the type of last field is defined as\r
- "EFI_DEVICE_PATH_PROTOCOL". The definition in Specification may bring a little complexity on implementation. User\r
- have to allocate variable length memory to contain device path info and free them finially.\r
- EdkII introduced an union type named EFI_MISC_PORT_DEVICE_PATH to avoid the logic above.\r
-\r
- 3. Guid/DataHubRecords.h\r
- typedef struct {\r
- ...\r
- UINT8 BiosMajorRelease;\r
- UINT8 BiosMinorRelease;\r
- UINT8 BiosEmbeddedFirmwareMajorRelease;\r
- UINT8 BiosEmbeddedFirmwareMinorRelease;\r
- } EFI_MISC_BIOS_VENDOR_DATA;\r
-\r
- The fields listed above are *NOT* defined in MiscSubclass specification 0.9. They are introduced to support\r
- new bios information (type 0) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 4. Guid/DataHubRecords.h\r
- typedef struct {\r
- ...\r
- STRING_REF SystemSKUNumber;\r
- STRING_REF SystemFamily;\r
- } EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
-\r
- The fields listed above are *NOT* defined in MiscSubclass specification 0.9. They are introduced to support\r
- new system information (type 1) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 5. Guid/DataHubRecords.h\r
- typedef struct {\r
- ...\r
- EFI_INTER_LINK_DATA ManagementDeviceThresholdLink;\r
- UINT8 ComponentType;\r
- } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
-\r
- a. The field "ManagementDeviceThresholdLink" above is *NOT* defined in MiscSubclass specification 0.9. It is introduced to support\r
- new management device component (type 35) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
- b. The field "ComponentType" above is *NOT* defined in MiscSubclass specifications 0.9. It's implementation-specific to simplify the code logic.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 6. Guid/DataHubRecords.h\r
- typedef struct {\r
- UINT32 ChassisType :16;\r
- UINT32 ChassisLockPresent:1;\r
- UINT32 Reserved :15;\r
- } EFI_MISC_CHASSIS_STATUS;\r
-\r
- The definition is *NOT* consistent with MiscSubclass specification 0.9, in which the first field is assigned a wrong field\r
- name "EFI_MISC_CHASSIS_TYPE". Due to EFI_MISC_CHASSIS_TYPE has been declared as a data type, it can not be used as a\r
- field name again. EdkII changes its name to "ChassisType" to pass build.\r
-\r
- 7. Guid/DataHubRecords.h\r
- typedef enum {\r
- ...\r
- EfiSlotTypeAgp2X = 0x10,\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
- a. The field name "EfiSlotTypeAgp2X" is *NOT* consistent with MiscSubclass specification 0.9, in which it is named\r
- "EfiSlotTypeApg2X".\r
- From its literal sense, this field represents a AGP type display card, so it should be named as "EfiSlotTypeAgp2X".\r
- b. The enumeration fields from "EfiSlotTypePciExpress" to "EfiSlotTypePciExpressX16" are *NOT* defined in MiscSubclass specification 0.9.\r
- They are introduced to support new system slots (type 9) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 8. Guid/DataHubRecords.h\r
- typedef struct {\r
- ...\r
- EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus;\r
- ...\r
- } EFI_MISC_ONBOARD_DEVICE_DATA;\r
-\r
- The definition is *NOT* consistent with MiscSubclass specification 0.9, in which the field "OnBoardDeviceStatus" is\r
- named as "OnBoardDeviceType". Keeping this inconsistency for backward compatibility.\r
-\r
- 9. Guid/DataHubRecords.h\r
- #define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010\r
-\r
- The name of the definition is *NOT* consistent with MiscSubclass specification 0.9, in which it is defined as\r
- "EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER". Keeping this inconsistency for backward compatibility.\r
-\r
- 10. Guid/DataHubRecords.h\r
- typedef enum {\r
- EfiPortableBatteryDeviceChemistryOther = 1,\r
- EfiPortableBatteryDeviceChemistryUnknown = 2,\r
- EfiPortableBatteryDeviceChemistryLeadAcid = 3,\r
- EfiPortableBatteryDeviceChemistryNickelCadmium = 4,\r
- EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5,\r
- EfiPortableBatteryDeviceChemistryLithiumIon = 6,\r
- EfiPortableBatteryDeviceChemistryZincAir = 7,\r
- EfiPortableBatteryDeviceChemistryLithiumPolymer = 8\r
- } EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY;\r
-\r
- The name of the definition is *NOT* consistent with MiscSubclass specification, in which it is defined as\r
- "EFI_MISC_BATTERY_DEVICE_CHEMISTRY". And all field names have a redundant "Portable" string compared with MisSubclass\r
- specification 0.9.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 11. Guid/DataHubRecords.h\r
- typedef struct {\r
- STRING_REF Location;\r
- STRING_REF Manufacturer;\r
- STRING_REF ManufactureDate;\r
- STRING_REF SerialNumber;\r
- STRING_REF DeviceName;\r
- EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY DeviceChemistry;\r
- UINT16 DesignCapacity;\r
- UINT16 DesignVoltage;\r
- STRING_REF SBDSVersionNumber;\r
- UINT8 MaximumError;\r
- UINT16 SBDSSerialNumber;\r
- UINT16 SBDSManufactureDate;\r
- STRING_REF SBDSDeviceChemistry;\r
- UINT8 DesignCapacityMultiplier;\r
- UINT32 OEMSpecific;\r
- UINT8 BatteryNumber;\r
- BOOLEAN Valid;\r
- } EFI_MISC_PORTABLE_BATTERY;\r
-\r
- The definition is *NOT* consistent with MiscSubclass specification 0.9, in which the structure name is defined as\r
- "EFI_MISC_BATTERY_LOCATION_DATA". Moreover, the name and the order of all fields are also different with MiscSubclass\r
- specification 0.9. Keeping this inconsistency for backward compatibility.\r
-\r
- 12. Guid/DataHubRecords.h\r
- typedef enum {\r
- ...\r
- } EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
-\r
- The name of the definition is *NOT* consistent with MiscSubclass specification 0.9, in which it is defined as\r
- "EFI_MISC_BOOT_INFORMATION_STATUS_TYPE". Keeping this inconsistency for backward compatibility.\r
-\r
- 13. Guid/DataHubRecords.h\r
- typedef struct {\r
- EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
- ...\r
- } EFI_MISC_BOOT_INFORMATION_STATUS_DATA;\r
-\r
- The definition is *NOT* consistent with MiscSubclass specification 0.9, in which the type of the first field is\r
- "EFI_MISC_BOOT_INFORMATION_STATUS_TYPE". Keeping this inconsistency for backward compatibility.\r
-\r
- 14. Guid/DataHubRecords.h\r
- typedef struct {\r
- ...\r
- } EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;\r
-\r
- The name of the definition is *NOT* consistent with MiscSubclass specification 0.9, in which it is defined as\r
- "EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA". Keeping this inconsistency for backward compatibility.\r
-\r
- 15. Guid/DataHubRecords.h\r
- typedef struct {\r
- ...\r
- } SMBIOS_STRUCTURE_HDR;\r
-\r
- The name of the definition is *NOT* consistent with MiscSubclass specification 0.9, in which the structure name\r
- is defined as "EFI_SMBIOS_STRUCTURE_HDR". Due to this structure is commonly used by vendor to construct SmBios\r
- type 0x80~0xFF table, Keeping this inconsistency for backward compatibility.\r
-\r
- 16. Guid/DataHubRecords.h\r
- typedef struct {\r
- SMBIOS_STRUCTURE_HDR Header;\r
- ...\r
- } EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;\r
-\r
- The definition is *NOT* consistent with MiscSubclass specification 0.9, in which the type of the first field is\r
- "EFI_SMBIOS_STRUCTURE_HDR". Keeping this inconsistency for backward compatibility.\r
-\r
- 17. Guid/DataHubRecords.h\r
- typedef struct {\r
- UINT16 PowerSupplyHotReplaceable:1;\r
- UINT16 PowerSupplyPresent :1;\r
- UINT16 PowerSupplyUnplugged :1;\r
- UINT16 InputVoltageRangeSwitch :4;\r
- UINT16 PowerSupplyStatus :3;\r
- UINT16 PowerSupplyType :4;\r
- UINT16 Reserved :2;\r
- } EFI_MISC_POWER_SUPPLY_CHARACTERISTICS;\r
-\r
- all field type in the definition are *NOT* consistent with MiscSubclass specification 0.9, in which it is defined as\r
- "UINT32" and the total width of bit-fields is 32bits width.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 18. Guid/DataHubRecords.h\r
- #define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020\r
-\r
- typedef struct {\r
- UINT16 LogAreaLength;\r
- UINT16 LogHeaderStartOffset;\r
- UINT16 LogDataStartOffset;\r
- UINT8 AccessMethod;\r
- UINT8 LogStatus;\r
- UINT32 LogChangeToken;\r
- UINT32 AccessMethodAddress;\r
- UINT8 LogHeaderFormat;\r
- UINT8 NumberOfSupportedLogType;\r
- UINT8 LengthOfLogDescriptor;\r
- } EFI_MISC_SYSTEM_EVENT_LOG_DATA;\r
-\r
- #define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT 0x00\r
- #define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT 0X01\r
- #define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT 0X02\r
- #define ACCESS_MEMORY_MAPPED 0x03\r
- #define ACCESS_GPNV 0x04\r
-\r
- The definitions listed above are *NOT* defined in MiscSubclass specification 0.9. It is introduced to support\r
- new system event log (type 15) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 19. Guid/DataHubRecords.h\r
- #define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021\r
-\r
- typedef struct {\r
- UINT16 LowerThresNonCritical;\r
- UINT16 UpperThresNonCritical;\r
- UINT16 LowerThresCritical;\r
- UINT16 UpperThresCritical;\r
- UINT16 LowerThresNonRecover;\r
- UINT16 UpperThresNonRecover;\r
- } EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD;\r
-\r
- The definitions listed above are *NOT* defined in MiscSubclass specification 0.9. It is introduced to support\r
- new management device threshold data (type 36) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 20. Guid/DataHubRecords.h\r
- typedef union {\r
- EFI_MISC_LAST_PCI_BUS_DATA LastPciBus;\r
- ...\r
- EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold;\r
- } EFI_MISC_SUBCLASS_RECORDS;\r
-\r
- typedef struct {\r
- EFI_SUBCLASS_TYPE1_HEADER Header;\r
- EFI_MISC_SUBCLASS_RECORDS Record;\r
- } EFI_MISC_SUBCLASS_DRIVER_DATA;\r
-\r
- The definitions above are *NOT* defined in MemSubclass specification 0.9. EdkII introduces them to simplify the\r
- code logic. Therefore developer doesn't need to allocate memory dynamically to construct variable length data record.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 21. Guid/DataHubRecords.h\r
- typedef struct {\r
- EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType;\r
- EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink;\r
- UINT8 CoolingDeviceUnitGroup;\r
- UINT16 CoolingDeviceNominalSpeed;\r
- UINT32 CoolingDeviceOemDefined;\r
- } EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;\r
-\r
- The "CoolingDeviceUnitGroup" field and "CoolingDeviceNominalSpeed" field are *NOT* consistent with\r
- MiscSubclass specification 0.9. These fields are aligned with SMBIOS 2.6 specification. And user can easily\r
- assign any value to CoolingDeviceNominalSpeed.\r
-\r
- 22. Guid/DataHubRecords.h\r
- typedef enum {\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
- The enumeration fields from "EfiSlotDataBusWidth1xOrx1" to "EfiSlotDataBusWidth32xOrx32" are *NOT* defined in MiscSubclass specification 0.9.\r
- They are introduced to support new system slots (type 9) defined in SmBios 2.6 specification.\r
- Keeping this inconsistency to reflect the latest industry standard.\r
-\r
- 23. Guid/DataHubRecords.h\r
- typedef struct {\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
- ...\r
- } EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;\r
-\r
- The structure fields from "TemperatureProbeMaximumValue" to "MDUpperNonrecoverableThreshold" are *NOT* consistent with MiscSubclass specification 0.9.\r
- The specification defines the fields type as EFI_EXP_BASE10_DATA. In fact, they should be UINT16 type because they refer to 16bit width data.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 24. Guid/DataHubRecords.h\r
- #define EFI_MISC_IPMI_INTERFACE_TYPE_DATA_RECORD_NUMBER EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER\r
-\r
- The definition above is *NOT* defined in MiscSubclass specifications 0.9. It's defined for backward compatibility.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for Status Codes Specification (Version 0.92)\r
-##\r
- 1. Include/Framework/StatusCode.h\r
- #define EFI_IOB_ATA_BUS_SMART_ENABLE (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
- #define EFI_IOB_ATA_BUS_SMART_DISABLE (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
- #define EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
- #define EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
-\r
- #define EFI_IOB_ATA_BUS_SMART_NOTSUPPORTED (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
- #define EFI_IOB_ATA_BUS_SMART_DISABLED (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
-\r
- #define EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
- #define EFI_SW_DXE_BS_PC_VERIFYING_PASSWORD (EFI_SUBCLASS_SPECIFIC | 0x00000006)\r
-\r
- #define EFI_SW_DXE_RT_PC_S0 (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
- #define EFI_SW_DXE_RT_PC_S1 (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
- #define EFI_SW_DXE_RT_PC_S2 (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
- #define EFI_SW_DXE_RT_PC_S3 (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
- #define EFI_SW_DXE_RT_PC_S4 (EFI_SUBCLASS_SPECIFIC | 0x00000004)\r
- #define EFI_SW_DXE_RT_PC_S5 (EFI_SUBCLASS_SPECIFIC | 0x00000005)\r
-\r
- #define EFI_SW_CSM_LEGACY_ROM_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
-\r
- The definitions above are *NOT* defined in Framework StatusCodes specification 0.92. But these subclass-specific error code\r
- operations are needed for EdkII implementation.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 2. Include/Framework/StatusCode.h\r
- typedef union {\r
- CHAR8 *Ascii;\r
- CHAR16 *Unicode;\r
- ...\r
- } EFI_STATUS_CODE_STRING;\r
-\r
- The definition is *NOT* consistent with Framework SatausCodes specification 0.92, in which the first field is defined as "CHAR8 Ascii[]"\r
- and the second field is defined as "CHAR16 Unicode[]". Keeping this inconsistency for backward compatibility.\r
-\r
- 3. Include/Framework/StatusCode.h\r
- #define EFI_SW_EC_X64_DIVIDE_ERROR EXCEPT_X64_DIVIDE_ERROR\r
- #define EFI_SW_EC_X64_DEBUG EXCEPT_X64_DEBUG\r
- #define EFI_SW_EC_X64_NMI EXCEPT_X64_NMI\r
- #define EFI_SW_EC_X64_BREAKPOINT EXCEPT_X64_BREAKPOINT\r
- #define EFI_SW_EC_X64_OVERFLOW EXCEPT_X64_OVERFLOW\r
- #define EFI_SW_EC_X64_BOUND EXCEPT_X64_BOUND\r
- #define EFI_SW_EC_X64_INVALID_OPCODE EXCEPT_X64_INVALID_OPCODE\r
- #define EFI_SW_EC_X64_DOUBLE_FAULT EXCEPT_X64_DOUBLE_FAULT\r
- #define EFI_SW_EC_X64_INVALID_TSS EXCEPT_X64_INVALID_TSS\r
- #define EFI_SW_EC_X64_SEG_NOT_PRESENT EXCEPT_X64_SEG_NOT_PRESENT\r
- #define EFI_SW_EC_X64_STACK_FAULT EXCEPT_X64_STACK_FAULT\r
- #define EFI_SW_EC_X64_GP_FAULT EXCEPT_X64_GP_FAULT\r
- #define EFI_SW_EC_X64_PAGE_FAULT EXCEPT_X64_PAGE_FAULT\r
- #define EFI_SW_EC_X64_FP_ERROR EXCEPT_X64_FP_ERROR\r
- #define EFI_SW_EC_X64_ALIGNMENT_CHECK EXCEPT_X64_ALIGNMENT_CHECK\r
- #define EFI_SW_EC_X64_MACHINE_CHECK EXCEPT_X64_MACHINE_CHECK\r
- #define EFI_SW_EC_X64_SIMD EXCEPT_X64_SIMD\r
-\r
- The definitions are *NOT* defined in Framework StatusCodes specification 0.92, in which IA32 and IPF exception subclass error code definitions\r
- are defined but omit the corresponding definitions for X64. EdkII introduce these definitions for implementation.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI Boot Script Specification (Version 0.91)\r
-##\r
- 1. Include/Protocol/BootScriptSave.h\r
- #define EFI_BOOT_SCRIPT_SAVE_PROTOCOL_GUID \\r
- { \\r
- 0x470e1529, 0xb79e, 0x4e32, {0xa0, 0xfe, 0x6a, 0x15, 0x6d, 0x29, 0xf9, 0xb2 } \\r
- }\r
-\r
- The macro name "EFI_BOOT_SCRIPT_SAVE_PROTOCOL_GUID" is *NOT* consistent with Framework BootScript specification 0.91,\r
- in which it's defined as "EFI_BOOT_SCRIPT_SAVE_GUID". Keeping this inconsistency for backward compatibility.\r
-\r
- 2. Include/Protocol/BootScriptSave.h\r
- EFI_STATUS\r
- EFI_BOOTSERVICE\r
- (EFIAPI *EFI_BOOT_SCRIPT_WRITE) (\r
- IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL *This,\r
- ...\r
- );\r
-\r
- The first parameter's type is *NOT* consistent with Framework BootScript specification 0.91, in which it's defined as\r
- "struct _EFI_BOOT_SCRIPT_SAVE_PROTOCOL". Keeping this inconsistency for backward compatibility.\r
-\r
- 3. Include/Framework/BootScript.h\r
- #define EFI_BOOT_SCRIPT_MEM_POLL_OPCODE 0x09\r
- #define EFI_BOOT_SCRIPT_INFORMATION_OPCODE 0x0A\r
- #define EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE 0x0B\r
- #define EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE 0x0C\r
- #define EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE 0x0D\r
-\r
- The OPCODEs above are not defined in Framework BootScript Specification 0.91, but adopted by PI 1.0 Spec. And they\r
- are needed for EdkII implementation.\r
-\r
- 4. Include/Framework/BootScript.h\r
- #define EFI_BOOT_SCRIPT_TABLE_OPCODE 0xAA\r
- #define EFI_BOOT_SCRIPT_TERMINATE_OPCODE 0xFF\r
-\r
- The two OPCODEs are *NOT* defined in Framework BootScript specification 0.91. EdkII introduces them to indicate the start\r
- or end of the boot script table.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 5. Include/Protocol/BootScriptSave.h\r
- typedef\r
- EFI_STATUS\r
- (EFIAPI *EFI_BOOT_SCRIPT_CLOSE_TABLE) (\r
- IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL *This,\r
- ...\r
- );\r
-\r
- The first parameter's type is *NOT* consistent with BootScript specification, in which it's defined as\r
- "struct _EFI_BOOT_SCRIPT_SAVE_PROTOCOL". Keeping this inconsistency for backward compatibility.\r
-\r
- 6. Include/Include/BootScriptExecuter.h\r
- typedef\r
- EFI_STATUS\r
- (EFIAPI *EFI_PEI_BOOT_SCRIPT_EXECUTE)(\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI *This,\r
- ...\r
- );\r
-\r
- The second parameter's type is *NOT* consistent with BootScript specification, in which it's defined as\r
- "struct _EFI_PEI_BOOT_SCRIPT_EXECUTER_PPI". Keeping this inconsistency for backward compatibility.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI DXE CIS (Version 0.91)\r
-##\r
- 1. Include/Framework/DxeCis.h\r
- EFI_STATUS_CODE_ARCH_PROTOCOL is removed.\r
-\r
- EdkII doesn't provide EFI_STATUS_CODE_ARCH_PROTOCOL definition due to ReportStatusCode() field has been\r
- removed from EFI Runtime Service Table of PI specification. EFI_STATUS_CODE_ARCH_PROTOCOL is *NOT* required,\r
- and is replaced with EFI_STATUS_CODE_RUNTIME_PROTOCOL.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI Firmware Volume Specification (Version 0.9)\r
-##\r
- 1. Include/Framework/FirmwareVolumeImageFormat.h\r
- #define EFI_AGGREGATE_AUTH_STATUS_ALL 0x00000f\r
- #define EFI_LOCAL_AUTH_STATUS_ALL 0x0f0000\r
-\r
- The two macros are *NOT* defined in Framework FV specification 0.9. EdkII introduces them as a mask to calculate the\r
- value of authentication status.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI Human Interface Infrastructure Specification (Version 0.92)\r
-##\r
- 1. Include/Protocol/FrameworkHii.h\r
- #define EFI_HII_PROTOCOL_GUID \\r
- { \\r
- 0xd7ad636e, 0xb997, 0x459b, {0xbf, 0x3f, 0x88, 0x46, 0x89, 0x79, 0x80, 0xe1} \\r
- }\r
-\r
- The Framework HII specification 0.92 changed part of HII interfaces but did not update the protocol GUID.\r
- This change should cause a change of GUID in both of code and HII spec. EdkII updates the GUID in code,\r
- but the Framework HII specification 0.92 is not updated. This is a known issue.\r
-\r
- 2. Include/Protocol/FrameworkHii.h\r
- typedef struct {\r
- ...\r
- EFI_HANDLE COBExportHandle;\r
- } EFI_HII_HANDLE_PACK;\r
-\r
- The last field "COBExportHandle" of EFI_HII_HANDLE_PACK is *NOT* defined in the Framework HII specification\r
- 0.92. Keeping this inconsistency for backward compatibility.\r
-\r
- 3. Include/Protocol/FrameworkHii.h\r
- typedef struct {\r
- UINTN NumberOfPackages;\r
- EFI_GUID *GuidId;\r
- } EFI_HII_PACKAGES;\r
-\r
- The definition is *NOT* consistent with Framework HII specification 0.92, in which a field "HandlePack" is defined.\r
- EdkII changes the EFI_HII_PACKAGES to contain various number of packages of different types just after the structure\r
- as inline data, which will bring the flexibility on development.\r
-\r
- 4. Include/Protocol/FrameworkHii.h\r
- struct _EFI_HII_PROTOCOL {\r
- ...\r
- EFI_HII_RESET_STRINGS ResetStrings;\r
- ...\r
- };\r
-\r
- The field listed above is *NOT* defined in Framework HII specification 0.92. EdkII adds this field to provide\r
- an ability of removing any new strings that were added after the initial string export for this handle.\r
-\r
- 5. Include/Protocol/FrameworkHii.h\r
- typedef\r
- EFI_STATUS\r
- (EFIAPI *EFI_HII_GLYPH_TO_BLT)(\r
- ...\r
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,\r
- IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,\r
- ...\r
- IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer\r
- );\r
-\r
- The type of the parameters listed above are *NOT* consistent with Framework HII specification 0.92, in which\r
- the type of these parameters is EFI_UGA_PIXEL. Here the definition uses the EFI_GRAPHICS_OUTPUT_BLT_PIXEL which\r
- defined in UEFI2.1 spec. Keeping this inconsistency for backward compatibility.\r
-\r
- 6. Include/Protocol/FrameworkHii.h\r
- typedef struct {\r
- FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
- UINT8 Flags;\r
- } EFI_IFR_SUPPRESS;\r
-\r
- typedef struct {\r
- FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
- UINT8 Flags;\r
- } EFI_IFR_GRAY_OUT;\r
-\r
- typedef struct {\r
- FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
- STRING_REF Popup;\r
- UINT8 Flags;\r
- } EFI_IFR_INCONSISTENT;\r
-\r
- typedef struct {\r
- FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId;\r
- UINT8 Width;\r
- UINT16 Value;\r
- } FRAMEWORK_EFI_IFR_EQ_ID_VAL;\r
-\r
- typedef struct {\r
- FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId;\r
- UINT8 Width;\r
- UINT16 ListLength;\r
- UINT16 ValueList[1];\r
- } FRAMEWORK_EFI_IFR_EQ_ID_LIST;\r
-\r
- typedef struct {\r
- FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
- UINT16 QuestionId1;\r
- UINT8 Width;\r
- UINT16 QuestionId2;\r
- } FRAMEWORK_EFI_IFR_EQ_ID_ID;\r
-\r
- typedef struct {\r
- FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
- UINT16 VariableId;\r
- UINT16 Value;\r
- } EFI_IFR_EQ_VAR_VAL;\r
-\r
- The defintions are not complied with Framework HII spec 0.92. Keeping the inconsistent for implementation needed.\r
-\r
- 7. Include/Protocol/FrameworkFormCallback.h\r
- #define RESET_REQUIRED 1\r
- #define EXIT_REQUIRED 2\r
- #define SAVE_REQUIRED 4\r
- #define NV_CHANGED 8\r
- #define NV_NOT_CHANGED 16\r
-\r
- These macros are *NOT* defined in the Framework HII specification 0.92. These Flags are introduced to describe\r
- the standard behavior of the browser after the callback.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 8. Include/Protocol/FrameworkFormCallback.h\r
- typedef\r
- EFI_STATUS\r
- (EFIAPI *EFI_NV_WRITE)(\r
- ...\r
- IN UINT32 Attributes,\r
- ...\r
- );\r
-\r
- The definition is *NOT* consistent with Framework HII specification 0.92, in which the type of Attributes\r
- parameter is defined as "UINT32 *". EdkII changes the type of Attributes from UINT32 * to UINT32 because\r
- the input paramter is not necessary to use pointer date type.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for PEI CIS Specification (Version 0.91)\r
-##\r
- 1. Include/Ppi/ReadOnlyVariable.h\r
- #define EFI_VARIABLE_READ_ONLY 0x00000008\r
-\r
- In Framework PeiCis specification 0.91, neither the macro or its value is defined.\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 2. Include/Ppi/FindFv.h\r
- typedef\r
- EFI_STATUS\r
- (EFIAPI *EFI_PEI_FIND_FV_FINDFV)(\r
- IN EFI_PEI_FIND_FV_PPI *This,\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN UINT8 *FvNumber,\r
- IN OUT EFI_FIRMWARE_VOLUME_HEADER **FVAddress\r
- );\r
-\r
- The definition is *NOT* consistent with Framework PeiCis specification 0.91. Compared with spec, the order\r
- of the first and second parameters is reversed. Keeping this inconsistency for backward compatibility.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI SMM CIS (Version 0.91)\r
-##\r
- 1. Include/Guid/SmramMemoryReserve.h\r
- typedef struct {\r
- UINT32 NumberOfSmmReservedRegions;\r
- ...\r
- } EFI_SMRAM_HOB_DESCRIPTOR_BLOCK;\r
-\r
- 1) The name of the definition is *NOT* consistent with Framework SmmCis specification 0.91, in which it's\r
- defined as "EFI_HOB_SMRAM_DESCRIPTOR_BLOCK" rather than "EFI_SMRAM_HOB_DESCRIPTOR_BLOCK".\r
- Keeping this inconsistency for backward compatibility.\r
-\r
- 2) The definition of NumberOfSmmReservedRegions is *NOT* consistent with Framework SmmCis specification 0.91,\r
- in which the type of this field is defined as UINTN. However, HOBs are supposed to be CPU neutral, so UINTN\r
- is incorrect and UINT32 should be used.\r
-\r
- 2. Include/Guid/SmramMemoryReserve.h\r
- typedef enum {\r
- ...\r
- IchnIoTrap3,\r
- IchnIoTrap2,\r
- IchnIoTrap1,\r
- IchnIoTrap0,\r
- IchnPciExpress,\r
- IchnMonitor,\r
- IchnSpi,\r
- IchnQRT,\r
- IchnGpioUnlock,\r
- ...\r
- } EFI_SMM_ICHN_SMI_TYPE;\r
-\r
- The enumeration fields listed above are *NOT* defined in Framework SmmCis specification 0.91. EdkII introduces\r
- these fields to support new SMI types.\r
-\r
- 3. Include/Framework/SmmCis.h\r
- typedef union {\r
- ///\r
- /// The processor save-state information for IA-32 processors.\r
- ///\r
- EFI_SMI_CPU_SAVE_STATE Ia32SaveState;\r
- ///\r
- /// Note: Inconsistency with the Framework SMM CIS spec - Itanium save state not included.\r
- ///\r
- /// The processor save-state information for Itanium processors.\r
- ///\r
- /// EFI_PMI_SYSTEM_CONTEXT ItaniumSaveState;\r
- } EFI_SMM_CPU_SAVE_STATE;\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI S3 Resume Boot Path Specification (Version 0.9)\r
-##\r
- 1. Include/Protocol/AcpiS3Save.h\r
- typedef\r
- EFI_STATUS\r
- EFI_BOOTSERVICE\r
- (EFIAPI *EFI_ACPI_GET_LEGACY_MEMORY_SIZE) (\r
- IN EFI_ACPI_S3_SAVE_PROTOCOL *This,\r
- OUT UINTN *Size\r
- );\r
-\r
- The first parameter's type is *NOT* consistent with Framework S3Resume specification, in which it's defined as\r
- "struct _EFI_ACPI_S3_SAVE_PROTOCOL". Keeping this inconsistency for backward compatibility.\r
-\r
- 2. Include/Protocol/AcpiS3Save.h\r
- typedef\r
- EFI_STATUS\r
- (EFIAPI *EFI_ACPI_S3_SAVE) (\r
- IN EFI_ACPI_S3_SAVE_PROTOCOL *This,\r
- IN VOID *LegacyMemoryAddress\r
- );\r
-\r
- The first parameter's type is *NOT* consistent with Framework S3Resume specification, in which it's defined as\r
- "struct _EFI_ACPI_S3_SAVE_PROTOCOL". Also the EFI_BOOTSERVICE modifier is removed from the function declaration.\r
-\r
- 3. Include/Protocol/AcpiS3Save.h\r
- typedef\r
- EFI_STATUS\r
- (EFIAPI *EFI_ACPI_GET_LEGACY_MEMORY_SIZE)(\r
- IN EFI_ACPI_S3_SAVE_PROTOCOL *This,\r
- OUT UINTN *Size\r
- );\r
-\r
- The first parameter's type is *NOT* consistent with Framework S3Resume specification, in which it's defined as\r
- "struct _EFI_ACPI_S3_SAVE_PROTOCOL". Also the EFI_BOOTSERVICE modifier is removed from the function declaration.\r
-\r
-##\r
-# Mismatch with Intel Platform Innovation Framework for EFI ACPI Specification (Version 0.91)\r
-##\r
- 1. Include/Protocol/AcpiSupport.h\r
- typedef\r
- EFI_STATUS\r
- (EFIAPI *EFI_ACPI_GET_ACPI_TABLE)(\r
- ...\r
- );\r
-\r
- The function modifier is *NOT* consistent with Framework Acpi specification. The EFI_BOOTSERVICE modifier\r
- is removed from the function declaration.\r
-\r
- 2. Include/Protocol/AcpiSupport.h\r
- typedef\r
- EFI_STATUS\r
- (EFIAPI *EFI_ACPI_SET_ACPI_TABLE)(\r
- ...\r
- );\r
-\r
- The function modifier is *NOT* consistent with Framework Acpi specification. The EFI_BOOTSERVICE modifier\r
- is removed from the function declaration.\r
-\r
- 3. Include/Protocol/AcpiSupport.h\r
- typedef\r
- EFI_STATUS\r
- (EFIAPI *EFI_ACPI_PUBLISH_TABLES)(\r
- ...\r
- );\r
-\r
- The function modifier is *NOT* consistent with Framework Acpi specification. The EFI_BOOTSERVICE modifier\r
- is removed from the function declaration.\r