Path: blob/main/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h
48291 views
/** @file1ACPI 5.1 definitions from the ACPI Specification Revision 5.1 Errata B January, 2016.23Copyright (c) 2014 Hewlett-Packard Development Company, L.P.<BR>4Copyright (c) 2014 - 2022, Intel Corporation. All rights reserved.<BR>5(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>6Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>7SPDX-License-Identifier: BSD-2-Clause-Patent8**/910#ifndef _ACPI_5_1_H_11#define _ACPI_5_1_H_1213#include <IndustryStandard/Acpi50.h>1415///16/// _PSD Revision for ACPI 5.117///18#define EFI_ACPI_5_1_AML_PSD_REVISION 01920///21/// _CPC Revision for ACPI 5.122///23#define EFI_ACPI_5_1_AML_CPC_REVISION 22425//26// Ensure proper structure formats27//28#pragma pack(1)2930///31/// ACPI 5.1 Generic Address Space definition32///33typedef struct {34UINT8 AddressSpaceId;35UINT8 RegisterBitWidth;36UINT8 RegisterBitOffset;37UINT8 AccessSize;38UINT64 Address;39} EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE;4041//42// Generic Address Space Address IDs43//44#define EFI_ACPI_5_1_SYSTEM_MEMORY 045#define EFI_ACPI_5_1_SYSTEM_IO 146#define EFI_ACPI_5_1_PCI_CONFIGURATION_SPACE 247#define EFI_ACPI_5_1_EMBEDDED_CONTROLLER 348#define EFI_ACPI_5_1_SMBUS 449#define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL 0x0A50#define EFI_ACPI_5_1_FUNCTIONAL_FIXED_HARDWARE 0x7F5152//53// Generic Address Space Access Sizes54//55#define EFI_ACPI_5_1_UNDEFINED 056#define EFI_ACPI_5_1_BYTE 157#define EFI_ACPI_5_1_WORD 258#define EFI_ACPI_5_1_DWORD 359#define EFI_ACPI_5_1_QWORD 46061//62// ACPI 5.1 table structures63//6465///66/// Root System Description Pointer Structure67///68typedef struct {69UINT64 Signature;70UINT8 Checksum;71UINT8 OemId[6];72UINT8 Revision;73UINT32 RsdtAddress;74UINT32 Length;75UINT64 XsdtAddress;76UINT8 ExtendedChecksum;77UINT8 Reserved[3];78} EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER;7980///81/// RSD_PTR Revision (as defined in ACPI 5.1 spec.)82///83#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 5.1) says current value is 28485///86/// Common table header, this prefaces all ACPI tables, including FACS, but87/// excluding the RSD PTR structure88///89typedef struct {90UINT32 Signature;91UINT32 Length;92} EFI_ACPI_5_1_COMMON_HEADER;9394//95// Root System Description Table96// No definition needed as it is a common description table header, the same with97// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.98//99100///101/// RSDT Revision (as defined in ACPI 5.1 spec.)102///103#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01104105//106// Extended System Description Table107// No definition needed as it is a common description table header, the same with108// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.109//110111///112/// XSDT Revision (as defined in ACPI 5.1 spec.)113///114#define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01115116///117/// Fixed ACPI Description Table Structure (FADT)118///119typedef struct {120EFI_ACPI_DESCRIPTION_HEADER Header;121UINT32 FirmwareCtrl;122UINT32 Dsdt;123UINT8 Reserved0;124UINT8 PreferredPmProfile;125UINT16 SciInt;126UINT32 SmiCmd;127UINT8 AcpiEnable;128UINT8 AcpiDisable;129UINT8 S4BiosReq;130UINT8 PstateCnt;131UINT32 Pm1aEvtBlk;132UINT32 Pm1bEvtBlk;133UINT32 Pm1aCntBlk;134UINT32 Pm1bCntBlk;135UINT32 Pm2CntBlk;136UINT32 PmTmrBlk;137UINT32 Gpe0Blk;138UINT32 Gpe1Blk;139UINT8 Pm1EvtLen;140UINT8 Pm1CntLen;141UINT8 Pm2CntLen;142UINT8 PmTmrLen;143UINT8 Gpe0BlkLen;144UINT8 Gpe1BlkLen;145UINT8 Gpe1Base;146UINT8 CstCnt;147UINT16 PLvl2Lat;148UINT16 PLvl3Lat;149UINT16 FlushSize;150UINT16 FlushStride;151UINT8 DutyOffset;152UINT8 DutyWidth;153UINT8 DayAlrm;154UINT8 MonAlrm;155UINT8 Century;156UINT16 IaPcBootArch;157UINT8 Reserved1;158UINT32 Flags;159EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE ResetReg;160UINT8 ResetValue;161UINT16 ArmBootArch;162UINT8 MinorVersion;163UINT64 XFirmwareCtrl;164UINT64 XDsdt;165EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk;166EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk;167EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk;168EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk;169EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk;170EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk;171EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XGpe0Blk;172EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XGpe1Blk;173EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE SleepControlReg;174EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE SleepStatusReg;175} EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE;176177///178/// FADT Version (as defined in ACPI 5.1 spec.)179///180#define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x05181#define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x01182183//184// Fixed ACPI Description Table Preferred Power Management Profile185//186#define EFI_ACPI_5_1_PM_PROFILE_UNSPECIFIED 0187#define EFI_ACPI_5_1_PM_PROFILE_DESKTOP 1188#define EFI_ACPI_5_1_PM_PROFILE_MOBILE 2189#define EFI_ACPI_5_1_PM_PROFILE_WORKSTATION 3190#define EFI_ACPI_5_1_PM_PROFILE_ENTERPRISE_SERVER 4191#define EFI_ACPI_5_1_PM_PROFILE_SOHO_SERVER 5192#define EFI_ACPI_5_1_PM_PROFILE_APPLIANCE_PC 6193#define EFI_ACPI_5_1_PM_PROFILE_PERFORMANCE_SERVER 7194#define EFI_ACPI_5_1_PM_PROFILE_TABLET 8195196//197// Fixed ACPI Description Table Boot Architecture Flags198// All other bits are reserved and must be set to 0.199//200#define EFI_ACPI_5_1_LEGACY_DEVICES BIT0201#define EFI_ACPI_5_1_8042 BIT1202#define EFI_ACPI_5_1_VGA_NOT_PRESENT BIT2203#define EFI_ACPI_5_1_MSI_NOT_SUPPORTED BIT3204#define EFI_ACPI_5_1_PCIE_ASPM_CONTROLS BIT4205#define EFI_ACPI_5_1_CMOS_RTC_NOT_PRESENT BIT5206207//208// Fixed ACPI Description Table Arm Boot Architecture Flags209// All other bits are reserved and must be set to 0.210//211#define EFI_ACPI_5_1_ARM_PSCI_COMPLIANT BIT0212#define EFI_ACPI_5_1_ARM_PSCI_USE_HVC BIT1213214//215// Fixed ACPI Description Table Fixed Feature Flags216// All other bits are reserved and must be set to 0.217//218#define EFI_ACPI_5_1_WBINVD BIT0219#define EFI_ACPI_5_1_WBINVD_FLUSH BIT1220#define EFI_ACPI_5_1_PROC_C1 BIT2221#define EFI_ACPI_5_1_P_LVL2_UP BIT3222#define EFI_ACPI_5_1_PWR_BUTTON BIT4223#define EFI_ACPI_5_1_SLP_BUTTON BIT5224#define EFI_ACPI_5_1_FIX_RTC BIT6225#define EFI_ACPI_5_1_RTC_S4 BIT7226#define EFI_ACPI_5_1_TMR_VAL_EXT BIT8227#define EFI_ACPI_5_1_DCK_CAP BIT9228#define EFI_ACPI_5_1_RESET_REG_SUP BIT10229#define EFI_ACPI_5_1_SEALED_CASE BIT11230#define EFI_ACPI_5_1_HEADLESS BIT12231#define EFI_ACPI_5_1_CPU_SW_SLP BIT13232#define EFI_ACPI_5_1_PCI_EXP_WAK BIT14233#define EFI_ACPI_5_1_USE_PLATFORM_CLOCK BIT15234#define EFI_ACPI_5_1_S4_RTC_STS_VALID BIT16235#define EFI_ACPI_5_1_REMOTE_POWER_ON_CAPABLE BIT17236#define EFI_ACPI_5_1_FORCE_APIC_CLUSTER_MODEL BIT18237#define EFI_ACPI_5_1_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19238#define EFI_ACPI_5_1_HW_REDUCED_ACPI BIT20239#define EFI_ACPI_5_1_LOW_POWER_S0_IDLE_CAPABLE BIT21240241///242/// Firmware ACPI Control Structure243///244typedef struct {245UINT32 Signature;246UINT32 Length;247UINT32 HardwareSignature;248UINT32 FirmwareWakingVector;249UINT32 GlobalLock;250UINT32 Flags;251UINT64 XFirmwareWakingVector;252UINT8 Version;253UINT8 Reserved0[3];254UINT32 OspmFlags;255UINT8 Reserved1[24];256} EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE;257258///259/// FACS Version (as defined in ACPI 5.1 spec.)260///261#define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02262263///264/// Firmware Control Structure Feature Flags265/// All other bits are reserved and must be set to 0.266///267#define EFI_ACPI_5_1_S4BIOS_F BIT0268#define EFI_ACPI_5_1_64BIT_WAKE_SUPPORTED_F BIT1269270///271/// OSPM Enabled Firmware Control Structure Flags272/// All other bits are reserved and must be set to 0.273///274#define EFI_ACPI_5_1_OSPM_64BIT_WAKE_F BIT0275276//277// Differentiated System Description Table,278// Secondary System Description Table279// and Persistent System Description Table,280// no definition needed as they are common description table header, the same with281// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.282//283#define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02284#define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02285286///287/// Multiple APIC Description Table header definition. The rest of the table288/// must be defined in a platform specific manner.289///290typedef struct {291EFI_ACPI_DESCRIPTION_HEADER Header;292UINT32 LocalApicAddress;293UINT32 Flags;294} EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;295296///297/// MADT Revision (as defined in ACPI 5.1 spec.)298///299#define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03300301///302/// Multiple APIC Flags303/// All other bits are reserved and must be set to 0.304///305#define EFI_ACPI_5_1_PCAT_COMPAT BIT0306307//308// Multiple APIC Description Table APIC structure types309// All other values between 0x0D and 0x7F are reserved and310// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.311//312#define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC 0x00313#define EFI_ACPI_5_1_IO_APIC 0x01314#define EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE 0x02315#define EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE 0x03316#define EFI_ACPI_5_1_LOCAL_APIC_NMI 0x04317#define EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE 0x05318#define EFI_ACPI_5_1_IO_SAPIC 0x06319#define EFI_ACPI_5_1_LOCAL_SAPIC 0x07320#define EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES 0x08321#define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC 0x09322#define EFI_ACPI_5_1_LOCAL_X2APIC_NMI 0x0A323#define EFI_ACPI_5_1_GIC 0x0B324#define EFI_ACPI_5_1_GICD 0x0C325#define EFI_ACPI_5_1_GIC_MSI_FRAME 0x0D326#define EFI_ACPI_5_1_GICR 0x0E327328//329// APIC Structure Definitions330//331332///333/// Processor Local APIC Structure Definition334///335typedef struct {336UINT8 Type;337UINT8 Length;338UINT8 AcpiProcessorId;339UINT8 ApicId;340UINT32 Flags;341} EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_STRUCTURE;342343///344/// Local APIC Flags. All other bits are reserved and must be 0.345///346#define EFI_ACPI_5_1_LOCAL_APIC_ENABLED BIT0347348///349/// IO APIC Structure350///351typedef struct {352UINT8 Type;353UINT8 Length;354UINT8 IoApicId;355UINT8 Reserved;356UINT32 IoApicAddress;357UINT32 GlobalSystemInterruptBase;358} EFI_ACPI_5_1_IO_APIC_STRUCTURE;359360///361/// Interrupt Source Override Structure362///363typedef struct {364UINT8 Type;365UINT8 Length;366UINT8 Bus;367UINT8 Source;368UINT32 GlobalSystemInterrupt;369UINT16 Flags;370} EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;371372///373/// Platform Interrupt Sources Structure Definition374///375typedef struct {376UINT8 Type;377UINT8 Length;378UINT16 Flags;379UINT8 InterruptType;380UINT8 ProcessorId;381UINT8 ProcessorEid;382UINT8 IoSapicVector;383UINT32 GlobalSystemInterrupt;384UINT32 PlatformInterruptSourceFlags;385UINT8 CpeiProcessorOverride;386UINT8 Reserved[31];387} EFI_ACPI_5_1_PLATFORM_INTERRUPT_APIC_STRUCTURE;388389//390// MPS INTI flags.391// All other bits are reserved and must be set to 0.392//393#define EFI_ACPI_5_1_POLARITY (3 << 0)394#define EFI_ACPI_5_1_TRIGGER_MODE (3 << 2)395396///397/// Non-Maskable Interrupt Source Structure398///399typedef struct {400UINT8 Type;401UINT8 Length;402UINT16 Flags;403UINT32 GlobalSystemInterrupt;404} EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;405406///407/// Local APIC NMI Structure408///409typedef struct {410UINT8 Type;411UINT8 Length;412UINT8 AcpiProcessorId;413UINT16 Flags;414UINT8 LocalApicLint;415} EFI_ACPI_5_1_LOCAL_APIC_NMI_STRUCTURE;416417///418/// Local APIC Address Override Structure419///420typedef struct {421UINT8 Type;422UINT8 Length;423UINT16 Reserved;424UINT64 LocalApicAddress;425} EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;426427///428/// IO SAPIC Structure429///430typedef struct {431UINT8 Type;432UINT8 Length;433UINT8 IoApicId;434UINT8 Reserved;435UINT32 GlobalSystemInterruptBase;436UINT64 IoSapicAddress;437} EFI_ACPI_5_1_IO_SAPIC_STRUCTURE;438439///440/// Local SAPIC Structure441/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String442///443typedef struct {444UINT8 Type;445UINT8 Length;446UINT8 AcpiProcessorId;447UINT8 LocalSapicId;448UINT8 LocalSapicEid;449UINT8 Reserved[3];450UINT32 Flags;451UINT32 ACPIProcessorUIDValue;452} EFI_ACPI_5_1_PROCESSOR_LOCAL_SAPIC_STRUCTURE;453454///455/// Platform Interrupt Sources Structure456///457typedef struct {458UINT8 Type;459UINT8 Length;460UINT16 Flags;461UINT8 InterruptType;462UINT8 ProcessorId;463UINT8 ProcessorEid;464UINT8 IoSapicVector;465UINT32 GlobalSystemInterrupt;466UINT32 PlatformInterruptSourceFlags;467} EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;468469///470/// Platform Interrupt Source Flags.471/// All other bits are reserved and must be set to 0.472///473#define EFI_ACPI_5_1_CPEI_PROCESSOR_OVERRIDE BIT0474475///476/// Processor Local x2APIC Structure Definition477///478typedef struct {479UINT8 Type;480UINT8 Length;481UINT8 Reserved[2];482UINT32 X2ApicId;483UINT32 Flags;484UINT32 AcpiProcessorUid;485} EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_STRUCTURE;486487///488/// Local x2APIC NMI Structure489///490typedef struct {491UINT8 Type;492UINT8 Length;493UINT16 Flags;494UINT32 AcpiProcessorUid;495UINT8 LocalX2ApicLint;496UINT8 Reserved[3];497} EFI_ACPI_5_1_LOCAL_X2APIC_NMI_STRUCTURE;498499///500/// GIC Structure501///502typedef struct {503UINT8 Type;504UINT8 Length;505UINT16 Reserved;506UINT32 CPUInterfaceNumber;507UINT32 AcpiProcessorUid;508UINT32 Flags;509UINT32 ParkingProtocolVersion;510UINT32 PerformanceInterruptGsiv;511UINT64 ParkedAddress;512UINT64 PhysicalBaseAddress;513UINT64 GICV;514UINT64 GICH;515UINT32 VGICMaintenanceInterrupt;516UINT64 GICRBaseAddress;517UINT64 MPIDR;518} EFI_ACPI_5_1_GIC_STRUCTURE;519520///521/// GIC Flags. All other bits are reserved and must be 0.522///523#define EFI_ACPI_5_1_GIC_ENABLED BIT0524#define EFI_ACPI_5_1_PERFORMANCE_INTERRUPT_MODEL BIT1525#define EFI_ACPI_5_1_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS BIT2526527///528/// GIC Distributor Structure529///530typedef struct {531UINT8 Type;532UINT8 Length;533UINT16 Reserved1;534UINT32 GicId;535UINT64 PhysicalBaseAddress;536UINT32 SystemVectorBase;537UINT8 GicVersion;538UINT8 Reserved2[3];539} EFI_ACPI_5_1_GIC_DISTRIBUTOR_STRUCTURE;540541///542/// GIC Version543///544#define EFI_ACPI_5_1_GIC_V1 0x01545#define EFI_ACPI_5_1_GIC_V2 0x02546#define EFI_ACPI_5_1_GIC_V3 0x03547#define EFI_ACPI_5_1_GIC_V4 0x04548549///550/// GIC MSI Frame Structure551///552typedef struct {553UINT8 Type;554UINT8 Length;555UINT16 Reserved1;556UINT32 GicMsiFrameId;557UINT64 PhysicalBaseAddress;558UINT32 Flags;559UINT16 SPICount;560UINT16 SPIBase;561} EFI_ACPI_5_1_GIC_MSI_FRAME_STRUCTURE;562563///564/// GIC MSI Frame Flags. All other bits are reserved and must be 0.565///566#define EFI_ACPI_5_1_SPI_COUNT_BASE_SELECT BIT0567568///569/// GICR Structure570///571typedef struct {572UINT8 Type;573UINT8 Length;574UINT16 Reserved;575UINT64 DiscoveryRangeBaseAddress;576UINT32 DiscoveryRangeLength;577} EFI_ACPI_5_1_GICR_STRUCTURE;578579///580/// Smart Battery Description Table (SBST)581///582typedef struct {583EFI_ACPI_DESCRIPTION_HEADER Header;584UINT32 WarningEnergyLevel;585UINT32 LowEnergyLevel;586UINT32 CriticalEnergyLevel;587} EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE;588589///590/// SBST Version (as defined in ACPI 5.1 spec.)591///592#define EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01593594///595/// Embedded Controller Boot Resources Table (ECDT)596/// The table is followed by a null terminated ASCII string that contains597/// a fully qualified reference to the name space object.598///599typedef struct {600EFI_ACPI_DESCRIPTION_HEADER Header;601EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE EcControl;602EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE EcData;603UINT32 Uid;604UINT8 GpeBit;605} EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;606607///608/// ECDT Version (as defined in ACPI 5.1 spec.)609///610#define EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01611612///613/// System Resource Affinity Table (SRAT). The rest of the table614/// must be defined in a platform specific manner.615///616typedef struct {617EFI_ACPI_DESCRIPTION_HEADER Header;618UINT32 Reserved1; ///< Must be set to 1619UINT64 Reserved2;620} EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;621622///623/// SRAT Version (as defined in ACPI 5.1 spec.)624///625#define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03626627//628// SRAT structure types.629// All other values between 0x04 an 0xFF are reserved and630// will be ignored by OSPM.631//632#define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00633#define EFI_ACPI_5_1_MEMORY_AFFINITY 0x01634#define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02635#define EFI_ACPI_5_1_GICC_AFFINITY 0x03636637///638/// Processor Local APIC/SAPIC Affinity Structure Definition639///640typedef struct {641UINT8 Type;642UINT8 Length;643UINT8 ProximityDomain7To0;644UINT8 ApicId;645UINT32 Flags;646UINT8 LocalSapicEid;647UINT8 ProximityDomain31To8[3];648UINT32 ClockDomain;649} EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;650651///652/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0.653///654#define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)655656///657/// Memory Affinity Structure Definition658///659typedef struct {660UINT8 Type;661UINT8 Length;662UINT32 ProximityDomain;663UINT16 Reserved1;664UINT32 AddressBaseLow;665UINT32 AddressBaseHigh;666UINT32 LengthLow;667UINT32 LengthHigh;668UINT32 Reserved2;669UINT32 Flags;670UINT64 Reserved3;671} EFI_ACPI_5_1_MEMORY_AFFINITY_STRUCTURE;672673//674// Memory Flags. All other bits are reserved and must be 0.675//676#define EFI_ACPI_5_1_MEMORY_ENABLED (1 << 0)677#define EFI_ACPI_5_1_MEMORY_HOT_PLUGGABLE (1 << 1)678#define EFI_ACPI_5_1_MEMORY_NONVOLATILE (1 << 2)679680///681/// Processor Local x2APIC Affinity Structure Definition682///683typedef struct {684UINT8 Type;685UINT8 Length;686UINT8 Reserved1[2];687UINT32 ProximityDomain;688UINT32 X2ApicId;689UINT32 Flags;690UINT32 ClockDomain;691UINT8 Reserved2[4];692} EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;693694///695/// GICC Affinity Structure Definition696///697typedef struct {698UINT8 Type;699UINT8 Length;700UINT32 ProximityDomain;701UINT32 AcpiProcessorUid;702UINT32 Flags;703UINT32 ClockDomain;704} EFI_ACPI_5_1_GICC_AFFINITY_STRUCTURE;705706///707/// GICC Flags. All other bits are reserved and must be 0.708///709#define EFI_ACPI_5_1_GICC_ENABLED (1 << 0)710711///712/// System Locality Distance Information Table (SLIT).713/// The rest of the table is a matrix.714///715typedef struct {716EFI_ACPI_DESCRIPTION_HEADER Header;717UINT64 NumberOfSystemLocalities;718} EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;719720///721/// SLIT Version (as defined in ACPI 5.1 spec.)722///723#define EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01724725///726/// Corrected Platform Error Polling Table (CPEP)727///728typedef struct {729EFI_ACPI_DESCRIPTION_HEADER Header;730UINT8 Reserved[8];731} EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;732733///734/// CPEP Version (as defined in ACPI 5.1 spec.)735///736#define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01737738//739// CPEP processor structure types.740//741#define EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC 0x00742743///744/// Corrected Platform Error Polling Processor Structure Definition745///746typedef struct {747UINT8 Type;748UINT8 Length;749UINT8 ProcessorId;750UINT8 ProcessorEid;751UINT32 PollingInterval;752} EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;753754///755/// Maximum System Characteristics Table (MSCT)756///757typedef struct {758EFI_ACPI_DESCRIPTION_HEADER Header;759UINT32 OffsetProxDomInfo;760UINT32 MaximumNumberOfProximityDomains;761UINT32 MaximumNumberOfClockDomains;762UINT64 MaximumPhysicalAddress;763} EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;764765///766/// MSCT Version (as defined in ACPI 5.1 spec.)767///768#define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01769770///771/// Maximum Proximity Domain Information Structure Definition772///773typedef struct {774UINT8 Revision;775UINT8 Length;776UINT32 ProximityDomainRangeLow;777UINT32 ProximityDomainRangeHigh;778UINT32 MaximumProcessorCapacity;779UINT64 MaximumMemoryCapacity;780} EFI_ACPI_5_1_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;781782///783/// ACPI RAS Feature Table definition.784///785typedef struct {786EFI_ACPI_DESCRIPTION_HEADER Header;787UINT8 PlatformCommunicationChannelIdentifier[12];788} EFI_ACPI_5_1_RAS_FEATURE_TABLE;789790///791/// RASF Version (as defined in ACPI 5.1 spec.)792///793#define EFI_ACPI_5_1_RAS_FEATURE_TABLE_REVISION 0x01794795///796/// ACPI RASF Platform Communication Channel Shared Memory Region definition.797///798typedef struct {799UINT32 Signature;800UINT16 Command;801UINT16 Status;802UINT16 Version;803UINT8 RASCapabilities[16];804UINT8 SetRASCapabilities[16];805UINT16 NumberOfRASFParameterBlocks;806UINT32 SetRASCapabilitiesStatus;807} EFI_ACPI_5_1_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;808809///810/// ACPI RASF PCC command code811///812#define EFI_ACPI_5_1_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01813814///815/// ACPI RASF Platform RAS Capabilities816///817#define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01818#define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02819820///821/// ACPI RASF Parameter Block structure for PATROL_SCRUB822///823typedef struct {824UINT16 Type;825UINT16 Version;826UINT16 Length;827UINT16 PatrolScrubCommand;828UINT64 RequestedAddressRange[2];829UINT64 ActualAddressRange[2];830UINT16 Flags;831UINT8 RequestedSpeed;832} EFI_ACPI_5_1_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;833834///835/// ACPI RASF Patrol Scrub command836///837#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01838#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02839#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03840841///842/// Memory Power State Table definition.843///844typedef struct {845EFI_ACPI_DESCRIPTION_HEADER Header;846UINT8 PlatformCommunicationChannelIdentifier;847UINT8 Reserved[3];848// Memory Power Node Structure849// Memory Power State Characteristics850} EFI_ACPI_5_1_MEMORY_POWER_STATUS_TABLE;851852///853/// MPST Version (as defined in ACPI 5.1 spec.)854///855#define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_REVISION 0x01856857///858/// MPST Platform Communication Channel Shared Memory Region definition.859///860typedef struct {861UINT32 Signature;862UINT16 Command;863UINT16 Status;864UINT32 MemoryPowerCommandRegister;865UINT32 MemoryPowerStatusRegister;866UINT32 PowerStateId;867UINT32 MemoryPowerNodeId;868UINT64 MemoryEnergyConsumed;869UINT64 ExpectedAveragePowerComsuned;870} EFI_ACPI_5_1_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;871872///873/// ACPI MPST PCC command code874///875#define EFI_ACPI_5_1_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03876877///878/// ACPI MPST Memory Power command879///880#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01881#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02882#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03883#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04884885///886/// MPST Memory Power Node Table887///888typedef struct {889UINT8 PowerStateValue;890UINT8 PowerStateInformationIndex;891} EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE;892893typedef struct {894UINT8 Flag;895UINT8 Reserved;896UINT16 MemoryPowerNodeId;897UINT32 Length;898UINT64 AddressBase;899UINT64 AddressLength;900UINT32 NumberOfPowerStates;901UINT32 NumberOfPhysicalComponents;902// EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates];903// UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents];904} EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE;905906#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01907#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02908#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04909910typedef struct {911UINT16 MemoryPowerNodeCount;912UINT8 Reserved[2];913} EFI_ACPI_5_1_MPST_MEMORY_POWER_NODE_TABLE;914915///916/// MPST Memory Power State Characteristics Table917///918typedef struct {919UINT8 PowerStateStructureID;920UINT8 Flag;921UINT16 Reserved;922UINT32 AveragePowerConsumedInMPS0;923UINT32 RelativePowerSavingToMPS0;924UINT64 ExitLatencyToMPS0;925} EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;926927#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01928#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02929#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04930931typedef struct {932UINT16 MemoryPowerStateCharacteristicsCount;933UINT8 Reserved[2];934} EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;935936///937/// Memory Topology Table definition.938///939typedef struct {940EFI_ACPI_DESCRIPTION_HEADER Header;941UINT32 Reserved;942} EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE;943944///945/// PMTT Version (as defined in ACPI 5.1 spec.)946///947#define EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE_REVISION 0x01948949///950/// Common Memory Aggregator Device Structure.951///952typedef struct {953UINT8 Type;954UINT8 Reserved;955UINT16 Length;956UINT16 Flags;957UINT16 Reserved1;958} EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;959960///961/// Memory Aggregator Device Type962///963#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x0964#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x1965#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM 0x2966967///968/// Socket Memory Aggregator Device Structure.969///970typedef struct {971EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;972UINT16 SocketIdentifier;973UINT16 Reserved;974// EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[];975} EFI_ACPI_5_1_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;976977///978/// MemoryController Memory Aggregator Device Structure.979///980typedef struct {981EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;982UINT32 ReadLatency;983UINT32 WriteLatency;984UINT32 ReadBandwidth;985UINT32 WriteBandwidth;986UINT16 OptimalAccessUnit;987UINT16 OptimalAccessAlignment;988UINT16 Reserved;989UINT16 NumberOfProximityDomains;990// UINT32 ProximityDomain[NumberOfProximityDomains];991// EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[];992} EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;993994///995/// DIMM Memory Aggregator Device Structure.996///997typedef struct {998EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header;999UINT16 PhysicalComponentIdentifier;1000UINT16 Reserved;1001UINT32 SizeOfDimm;1002UINT32 SmbiosHandle;1003} EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;10041005///1006/// Boot Graphics Resource Table definition.1007///1008typedef struct {1009EFI_ACPI_DESCRIPTION_HEADER Header;1010///1011/// 2-bytes (16 bit) version ID. This value must be 1.1012///1013UINT16 Version;1014///1015/// 1-byte status field indicating current status about the table.1016/// Bits[7:1] = Reserved (must be zero)1017/// Bit [0] = Valid. A one indicates the boot image graphic is valid.1018///1019UINT8 Status;1020///1021/// 1-byte enumerated type field indicating format of the image.1022/// 0 = Bitmap1023/// 1 - 255 Reserved (for future use)1024///1025UINT8 ImageType;1026///1027/// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy1028/// of the image bitmap.1029///1030UINT64 ImageAddress;1031///1032/// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.1033/// (X, Y) display offset of the top left corner of the boot image.1034/// The top left corner of the display is at offset (0, 0).1035///1036UINT32 ImageOffsetX;1037///1038/// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.1039/// (X, Y) display offset of the top left corner of the boot image.1040/// The top left corner of the display is at offset (0, 0).1041///1042UINT32 ImageOffsetY;1043} EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE;10441045///1046/// BGRT Revision1047///1048#define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 110491050///1051/// BGRT Version1052///1053#define EFI_ACPI_5_1_BGRT_VERSION 0x0110541055///1056/// BGRT Status1057///1058#define EFI_ACPI_5_1_BGRT_STATUS_NOT_DISPLAYED 0x001059#define EFI_ACPI_5_1_BGRT_STATUS_DISPLAYED 0x0110601061///1062/// BGRT Image Type1063///1064#define EFI_ACPI_5_1_BGRT_IMAGE_TYPE_BMP 0x0010651066///1067/// FPDT Version (as defined in ACPI 5.1 spec.)1068///1069#define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x0110701071///1072/// FPDT Performance Record Types1073///1074#define EFI_ACPI_5_1_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x00001075#define EFI_ACPI_5_1_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x000110761077///1078/// FPDT Performance Record Revision1079///1080#define EFI_ACPI_5_1_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x011081#define EFI_ACPI_5_1_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x0110821083///1084/// FPDT Runtime Performance Record Types1085///1086#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x00001087#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x00011088#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x000210891090///1091/// FPDT Runtime Performance Record Revision1092///1093#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x011094#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x011095#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x0210961097///1098/// FPDT Performance Record header1099///1100typedef struct {1101UINT16 Type;1102UINT8 Length;1103UINT8 Revision;1104} EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER;11051106///1107/// FPDT Performance Table header1108///1109typedef struct {1110UINT32 Signature;1111UINT32 Length;1112} EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER;11131114///1115/// FPDT Firmware Basic Boot Performance Pointer Record Structure1116///1117typedef struct {1118EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header;1119UINT32 Reserved;1120///1121/// 64-bit processor-relative physical address of the Basic Boot Performance Table.1122///1123UINT64 BootPerformanceTablePointer;1124} EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;11251126///1127/// FPDT S3 Performance Table Pointer Record Structure1128///1129typedef struct {1130EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header;1131UINT32 Reserved;1132///1133/// 64-bit processor-relative physical address of the S3 Performance Table.1134///1135UINT64 S3PerformanceTablePointer;1136} EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;11371138///1139/// FPDT Firmware Basic Boot Performance Record Structure1140///1141typedef struct {1142EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header;1143UINT32 Reserved;1144///1145/// Timer value logged at the beginning of firmware image execution.1146/// This may not always be zero or near zero.1147///1148UINT64 ResetEnd;1149///1150/// Timer value logged just prior to loading the OS boot loader into memory.1151/// For non-UEFI compatible boots, this field must be zero.1152///1153UINT64 OsLoaderLoadImageStart;1154///1155/// Timer value logged just prior to launching the previously loaded OS boot loader image.1156/// For non-UEFI compatible boots, the timer value logged will be just prior1157/// to the INT 19h handler invocation.1158///1159UINT64 OsLoaderStartImageStart;1160///1161/// Timer value logged at the point when the OS loader calls the1162/// ExitBootServices function for UEFI compatible firmware.1163/// For non-UEFI compatible boots, this field must be zero.1164///1165UINT64 ExitBootServicesEntry;1166///1167/// Timer value logged at the point just prior to when the OS loader gaining1168/// control back from calls the ExitBootServices function for UEFI compatible firmware.1169/// For non-UEFI compatible boots, this field must be zero.1170///1171UINT64 ExitBootServicesExit;1172} EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_RECORD;11731174///1175/// FPDT Firmware Basic Boot Performance Table signature1176///1177#define EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T')11781179//1180// FPDT Firmware Basic Boot Performance Table1181//1182typedef struct {1183EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER Header;1184//1185// one or more Performance Records.1186//1187} EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_TABLE;11881189///1190/// FPDT "S3PT" S3 Performance Table1191///1192#define EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T')11931194//1195// FPDT Firmware S3 Boot Performance Table1196//1197typedef struct {1198EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER Header;1199//1200// one or more Performance Records.1201//1202} EFI_ACPI_5_1_FPDT_FIRMWARE_S3_BOOT_TABLE;12031204///1205/// FPDT Basic S3 Resume Performance Record1206///1207typedef struct {1208EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header;1209///1210/// A count of the number of S3 resume cycles since the last full boot sequence.1211///1212UINT32 ResumeCount;1213///1214/// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the1215/// OS waking vector. Only the most recent resume cycle's time is retained.1216///1217UINT64 FullResume;1218///1219/// Average timer value of all resume cycles logged since the last full boot1220/// sequence, including the most recent resume. Note that the entire log of1221/// timer values does not need to be retained in order to calculate this average.1222///1223UINT64 AverageResume;1224} EFI_ACPI_5_1_FPDT_S3_RESUME_RECORD;12251226///1227/// FPDT Basic S3 Suspend Performance Record1228///1229typedef struct {1230EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header;1231///1232/// Timer value recorded at the OS write to SLP_TYP upon entry to S3.1233/// Only the most recent suspend cycle's timer value is retained.1234///1235UINT64 SuspendStart;1236///1237/// Timer value recorded at the final firmware write to SLP_TYP (or other1238/// mechanism) used to trigger hardware entry to S3.1239/// Only the most recent suspend cycle's timer value is retained.1240///1241UINT64 SuspendEnd;1242} EFI_ACPI_5_1_FPDT_S3_SUSPEND_RECORD;12431244///1245/// Firmware Performance Record Table definition.1246///1247typedef struct {1248EFI_ACPI_DESCRIPTION_HEADER Header;1249} EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_RECORD_TABLE;12501251///1252/// Generic Timer Description Table definition.1253///1254typedef struct {1255EFI_ACPI_DESCRIPTION_HEADER Header;1256UINT64 CntControlBasePhysicalAddress;1257UINT32 Reserved;1258UINT32 SecurePL1TimerGSIV;1259UINT32 SecurePL1TimerFlags;1260UINT32 NonSecurePL1TimerGSIV;1261UINT32 NonSecurePL1TimerFlags;1262UINT32 VirtualTimerGSIV;1263UINT32 VirtualTimerFlags;1264UINT32 NonSecurePL2TimerGSIV;1265UINT32 NonSecurePL2TimerFlags;1266UINT64 CntReadBasePhysicalAddress;1267UINT32 PlatformTimerCount;1268UINT32 PlatformTimerOffset;1269} EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE;12701271///1272/// GTDT Version (as defined in ACPI 5.1 spec.)1273///1274#define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x0212751276///1277/// Timer Flags. All other bits are reserved and must be 0.1278///1279#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT01280#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT11281#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY BIT212821283///1284/// Platform Timer Type1285///1286#define EFI_ACPI_5_1_GTDT_GT_BLOCK 01287#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG 112881289///1290/// GT Block Structure1291///1292typedef struct {1293UINT8 Type;1294UINT16 Length;1295UINT8 Reserved;1296UINT64 CntCtlBase;1297UINT32 GTBlockTimerCount;1298UINT32 GTBlockTimerOffset;1299} EFI_ACPI_5_1_GTDT_GT_BLOCK_STRUCTURE;13001301///1302/// GT Block Timer Structure1303///1304typedef struct {1305UINT8 GTFrameNumber;1306UINT8 Reserved[3];1307UINT64 CntBaseX;1308UINT64 CntEL0BaseX;1309UINT32 GTxPhysicalTimerGSIV;1310UINT32 GTxPhysicalTimerFlags;1311UINT32 GTxVirtualTimerGSIV;1312UINT32 GTxVirtualTimerFlags;1313UINT32 GTxCommonFlags;1314} EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_STRUCTURE;13151316///1317/// GT Block Physical Timers and Virtual Timers Flags. All other bits are reserved and must be 0.1318///1319#define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT01320#define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT113211322///1323/// Common Flags Flags. All other bits are reserved and must be 0.1324///1325#define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER BIT01326#define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY BIT113271328///1329/// SBSA Generic Watchdog Structure1330///1331typedef struct {1332UINT8 Type;1333UINT16 Length;1334UINT8 Reserved;1335UINT64 RefreshFramePhysicalAddress;1336UINT64 WatchdogControlFramePhysicalAddress;1337UINT32 WatchdogTimerGSIV;1338UINT32 WatchdogTimerFlags;1339} EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE;13401341///1342/// SBSA Generic Watchdog Timer Flags. All other bits are reserved and must be 0.1343///1344#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE BIT01345#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY BIT11346#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER BIT213471348///1349/// Boot Error Record Table (BERT)1350///1351typedef struct {1352EFI_ACPI_DESCRIPTION_HEADER Header;1353UINT32 BootErrorRegionLength;1354UINT64 BootErrorRegion;1355} EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_HEADER;13561357///1358/// BERT Version (as defined in ACPI 5.1 spec.)1359///1360#define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_REVISION 0x0113611362///1363/// Boot Error Region Block Status Definition1364///1365typedef struct {1366UINT32 UncorrectableErrorValid : 1;1367UINT32 CorrectableErrorValid : 1;1368UINT32 MultipleUncorrectableErrors : 1;1369UINT32 MultipleCorrectableErrors : 1;1370UINT32 ErrorDataEntryCount : 10;1371UINT32 Reserved : 18;1372} EFI_ACPI_5_1_ERROR_BLOCK_STATUS;13731374///1375/// Boot Error Region Definition1376///1377typedef struct {1378EFI_ACPI_5_1_ERROR_BLOCK_STATUS BlockStatus;1379UINT32 RawDataOffset;1380UINT32 RawDataLength;1381UINT32 DataLength;1382UINT32 ErrorSeverity;1383} EFI_ACPI_5_1_BOOT_ERROR_REGION_STRUCTURE;13841385//1386// Boot Error Severity types1387//1388#define EFI_ACPI_5_1_ERROR_SEVERITY_RECOVERABLE 0x001389#define EFI_ACPI_5_1_ERROR_SEVERITY_FATAL 0x011390#define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTED 0x021391#define EFI_ACPI_5_1_ERROR_SEVERITY_NONE 0x031392//1393// The term 'Correctable' is no longer being used as an error severity of the1394// reported error since ACPI Specification Version 5.1 Errata B.1395// The below macro is considered as deprecated and should no longer be used.1396//1397#define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTABLE 0x0013981399///1400/// Generic Error Data Entry Definition1401///1402typedef struct {1403UINT8 SectionType[16];1404UINT32 ErrorSeverity;1405UINT16 Revision;1406UINT8 ValidationBits;1407UINT8 Flags;1408UINT32 ErrorDataLength;1409UINT8 FruId[16];1410UINT8 FruText[20];1411} EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;14121413///1414/// Generic Error Data Entry Version (as defined in ACPI 5.1 spec.)1415///1416#define EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_REVISION 0x020114171418///1419/// HEST - Hardware Error Source Table1420///1421typedef struct {1422EFI_ACPI_DESCRIPTION_HEADER Header;1423UINT32 ErrorSourceCount;1424} EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER;14251426///1427/// HEST Version (as defined in ACPI 5.1 spec.)1428///1429#define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x0114301431//1432// Error Source structure types.1433//1434#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x001435#define EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x011436#define EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR 0x021437#define EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER 0x061438#define EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER 0x071439#define EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER 0x081440#define EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR 0x0914411442//1443// Error Source structure flags.1444//1445#define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0)1446#define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_GLOBAL (1 << 1)14471448///1449/// IA-32 Architecture Machine Check Exception Structure Definition1450///1451typedef struct {1452UINT16 Type;1453UINT16 SourceId;1454UINT8 Reserved0[2];1455UINT8 Flags;1456UINT8 Enabled;1457UINT32 NumberOfRecordsToPreAllocate;1458UINT32 MaxSectionsPerRecord;1459UINT64 GlobalCapabilityInitData;1460UINT64 GlobalControlInitData;1461UINT8 NumberOfHardwareBanks;1462UINT8 Reserved1[7];1463} EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;14641465///1466/// IA-32 Architecture Machine Check Bank Structure Definition1467///1468typedef struct {1469UINT8 BankNumber;1470UINT8 ClearStatusOnInitialization;1471UINT8 StatusDataFormat;1472UINT8 Reserved0;1473UINT32 ControlRegisterMsrAddress;1474UINT64 ControlInitData;1475UINT32 StatusRegisterMsrAddress;1476UINT32 AddressRegisterMsrAddress;1477UINT32 MiscRegisterMsrAddress;1478} EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;14791480///1481/// IA-32 Architecture Machine Check Bank Structure MCA data format1482///1483#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x001484#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x011485#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x0214861487//1488// Hardware Error Notification types. All other values are reserved1489//1490#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_POLLED 0x001491#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x011492#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x021493#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_SCI 0x031494#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_NMI 0x0414951496///1497/// Hardware Error Notification Configuration Write Enable Structure Definition1498///1499typedef struct {1500UINT16 Type : 1;1501UINT16 PollInterval : 1;1502UINT16 SwitchToPollingThresholdValue : 1;1503UINT16 SwitchToPollingThresholdWindow : 1;1504UINT16 ErrorThresholdValue : 1;1505UINT16 ErrorThresholdWindow : 1;1506UINT16 Reserved : 10;1507} EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;15081509///1510/// Hardware Error Notification Structure Definition1511///1512typedef struct {1513UINT8 Type;1514UINT8 Length;1515EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable;1516UINT32 PollInterval;1517UINT32 Vector;1518UINT32 SwitchToPollingThresholdValue;1519UINT32 SwitchToPollingThresholdWindow;1520UINT32 ErrorThresholdValue;1521UINT32 ErrorThresholdWindow;1522} EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;15231524///1525/// IA-32 Architecture Corrected Machine Check Structure Definition1526///1527typedef struct {1528UINT16 Type;1529UINT16 SourceId;1530UINT8 Reserved0[2];1531UINT8 Flags;1532UINT8 Enabled;1533UINT32 NumberOfRecordsToPreAllocate;1534UINT32 MaxSectionsPerRecord;1535EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;1536UINT8 NumberOfHardwareBanks;1537UINT8 Reserved1[3];1538} EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;15391540///1541/// IA-32 Architecture NMI Error Structure Definition1542///1543typedef struct {1544UINT16 Type;1545UINT16 SourceId;1546UINT8 Reserved0[2];1547UINT32 NumberOfRecordsToPreAllocate;1548UINT32 MaxSectionsPerRecord;1549UINT32 MaxRawDataLength;1550} EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;15511552///1553/// PCI Express Root Port AER Structure Definition1554///1555typedef struct {1556UINT16 Type;1557UINT16 SourceId;1558UINT8 Reserved0[2];1559UINT8 Flags;1560UINT8 Enabled;1561UINT32 NumberOfRecordsToPreAllocate;1562UINT32 MaxSectionsPerRecord;1563UINT32 Bus;1564UINT16 Device;1565UINT16 Function;1566UINT16 DeviceControl;1567UINT8 Reserved1[2];1568UINT32 UncorrectableErrorMask;1569UINT32 UncorrectableErrorSeverity;1570UINT32 CorrectableErrorMask;1571UINT32 AdvancedErrorCapabilitiesAndControl;1572UINT32 RootErrorCommand;1573} EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;15741575///1576/// PCI Express Device AER Structure Definition1577///1578typedef struct {1579UINT16 Type;1580UINT16 SourceId;1581UINT8 Reserved0[2];1582UINT8 Flags;1583UINT8 Enabled;1584UINT32 NumberOfRecordsToPreAllocate;1585UINT32 MaxSectionsPerRecord;1586UINT32 Bus;1587UINT16 Device;1588UINT16 Function;1589UINT16 DeviceControl;1590UINT8 Reserved1[2];1591UINT32 UncorrectableErrorMask;1592UINT32 UncorrectableErrorSeverity;1593UINT32 CorrectableErrorMask;1594UINT32 AdvancedErrorCapabilitiesAndControl;1595} EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER_STRUCTURE;15961597///1598/// PCI Express Bridge AER Structure Definition1599///1600typedef struct {1601UINT16 Type;1602UINT16 SourceId;1603UINT8 Reserved0[2];1604UINT8 Flags;1605UINT8 Enabled;1606UINT32 NumberOfRecordsToPreAllocate;1607UINT32 MaxSectionsPerRecord;1608UINT32 Bus;1609UINT16 Device;1610UINT16 Function;1611UINT16 DeviceControl;1612UINT8 Reserved1[2];1613UINT32 UncorrectableErrorMask;1614UINT32 UncorrectableErrorSeverity;1615UINT32 CorrectableErrorMask;1616UINT32 AdvancedErrorCapabilitiesAndControl;1617UINT32 SecondaryUncorrectableErrorMask;1618UINT32 SecondaryUncorrectableErrorSeverity;1619UINT32 SecondaryAdvancedErrorCapabilitiesAndControl;1620} EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;16211622///1623/// Generic Hardware Error Source Structure Definition1624///1625typedef struct {1626UINT16 Type;1627UINT16 SourceId;1628UINT16 RelatedSourceId;1629UINT8 Flags;1630UINT8 Enabled;1631UINT32 NumberOfRecordsToPreAllocate;1632UINT32 MaxSectionsPerRecord;1633UINT32 MaxRawDataLength;1634EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress;1635EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure;1636UINT32 ErrorStatusBlockLength;1637} EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;16381639///1640/// Generic Error Status Definition1641///1642typedef struct {1643EFI_ACPI_5_1_ERROR_BLOCK_STATUS BlockStatus;1644UINT32 RawDataOffset;1645UINT32 RawDataLength;1646UINT32 DataLength;1647UINT32 ErrorSeverity;1648} EFI_ACPI_5_1_GENERIC_ERROR_STATUS_STRUCTURE;16491650///1651/// ERST - Error Record Serialization Table1652///1653typedef struct {1654EFI_ACPI_DESCRIPTION_HEADER Header;1655UINT32 SerializationHeaderSize;1656UINT8 Reserved0[4];1657UINT32 InstructionEntryCount;1658} EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;16591660///1661/// ERST Version (as defined in ACPI 5.1 spec.)1662///1663#define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x0116641665///1666/// ERST Serialization Actions1667///1668#define EFI_ACPI_5_1_ERST_BEGIN_WRITE_OPERATION 0x001669#define EFI_ACPI_5_1_ERST_BEGIN_READ_OPERATION 0x011670#define EFI_ACPI_5_1_ERST_BEGIN_CLEAR_OPERATION 0x021671#define EFI_ACPI_5_1_ERST_END_OPERATION 0x031672#define EFI_ACPI_5_1_ERST_SET_RECORD_OFFSET 0x041673#define EFI_ACPI_5_1_ERST_EXECUTE_OPERATION 0x051674#define EFI_ACPI_5_1_ERST_CHECK_BUSY_STATUS 0x061675#define EFI_ACPI_5_1_ERST_GET_COMMAND_STATUS 0x071676#define EFI_ACPI_5_1_ERST_GET_RECORD_IDENTIFIER 0x081677#define EFI_ACPI_5_1_ERST_SET_RECORD_IDENTIFIER 0x091678#define EFI_ACPI_5_1_ERST_GET_RECORD_COUNT 0x0A1679#define EFI_ACPI_5_1_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B1680#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D1681#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E1682#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F16831684///1685/// ERST Action Command Status1686///1687#define EFI_ACPI_5_1_ERST_STATUS_SUCCESS 0x001688#define EFI_ACPI_5_1_ERST_STATUS_NOT_ENOUGH_SPACE 0x011689#define EFI_ACPI_5_1_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x021690#define EFI_ACPI_5_1_ERST_STATUS_FAILED 0x031691#define EFI_ACPI_5_1_ERST_STATUS_RECORD_STORE_EMPTY 0x041692#define EFI_ACPI_5_1_ERST_STATUS_RECORD_NOT_FOUND 0x0516931694///1695/// ERST Serialization Instructions1696///1697#define EFI_ACPI_5_1_ERST_READ_REGISTER 0x001698#define EFI_ACPI_5_1_ERST_READ_REGISTER_VALUE 0x011699#define EFI_ACPI_5_1_ERST_WRITE_REGISTER 0x021700#define EFI_ACPI_5_1_ERST_WRITE_REGISTER_VALUE 0x031701#define EFI_ACPI_5_1_ERST_NOOP 0x041702#define EFI_ACPI_5_1_ERST_LOAD_VAR1 0x051703#define EFI_ACPI_5_1_ERST_LOAD_VAR2 0x061704#define EFI_ACPI_5_1_ERST_STORE_VAR1 0x071705#define EFI_ACPI_5_1_ERST_ADD 0x081706#define EFI_ACPI_5_1_ERST_SUBTRACT 0x091707#define EFI_ACPI_5_1_ERST_ADD_VALUE 0x0A1708#define EFI_ACPI_5_1_ERST_SUBTRACT_VALUE 0x0B1709#define EFI_ACPI_5_1_ERST_STALL 0x0C1710#define EFI_ACPI_5_1_ERST_STALL_WHILE_TRUE 0x0D1711#define EFI_ACPI_5_1_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E1712#define EFI_ACPI_5_1_ERST_GOTO 0x0F1713#define EFI_ACPI_5_1_ERST_SET_SRC_ADDRESS_BASE 0x101714#define EFI_ACPI_5_1_ERST_SET_DST_ADDRESS_BASE 0x111715#define EFI_ACPI_5_1_ERST_MOVE_DATA 0x1217161717///1718/// ERST Instruction Flags1719///1720#define EFI_ACPI_5_1_ERST_PRESERVE_REGISTER 0x0117211722///1723/// ERST Serialization Instruction Entry1724///1725typedef struct {1726UINT8 SerializationAction;1727UINT8 Instruction;1728UINT8 Flags;1729UINT8 Reserved0;1730EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE RegisterRegion;1731UINT64 Value;1732UINT64 Mask;1733} EFI_ACPI_5_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY;17341735///1736/// EINJ - Error Injection Table1737///1738typedef struct {1739EFI_ACPI_DESCRIPTION_HEADER Header;1740UINT32 InjectionHeaderSize;1741UINT8 InjectionFlags;1742UINT8 Reserved0[3];1743UINT32 InjectionEntryCount;1744} EFI_ACPI_5_1_ERROR_INJECTION_TABLE_HEADER;17451746///1747/// EINJ Version (as defined in ACPI 5.1 spec.)1748///1749#define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_REVISION 0x0117501751///1752/// EINJ Error Injection Actions1753///1754#define EFI_ACPI_5_1_EINJ_BEGIN_INJECTION_OPERATION 0x001755#define EFI_ACPI_5_1_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x011756#define EFI_ACPI_5_1_EINJ_SET_ERROR_TYPE 0x021757#define EFI_ACPI_5_1_EINJ_GET_ERROR_TYPE 0x031758#define EFI_ACPI_5_1_EINJ_END_OPERATION 0x041759#define EFI_ACPI_5_1_EINJ_EXECUTE_OPERATION 0x051760#define EFI_ACPI_5_1_EINJ_CHECK_BUSY_STATUS 0x061761#define EFI_ACPI_5_1_EINJ_GET_COMMAND_STATUS 0x071762#define EFI_ACPI_5_1_EINJ_SET_ERROR_TYPE_WITH_ADDRESS 0x081763#define EFI_ACPI_5_1_EINJ_TRIGGER_ERROR 0xFF17641765///1766/// EINJ Action Command Status1767///1768#define EFI_ACPI_5_1_EINJ_STATUS_SUCCESS 0x001769#define EFI_ACPI_5_1_EINJ_STATUS_UNKNOWN_FAILURE 0x011770#define EFI_ACPI_5_1_EINJ_STATUS_INVALID_ACCESS 0x0217711772///1773/// EINJ Error Type Definition1774///1775#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0)1776#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1)1777#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2)1778#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3)1779#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4)1780#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5)1781#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6)1782#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7)1783#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8)1784#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9)1785#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10)1786#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11)17871788///1789/// EINJ Injection Instructions1790///1791#define EFI_ACPI_5_1_EINJ_READ_REGISTER 0x001792#define EFI_ACPI_5_1_EINJ_READ_REGISTER_VALUE 0x011793#define EFI_ACPI_5_1_EINJ_WRITE_REGISTER 0x021794#define EFI_ACPI_5_1_EINJ_WRITE_REGISTER_VALUE 0x031795#define EFI_ACPI_5_1_EINJ_NOOP 0x0417961797///1798/// EINJ Instruction Flags1799///1800#define EFI_ACPI_5_1_EINJ_PRESERVE_REGISTER 0x0118011802///1803/// EINJ Injection Instruction Entry1804///1805typedef struct {1806UINT8 InjectionAction;1807UINT8 Instruction;1808UINT8 Flags;1809UINT8 Reserved0;1810EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE RegisterRegion;1811UINT64 Value;1812UINT64 Mask;1813} EFI_ACPI_5_1_EINJ_INJECTION_INSTRUCTION_ENTRY;18141815///1816/// EINJ Trigger Action Table1817///1818typedef struct {1819UINT32 HeaderSize;1820UINT32 Revision;1821UINT32 TableSize;1822UINT32 EntryCount;1823} EFI_ACPI_5_1_EINJ_TRIGGER_ACTION_TABLE;18241825///1826/// Platform Communications Channel Table (PCCT)1827///1828typedef struct {1829EFI_ACPI_DESCRIPTION_HEADER Header;1830UINT32 Flags;1831UINT64 Reserved;1832} EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;18331834///1835/// PCCT Version (as defined in ACPI 5.1 spec.)1836///1837#define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x0118381839///1840/// PCCT Global Flags1841///1842#define EFI_ACPI_5_1_PCCT_FLAGS_SCI_DOORBELL BIT018431844//1845// PCCT Subspace type1846//1847#define EFI_ACPI_5_1_PCCT_SUBSPACE_TYPE_GENERIC 0x0018481849///1850/// PCC Subspace Structure Header1851///1852typedef struct {1853UINT8 Type;1854UINT8 Length;1855} EFI_ACPI_5_1_PCCT_SUBSPACE_HEADER;18561857///1858/// Generic Communications Subspace Structure1859///1860typedef struct {1861UINT8 Type;1862UINT8 Length;1863UINT8 Reserved[6];1864UINT64 BaseAddress;1865UINT64 AddressLength;1866EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE DoorbellRegister;1867UINT64 DoorbellPreserve;1868UINT64 DoorbellWrite;1869UINT32 NominalLatency;1870UINT32 MaximumPeriodicAccessRate;1871UINT16 MinimumRequestTurnaroundTime;1872} EFI_ACPI_5_1_PCCT_SUBSPACE_GENERIC;18731874///1875/// Generic Communications Channel Shared Memory Region1876///18771878typedef struct {1879UINT8 Command;1880UINT8 Reserved : 7;1881UINT8 GenerateSci : 1;1882} EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;18831884typedef struct {1885UINT8 CommandComplete : 1;1886UINT8 SciDoorbell : 1;1887UINT8 Error : 1;1888UINT8 PlatformNotification : 1;1889UINT8 Reserved : 4;1890UINT8 Reserved1;1891} EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;18921893typedef struct {1894UINT32 Signature;1895EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command;1896EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status;1897} EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER;18981899//1900// Known table signatures1901//19021903///1904/// "RSD PTR " Root System Description Pointer1905///1906#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')19071908///1909/// "APIC" Multiple APIC Description Table1910///1911#define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C')19121913///1914/// "BERT" Boot Error Record Table1915///1916#define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T')19171918///1919/// "BGRT" Boot Graphics Resource Table1920///1921#define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T')19221923///1924/// "CPEP" Corrected Platform Error Polling Table1925///1926#define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P')19271928///1929/// "DSDT" Differentiated System Description Table1930///1931#define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T')19321933///1934/// "ECDT" Embedded Controller Boot Resources Table1935///1936#define EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T')19371938///1939/// "EINJ" Error Injection Table1940///1941#define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J')19421943///1944/// "ERST" Error Record Serialization Table1945///1946#define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T')19471948///1949/// "FACP" Fixed ACPI Description Table1950///1951#define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P')19521953///1954/// "FACS" Firmware ACPI Control Structure1955///1956#define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S')19571958///1959/// "FPDT" Firmware Performance Data Table1960///1961#define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T')19621963///1964/// "GTDT" Generic Timer Description Table1965///1966#define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T')19671968///1969/// "HEST" Hardware Error Source Table1970///1971#define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T')19721973///1974/// "MPST" Memory Power State Table1975///1976#define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T')19771978///1979/// "MSCT" Maximum System Characteristics Table1980///1981#define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T')19821983///1984/// "PMTT" Platform Memory Topology Table1985///1986#define EFI_ACPI_5_1_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T')19871988///1989/// "PSDT" Persistent System Description Table1990///1991#define EFI_ACPI_5_1_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T')19921993///1994/// "RASF" ACPI RAS Feature Table1995///1996#define EFI_ACPI_5_1_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F')19971998///1999/// "RSDT" Root System Description Table2000///2001#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T')20022003///2004/// "SBST" Smart Battery Specification Table2005///2006#define EFI_ACPI_5_1_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T')20072008///2009/// "SLIT" System Locality Information Table2010///2011#define EFI_ACPI_5_1_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T')20122013///2014/// "SRAT" System Resource Affinity Table2015///2016#define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T')20172018///2019/// "SSDT" Secondary System Description Table2020///2021#define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T')20222023///2024/// "XSDT" Extended System Description Table2025///2026#define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T')20272028///2029/// "BOOT" MS Simple Boot Spec2030///2031#define EFI_ACPI_5_1_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T')20322033///2034/// "CSRT" MS Core System Resource Table2035///2036#define EFI_ACPI_5_1_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T')20372038///2039/// "DBG2" MS Debug Port 2 Spec2040///2041#define EFI_ACPI_5_1_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2')20422043///2044/// "DBGP" MS Debug Port Spec2045///2046#define EFI_ACPI_5_1_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P')20472048///2049/// "DMAR" DMA Remapping Table2050///2051#define EFI_ACPI_5_1_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R')20522053///2054/// "DRTM" Dynamic Root of Trust for Measurement Table2055///2056#define EFI_ACPI_5_1_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M')20572058///2059/// "ETDT" Event Timer Description Table2060///2061#define EFI_ACPI_5_1_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T')20622063///2064/// "HPET" IA-PC High Precision Event Timer Table2065///2066#define EFI_ACPI_5_1_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T')20672068///2069/// "iBFT" iSCSI Boot Firmware Table2070///2071#define EFI_ACPI_5_1_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T')20722073///2074/// "IVRS" I/O Virtualization Reporting Structure2075///2076#define EFI_ACPI_5_1_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S')20772078///2079/// "LPIT" Low Power Idle Table2080///2081#define EFI_ACPI_5_1_IO_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('L', 'P', 'I', 'T')20822083///2084/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table2085///2086#define EFI_ACPI_5_1_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G')20872088///2089/// "MCHI" Management Controller Host Interface Table2090///2091#define EFI_ACPI_5_1_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I')20922093///2094/// "MSDM" MS Data Management Table2095///2096#define EFI_ACPI_5_1_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M')20972098///2099/// "PCCT" Platform Communications Channel Table2100///2101#define EFI_ACPI_5_1_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE SIGNATURE_32('P', 'C', 'C', 'T')21022103///2104/// "SLIC" MS Software Licensing Table Specification2105///2106#define EFI_ACPI_5_1_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C')21072108///2109/// "SPCR" Serial Port Console Redirection Table2110///2111#define EFI_ACPI_5_1_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R')21122113///2114/// "SPMI" Server Platform Management Interface Table2115///2116#define EFI_ACPI_5_1_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I')21172118///2119/// "TCPA" Trusted Computing Platform Alliance Capabilities Table2120///2121#define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A')21222123///2124/// "TPM2" Trusted Computing Platform 1 Table2125///2126#define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2')21272128///2129/// "UEFI" UEFI ACPI Data Table2130///2131#define EFI_ACPI_5_1_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I')21322133///2134/// "WAET" Windows ACPI Emulated Devices Table2135///2136#define EFI_ACPI_5_1_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T')21372138///2139/// "WDAT" Watchdog Action Table2140///2141#define EFI_ACPI_5_1_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T')21422143///2144/// "WDRT" Watchdog Resource Table2145///2146#define EFI_ACPI_5_1_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T')21472148///2149/// "WPBT" MS Platform Binary Table2150///2151#define EFI_ACPI_5_1_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T')21522153#pragma pack()21542155#endif215621572158