Path: blob/main/sys/contrib/edk2/Include/IndustryStandard/Acpi50.h
48291 views
/** @file1ACPI 5.0 definitions from the ACPI Specification Revision 5.0a November 13, 2013.23Copyright (c) 2014 Hewlett-Packard Development Company, L.P.<BR>4Copyright (c) 2011 - 2022, Intel Corporation. All rights reserved.<BR>5Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>6SPDX-License-Identifier: BSD-2-Clause-Patent7**/89#ifndef _ACPI_5_0_H_10#define _ACPI_5_0_H_1112#include <IndustryStandard/Acpi40.h>1314//15// Define for Descriptor16//17#define ACPI_SMALL_FIXED_DMA_DESCRIPTOR_NAME 0x0A18#define ACPI_LARGE_GPIO_CONNECTION_DESCRIPTOR_NAME 0x0C19#define ACPI_LARGE_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR_NAME 0x0E2021#define ACPI_FIXED_DMA_DESCRIPTOR 0x5522#define ACPI_GPIO_CONNECTION_DESCRIPTOR 0x8C23#define ACPI_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR 0x8E2425///26/// _PSD Revision for ACPI 5.027///28#define EFI_ACPI_5_0_AML_PSD_REVISION 02930///31/// _CPC Revision for ACPI 5.032///33#define EFI_ACPI_5_0_AML_CPC_REVISION 13435#pragma pack(1)3637///38/// Generic DMA Descriptor.39///40typedef PACKED struct {41ACPI_SMALL_RESOURCE_HEADER Header;42UINT16 DmaRequestLine;43UINT16 DmaChannel;44UINT8 DmaTransferWidth;45} EFI_ACPI_FIXED_DMA_DESCRIPTOR;4647///48/// GPIO Connection Descriptor49///50typedef PACKED struct {51ACPI_LARGE_RESOURCE_HEADER Header;52UINT8 RevisionId;53UINT8 ConnectionType;54UINT16 GeneralFlags;55UINT16 InterruptFlags;56UINT8 PinConfiguration;57UINT16 OutputDriveStrength;58UINT16 DebounceTimeout;59UINT16 PinTableOffset;60UINT8 ResourceSourceIndex;61UINT16 ResourceSourceNameOffset;62UINT16 VendorDataOffset;63UINT16 VendorDataLength;64} EFI_ACPI_GPIO_CONNECTION_DESCRIPTOR;6566#define EFI_ACPI_GPIO_CONNECTION_TYPE_INTERRUPT 0x067#define EFI_ACPI_GPIO_CONNECTION_TYPE_IO 0x16869///70/// Serial Bus Resource Descriptor (Generic)71///72typedef PACKED struct {73ACPI_LARGE_RESOURCE_HEADER Header;74UINT8 RevisionId;75UINT8 ResourceSourceIndex;76UINT8 SerialBusType;77UINT8 GeneralFlags;78UINT16 TypeSpecificFlags;79UINT8 TypeSpecificRevisionId;80UINT16 TypeDataLength;81// Type specific data82} EFI_ACPI_SERIAL_BUS_RESOURCE_DESCRIPTOR;8384#define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_I2C 0x185#define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_SPI 0x286#define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_UART 0x38788///89/// Serial Bus Resource Descriptor (I2C)90///91typedef PACKED struct {92ACPI_LARGE_RESOURCE_HEADER Header;93UINT8 RevisionId;94UINT8 ResourceSourceIndex;95UINT8 SerialBusType;96UINT8 GeneralFlags;97UINT16 TypeSpecificFlags;98UINT8 TypeSpecificRevisionId;99UINT16 TypeDataLength;100UINT32 ConnectionSpeed;101UINT16 SlaveAddress;102} EFI_ACPI_SERIAL_BUS_RESOURCE_I2C_DESCRIPTOR;103104///105/// Serial Bus Resource Descriptor (SPI)106///107typedef PACKED struct {108ACPI_LARGE_RESOURCE_HEADER Header;109UINT8 RevisionId;110UINT8 ResourceSourceIndex;111UINT8 SerialBusType;112UINT8 GeneralFlags;113UINT16 TypeSpecificFlags;114UINT8 TypeSpecificRevisionId;115UINT16 TypeDataLength;116UINT32 ConnectionSpeed;117UINT8 DataBitLength;118UINT8 Phase;119UINT8 Polarity;120UINT16 DeviceSelection;121} EFI_ACPI_SERIAL_BUS_RESOURCE_SPI_DESCRIPTOR;122123///124/// Serial Bus Resource Descriptor (UART)125///126typedef PACKED struct {127ACPI_LARGE_RESOURCE_HEADER Header;128UINT8 RevisionId;129UINT8 ResourceSourceIndex;130UINT8 SerialBusType;131UINT8 GeneralFlags;132UINT16 TypeSpecificFlags;133UINT8 TypeSpecificRevisionId;134UINT16 TypeDataLength;135UINT32 DefaultBaudRate;136UINT16 RxFIFO;137UINT16 TxFIFO;138UINT8 Parity;139UINT8 SerialLinesEnabled;140} EFI_ACPI_SERIAL_BUS_RESOURCE_UART_DESCRIPTOR;141142#pragma pack()143144//145// Ensure proper structure formats146//147#pragma pack(1)148149///150/// ACPI 5.0 Generic Address Space definition151///152typedef struct {153UINT8 AddressSpaceId;154UINT8 RegisterBitWidth;155UINT8 RegisterBitOffset;156UINT8 AccessSize;157UINT64 Address;158} EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE;159160//161// Generic Address Space Address IDs162//163#define EFI_ACPI_5_0_SYSTEM_MEMORY 0164#define EFI_ACPI_5_0_SYSTEM_IO 1165#define EFI_ACPI_5_0_PCI_CONFIGURATION_SPACE 2166#define EFI_ACPI_5_0_EMBEDDED_CONTROLLER 3167#define EFI_ACPI_5_0_SMBUS 4168#define EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL 0x0A169#define EFI_ACPI_5_0_FUNCTIONAL_FIXED_HARDWARE 0x7F170171//172// Generic Address Space Access Sizes173//174#define EFI_ACPI_5_0_UNDEFINED 0175#define EFI_ACPI_5_0_BYTE 1176#define EFI_ACPI_5_0_WORD 2177#define EFI_ACPI_5_0_DWORD 3178#define EFI_ACPI_5_0_QWORD 4179180//181// ACPI 5.0 table structures182//183184///185/// Root System Description Pointer Structure186///187typedef struct {188UINT64 Signature;189UINT8 Checksum;190UINT8 OemId[6];191UINT8 Revision;192UINT32 RsdtAddress;193UINT32 Length;194UINT64 XsdtAddress;195UINT8 ExtendedChecksum;196UINT8 Reserved[3];197} EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER;198199///200/// RSD_PTR Revision (as defined in ACPI 5.0 spec.)201///202#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 5.0) says current value is 2203204///205/// Common table header, this prefaces all ACPI tables, including FACS, but206/// excluding the RSD PTR structure207///208typedef struct {209UINT32 Signature;210UINT32 Length;211} EFI_ACPI_5_0_COMMON_HEADER;212213//214// Root System Description Table215// No definition needed as it is a common description table header, the same with216// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.217//218219///220/// RSDT Revision (as defined in ACPI 5.0 spec.)221///222#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01223224//225// Extended System Description Table226// No definition needed as it is a common description table header, the same with227// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.228//229230///231/// XSDT Revision (as defined in ACPI 5.0 spec.)232///233#define EFI_ACPI_5_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01234235///236/// Fixed ACPI Description Table Structure (FADT)237///238typedef struct {239EFI_ACPI_DESCRIPTION_HEADER Header;240UINT32 FirmwareCtrl;241UINT32 Dsdt;242UINT8 Reserved0;243UINT8 PreferredPmProfile;244UINT16 SciInt;245UINT32 SmiCmd;246UINT8 AcpiEnable;247UINT8 AcpiDisable;248UINT8 S4BiosReq;249UINT8 PstateCnt;250UINT32 Pm1aEvtBlk;251UINT32 Pm1bEvtBlk;252UINT32 Pm1aCntBlk;253UINT32 Pm1bCntBlk;254UINT32 Pm2CntBlk;255UINT32 PmTmrBlk;256UINT32 Gpe0Blk;257UINT32 Gpe1Blk;258UINT8 Pm1EvtLen;259UINT8 Pm1CntLen;260UINT8 Pm2CntLen;261UINT8 PmTmrLen;262UINT8 Gpe0BlkLen;263UINT8 Gpe1BlkLen;264UINT8 Gpe1Base;265UINT8 CstCnt;266UINT16 PLvl2Lat;267UINT16 PLvl3Lat;268UINT16 FlushSize;269UINT16 FlushStride;270UINT8 DutyOffset;271UINT8 DutyWidth;272UINT8 DayAlrm;273UINT8 MonAlrm;274UINT8 Century;275UINT16 IaPcBootArch;276UINT8 Reserved1;277UINT32 Flags;278EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE ResetReg;279UINT8 ResetValue;280UINT8 Reserved2[3];281UINT64 XFirmwareCtrl;282UINT64 XDsdt;283EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;284EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;285EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;286EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;287EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;288EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;289EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;290EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;291EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepControlReg;292EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg;293} EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE;294295///296/// FADT Version (as defined in ACPI 5.0 spec.)297///298#define EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x05299300//301// Fixed ACPI Description Table Preferred Power Management Profile302//303#define EFI_ACPI_5_0_PM_PROFILE_UNSPECIFIED 0304#define EFI_ACPI_5_0_PM_PROFILE_DESKTOP 1305#define EFI_ACPI_5_0_PM_PROFILE_MOBILE 2306#define EFI_ACPI_5_0_PM_PROFILE_WORKSTATION 3307#define EFI_ACPI_5_0_PM_PROFILE_ENTERPRISE_SERVER 4308#define EFI_ACPI_5_0_PM_PROFILE_SOHO_SERVER 5309#define EFI_ACPI_5_0_PM_PROFILE_APPLIANCE_PC 6310#define EFI_ACPI_5_0_PM_PROFILE_PERFORMANCE_SERVER 7311#define EFI_ACPI_5_0_PM_PROFILE_TABLET 8312313//314// Fixed ACPI Description Table Boot Architecture Flags315// All other bits are reserved and must be set to 0.316//317#define EFI_ACPI_5_0_LEGACY_DEVICES BIT0318#define EFI_ACPI_5_0_8042 BIT1319#define EFI_ACPI_5_0_VGA_NOT_PRESENT BIT2320#define EFI_ACPI_5_0_MSI_NOT_SUPPORTED BIT3321#define EFI_ACPI_5_0_PCIE_ASPM_CONTROLS BIT4322#define EFI_ACPI_5_0_CMOS_RTC_NOT_PRESENT BIT5323324//325// Fixed ACPI Description Table Fixed Feature Flags326// All other bits are reserved and must be set to 0.327//328#define EFI_ACPI_5_0_WBINVD BIT0329#define EFI_ACPI_5_0_WBINVD_FLUSH BIT1330#define EFI_ACPI_5_0_PROC_C1 BIT2331#define EFI_ACPI_5_0_P_LVL2_UP BIT3332#define EFI_ACPI_5_0_PWR_BUTTON BIT4333#define EFI_ACPI_5_0_SLP_BUTTON BIT5334#define EFI_ACPI_5_0_FIX_RTC BIT6335#define EFI_ACPI_5_0_RTC_S4 BIT7336#define EFI_ACPI_5_0_TMR_VAL_EXT BIT8337#define EFI_ACPI_5_0_DCK_CAP BIT9338#define EFI_ACPI_5_0_RESET_REG_SUP BIT10339#define EFI_ACPI_5_0_SEALED_CASE BIT11340#define EFI_ACPI_5_0_HEADLESS BIT12341#define EFI_ACPI_5_0_CPU_SW_SLP BIT13342#define EFI_ACPI_5_0_PCI_EXP_WAK BIT14343#define EFI_ACPI_5_0_USE_PLATFORM_CLOCK BIT15344#define EFI_ACPI_5_0_S4_RTC_STS_VALID BIT16345#define EFI_ACPI_5_0_REMOTE_POWER_ON_CAPABLE BIT17346#define EFI_ACPI_5_0_FORCE_APIC_CLUSTER_MODEL BIT18347#define EFI_ACPI_5_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19348#define EFI_ACPI_5_0_HW_REDUCED_ACPI BIT20349#define EFI_ACPI_5_0_LOW_POWER_S0_IDLE_CAPABLE BIT21350351///352/// Firmware ACPI Control Structure353///354typedef struct {355UINT32 Signature;356UINT32 Length;357UINT32 HardwareSignature;358UINT32 FirmwareWakingVector;359UINT32 GlobalLock;360UINT32 Flags;361UINT64 XFirmwareWakingVector;362UINT8 Version;363UINT8 Reserved0[3];364UINT32 OspmFlags;365UINT8 Reserved1[24];366} EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE;367368///369/// FACS Version (as defined in ACPI 5.0 spec.)370///371#define EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02372373///374/// Firmware Control Structure Feature Flags375/// All other bits are reserved and must be set to 0.376///377#define EFI_ACPI_5_0_S4BIOS_F BIT0378#define EFI_ACPI_5_0_64BIT_WAKE_SUPPORTED_F BIT1379380///381/// OSPM Enabled Firmware Control Structure Flags382/// All other bits are reserved and must be set to 0.383///384#define EFI_ACPI_5_0_OSPM_64BIT_WAKE_F BIT0385386//387// Differentiated System Description Table,388// Secondary System Description Table389// and Persistent System Description Table,390// no definition needed as they are common description table header, the same with391// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.392//393#define EFI_ACPI_5_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02394#define EFI_ACPI_5_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02395396///397/// Multiple APIC Description Table header definition. The rest of the table398/// must be defined in a platform specific manner.399///400typedef struct {401EFI_ACPI_DESCRIPTION_HEADER Header;402UINT32 LocalApicAddress;403UINT32 Flags;404} EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;405406///407/// MADT Revision (as defined in ACPI 5.0 spec.)408///409#define EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03410411///412/// Multiple APIC Flags413/// All other bits are reserved and must be set to 0.414///415#define EFI_ACPI_5_0_PCAT_COMPAT BIT0416417//418// Multiple APIC Description Table APIC structure types419// All other values between 0x0D and 0x7F are reserved and420// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.421//422#define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC 0x00423#define EFI_ACPI_5_0_IO_APIC 0x01424#define EFI_ACPI_5_0_INTERRUPT_SOURCE_OVERRIDE 0x02425#define EFI_ACPI_5_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03426#define EFI_ACPI_5_0_LOCAL_APIC_NMI 0x04427#define EFI_ACPI_5_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05428#define EFI_ACPI_5_0_IO_SAPIC 0x06429#define EFI_ACPI_5_0_LOCAL_SAPIC 0x07430#define EFI_ACPI_5_0_PLATFORM_INTERRUPT_SOURCES 0x08431#define EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC 0x09432#define EFI_ACPI_5_0_LOCAL_X2APIC_NMI 0x0A433#define EFI_ACPI_5_0_GIC 0x0B434#define EFI_ACPI_5_0_GICD 0x0C435436//437// APIC Structure Definitions438//439440///441/// Processor Local APIC Structure Definition442///443typedef struct {444UINT8 Type;445UINT8 Length;446UINT8 AcpiProcessorId;447UINT8 ApicId;448UINT32 Flags;449} EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_STRUCTURE;450451///452/// Local APIC Flags. All other bits are reserved and must be 0.453///454#define EFI_ACPI_5_0_LOCAL_APIC_ENABLED BIT0455456///457/// IO APIC Structure458///459typedef struct {460UINT8 Type;461UINT8 Length;462UINT8 IoApicId;463UINT8 Reserved;464UINT32 IoApicAddress;465UINT32 GlobalSystemInterruptBase;466} EFI_ACPI_5_0_IO_APIC_STRUCTURE;467468///469/// Interrupt Source Override Structure470///471typedef struct {472UINT8 Type;473UINT8 Length;474UINT8 Bus;475UINT8 Source;476UINT32 GlobalSystemInterrupt;477UINT16 Flags;478} EFI_ACPI_5_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;479480///481/// Platform Interrupt Sources Structure Definition482///483typedef struct {484UINT8 Type;485UINT8 Length;486UINT16 Flags;487UINT8 InterruptType;488UINT8 ProcessorId;489UINT8 ProcessorEid;490UINT8 IoSapicVector;491UINT32 GlobalSystemInterrupt;492UINT32 PlatformInterruptSourceFlags;493UINT8 CpeiProcessorOverride;494UINT8 Reserved[31];495} EFI_ACPI_5_0_PLATFORM_INTERRUPT_APIC_STRUCTURE;496497//498// MPS INTI flags.499// All other bits are reserved and must be set to 0.500//501#define EFI_ACPI_5_0_POLARITY (3 << 0)502#define EFI_ACPI_5_0_TRIGGER_MODE (3 << 2)503504///505/// Non-Maskable Interrupt Source Structure506///507typedef struct {508UINT8 Type;509UINT8 Length;510UINT16 Flags;511UINT32 GlobalSystemInterrupt;512} EFI_ACPI_5_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;513514///515/// Local APIC NMI Structure516///517typedef struct {518UINT8 Type;519UINT8 Length;520UINT8 AcpiProcessorId;521UINT16 Flags;522UINT8 LocalApicLint;523} EFI_ACPI_5_0_LOCAL_APIC_NMI_STRUCTURE;524525///526/// Local APIC Address Override Structure527///528typedef struct {529UINT8 Type;530UINT8 Length;531UINT16 Reserved;532UINT64 LocalApicAddress;533} EFI_ACPI_5_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;534535///536/// IO SAPIC Structure537///538typedef struct {539UINT8 Type;540UINT8 Length;541UINT8 IoApicId;542UINT8 Reserved;543UINT32 GlobalSystemInterruptBase;544UINT64 IoSapicAddress;545} EFI_ACPI_5_0_IO_SAPIC_STRUCTURE;546547///548/// Local SAPIC Structure549/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String550///551typedef struct {552UINT8 Type;553UINT8 Length;554UINT8 AcpiProcessorId;555UINT8 LocalSapicId;556UINT8 LocalSapicEid;557UINT8 Reserved[3];558UINT32 Flags;559UINT32 ACPIProcessorUIDValue;560} EFI_ACPI_5_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE;561562///563/// Platform Interrupt Sources Structure564///565typedef struct {566UINT8 Type;567UINT8 Length;568UINT16 Flags;569UINT8 InterruptType;570UINT8 ProcessorId;571UINT8 ProcessorEid;572UINT8 IoSapicVector;573UINT32 GlobalSystemInterrupt;574UINT32 PlatformInterruptSourceFlags;575} EFI_ACPI_5_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;576577///578/// Platform Interrupt Source Flags.579/// All other bits are reserved and must be set to 0.580///581#define EFI_ACPI_5_0_CPEI_PROCESSOR_OVERRIDE BIT0582583///584/// Processor Local x2APIC Structure Definition585///586typedef struct {587UINT8 Type;588UINT8 Length;589UINT8 Reserved[2];590UINT32 X2ApicId;591UINT32 Flags;592UINT32 AcpiProcessorUid;593} EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE;594595///596/// Local x2APIC NMI Structure597///598typedef struct {599UINT8 Type;600UINT8 Length;601UINT16 Flags;602UINT32 AcpiProcessorUid;603UINT8 LocalX2ApicLint;604UINT8 Reserved[3];605} EFI_ACPI_5_0_LOCAL_X2APIC_NMI_STRUCTURE;606607///608/// GIC Structure609///610typedef struct {611UINT8 Type;612UINT8 Length;613UINT16 Reserved;614UINT32 GicId;615UINT32 AcpiProcessorUid;616UINT32 Flags;617UINT32 ParkingProtocolVersion;618UINT32 PerformanceInterruptGsiv;619UINT64 ParkedAddress;620UINT64 PhysicalBaseAddress;621} EFI_ACPI_5_0_GIC_STRUCTURE;622623///624/// GIC Flags. All other bits are reserved and must be 0.625///626#define EFI_ACPI_5_0_GIC_ENABLED BIT0627#define EFI_ACPI_5_0_PERFORMANCE_INTERRUPT_MODEL BIT1628629///630/// GIC Distributor Structure631///632typedef struct {633UINT8 Type;634UINT8 Length;635UINT16 Reserved1;636UINT32 GicId;637UINT64 PhysicalBaseAddress;638UINT32 SystemVectorBase;639UINT32 Reserved2;640} EFI_ACPI_5_0_GIC_DISTRIBUTOR_STRUCTURE;641642///643/// Smart Battery Description Table (SBST)644///645typedef struct {646EFI_ACPI_DESCRIPTION_HEADER Header;647UINT32 WarningEnergyLevel;648UINT32 LowEnergyLevel;649UINT32 CriticalEnergyLevel;650} EFI_ACPI_5_0_SMART_BATTERY_DESCRIPTION_TABLE;651652///653/// SBST Version (as defined in ACPI 5.0 spec.)654///655#define EFI_ACPI_5_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01656657///658/// Embedded Controller Boot Resources Table (ECDT)659/// The table is followed by a null terminated ASCII string that contains660/// a fully qualified reference to the name space object.661///662typedef struct {663EFI_ACPI_DESCRIPTION_HEADER Header;664EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE EcControl;665EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE EcData;666UINT32 Uid;667UINT8 GpeBit;668} EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;669670///671/// ECDT Version (as defined in ACPI 5.0 spec.)672///673#define EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01674675///676/// System Resource Affinity Table (SRAT). The rest of the table677/// must be defined in a platform specific manner.678///679typedef struct {680EFI_ACPI_DESCRIPTION_HEADER Header;681UINT32 Reserved1; ///< Must be set to 1682UINT64 Reserved2;683} EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;684685///686/// SRAT Version (as defined in ACPI 5.0 spec.)687///688#define EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03689690//691// SRAT structure types.692// All other values between 0x03 an 0xFF are reserved and693// will be ignored by OSPM.694//695#define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00696#define EFI_ACPI_5_0_MEMORY_AFFINITY 0x01697#define EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02698699///700/// Processor Local APIC/SAPIC Affinity Structure Definition701///702typedef struct {703UINT8 Type;704UINT8 Length;705UINT8 ProximityDomain7To0;706UINT8 ApicId;707UINT32 Flags;708UINT8 LocalSapicEid;709UINT8 ProximityDomain31To8[3];710UINT32 ClockDomain;711} EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;712713///714/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.715///716#define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)717718///719/// Memory Affinity Structure Definition720///721typedef struct {722UINT8 Type;723UINT8 Length;724UINT32 ProximityDomain;725UINT16 Reserved1;726UINT32 AddressBaseLow;727UINT32 AddressBaseHigh;728UINT32 LengthLow;729UINT32 LengthHigh;730UINT32 Reserved2;731UINT32 Flags;732UINT64 Reserved3;733} EFI_ACPI_5_0_MEMORY_AFFINITY_STRUCTURE;734735//736// Memory Flags. All other bits are reserved and must be 0.737//738#define EFI_ACPI_5_0_MEMORY_ENABLED (1 << 0)739#define EFI_ACPI_5_0_MEMORY_HOT_PLUGGABLE (1 << 1)740#define EFI_ACPI_5_0_MEMORY_NONVOLATILE (1 << 2)741742///743/// Processor Local x2APIC Affinity Structure Definition744///745typedef struct {746UINT8 Type;747UINT8 Length;748UINT8 Reserved1[2];749UINT32 ProximityDomain;750UINT32 X2ApicId;751UINT32 Flags;752UINT32 ClockDomain;753UINT8 Reserved2[4];754} EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;755756///757/// System Locality Distance Information Table (SLIT).758/// The rest of the table is a matrix.759///760typedef struct {761EFI_ACPI_DESCRIPTION_HEADER Header;762UINT64 NumberOfSystemLocalities;763} EFI_ACPI_5_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;764765///766/// SLIT Version (as defined in ACPI 5.0 spec.)767///768#define EFI_ACPI_5_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01769770///771/// Corrected Platform Error Polling Table (CPEP)772///773typedef struct {774EFI_ACPI_DESCRIPTION_HEADER Header;775UINT8 Reserved[8];776} EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;777778///779/// CPEP Version (as defined in ACPI 5.0 spec.)780///781#define EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01782783//784// CPEP processor structure types.785//786#define EFI_ACPI_5_0_CPEP_PROCESSOR_APIC_SAPIC 0x00787788///789/// Corrected Platform Error Polling Processor Structure Definition790///791typedef struct {792UINT8 Type;793UINT8 Length;794UINT8 ProcessorId;795UINT8 ProcessorEid;796UINT32 PollingInterval;797} EFI_ACPI_5_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;798799///800/// Maximum System Characteristics Table (MSCT)801///802typedef struct {803EFI_ACPI_DESCRIPTION_HEADER Header;804UINT32 OffsetProxDomInfo;805UINT32 MaximumNumberOfProximityDomains;806UINT32 MaximumNumberOfClockDomains;807UINT64 MaximumPhysicalAddress;808} EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;809810///811/// MSCT Version (as defined in ACPI 5.0 spec.)812///813#define EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01814815///816/// Maximum Proximity Domain Information Structure Definition817///818typedef struct {819UINT8 Revision;820UINT8 Length;821UINT32 ProximityDomainRangeLow;822UINT32 ProximityDomainRangeHigh;823UINT32 MaximumProcessorCapacity;824UINT64 MaximumMemoryCapacity;825} EFI_ACPI_5_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;826827///828/// ACPI RAS Feature Table definition.829///830typedef struct {831EFI_ACPI_DESCRIPTION_HEADER Header;832UINT8 PlatformCommunicationChannelIdentifier[12];833} EFI_ACPI_5_0_RAS_FEATURE_TABLE;834835///836/// RASF Version (as defined in ACPI 5.0 spec.)837///838#define EFI_ACPI_5_0_RAS_FEATURE_TABLE_REVISION 0x01839840///841/// ACPI RASF Platform Communication Channel Shared Memory Region definition.842///843typedef struct {844UINT32 Signature;845UINT16 Command;846UINT16 Status;847UINT16 Version;848UINT8 RASCapabilities[16];849UINT8 SetRASCapabilities[16];850UINT16 NumberOfRASFParameterBlocks;851UINT32 SetRASCapabilitiesStatus;852} EFI_ACPI_5_0_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;853854///855/// ACPI RASF PCC command code856///857#define EFI_ACPI_5_0_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01858859///860/// ACPI RASF Platform RAS Capabilities861///862#define EFI_ACPI_5_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01863#define EFI_ACPI_5_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02864865///866/// ACPI RASF Parameter Block structure for PATROL_SCRUB867///868typedef struct {869UINT16 Type;870UINT16 Version;871UINT16 Length;872UINT16 PatrolScrubCommand;873UINT64 RequestedAddressRange[2];874UINT64 ActualAddressRange[2];875UINT16 Flags;876UINT8 RequestedSpeed;877} EFI_ACPI_5_0_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;878879///880/// ACPI RASF Patrol Scrub command881///882#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01883#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02884#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03885886///887/// Memory Power State Table definition.888///889typedef struct {890EFI_ACPI_DESCRIPTION_HEADER Header;891UINT8 PlatformCommunicationChannelIdentifier;892UINT8 Reserved[3];893// Memory Power Node Structure894// Memory Power State Characteristics895} EFI_ACPI_5_0_MEMORY_POWER_STATUS_TABLE;896897///898/// MPST Version (as defined in ACPI 5.0 spec.)899///900#define EFI_ACPI_5_0_MEMORY_POWER_STATE_TABLE_REVISION 0x01901902///903/// MPST Platform Communication Channel Shared Memory Region definition.904///905typedef struct {906UINT32 Signature;907UINT16 Command;908UINT16 Status;909UINT32 MemoryPowerCommandRegister;910UINT32 MemoryPowerStatusRegister;911UINT32 PowerStateId;912UINT32 MemoryPowerNodeId;913UINT64 MemoryEnergyConsumed;914UINT64 ExpectedAveragePowerComsuned;915} EFI_ACPI_5_0_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;916917///918/// ACPI MPST PCC command code919///920#define EFI_ACPI_5_0_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03921922///923/// ACPI MPST Memory Power command924///925#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01926#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02927#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03928#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04929930///931/// MPST Memory Power Node Table932///933typedef struct {934UINT8 PowerStateValue;935UINT8 PowerStateInformationIndex;936} EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE;937938typedef struct {939UINT8 Flag;940UINT8 Reserved;941UINT16 MemoryPowerNodeId;942UINT32 Length;943UINT64 AddressBase;944UINT64 AddressLength;945UINT32 NumberOfPowerStates;946UINT32 NumberOfPhysicalComponents;947// EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates];948// UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents];949} EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE;950951#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01952#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02953#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04954955typedef struct {956UINT16 MemoryPowerNodeCount;957UINT8 Reserved[2];958} EFI_ACPI_5_0_MPST_MEMORY_POWER_NODE_TABLE;959960///961/// MPST Memory Power State Characteristics Table962///963typedef struct {964UINT8 PowerStateStructureID;965UINT8 Flag;966UINT16 Reserved;967UINT32 AveragePowerConsumedInMPS0;968UINT32 RelativePowerSavingToMPS0;969UINT64 ExitLatencyToMPS0;970} EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;971972#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01973#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02974#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04975976typedef struct {977UINT16 MemoryPowerStateCharacteristicsCount;978UINT8 Reserved[2];979} EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;980981///982/// Memory Topology Table definition.983///984typedef struct {985EFI_ACPI_DESCRIPTION_HEADER Header;986UINT32 Reserved;987} EFI_ACPI_5_0_MEMORY_TOPOLOGY_TABLE;988989///990/// PMTT Version (as defined in ACPI 5.0 spec.)991///992#define EFI_ACPI_5_0_MEMORY_TOPOLOGY_TABLE_REVISION 0x01993994///995/// Common Memory Aggregator Device Structure.996///997typedef struct {998UINT8 Type;999UINT8 Reserved;1000UINT16 Length;1001UINT16 Flags;1002UINT16 Reserved1;1003} EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;10041005///1006/// Memory Aggregator Device Type1007///1008#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x01009#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x11010#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM 0x210111012///1013/// Socket Memory Aggregator Device Structure.1014///1015typedef struct {1016EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;1017UINT16 SocketIdentifier;1018UINT16 Reserved;1019// EFI_ACPI_5_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[];1020} EFI_ACPI_5_0_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;10211022///1023/// MemoryController Memory Aggregator Device Structure.1024///1025typedef struct {1026EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;1027UINT32 ReadLatency;1028UINT32 WriteLatency;1029UINT32 ReadBandwidth;1030UINT32 WriteBandwidth;1031UINT16 OptimalAccessUnit;1032UINT16 OptimalAccessAlignment;1033UINT16 Reserved;1034UINT16 NumberOfProximityDomains;1035// UINT32 ProximityDomain[NumberOfProximityDomains];1036// EFI_ACPI_5_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[];1037} EFI_ACPI_5_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;10381039///1040/// DIMM Memory Aggregator Device Structure.1041///1042typedef struct {1043EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;1044UINT16 PhysicalComponentIdentifier;1045UINT16 Reserved;1046UINT32 SizeOfDimm;1047UINT32 SmbiosHandle;1048} EFI_ACPI_5_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;10491050///1051/// Boot Graphics Resource Table definition.1052///1053typedef struct {1054EFI_ACPI_DESCRIPTION_HEADER Header;1055///1056/// 2-bytes (16 bit) version ID. This value must be 1.1057///1058UINT16 Version;1059///1060/// 1-byte status field indicating current status about the table.1061/// Bits[7:1] = Reserved (must be zero)1062/// Bit [0] = Valid. A one indicates the boot image graphic is valid.1063///1064UINT8 Status;1065///1066/// 1-byte enumerated type field indicating format of the image.1067/// 0 = Bitmap1068/// 1 - 255 Reserved (for future use)1069///1070UINT8 ImageType;1071///1072/// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy1073/// of the image bitmap.1074///1075UINT64 ImageAddress;1076///1077/// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.1078/// (X, Y) display offset of the top left corner of the boot image.1079/// The top left corner of the display is at offset (0, 0).1080///1081UINT32 ImageOffsetX;1082///1083/// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.1084/// (X, Y) display offset of the top left corner of the boot image.1085/// The top left corner of the display is at offset (0, 0).1086///1087UINT32 ImageOffsetY;1088} EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE;10891090///1091/// BGRT Revision1092///1093#define EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 110941095///1096/// BGRT Version1097///1098#define EFI_ACPI_5_0_BGRT_VERSION 0x0110991100///1101/// BGRT Status1102///1103#define EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED 0x001104#define EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED 0x011105#define EFI_ACPI_5_0_BGRT_STATUS_INVALID EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED1106#define EFI_ACPI_5_0_BGRT_STATUS_VALID EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED11071108///1109/// BGRT Image Type1110///1111#define EFI_ACPI_5_0_BGRT_IMAGE_TYPE_BMP 0x0011121113///1114/// FPDT Version (as defined in ACPI 5.0 spec.)1115///1116#define EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x0111171118///1119/// FPDT Performance Record Types1120///1121#define EFI_ACPI_5_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x00001122#define EFI_ACPI_5_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x000111231124///1125/// FPDT Performance Record Revision1126///1127#define EFI_ACPI_5_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x011128#define EFI_ACPI_5_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x0111291130///1131/// FPDT Runtime Performance Record Types1132///1133#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x00001134#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x00011135#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x000211361137///1138/// FPDT Runtime Performance Record Revision1139///1140#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x011141#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x011142#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x0211431144///1145/// FPDT Performance Record header1146///1147typedef struct {1148UINT16 Type;1149UINT8 Length;1150UINT8 Revision;1151} EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER;11521153///1154/// FPDT Performance Table header1155///1156typedef struct {1157UINT32 Signature;1158UINT32 Length;1159} EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER;11601161///1162/// FPDT Firmware Basic Boot Performance Pointer Record Structure1163///1164typedef struct {1165EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;1166UINT32 Reserved;1167///1168/// 64-bit processor-relative physical address of the Basic Boot Performance Table.1169///1170UINT64 BootPerformanceTablePointer;1171} EFI_ACPI_5_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;11721173///1174/// FPDT S3 Performance Table Pointer Record Structure1175///1176typedef struct {1177EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;1178UINT32 Reserved;1179///1180/// 64-bit processor-relative physical address of the S3 Performance Table.1181///1182UINT64 S3PerformanceTablePointer;1183} EFI_ACPI_5_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;11841185///1186/// FPDT Firmware Basic Boot Performance Record Structure1187///1188typedef struct {1189EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;1190UINT32 Reserved;1191///1192/// Timer value logged at the beginning of firmware image execution.1193/// This may not always be zero or near zero.1194///1195UINT64 ResetEnd;1196///1197/// Timer value logged just prior to loading the OS boot loader into memory.1198/// For non-UEFI compatible boots, this field must be zero.1199///1200UINT64 OsLoaderLoadImageStart;1201///1202/// Timer value logged just prior to launching the previously loaded OS boot loader image.1203/// For non-UEFI compatible boots, the timer value logged will be just prior1204/// to the INT 19h handler invocation.1205///1206UINT64 OsLoaderStartImageStart;1207///1208/// Timer value logged at the point when the OS loader calls the1209/// ExitBootServices function for UEFI compatible firmware.1210/// For non-UEFI compatible boots, this field must be zero.1211///1212UINT64 ExitBootServicesEntry;1213///1214/// Timer value logged at the point just prior to when the OS loader gaining1215/// control back from calls the ExitBootServices function for UEFI compatible firmware.1216/// For non-UEFI compatible boots, this field must be zero.1217///1218UINT64 ExitBootServicesExit;1219} EFI_ACPI_5_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD;12201221///1222/// FPDT Firmware Basic Boot Performance Table signature1223///1224#define EFI_ACPI_5_0_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T')12251226//1227// FPDT Firmware Basic Boot Performance Table1228//1229typedef struct {1230EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER Header;1231//1232// one or more Performance Records.1233//1234} EFI_ACPI_5_0_FPDT_FIRMWARE_BASIC_BOOT_TABLE;12351236///1237/// FPDT "S3PT" S3 Performance Table1238///1239#define EFI_ACPI_5_0_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T')12401241//1242// FPDT Firmware S3 Boot Performance Table1243//1244typedef struct {1245EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER Header;1246//1247// one or more Performance Records.1248//1249} EFI_ACPI_5_0_FPDT_FIRMWARE_S3_BOOT_TABLE;12501251///1252/// FPDT Basic S3 Resume Performance Record1253///1254typedef struct {1255EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;1256///1257/// A count of the number of S3 resume cycles since the last full boot sequence.1258///1259UINT32 ResumeCount;1260///1261/// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the1262/// OS waking vector. Only the most recent resume cycle's time is retained.1263///1264UINT64 FullResume;1265///1266/// Average timer value of all resume cycles logged since the last full boot1267/// sequence, including the most recent resume. Note that the entire log of1268/// timer values does not need to be retained in order to calculate this average.1269///1270UINT64 AverageResume;1271} EFI_ACPI_5_0_FPDT_S3_RESUME_RECORD;12721273///1274/// FPDT Basic S3 Suspend Performance Record1275///1276typedef struct {1277EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header;1278///1279/// Timer value recorded at the OS write to SLP_TYP upon entry to S3.1280/// Only the most recent suspend cycle's timer value is retained.1281///1282UINT64 SuspendStart;1283///1284/// Timer value recorded at the final firmware write to SLP_TYP (or other1285/// mechanism) used to trigger hardware entry to S3.1286/// Only the most recent suspend cycle's timer value is retained.1287///1288UINT64 SuspendEnd;1289} EFI_ACPI_5_0_FPDT_S3_SUSPEND_RECORD;12901291///1292/// Firmware Performance Record Table definition.1293///1294typedef struct {1295EFI_ACPI_DESCRIPTION_HEADER Header;1296} EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_RECORD_TABLE;12971298///1299/// Generic Timer Description Table definition.1300///1301typedef struct {1302EFI_ACPI_DESCRIPTION_HEADER Header;1303UINT64 PhysicalAddress;1304UINT32 GlobalFlags;1305UINT32 SecurePL1TimerGSIV;1306UINT32 SecurePL1TimerFlags;1307UINT32 NonSecurePL1TimerGSIV;1308UINT32 NonSecurePL1TimerFlags;1309UINT32 VirtualTimerGSIV;1310UINT32 VirtualTimerFlags;1311UINT32 NonSecurePL2TimerGSIV;1312UINT32 NonSecurePL2TimerFlags;1313} EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE;13141315///1316/// GTDT Version (as defined in ACPI 5.0 spec.)1317///1318#define EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x0113191320///1321/// Global Flags. All other bits are reserved and must be 0.1322///1323#define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_MEMORY_MAPPED_BLOCK_PRESENT BIT01324#define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_INTERRUPT_MODE BIT113251326///1327/// Timer Flags. All other bits are reserved and must be 0.1328///1329#define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT01330#define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT113311332///1333/// Boot Error Record Table (BERT)1334///1335typedef struct {1336EFI_ACPI_DESCRIPTION_HEADER Header;1337UINT32 BootErrorRegionLength;1338UINT64 BootErrorRegion;1339} EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_HEADER;13401341///1342/// BERT Version (as defined in ACPI 5.0 spec.)1343///1344#define EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x0113451346///1347/// Boot Error Region Block Status Definition1348///1349typedef struct {1350UINT32 UncorrectableErrorValid : 1;1351UINT32 CorrectableErrorValid : 1;1352UINT32 MultipleUncorrectableErrors : 1;1353UINT32 MultipleCorrectableErrors : 1;1354UINT32 ErrorDataEntryCount : 10;1355UINT32 Reserved : 18;1356} EFI_ACPI_5_0_ERROR_BLOCK_STATUS;13571358///1359/// Boot Error Region Definition1360///1361typedef struct {1362EFI_ACPI_5_0_ERROR_BLOCK_STATUS BlockStatus;1363UINT32 RawDataOffset;1364UINT32 RawDataLength;1365UINT32 DataLength;1366UINT32 ErrorSeverity;1367} EFI_ACPI_5_0_BOOT_ERROR_REGION_STRUCTURE;13681369//1370// Boot Error Severity types1371//1372#define EFI_ACPI_5_0_ERROR_SEVERITY_CORRECTABLE 0x001373#define EFI_ACPI_5_0_ERROR_SEVERITY_RECOVERABLE 0x001374#define EFI_ACPI_5_0_ERROR_SEVERITY_FATAL 0x011375#define EFI_ACPI_5_0_ERROR_SEVERITY_CORRECTED 0x021376#define EFI_ACPI_5_0_ERROR_SEVERITY_NONE 0x0313771378///1379/// Generic Error Data Entry Definition1380///1381typedef struct {1382UINT8 SectionType[16];1383UINT32 ErrorSeverity;1384UINT16 Revision;1385UINT8 ValidationBits;1386UINT8 Flags;1387UINT32 ErrorDataLength;1388UINT8 FruId[16];1389UINT8 FruText[20];1390} EFI_ACPI_5_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;13911392///1393/// Generic Error Data Entry Version (as defined in ACPI 5.0 spec.)1394///1395#define EFI_ACPI_5_0_GENERIC_ERROR_DATA_ENTRY_REVISION 0x020113961397///1398/// HEST - Hardware Error Source Table1399///1400typedef struct {1401EFI_ACPI_DESCRIPTION_HEADER Header;1402UINT32 ErrorSourceCount;1403} EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER;14041405///1406/// HEST Version (as defined in ACPI 5.0 spec.)1407///1408#define EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x0114091410//1411// Error Source structure types.1412//1413#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x001414#define EFI_ACPI_5_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x011415#define EFI_ACPI_5_0_IA32_ARCHITECTURE_NMI_ERROR 0x021416#define EFI_ACPI_5_0_PCI_EXPRESS_ROOT_PORT_AER 0x061417#define EFI_ACPI_5_0_PCI_EXPRESS_DEVICE_AER 0x071418#define EFI_ACPI_5_0_PCI_EXPRESS_BRIDGE_AER 0x081419#define EFI_ACPI_5_0_GENERIC_HARDWARE_ERROR 0x0914201421//1422// Error Source structure flags.1423//1424#define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0)1425#define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_GLOBAL (1 << 1)14261427///1428/// IA-32 Architecture Machine Check Exception Structure Definition1429///1430typedef struct {1431UINT16 Type;1432UINT16 SourceId;1433UINT8 Reserved0[2];1434UINT8 Flags;1435UINT8 Enabled;1436UINT32 NumberOfRecordsToPreAllocate;1437UINT32 MaxSectionsPerRecord;1438UINT64 GlobalCapabilityInitData;1439UINT64 GlobalControlInitData;1440UINT8 NumberOfHardwareBanks;1441UINT8 Reserved1[7];1442} EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;14431444///1445/// IA-32 Architecture Machine Check Bank Structure Definition1446///1447typedef struct {1448UINT8 BankNumber;1449UINT8 ClearStatusOnInitialization;1450UINT8 StatusDataFormat;1451UINT8 Reserved0;1452UINT32 ControlRegisterMsrAddress;1453UINT64 ControlInitData;1454UINT32 StatusRegisterMsrAddress;1455UINT32 AddressRegisterMsrAddress;1456UINT32 MiscRegisterMsrAddress;1457} EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;14581459///1460/// IA-32 Architecture Machine Check Bank Structure MCA data format1461///1462#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x001463#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x011464#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x0214651466//1467// Hardware Error Notification types. All other values are reserved1468//1469#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_POLLED 0x001470#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x011471#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x021472#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_SCI 0x031473#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_NMI 0x0414741475///1476/// Hardware Error Notification Configuration Write Enable Structure Definition1477///1478typedef struct {1479UINT16 Type : 1;1480UINT16 PollInterval : 1;1481UINT16 SwitchToPollingThresholdValue : 1;1482UINT16 SwitchToPollingThresholdWindow : 1;1483UINT16 ErrorThresholdValue : 1;1484UINT16 ErrorThresholdWindow : 1;1485UINT16 Reserved : 10;1486} EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;14871488///1489/// Hardware Error Notification Structure Definition1490///1491typedef struct {1492UINT8 Type;1493UINT8 Length;1494EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable;1495UINT32 PollInterval;1496UINT32 Vector;1497UINT32 SwitchToPollingThresholdValue;1498UINT32 SwitchToPollingThresholdWindow;1499UINT32 ErrorThresholdValue;1500UINT32 ErrorThresholdWindow;1501} EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;15021503///1504/// IA-32 Architecture Corrected Machine Check Structure Definition1505///1506typedef struct {1507UINT16 Type;1508UINT16 SourceId;1509UINT8 Reserved0[2];1510UINT8 Flags;1511UINT8 Enabled;1512UINT32 NumberOfRecordsToPreAllocate;1513UINT32 MaxSectionsPerRecord;1514EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;1515UINT8 NumberOfHardwareBanks;1516UINT8 Reserved1[3];1517} EFI_ACPI_5_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;15181519///1520/// IA-32 Architecture NMI Error Structure Definition1521///1522typedef struct {1523UINT16 Type;1524UINT16 SourceId;1525UINT8 Reserved0[2];1526UINT32 NumberOfRecordsToPreAllocate;1527UINT32 MaxSectionsPerRecord;1528UINT32 MaxRawDataLength;1529} EFI_ACPI_5_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;15301531///1532/// PCI Express Root Port AER Structure Definition1533///1534typedef struct {1535UINT16 Type;1536UINT16 SourceId;1537UINT8 Reserved0[2];1538UINT8 Flags;1539UINT8 Enabled;1540UINT32 NumberOfRecordsToPreAllocate;1541UINT32 MaxSectionsPerRecord;1542UINT32 Bus;1543UINT16 Device;1544UINT16 Function;1545UINT16 DeviceControl;1546UINT8 Reserved1[2];1547UINT32 UncorrectableErrorMask;1548UINT32 UncorrectableErrorSeverity;1549UINT32 CorrectableErrorMask;1550UINT32 AdvancedErrorCapabilitiesAndControl;1551UINT32 RootErrorCommand;1552} EFI_ACPI_5_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;15531554///1555/// PCI Express Device AER Structure Definition1556///1557typedef struct {1558UINT16 Type;1559UINT16 SourceId;1560UINT8 Reserved0[2];1561UINT8 Flags;1562UINT8 Enabled;1563UINT32 NumberOfRecordsToPreAllocate;1564UINT32 MaxSectionsPerRecord;1565UINT32 Bus;1566UINT16 Device;1567UINT16 Function;1568UINT16 DeviceControl;1569UINT8 Reserved1[2];1570UINT32 UncorrectableErrorMask;1571UINT32 UncorrectableErrorSeverity;1572UINT32 CorrectableErrorMask;1573UINT32 AdvancedErrorCapabilitiesAndControl;1574} EFI_ACPI_5_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE;15751576///1577/// PCI Express Bridge AER Structure Definition1578///1579typedef struct {1580UINT16 Type;1581UINT16 SourceId;1582UINT8 Reserved0[2];1583UINT8 Flags;1584UINT8 Enabled;1585UINT32 NumberOfRecordsToPreAllocate;1586UINT32 MaxSectionsPerRecord;1587UINT32 Bus;1588UINT16 Device;1589UINT16 Function;1590UINT16 DeviceControl;1591UINT8 Reserved1[2];1592UINT32 UncorrectableErrorMask;1593UINT32 UncorrectableErrorSeverity;1594UINT32 CorrectableErrorMask;1595UINT32 AdvancedErrorCapabilitiesAndControl;1596UINT32 SecondaryUncorrectableErrorMask;1597UINT32 SecondaryUncorrectableErrorSeverity;1598UINT32 SecondaryAdvancedErrorCapabilitiesAndControl;1599} EFI_ACPI_5_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;16001601///1602/// Generic Hardware Error Source Structure Definition1603///1604typedef struct {1605UINT16 Type;1606UINT16 SourceId;1607UINT16 RelatedSourceId;1608UINT8 Flags;1609UINT8 Enabled;1610UINT32 NumberOfRecordsToPreAllocate;1611UINT32 MaxSectionsPerRecord;1612UINT32 MaxRawDataLength;1613EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;1614EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;1615UINT32 ErrorStatusBlockLength;1616} EFI_ACPI_5_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;16171618///1619/// Generic Error Status Definition1620///1621typedef struct {1622EFI_ACPI_5_0_ERROR_BLOCK_STATUS BlockStatus;1623UINT32 RawDataOffset;1624UINT32 RawDataLength;1625UINT32 DataLength;1626UINT32 ErrorSeverity;1627} EFI_ACPI_5_0_GENERIC_ERROR_STATUS_STRUCTURE;16281629///1630/// ERST - Error Record Serialization Table1631///1632typedef struct {1633EFI_ACPI_DESCRIPTION_HEADER Header;1634UINT32 SerializationHeaderSize;1635UINT8 Reserved0[4];1636UINT32 InstructionEntryCount;1637} EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;16381639///1640/// ERST Version (as defined in ACPI 5.0 spec.)1641///1642#define EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x0116431644///1645/// ERST Serialization Actions1646///1647#define EFI_ACPI_5_0_ERST_BEGIN_WRITE_OPERATION 0x001648#define EFI_ACPI_5_0_ERST_BEGIN_READ_OPERATION 0x011649#define EFI_ACPI_5_0_ERST_BEGIN_CLEAR_OPERATION 0x021650#define EFI_ACPI_5_0_ERST_END_OPERATION 0x031651#define EFI_ACPI_5_0_ERST_SET_RECORD_OFFSET 0x041652#define EFI_ACPI_5_0_ERST_EXECUTE_OPERATION 0x051653#define EFI_ACPI_5_0_ERST_CHECK_BUSY_STATUS 0x061654#define EFI_ACPI_5_0_ERST_GET_COMMAND_STATUS 0x071655#define EFI_ACPI_5_0_ERST_GET_RECORD_IDENTIFIER 0x081656#define EFI_ACPI_5_0_ERST_SET_RECORD_IDENTIFIER 0x091657#define EFI_ACPI_5_0_ERST_GET_RECORD_COUNT 0x0A1658#define EFI_ACPI_5_0_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B1659#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D1660#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E1661#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F16621663///1664/// ERST Action Command Status1665///1666#define EFI_ACPI_5_0_ERST_STATUS_SUCCESS 0x001667#define EFI_ACPI_5_0_ERST_STATUS_NOT_ENOUGH_SPACE 0x011668#define EFI_ACPI_5_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x021669#define EFI_ACPI_5_0_ERST_STATUS_FAILED 0x031670#define EFI_ACPI_5_0_ERST_STATUS_RECORD_STORE_EMPTY 0x041671#define EFI_ACPI_5_0_ERST_STATUS_RECORD_NOT_FOUND 0x0516721673///1674/// ERST Serialization Instructions1675///1676#define EFI_ACPI_5_0_ERST_READ_REGISTER 0x001677#define EFI_ACPI_5_0_ERST_READ_REGISTER_VALUE 0x011678#define EFI_ACPI_5_0_ERST_WRITE_REGISTER 0x021679#define EFI_ACPI_5_0_ERST_WRITE_REGISTER_VALUE 0x031680#define EFI_ACPI_5_0_ERST_NOOP 0x041681#define EFI_ACPI_5_0_ERST_LOAD_VAR1 0x051682#define EFI_ACPI_5_0_ERST_LOAD_VAR2 0x061683#define EFI_ACPI_5_0_ERST_STORE_VAR1 0x071684#define EFI_ACPI_5_0_ERST_ADD 0x081685#define EFI_ACPI_5_0_ERST_SUBTRACT 0x091686#define EFI_ACPI_5_0_ERST_ADD_VALUE 0x0A1687#define EFI_ACPI_5_0_ERST_SUBTRACT_VALUE 0x0B1688#define EFI_ACPI_5_0_ERST_STALL 0x0C1689#define EFI_ACPI_5_0_ERST_STALL_WHILE_TRUE 0x0D1690#define EFI_ACPI_5_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E1691#define EFI_ACPI_5_0_ERST_GOTO 0x0F1692#define EFI_ACPI_5_0_ERST_SET_SRC_ADDRESS_BASE 0x101693#define EFI_ACPI_5_0_ERST_SET_DST_ADDRESS_BASE 0x111694#define EFI_ACPI_5_0_ERST_MOVE_DATA 0x1216951696///1697/// ERST Instruction Flags1698///1699#define EFI_ACPI_5_0_ERST_PRESERVE_REGISTER 0x0117001701///1702/// ERST Serialization Instruction Entry1703///1704typedef struct {1705UINT8 SerializationAction;1706UINT8 Instruction;1707UINT8 Flags;1708UINT8 Reserved0;1709EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;1710UINT64 Value;1711UINT64 Mask;1712} EFI_ACPI_5_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY;17131714///1715/// EINJ - Error Injection Table1716///1717typedef struct {1718EFI_ACPI_DESCRIPTION_HEADER Header;1719UINT32 InjectionHeaderSize;1720UINT8 InjectionFlags;1721UINT8 Reserved0[3];1722UINT32 InjectionEntryCount;1723} EFI_ACPI_5_0_ERROR_INJECTION_TABLE_HEADER;17241725///1726/// EINJ Version (as defined in ACPI 5.0 spec.)1727///1728#define EFI_ACPI_5_0_ERROR_INJECTION_TABLE_REVISION 0x0117291730///1731/// EINJ Error Injection Actions1732///1733#define EFI_ACPI_5_0_EINJ_BEGIN_INJECTION_OPERATION 0x001734#define EFI_ACPI_5_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x011735#define EFI_ACPI_5_0_EINJ_SET_ERROR_TYPE 0x021736#define EFI_ACPI_5_0_EINJ_GET_ERROR_TYPE 0x031737#define EFI_ACPI_5_0_EINJ_END_OPERATION 0x041738#define EFI_ACPI_5_0_EINJ_EXECUTE_OPERATION 0x051739#define EFI_ACPI_5_0_EINJ_CHECK_BUSY_STATUS 0x061740#define EFI_ACPI_5_0_EINJ_GET_COMMAND_STATUS 0x071741#define EFI_ACPI_5_0_EINJ_TRIGGER_ERROR 0xFF17421743///1744/// EINJ Action Command Status1745///1746#define EFI_ACPI_5_0_EINJ_STATUS_SUCCESS 0x001747#define EFI_ACPI_5_0_EINJ_STATUS_UNKNOWN_FAILURE 0x011748#define EFI_ACPI_5_0_EINJ_STATUS_INVALID_ACCESS 0x0217491750///1751/// EINJ Error Type Definition1752///1753#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0)1754#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1)1755#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2)1756#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3)1757#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4)1758#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5)1759#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6)1760#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7)1761#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8)1762#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9)1763#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10)1764#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11)17651766///1767/// EINJ Injection Instructions1768///1769#define EFI_ACPI_5_0_EINJ_READ_REGISTER 0x001770#define EFI_ACPI_5_0_EINJ_READ_REGISTER_VALUE 0x011771#define EFI_ACPI_5_0_EINJ_WRITE_REGISTER 0x021772#define EFI_ACPI_5_0_EINJ_WRITE_REGISTER_VALUE 0x031773#define EFI_ACPI_5_0_EINJ_NOOP 0x0417741775///1776/// EINJ Instruction Flags1777///1778#define EFI_ACPI_5_0_EINJ_PRESERVE_REGISTER 0x0117791780///1781/// EINJ Injection Instruction Entry1782///1783typedef struct {1784UINT8 InjectionAction;1785UINT8 Instruction;1786UINT8 Flags;1787UINT8 Reserved0;1788EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion;1789UINT64 Value;1790UINT64 Mask;1791} EFI_ACPI_5_0_EINJ_INJECTION_INSTRUCTION_ENTRY;17921793///1794/// EINJ Trigger Action Table1795///1796typedef struct {1797UINT32 HeaderSize;1798UINT32 Revision;1799UINT32 TableSize;1800UINT32 EntryCount;1801} EFI_ACPI_5_0_EINJ_TRIGGER_ACTION_TABLE;18021803///1804/// Platform Communications Channel Table (PCCT)1805///1806typedef struct {1807EFI_ACPI_DESCRIPTION_HEADER Header;1808UINT32 Flags;1809UINT64 Reserved;1810} EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;18111812///1813/// PCCT Version (as defined in ACPI 5.0 spec.)1814///1815#define EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x0118161817///1818/// PCCT Global Flags1819///1820#define EFI_ACPI_5_0_PCCT_FLAGS_SCI_DOORBELL BIT018211822//1823// PCCT Subspace type1824//1825#define EFI_ACPI_5_0_PCCT_SUBSPACE_TYPE_GENERIC 0x0018261827///1828/// PCC Subspace Structure Header1829///1830typedef struct {1831UINT8 Type;1832UINT8 Length;1833} EFI_ACPI_5_0_PCCT_SUBSPACE_HEADER;18341835///1836/// Generic Communications Subspace Structure1837///1838typedef struct {1839UINT8 Type;1840UINT8 Length;1841UINT8 Reserved[6];1842UINT64 BaseAddress;1843UINT64 AddressLength;1844EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;1845UINT64 DoorbellPreserve;1846UINT64 DoorbellWrite;1847UINT32 NominalLatency;1848UINT32 MaximumPeriodicAccessRate;1849UINT16 MinimumRequestTurnaroundTime;1850} EFI_ACPI_5_0_PCCT_SUBSPACE_GENERIC;18511852///1853/// Generic Communications Channel Shared Memory Region1854///18551856typedef struct {1857UINT8 Command;1858UINT8 Reserved : 7;1859UINT8 GenerateSci : 1;1860} EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;18611862typedef struct {1863UINT8 CommandComplete : 1;1864UINT8 SciDoorbell : 1;1865UINT8 Error : 1;1866UINT8 PlatformNotification : 1;1867UINT8 Reserved : 4;1868UINT8 Reserved1;1869} EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;18701871typedef struct {1872UINT32 Signature;1873EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command;1874EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status;1875} EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER;18761877//1878// Known table signatures1879//18801881///1882/// "RSD PTR " Root System Description Pointer1883///1884#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')18851886///1887/// "APIC" Multiple APIC Description Table1888///1889#define EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')18901891///1892/// "BERT" Boot Error Record Table1893///1894#define EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T')18951896///1897/// "BGRT" Boot Graphics Resource Table1898///1899#define EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T')19001901///1902/// "CPEP" Corrected Platform Error Polling Table1903///1904#define EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')19051906///1907/// "DSDT" Differentiated System Description Table1908///1909#define EFI_ACPI_5_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')19101911///1912/// "ECDT" Embedded Controller Boot Resources Table1913///1914#define EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')19151916///1917/// "EINJ" Error Injection Table1918///1919#define EFI_ACPI_5_0_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J')19201921///1922/// "ERST" Error Record Serialization Table1923///1924#define EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T')19251926///1927/// "FACP" Fixed ACPI Description Table1928///1929#define EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')19301931///1932/// "FACS" Firmware ACPI Control Structure1933///1934#define EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')19351936///1937/// "FPDT" Firmware Performance Data Table1938///1939#define EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T')19401941///1942/// "GTDT" Generic Timer Description Table1943///1944#define EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T')19451946///1947/// "HEST" Hardware Error Source Table1948///1949#define EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T')19501951///1952/// "MPST" Memory Power State Table1953///1954#define EFI_ACPI_5_0_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T')19551956///1957/// "MSCT" Maximum System Characteristics Table1958///1959#define EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T')19601961///1962/// "PMTT" Platform Memory Topology Table1963///1964#define EFI_ACPI_5_0_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T')19651966///1967/// "PSDT" Persistent System Description Table1968///1969#define EFI_ACPI_5_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')19701971///1972/// "RASF" ACPI RAS Feature Table1973///1974#define EFI_ACPI_5_0_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F')19751976///1977/// "RSDT" Root System Description Table1978///1979#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')19801981///1982/// "SBST" Smart Battery Specification Table1983///1984#define EFI_ACPI_5_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')19851986///1987/// "SLIT" System Locality Information Table1988///1989#define EFI_ACPI_5_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')19901991///1992/// "SRAT" System Resource Affinity Table1993///1994#define EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')19951996///1997/// "SSDT" Secondary System Description Table1998///1999#define EFI_ACPI_5_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')20002001///2002/// "XSDT" Extended System Description Table2003///2004#define EFI_ACPI_5_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')20052006///2007/// "BOOT" MS Simple Boot Spec2008///2009#define EFI_ACPI_5_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')20102011///2012/// "CSRT" MS Core System Resource Table2013///2014#define EFI_ACPI_5_0_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T')20152016///2017/// "DBG2" MS Debug Port 2 Spec2018///2019#define EFI_ACPI_5_0_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2')20202021///2022/// "DBGP" MS Debug Port Spec2023///2024#define EFI_ACPI_5_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')20252026///2027/// "DMAR" DMA Remapping Table2028///2029#define EFI_ACPI_5_0_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R')20302031///2032/// "DRTM" Dynamic Root of Trust for Measurement Table2033///2034#define EFI_ACPI_5_0_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M')20352036///2037/// "ETDT" Event Timer Description Table2038///2039#define EFI_ACPI_5_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')20402041///2042/// "HPET" IA-PC High Precision Event Timer Table2043///2044#define EFI_ACPI_5_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')20452046///2047/// "iBFT" iSCSI Boot Firmware Table2048///2049#define EFI_ACPI_5_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')20502051///2052/// "IVRS" I/O Virtualization Reporting Structure2053///2054#define EFI_ACPI_5_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S')20552056///2057/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table2058///2059#define EFI_ACPI_5_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')20602061///2062/// "MCHI" Management Controller Host Interface Table2063///2064#define EFI_ACPI_5_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I')20652066///2067/// "MSDM" MS Data Management Table2068///2069#define EFI_ACPI_5_0_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M')20702071///2072/// "PCCT" Platform Communications Channel Table2073///2074#define EFI_ACPI_5_0_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE SIGNATURE_32('P', 'C', 'C', 'T')20752076///2077/// "SLIC" MS Software Licensing Table Specification2078///2079#define EFI_ACPI_5_0_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C')20802081///2082/// "SPCR" Serial Port Console Redirection Table2083///2084#define EFI_ACPI_5_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')20852086///2087/// "SPMI" Server Platform Management Interface Table2088///2089#define EFI_ACPI_5_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')20902091///2092/// "TCPA" Trusted Computing Platform Alliance Capabilities Table2093///2094#define EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')20952096///2097/// "TPM2" Trusted Computing Platform 1 Table2098///2099#define EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2')21002101///2102/// "UEFI" UEFI ACPI Data Table2103///2104#define EFI_ACPI_5_0_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I')21052106///2107/// "WAET" Windows ACPI Emulated Devices Table2108///2109#define EFI_ACPI_5_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T')2110#define EFI_ACPI_5_0_WINDOWS_ACPI_ENLIGHTENMENT_TABLE_SIGNATURE EFI_ACPI_5_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE21112112///2113/// "WDAT" Watchdog Action Table2114///2115#define EFI_ACPI_5_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')21162117///2118/// "WDRT" Watchdog Resource Table2119///2120#define EFI_ACPI_5_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')21212122///2123/// "WPBT" MS Platform Binary Table2124///2125#define EFI_ACPI_5_0_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T')21262127#pragma pack()21282129#endif213021312132