xref: /freebsd-src/sys/contrib/edk2/Include/IndustryStandard/Acpi51.h (revision 3245fa215aca18d135839a15c80ae1c905666a37)
10d1ba665SWarner Losh /** @file
20d1ba665SWarner Losh   ACPI 5.1 definitions from the ACPI Specification Revision 5.1 Errata B January, 2016.
30d1ba665SWarner Losh 
40d1ba665SWarner Losh   Copyright (c) 2014 Hewlett-Packard Development Company, L.P.<BR>
5*3245fa21SMitchell Horne   Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
60d1ba665SWarner Losh   (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
7*3245fa21SMitchell Horne   Copyright (c) 2020, ARM Ltd. All rights reserved.<BR>
8*3245fa21SMitchell Horne   SPDX-License-Identifier: BSD-2-Clause-Patent
90d1ba665SWarner Losh **/
100d1ba665SWarner Losh 
110d1ba665SWarner Losh #ifndef _ACPI_5_1_H_
120d1ba665SWarner Losh #define _ACPI_5_1_H_
130d1ba665SWarner Losh 
140d1ba665SWarner Losh #include <IndustryStandard/Acpi50.h>
150d1ba665SWarner Losh 
160d1ba665SWarner Losh //
170d1ba665SWarner Losh // Ensure proper structure formats
180d1ba665SWarner Losh //
190d1ba665SWarner Losh #pragma pack(1)
200d1ba665SWarner Losh 
210d1ba665SWarner Losh ///
220d1ba665SWarner Losh /// ACPI 5.1 Generic Address Space definition
230d1ba665SWarner Losh ///
240d1ba665SWarner Losh typedef struct {
250d1ba665SWarner Losh   UINT8   AddressSpaceId;
260d1ba665SWarner Losh   UINT8   RegisterBitWidth;
270d1ba665SWarner Losh   UINT8   RegisterBitOffset;
280d1ba665SWarner Losh   UINT8   AccessSize;
290d1ba665SWarner Losh   UINT64  Address;
300d1ba665SWarner Losh } EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE;
310d1ba665SWarner Losh 
320d1ba665SWarner Losh //
330d1ba665SWarner Losh // Generic Address Space Address IDs
340d1ba665SWarner Losh //
350d1ba665SWarner Losh #define EFI_ACPI_5_1_SYSTEM_MEMORY              0
360d1ba665SWarner Losh #define EFI_ACPI_5_1_SYSTEM_IO                  1
370d1ba665SWarner Losh #define EFI_ACPI_5_1_PCI_CONFIGURATION_SPACE    2
380d1ba665SWarner Losh #define EFI_ACPI_5_1_EMBEDDED_CONTROLLER        3
390d1ba665SWarner Losh #define EFI_ACPI_5_1_SMBUS                      4
400d1ba665SWarner Losh #define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL  0x0A
410d1ba665SWarner Losh #define EFI_ACPI_5_1_FUNCTIONAL_FIXED_HARDWARE       0x7F
420d1ba665SWarner Losh 
430d1ba665SWarner Losh //
440d1ba665SWarner Losh // Generic Address Space Access Sizes
450d1ba665SWarner Losh //
460d1ba665SWarner Losh #define EFI_ACPI_5_1_UNDEFINED  0
470d1ba665SWarner Losh #define EFI_ACPI_5_1_BYTE       1
480d1ba665SWarner Losh #define EFI_ACPI_5_1_WORD       2
490d1ba665SWarner Losh #define EFI_ACPI_5_1_DWORD      3
500d1ba665SWarner Losh #define EFI_ACPI_5_1_QWORD      4
510d1ba665SWarner Losh 
520d1ba665SWarner Losh //
530d1ba665SWarner Losh // ACPI 5.1 table structures
540d1ba665SWarner Losh //
550d1ba665SWarner Losh 
560d1ba665SWarner Losh ///
570d1ba665SWarner Losh /// Root System Description Pointer Structure
580d1ba665SWarner Losh ///
590d1ba665SWarner Losh typedef struct {
600d1ba665SWarner Losh   UINT64  Signature;
610d1ba665SWarner Losh   UINT8   Checksum;
620d1ba665SWarner Losh   UINT8   OemId[6];
630d1ba665SWarner Losh   UINT8   Revision;
640d1ba665SWarner Losh   UINT32  RsdtAddress;
650d1ba665SWarner Losh   UINT32  Length;
660d1ba665SWarner Losh   UINT64  XsdtAddress;
670d1ba665SWarner Losh   UINT8   ExtendedChecksum;
680d1ba665SWarner Losh   UINT8   Reserved[3];
690d1ba665SWarner Losh } EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER;
700d1ba665SWarner Losh 
710d1ba665SWarner Losh ///
720d1ba665SWarner Losh /// RSD_PTR Revision (as defined in ACPI 5.1 spec.)
730d1ba665SWarner Losh ///
740d1ba665SWarner Losh #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02  ///< ACPISpec (Revision 5.1) says current value is 2
750d1ba665SWarner Losh 
760d1ba665SWarner Losh ///
770d1ba665SWarner Losh /// Common table header, this prefaces all ACPI tables, including FACS, but
780d1ba665SWarner Losh /// excluding the RSD PTR structure
790d1ba665SWarner Losh ///
800d1ba665SWarner Losh typedef struct {
810d1ba665SWarner Losh   UINT32  Signature;
820d1ba665SWarner Losh   UINT32  Length;
830d1ba665SWarner Losh } EFI_ACPI_5_1_COMMON_HEADER;
840d1ba665SWarner Losh 
850d1ba665SWarner Losh //
860d1ba665SWarner Losh // Root System Description Table
870d1ba665SWarner Losh // No definition needed as it is a common description table header, the same with
880d1ba665SWarner Losh // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers.
890d1ba665SWarner Losh //
900d1ba665SWarner Losh 
910d1ba665SWarner Losh ///
920d1ba665SWarner Losh /// RSDT Revision (as defined in ACPI 5.1 spec.)
930d1ba665SWarner Losh ///
940d1ba665SWarner Losh #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
950d1ba665SWarner Losh 
960d1ba665SWarner Losh //
970d1ba665SWarner Losh // Extended System Description Table
980d1ba665SWarner Losh // No definition needed as it is a common description table header, the same with
990d1ba665SWarner Losh // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers.
1000d1ba665SWarner Losh //
1010d1ba665SWarner Losh 
1020d1ba665SWarner Losh ///
1030d1ba665SWarner Losh /// XSDT Revision (as defined in ACPI 5.1 spec.)
1040d1ba665SWarner Losh ///
1050d1ba665SWarner Losh #define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01
1060d1ba665SWarner Losh 
1070d1ba665SWarner Losh ///
1080d1ba665SWarner Losh /// Fixed ACPI Description Table Structure (FADT)
1090d1ba665SWarner Losh ///
1100d1ba665SWarner Losh typedef struct {
1110d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER             Header;
1120d1ba665SWarner Losh   UINT32                                  FirmwareCtrl;
1130d1ba665SWarner Losh   UINT32                                  Dsdt;
1140d1ba665SWarner Losh   UINT8                                   Reserved0;
1150d1ba665SWarner Losh   UINT8                                   PreferredPmProfile;
1160d1ba665SWarner Losh   UINT16                                  SciInt;
1170d1ba665SWarner Losh   UINT32                                  SmiCmd;
1180d1ba665SWarner Losh   UINT8                                   AcpiEnable;
1190d1ba665SWarner Losh   UINT8                                   AcpiDisable;
1200d1ba665SWarner Losh   UINT8                                   S4BiosReq;
1210d1ba665SWarner Losh   UINT8                                   PstateCnt;
1220d1ba665SWarner Losh   UINT32                                  Pm1aEvtBlk;
1230d1ba665SWarner Losh   UINT32                                  Pm1bEvtBlk;
1240d1ba665SWarner Losh   UINT32                                  Pm1aCntBlk;
1250d1ba665SWarner Losh   UINT32                                  Pm1bCntBlk;
1260d1ba665SWarner Losh   UINT32                                  Pm2CntBlk;
1270d1ba665SWarner Losh   UINT32                                  PmTmrBlk;
1280d1ba665SWarner Losh   UINT32                                  Gpe0Blk;
1290d1ba665SWarner Losh   UINT32                                  Gpe1Blk;
1300d1ba665SWarner Losh   UINT8                                   Pm1EvtLen;
1310d1ba665SWarner Losh   UINT8                                   Pm1CntLen;
1320d1ba665SWarner Losh   UINT8                                   Pm2CntLen;
1330d1ba665SWarner Losh   UINT8                                   PmTmrLen;
1340d1ba665SWarner Losh   UINT8                                   Gpe0BlkLen;
1350d1ba665SWarner Losh   UINT8                                   Gpe1BlkLen;
1360d1ba665SWarner Losh   UINT8                                   Gpe1Base;
1370d1ba665SWarner Losh   UINT8                                   CstCnt;
1380d1ba665SWarner Losh   UINT16                                  PLvl2Lat;
1390d1ba665SWarner Losh   UINT16                                  PLvl3Lat;
1400d1ba665SWarner Losh   UINT16                                  FlushSize;
1410d1ba665SWarner Losh   UINT16                                  FlushStride;
1420d1ba665SWarner Losh   UINT8                                   DutyOffset;
1430d1ba665SWarner Losh   UINT8                                   DutyWidth;
1440d1ba665SWarner Losh   UINT8                                   DayAlrm;
1450d1ba665SWarner Losh   UINT8                                   MonAlrm;
1460d1ba665SWarner Losh   UINT8                                   Century;
1470d1ba665SWarner Losh   UINT16                                  IaPcBootArch;
1480d1ba665SWarner Losh   UINT8                                   Reserved1;
1490d1ba665SWarner Losh   UINT32                                  Flags;
1500d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  ResetReg;
1510d1ba665SWarner Losh   UINT8                                   ResetValue;
1520d1ba665SWarner Losh   UINT16                                  ArmBootArch;
1530d1ba665SWarner Losh   UINT8                                   MinorVersion;
1540d1ba665SWarner Losh   UINT64                                  XFirmwareCtrl;
1550d1ba665SWarner Losh   UINT64                                  XDsdt;
1560d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1aEvtBlk;
1570d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1bEvtBlk;
1580d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1aCntBlk;
1590d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm1bCntBlk;
1600d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPm2CntBlk;
1610d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XPmTmrBlk;
1620d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XGpe0Blk;
1630d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  XGpe1Blk;
1640d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  SleepControlReg;
1650d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  SleepStatusReg;
1660d1ba665SWarner Losh } EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE;
1670d1ba665SWarner Losh 
1680d1ba665SWarner Losh ///
1690d1ba665SWarner Losh /// FADT Version (as defined in ACPI 5.1 spec.)
1700d1ba665SWarner Losh ///
1710d1ba665SWarner Losh #define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION  0x05
1720d1ba665SWarner Losh #define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION  0x01
1730d1ba665SWarner Losh 
1740d1ba665SWarner Losh //
1750d1ba665SWarner Losh // Fixed ACPI Description Table Preferred Power Management Profile
1760d1ba665SWarner Losh //
1770d1ba665SWarner Losh #define EFI_ACPI_5_1_PM_PROFILE_UNSPECIFIED         0
1780d1ba665SWarner Losh #define EFI_ACPI_5_1_PM_PROFILE_DESKTOP             1
1790d1ba665SWarner Losh #define EFI_ACPI_5_1_PM_PROFILE_MOBILE              2
1800d1ba665SWarner Losh #define EFI_ACPI_5_1_PM_PROFILE_WORKSTATION         3
1810d1ba665SWarner Losh #define EFI_ACPI_5_1_PM_PROFILE_ENTERPRISE_SERVER   4
1820d1ba665SWarner Losh #define EFI_ACPI_5_1_PM_PROFILE_SOHO_SERVER         5
1830d1ba665SWarner Losh #define EFI_ACPI_5_1_PM_PROFILE_APPLIANCE_PC        6
1840d1ba665SWarner Losh #define EFI_ACPI_5_1_PM_PROFILE_PERFORMANCE_SERVER  7
1850d1ba665SWarner Losh #define EFI_ACPI_5_1_PM_PROFILE_TABLET              8
1860d1ba665SWarner Losh 
1870d1ba665SWarner Losh //
1880d1ba665SWarner Losh // Fixed ACPI Description Table Boot Architecture Flags
1890d1ba665SWarner Losh // All other bits are reserved and must be set to 0.
1900d1ba665SWarner Losh //
1910d1ba665SWarner Losh #define EFI_ACPI_5_1_LEGACY_DEVICES              BIT0
1920d1ba665SWarner Losh #define EFI_ACPI_5_1_8042                        BIT1
1930d1ba665SWarner Losh #define EFI_ACPI_5_1_VGA_NOT_PRESENT             BIT2
1940d1ba665SWarner Losh #define EFI_ACPI_5_1_MSI_NOT_SUPPORTED           BIT3
1950d1ba665SWarner Losh #define EFI_ACPI_5_1_PCIE_ASPM_CONTROLS          BIT4
1960d1ba665SWarner Losh #define EFI_ACPI_5_1_CMOS_RTC_NOT_PRESENT        BIT5
1970d1ba665SWarner Losh 
1980d1ba665SWarner Losh //
1990d1ba665SWarner Losh // Fixed ACPI Description Table Arm Boot Architecture Flags
2000d1ba665SWarner Losh // All other bits are reserved and must be set to 0.
2010d1ba665SWarner Losh //
2020d1ba665SWarner Losh #define EFI_ACPI_5_1_ARM_PSCI_COMPLIANT              BIT0
2030d1ba665SWarner Losh #define EFI_ACPI_5_1_ARM_PSCI_USE_HVC                BIT1
2040d1ba665SWarner Losh 
2050d1ba665SWarner Losh //
2060d1ba665SWarner Losh // Fixed ACPI Description Table Fixed Feature Flags
2070d1ba665SWarner Losh // All other bits are reserved and must be set to 0.
2080d1ba665SWarner Losh //
2090d1ba665SWarner Losh #define EFI_ACPI_5_1_WBINVD                                 BIT0
2100d1ba665SWarner Losh #define EFI_ACPI_5_1_WBINVD_FLUSH                           BIT1
2110d1ba665SWarner Losh #define EFI_ACPI_5_1_PROC_C1                                BIT2
2120d1ba665SWarner Losh #define EFI_ACPI_5_1_P_LVL2_UP                              BIT3
2130d1ba665SWarner Losh #define EFI_ACPI_5_1_PWR_BUTTON                             BIT4
2140d1ba665SWarner Losh #define EFI_ACPI_5_1_SLP_BUTTON                             BIT5
2150d1ba665SWarner Losh #define EFI_ACPI_5_1_FIX_RTC                                BIT6
2160d1ba665SWarner Losh #define EFI_ACPI_5_1_RTC_S4                                 BIT7
2170d1ba665SWarner Losh #define EFI_ACPI_5_1_TMR_VAL_EXT                            BIT8
2180d1ba665SWarner Losh #define EFI_ACPI_5_1_DCK_CAP                                BIT9
2190d1ba665SWarner Losh #define EFI_ACPI_5_1_RESET_REG_SUP                          BIT10
2200d1ba665SWarner Losh #define EFI_ACPI_5_1_SEALED_CASE                            BIT11
2210d1ba665SWarner Losh #define EFI_ACPI_5_1_HEADLESS                               BIT12
2220d1ba665SWarner Losh #define EFI_ACPI_5_1_CPU_SW_SLP                             BIT13
2230d1ba665SWarner Losh #define EFI_ACPI_5_1_PCI_EXP_WAK                            BIT14
2240d1ba665SWarner Losh #define EFI_ACPI_5_1_USE_PLATFORM_CLOCK                     BIT15
2250d1ba665SWarner Losh #define EFI_ACPI_5_1_S4_RTC_STS_VALID                       BIT16
2260d1ba665SWarner Losh #define EFI_ACPI_5_1_REMOTE_POWER_ON_CAPABLE                BIT17
2270d1ba665SWarner Losh #define EFI_ACPI_5_1_FORCE_APIC_CLUSTER_MODEL               BIT18
2280d1ba665SWarner Losh #define EFI_ACPI_5_1_FORCE_APIC_PHYSICAL_DESTINATION_MODE   BIT19
2290d1ba665SWarner Losh #define EFI_ACPI_5_1_HW_REDUCED_ACPI                        BIT20
2300d1ba665SWarner Losh #define EFI_ACPI_5_1_LOW_POWER_S0_IDLE_CAPABLE              BIT21
2310d1ba665SWarner Losh 
2320d1ba665SWarner Losh ///
2330d1ba665SWarner Losh /// Firmware ACPI Control Structure
2340d1ba665SWarner Losh ///
2350d1ba665SWarner Losh typedef struct {
2360d1ba665SWarner Losh   UINT32  Signature;
2370d1ba665SWarner Losh   UINT32  Length;
2380d1ba665SWarner Losh   UINT32  HardwareSignature;
2390d1ba665SWarner Losh   UINT32  FirmwareWakingVector;
2400d1ba665SWarner Losh   UINT32  GlobalLock;
2410d1ba665SWarner Losh   UINT32  Flags;
2420d1ba665SWarner Losh   UINT64  XFirmwareWakingVector;
2430d1ba665SWarner Losh   UINT8   Version;
2440d1ba665SWarner Losh   UINT8   Reserved0[3];
2450d1ba665SWarner Losh   UINT32  OspmFlags;
2460d1ba665SWarner Losh   UINT8   Reserved1[24];
2470d1ba665SWarner Losh } EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE;
2480d1ba665SWarner Losh 
2490d1ba665SWarner Losh ///
2500d1ba665SWarner Losh /// FACS Version (as defined in ACPI 5.1 spec.)
2510d1ba665SWarner Losh ///
2520d1ba665SWarner Losh #define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION  0x02
2530d1ba665SWarner Losh 
2540d1ba665SWarner Losh ///
2550d1ba665SWarner Losh /// Firmware Control Structure Feature Flags
2560d1ba665SWarner Losh /// All other bits are reserved and must be set to 0.
2570d1ba665SWarner Losh ///
2580d1ba665SWarner Losh #define EFI_ACPI_5_1_S4BIOS_F                     BIT0
2590d1ba665SWarner Losh #define EFI_ACPI_5_1_64BIT_WAKE_SUPPORTED_F       BIT1
2600d1ba665SWarner Losh 
2610d1ba665SWarner Losh ///
2620d1ba665SWarner Losh /// OSPM Enabled Firmware Control Structure Flags
2630d1ba665SWarner Losh /// All other bits are reserved and must be set to 0.
2640d1ba665SWarner Losh ///
2650d1ba665SWarner Losh #define EFI_ACPI_5_1_OSPM_64BIT_WAKE_F            BIT0
2660d1ba665SWarner Losh 
2670d1ba665SWarner Losh //
2680d1ba665SWarner Losh // Differentiated System Description Table,
2690d1ba665SWarner Losh // Secondary System Description Table
2700d1ba665SWarner Losh // and Persistent System Description Table,
2710d1ba665SWarner Losh // no definition needed as they are common description table header, the same with
2720d1ba665SWarner Losh // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block.
2730d1ba665SWarner Losh //
2740d1ba665SWarner Losh #define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION   0x02
2750d1ba665SWarner Losh #define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION        0x02
2760d1ba665SWarner Losh 
2770d1ba665SWarner Losh ///
2780d1ba665SWarner Losh /// Multiple APIC Description Table header definition.  The rest of the table
2790d1ba665SWarner Losh /// must be defined in a platform specific manner.
2800d1ba665SWarner Losh ///
2810d1ba665SWarner Losh typedef struct {
2820d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
2830d1ba665SWarner Losh   UINT32                      LocalApicAddress;
2840d1ba665SWarner Losh   UINT32                      Flags;
2850d1ba665SWarner Losh } EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER;
2860d1ba665SWarner Losh 
2870d1ba665SWarner Losh ///
2880d1ba665SWarner Losh /// MADT Revision (as defined in ACPI 5.1 spec.)
2890d1ba665SWarner Losh ///
2900d1ba665SWarner Losh #define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03
2910d1ba665SWarner Losh 
2920d1ba665SWarner Losh ///
2930d1ba665SWarner Losh /// Multiple APIC Flags
2940d1ba665SWarner Losh /// All other bits are reserved and must be set to 0.
2950d1ba665SWarner Losh ///
2960d1ba665SWarner Losh #define EFI_ACPI_5_1_PCAT_COMPAT         BIT0
2970d1ba665SWarner Losh 
2980d1ba665SWarner Losh //
2990d1ba665SWarner Losh // Multiple APIC Description Table APIC structure types
3000d1ba665SWarner Losh // All other values between 0x0D and 0x7F are reserved and
3010d1ba665SWarner Losh // will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM.
3020d1ba665SWarner Losh //
3030d1ba665SWarner Losh #define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC           0x00
3040d1ba665SWarner Losh #define EFI_ACPI_5_1_IO_APIC                        0x01
3050d1ba665SWarner Losh #define EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE      0x02
3060d1ba665SWarner Losh #define EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE  0x03
3070d1ba665SWarner Losh #define EFI_ACPI_5_1_LOCAL_APIC_NMI                 0x04
3080d1ba665SWarner Losh #define EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE    0x05
3090d1ba665SWarner Losh #define EFI_ACPI_5_1_IO_SAPIC                       0x06
3100d1ba665SWarner Losh #define EFI_ACPI_5_1_LOCAL_SAPIC                    0x07
3110d1ba665SWarner Losh #define EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES     0x08
3120d1ba665SWarner Losh #define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC         0x09
3130d1ba665SWarner Losh #define EFI_ACPI_5_1_LOCAL_X2APIC_NMI               0x0A
3140d1ba665SWarner Losh #define EFI_ACPI_5_1_GIC                            0x0B
3150d1ba665SWarner Losh #define EFI_ACPI_5_1_GICD                           0x0C
3160d1ba665SWarner Losh #define EFI_ACPI_5_1_GIC_MSI_FRAME                  0x0D
3170d1ba665SWarner Losh #define EFI_ACPI_5_1_GICR                           0x0E
3180d1ba665SWarner Losh 
3190d1ba665SWarner Losh //
3200d1ba665SWarner Losh // APIC Structure Definitions
3210d1ba665SWarner Losh //
3220d1ba665SWarner Losh 
3230d1ba665SWarner Losh ///
3240d1ba665SWarner Losh /// Processor Local APIC Structure Definition
3250d1ba665SWarner Losh ///
3260d1ba665SWarner Losh typedef struct {
3270d1ba665SWarner Losh   UINT8   Type;
3280d1ba665SWarner Losh   UINT8   Length;
3290d1ba665SWarner Losh   UINT8   AcpiProcessorId;
3300d1ba665SWarner Losh   UINT8   ApicId;
3310d1ba665SWarner Losh   UINT32  Flags;
3320d1ba665SWarner Losh } EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_STRUCTURE;
3330d1ba665SWarner Losh 
3340d1ba665SWarner Losh ///
3350d1ba665SWarner Losh /// Local APIC Flags.  All other bits are reserved and must be 0.
3360d1ba665SWarner Losh ///
3370d1ba665SWarner Losh #define EFI_ACPI_5_1_LOCAL_APIC_ENABLED        BIT0
3380d1ba665SWarner Losh 
3390d1ba665SWarner Losh ///
3400d1ba665SWarner Losh /// IO APIC Structure
3410d1ba665SWarner Losh ///
3420d1ba665SWarner Losh typedef struct {
3430d1ba665SWarner Losh   UINT8   Type;
3440d1ba665SWarner Losh   UINT8   Length;
3450d1ba665SWarner Losh   UINT8   IoApicId;
3460d1ba665SWarner Losh   UINT8   Reserved;
3470d1ba665SWarner Losh   UINT32  IoApicAddress;
3480d1ba665SWarner Losh   UINT32  GlobalSystemInterruptBase;
3490d1ba665SWarner Losh } EFI_ACPI_5_1_IO_APIC_STRUCTURE;
3500d1ba665SWarner Losh 
3510d1ba665SWarner Losh ///
3520d1ba665SWarner Losh /// Interrupt Source Override Structure
3530d1ba665SWarner Losh ///
3540d1ba665SWarner Losh typedef struct {
3550d1ba665SWarner Losh   UINT8   Type;
3560d1ba665SWarner Losh   UINT8   Length;
3570d1ba665SWarner Losh   UINT8   Bus;
3580d1ba665SWarner Losh   UINT8   Source;
3590d1ba665SWarner Losh   UINT32  GlobalSystemInterrupt;
3600d1ba665SWarner Losh   UINT16  Flags;
3610d1ba665SWarner Losh } EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE;
3620d1ba665SWarner Losh 
3630d1ba665SWarner Losh ///
3640d1ba665SWarner Losh /// Platform Interrupt Sources Structure Definition
3650d1ba665SWarner Losh ///
3660d1ba665SWarner Losh typedef struct {
3670d1ba665SWarner Losh   UINT8   Type;
3680d1ba665SWarner Losh   UINT8   Length;
3690d1ba665SWarner Losh   UINT16  Flags;
3700d1ba665SWarner Losh   UINT8   InterruptType;
3710d1ba665SWarner Losh   UINT8   ProcessorId;
3720d1ba665SWarner Losh   UINT8   ProcessorEid;
3730d1ba665SWarner Losh   UINT8   IoSapicVector;
3740d1ba665SWarner Losh   UINT32  GlobalSystemInterrupt;
3750d1ba665SWarner Losh   UINT32  PlatformInterruptSourceFlags;
3760d1ba665SWarner Losh   UINT8   CpeiProcessorOverride;
3770d1ba665SWarner Losh   UINT8   Reserved[31];
3780d1ba665SWarner Losh } EFI_ACPI_5_1_PLATFORM_INTERRUPT_APIC_STRUCTURE;
3790d1ba665SWarner Losh 
3800d1ba665SWarner Losh //
3810d1ba665SWarner Losh // MPS INTI flags.
3820d1ba665SWarner Losh // All other bits are reserved and must be set to 0.
3830d1ba665SWarner Losh //
3840d1ba665SWarner Losh #define EFI_ACPI_5_1_POLARITY      (3 << 0)
3850d1ba665SWarner Losh #define EFI_ACPI_5_1_TRIGGER_MODE  (3 << 2)
3860d1ba665SWarner Losh 
3870d1ba665SWarner Losh ///
3880d1ba665SWarner Losh /// Non-Maskable Interrupt Source Structure
3890d1ba665SWarner Losh ///
3900d1ba665SWarner Losh typedef struct {
3910d1ba665SWarner Losh   UINT8   Type;
3920d1ba665SWarner Losh   UINT8   Length;
3930d1ba665SWarner Losh   UINT16  Flags;
3940d1ba665SWarner Losh   UINT32  GlobalSystemInterrupt;
3950d1ba665SWarner Losh } EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE;
3960d1ba665SWarner Losh 
3970d1ba665SWarner Losh ///
3980d1ba665SWarner Losh /// Local APIC NMI Structure
3990d1ba665SWarner Losh ///
4000d1ba665SWarner Losh typedef struct {
4010d1ba665SWarner Losh   UINT8   Type;
4020d1ba665SWarner Losh   UINT8   Length;
4030d1ba665SWarner Losh   UINT8   AcpiProcessorId;
4040d1ba665SWarner Losh   UINT16  Flags;
4050d1ba665SWarner Losh   UINT8   LocalApicLint;
4060d1ba665SWarner Losh } EFI_ACPI_5_1_LOCAL_APIC_NMI_STRUCTURE;
4070d1ba665SWarner Losh 
4080d1ba665SWarner Losh ///
4090d1ba665SWarner Losh /// Local APIC Address Override Structure
4100d1ba665SWarner Losh ///
4110d1ba665SWarner Losh typedef struct {
4120d1ba665SWarner Losh   UINT8   Type;
4130d1ba665SWarner Losh   UINT8   Length;
4140d1ba665SWarner Losh   UINT16  Reserved;
4150d1ba665SWarner Losh   UINT64  LocalApicAddress;
4160d1ba665SWarner Losh } EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE;
4170d1ba665SWarner Losh 
4180d1ba665SWarner Losh ///
4190d1ba665SWarner Losh /// IO SAPIC Structure
4200d1ba665SWarner Losh ///
4210d1ba665SWarner Losh typedef struct {
4220d1ba665SWarner Losh   UINT8   Type;
4230d1ba665SWarner Losh   UINT8   Length;
4240d1ba665SWarner Losh   UINT8   IoApicId;
4250d1ba665SWarner Losh   UINT8   Reserved;
4260d1ba665SWarner Losh   UINT32  GlobalSystemInterruptBase;
4270d1ba665SWarner Losh   UINT64  IoSapicAddress;
4280d1ba665SWarner Losh } EFI_ACPI_5_1_IO_SAPIC_STRUCTURE;
4290d1ba665SWarner Losh 
4300d1ba665SWarner Losh ///
4310d1ba665SWarner Losh /// Local SAPIC Structure
4320d1ba665SWarner Losh /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String
4330d1ba665SWarner Losh ///
4340d1ba665SWarner Losh typedef struct {
4350d1ba665SWarner Losh   UINT8   Type;
4360d1ba665SWarner Losh   UINT8   Length;
4370d1ba665SWarner Losh   UINT8   AcpiProcessorId;
4380d1ba665SWarner Losh   UINT8   LocalSapicId;
4390d1ba665SWarner Losh   UINT8   LocalSapicEid;
4400d1ba665SWarner Losh   UINT8   Reserved[3];
4410d1ba665SWarner Losh   UINT32  Flags;
4420d1ba665SWarner Losh   UINT32  ACPIProcessorUIDValue;
4430d1ba665SWarner Losh } EFI_ACPI_5_1_PROCESSOR_LOCAL_SAPIC_STRUCTURE;
4440d1ba665SWarner Losh 
4450d1ba665SWarner Losh ///
4460d1ba665SWarner Losh /// Platform Interrupt Sources Structure
4470d1ba665SWarner Losh ///
4480d1ba665SWarner Losh typedef struct {
4490d1ba665SWarner Losh   UINT8   Type;
4500d1ba665SWarner Losh   UINT8   Length;
4510d1ba665SWarner Losh   UINT16  Flags;
4520d1ba665SWarner Losh   UINT8   InterruptType;
4530d1ba665SWarner Losh   UINT8   ProcessorId;
4540d1ba665SWarner Losh   UINT8   ProcessorEid;
4550d1ba665SWarner Losh   UINT8   IoSapicVector;
4560d1ba665SWarner Losh   UINT32  GlobalSystemInterrupt;
4570d1ba665SWarner Losh   UINT32  PlatformInterruptSourceFlags;
4580d1ba665SWarner Losh } EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES_STRUCTURE;
4590d1ba665SWarner Losh 
4600d1ba665SWarner Losh ///
4610d1ba665SWarner Losh /// Platform Interrupt Source Flags.
4620d1ba665SWarner Losh /// All other bits are reserved and must be set to 0.
4630d1ba665SWarner Losh ///
4640d1ba665SWarner Losh #define EFI_ACPI_5_1_CPEI_PROCESSOR_OVERRIDE          BIT0
4650d1ba665SWarner Losh 
4660d1ba665SWarner Losh ///
4670d1ba665SWarner Losh /// Processor Local x2APIC Structure Definition
4680d1ba665SWarner Losh ///
4690d1ba665SWarner Losh typedef struct {
4700d1ba665SWarner Losh   UINT8   Type;
4710d1ba665SWarner Losh   UINT8   Length;
4720d1ba665SWarner Losh   UINT8   Reserved[2];
4730d1ba665SWarner Losh   UINT32  X2ApicId;
4740d1ba665SWarner Losh   UINT32  Flags;
4750d1ba665SWarner Losh   UINT32  AcpiProcessorUid;
4760d1ba665SWarner Losh } EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_STRUCTURE;
4770d1ba665SWarner Losh 
4780d1ba665SWarner Losh ///
4790d1ba665SWarner Losh /// Local x2APIC NMI Structure
4800d1ba665SWarner Losh ///
4810d1ba665SWarner Losh typedef struct {
4820d1ba665SWarner Losh   UINT8   Type;
4830d1ba665SWarner Losh   UINT8   Length;
4840d1ba665SWarner Losh   UINT16  Flags;
4850d1ba665SWarner Losh   UINT32  AcpiProcessorUid;
4860d1ba665SWarner Losh   UINT8   LocalX2ApicLint;
4870d1ba665SWarner Losh   UINT8   Reserved[3];
4880d1ba665SWarner Losh } EFI_ACPI_5_1_LOCAL_X2APIC_NMI_STRUCTURE;
4890d1ba665SWarner Losh 
4900d1ba665SWarner Losh ///
4910d1ba665SWarner Losh /// GIC Structure
4920d1ba665SWarner Losh ///
4930d1ba665SWarner Losh typedef struct {
4940d1ba665SWarner Losh   UINT8   Type;
4950d1ba665SWarner Losh   UINT8   Length;
4960d1ba665SWarner Losh   UINT16  Reserved;
4970d1ba665SWarner Losh   UINT32  CPUInterfaceNumber;
4980d1ba665SWarner Losh   UINT32  AcpiProcessorUid;
4990d1ba665SWarner Losh   UINT32  Flags;
5000d1ba665SWarner Losh   UINT32  ParkingProtocolVersion;
5010d1ba665SWarner Losh   UINT32  PerformanceInterruptGsiv;
5020d1ba665SWarner Losh   UINT64  ParkedAddress;
5030d1ba665SWarner Losh   UINT64  PhysicalBaseAddress;
5040d1ba665SWarner Losh   UINT64  GICV;
5050d1ba665SWarner Losh   UINT64  GICH;
5060d1ba665SWarner Losh   UINT32  VGICMaintenanceInterrupt;
5070d1ba665SWarner Losh   UINT64  GICRBaseAddress;
5080d1ba665SWarner Losh   UINT64  MPIDR;
5090d1ba665SWarner Losh } EFI_ACPI_5_1_GIC_STRUCTURE;
5100d1ba665SWarner Losh 
5110d1ba665SWarner Losh ///
5120d1ba665SWarner Losh /// GIC Flags.  All other bits are reserved and must be 0.
5130d1ba665SWarner Losh ///
5140d1ba665SWarner Losh #define EFI_ACPI_5_1_GIC_ENABLED                              BIT0
5150d1ba665SWarner Losh #define EFI_ACPI_5_1_PERFORMANCE_INTERRUPT_MODEL              BIT1
5160d1ba665SWarner Losh #define EFI_ACPI_5_1_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS    BIT2
5170d1ba665SWarner Losh 
5180d1ba665SWarner Losh ///
5190d1ba665SWarner Losh /// GIC Distributor Structure
5200d1ba665SWarner Losh ///
5210d1ba665SWarner Losh typedef struct {
5220d1ba665SWarner Losh   UINT8   Type;
5230d1ba665SWarner Losh   UINT8   Length;
5240d1ba665SWarner Losh   UINT16  Reserved1;
5250d1ba665SWarner Losh   UINT32  GicId;
5260d1ba665SWarner Losh   UINT64  PhysicalBaseAddress;
5270d1ba665SWarner Losh   UINT32  SystemVectorBase;
5280d1ba665SWarner Losh   UINT8   GicVersion;
5290d1ba665SWarner Losh   UINT8   Reserved2[3];
5300d1ba665SWarner Losh } EFI_ACPI_5_1_GIC_DISTRIBUTOR_STRUCTURE;
5310d1ba665SWarner Losh 
5320d1ba665SWarner Losh ///
5330d1ba665SWarner Losh /// GIC Version
5340d1ba665SWarner Losh ///
5350d1ba665SWarner Losh #define EFI_ACPI_5_1_GIC_V1                                   0x01
5360d1ba665SWarner Losh #define EFI_ACPI_5_1_GIC_V2                                   0x02
5370d1ba665SWarner Losh #define EFI_ACPI_5_1_GIC_V3                                   0x03
5380d1ba665SWarner Losh #define EFI_ACPI_5_1_GIC_V4                                   0x04
5390d1ba665SWarner Losh 
5400d1ba665SWarner Losh ///
5410d1ba665SWarner Losh /// GIC MSI Frame Structure
5420d1ba665SWarner Losh ///
5430d1ba665SWarner Losh typedef struct {
5440d1ba665SWarner Losh   UINT8   Type;
5450d1ba665SWarner Losh   UINT8   Length;
5460d1ba665SWarner Losh   UINT16  Reserved1;
5470d1ba665SWarner Losh   UINT32  GicMsiFrameId;
5480d1ba665SWarner Losh   UINT64  PhysicalBaseAddress;
5490d1ba665SWarner Losh   UINT32  Flags;
5500d1ba665SWarner Losh   UINT16  SPICount;
5510d1ba665SWarner Losh   UINT16  SPIBase;
5520d1ba665SWarner Losh } EFI_ACPI_5_1_GIC_MSI_FRAME_STRUCTURE;
5530d1ba665SWarner Losh 
5540d1ba665SWarner Losh ///
5550d1ba665SWarner Losh /// GIC MSI Frame Flags.  All other bits are reserved and must be 0.
5560d1ba665SWarner Losh ///
5570d1ba665SWarner Losh #define EFI_ACPI_5_1_SPI_COUNT_BASE_SELECT                    BIT0
5580d1ba665SWarner Losh 
5590d1ba665SWarner Losh ///
5600d1ba665SWarner Losh /// GICR Structure
5610d1ba665SWarner Losh ///
5620d1ba665SWarner Losh typedef struct {
5630d1ba665SWarner Losh   UINT8   Type;
5640d1ba665SWarner Losh   UINT8   Length;
5650d1ba665SWarner Losh   UINT16  Reserved;
5660d1ba665SWarner Losh   UINT64  DiscoveryRangeBaseAddress;
5670d1ba665SWarner Losh   UINT32  DiscoveryRangeLength;
5680d1ba665SWarner Losh } EFI_ACPI_5_1_GICR_STRUCTURE;
5690d1ba665SWarner Losh 
5700d1ba665SWarner Losh ///
5710d1ba665SWarner Losh /// Smart Battery Description Table (SBST)
5720d1ba665SWarner Losh ///
5730d1ba665SWarner Losh typedef struct {
5740d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
5750d1ba665SWarner Losh   UINT32                      WarningEnergyLevel;
5760d1ba665SWarner Losh   UINT32                      LowEnergyLevel;
5770d1ba665SWarner Losh   UINT32                      CriticalEnergyLevel;
5780d1ba665SWarner Losh } EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE;
5790d1ba665SWarner Losh 
5800d1ba665SWarner Losh ///
5810d1ba665SWarner Losh /// SBST Version (as defined in ACPI 5.1 spec.)
5820d1ba665SWarner Losh ///
5830d1ba665SWarner Losh #define EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01
5840d1ba665SWarner Losh 
5850d1ba665SWarner Losh ///
5860d1ba665SWarner Losh /// Embedded Controller Boot Resources Table (ECDT)
5870d1ba665SWarner Losh /// The table is followed by a null terminated ASCII string that contains
5880d1ba665SWarner Losh /// a fully qualified reference to the name space object.
5890d1ba665SWarner Losh ///
5900d1ba665SWarner Losh typedef struct {
5910d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER             Header;
5920d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  EcControl;
5930d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE  EcData;
5940d1ba665SWarner Losh   UINT32                                  Uid;
5950d1ba665SWarner Losh   UINT8                                   GpeBit;
5960d1ba665SWarner Losh } EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE;
5970d1ba665SWarner Losh 
5980d1ba665SWarner Losh ///
5990d1ba665SWarner Losh /// ECDT Version (as defined in ACPI 5.1 spec.)
6000d1ba665SWarner Losh ///
6010d1ba665SWarner Losh #define EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION  0x01
6020d1ba665SWarner Losh 
6030d1ba665SWarner Losh ///
6040d1ba665SWarner Losh /// System Resource Affinity Table (SRAT).  The rest of the table
6050d1ba665SWarner Losh /// must be defined in a platform specific manner.
6060d1ba665SWarner Losh ///
6070d1ba665SWarner Losh typedef struct {
6080d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
6090d1ba665SWarner Losh   UINT32                      Reserved1;  ///< Must be set to 1
6100d1ba665SWarner Losh   UINT64                      Reserved2;
6110d1ba665SWarner Losh } EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER;
6120d1ba665SWarner Losh 
6130d1ba665SWarner Losh ///
6140d1ba665SWarner Losh /// SRAT Version (as defined in ACPI 5.1 spec.)
6150d1ba665SWarner Losh ///
6160d1ba665SWarner Losh #define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION  0x03
6170d1ba665SWarner Losh 
6180d1ba665SWarner Losh //
6190d1ba665SWarner Losh // SRAT structure types.
6200d1ba665SWarner Losh // All other values between 0x04 an 0xFF are reserved and
6210d1ba665SWarner Losh // will be ignored by OSPM.
6220d1ba665SWarner Losh //
6230d1ba665SWarner Losh #define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY  0x00
6240d1ba665SWarner Losh #define EFI_ACPI_5_1_MEMORY_AFFINITY                      0x01
6250d1ba665SWarner Losh #define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY      0x02
6260d1ba665SWarner Losh #define EFI_ACPI_5_1_GICC_AFFINITY                        0x03
6270d1ba665SWarner Losh 
6280d1ba665SWarner Losh ///
6290d1ba665SWarner Losh /// Processor Local APIC/SAPIC Affinity Structure Definition
6300d1ba665SWarner Losh ///
6310d1ba665SWarner Losh typedef struct {
6320d1ba665SWarner Losh   UINT8   Type;
6330d1ba665SWarner Losh   UINT8   Length;
6340d1ba665SWarner Losh   UINT8   ProximityDomain7To0;
6350d1ba665SWarner Losh   UINT8   ApicId;
6360d1ba665SWarner Losh   UINT32  Flags;
6370d1ba665SWarner Losh   UINT8   LocalSapicEid;
6380d1ba665SWarner Losh   UINT8   ProximityDomain31To8[3];
6390d1ba665SWarner Losh   UINT32  ClockDomain;
6400d1ba665SWarner Losh } EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE;
6410d1ba665SWarner Losh 
6420d1ba665SWarner Losh ///
6430d1ba665SWarner Losh /// Local APIC/SAPIC Flags.  All other bits are reserved and must be 0.
6440d1ba665SWarner Losh ///
6450d1ba665SWarner Losh #define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0)
6460d1ba665SWarner Losh 
6470d1ba665SWarner Losh ///
6480d1ba665SWarner Losh /// Memory Affinity Structure Definition
6490d1ba665SWarner Losh ///
6500d1ba665SWarner Losh typedef struct {
6510d1ba665SWarner Losh   UINT8   Type;
6520d1ba665SWarner Losh   UINT8   Length;
6530d1ba665SWarner Losh   UINT32  ProximityDomain;
6540d1ba665SWarner Losh   UINT16  Reserved1;
6550d1ba665SWarner Losh   UINT32  AddressBaseLow;
6560d1ba665SWarner Losh   UINT32  AddressBaseHigh;
6570d1ba665SWarner Losh   UINT32  LengthLow;
6580d1ba665SWarner Losh   UINT32  LengthHigh;
6590d1ba665SWarner Losh   UINT32  Reserved2;
6600d1ba665SWarner Losh   UINT32  Flags;
6610d1ba665SWarner Losh   UINT64  Reserved3;
6620d1ba665SWarner Losh } EFI_ACPI_5_1_MEMORY_AFFINITY_STRUCTURE;
6630d1ba665SWarner Losh 
6640d1ba665SWarner Losh //
6650d1ba665SWarner Losh // Memory Flags.  All other bits are reserved and must be 0.
6660d1ba665SWarner Losh //
6670d1ba665SWarner Losh #define EFI_ACPI_5_1_MEMORY_ENABLED       (1 << 0)
6680d1ba665SWarner Losh #define EFI_ACPI_5_1_MEMORY_HOT_PLUGGABLE (1 << 1)
6690d1ba665SWarner Losh #define EFI_ACPI_5_1_MEMORY_NONVOLATILE   (1 << 2)
6700d1ba665SWarner Losh 
6710d1ba665SWarner Losh ///
6720d1ba665SWarner Losh /// Processor Local x2APIC Affinity Structure Definition
6730d1ba665SWarner Losh ///
6740d1ba665SWarner Losh typedef struct {
6750d1ba665SWarner Losh   UINT8   Type;
6760d1ba665SWarner Losh   UINT8   Length;
6770d1ba665SWarner Losh   UINT8   Reserved1[2];
6780d1ba665SWarner Losh   UINT32  ProximityDomain;
6790d1ba665SWarner Losh   UINT32  X2ApicId;
6800d1ba665SWarner Losh   UINT32  Flags;
6810d1ba665SWarner Losh   UINT32  ClockDomain;
6820d1ba665SWarner Losh   UINT8   Reserved2[4];
6830d1ba665SWarner Losh } EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE;
6840d1ba665SWarner Losh 
6850d1ba665SWarner Losh ///
6860d1ba665SWarner Losh /// GICC Affinity Structure Definition
6870d1ba665SWarner Losh ///
6880d1ba665SWarner Losh typedef struct {
6890d1ba665SWarner Losh   UINT8   Type;
6900d1ba665SWarner Losh   UINT8   Length;
6910d1ba665SWarner Losh   UINT32  ProximityDomain;
6920d1ba665SWarner Losh   UINT32  AcpiProcessorUid;
6930d1ba665SWarner Losh   UINT32  Flags;
6940d1ba665SWarner Losh   UINT32  ClockDomain;
6950d1ba665SWarner Losh } EFI_ACPI_5_1_GICC_AFFINITY_STRUCTURE;
6960d1ba665SWarner Losh 
6970d1ba665SWarner Losh ///
6980d1ba665SWarner Losh /// GICC Flags.  All other bits are reserved and must be 0.
6990d1ba665SWarner Losh ///
7000d1ba665SWarner Losh #define EFI_ACPI_5_1_GICC_ENABLED (1 << 0)
7010d1ba665SWarner Losh 
7020d1ba665SWarner Losh ///
7030d1ba665SWarner Losh /// System Locality Distance Information Table (SLIT).
7040d1ba665SWarner Losh /// The rest of the table is a matrix.
7050d1ba665SWarner Losh ///
7060d1ba665SWarner Losh typedef struct {
7070d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
7080d1ba665SWarner Losh   UINT64                      NumberOfSystemLocalities;
7090d1ba665SWarner Losh } EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER;
7100d1ba665SWarner Losh 
7110d1ba665SWarner Losh ///
7120d1ba665SWarner Losh /// SLIT Version (as defined in ACPI 5.1 spec.)
7130d1ba665SWarner Losh ///
7140d1ba665SWarner Losh #define EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION  0x01
7150d1ba665SWarner Losh 
7160d1ba665SWarner Losh ///
7170d1ba665SWarner Losh /// Corrected Platform Error Polling Table (CPEP)
7180d1ba665SWarner Losh ///
7190d1ba665SWarner Losh typedef struct {
7200d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
7210d1ba665SWarner Losh   UINT8                       Reserved[8];
7220d1ba665SWarner Losh } EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER;
7230d1ba665SWarner Losh 
7240d1ba665SWarner Losh ///
7250d1ba665SWarner Losh /// CPEP Version (as defined in ACPI 5.1 spec.)
7260d1ba665SWarner Losh ///
7270d1ba665SWarner Losh #define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01
7280d1ba665SWarner Losh 
7290d1ba665SWarner Losh //
7300d1ba665SWarner Losh // CPEP processor structure types.
7310d1ba665SWarner Losh //
7320d1ba665SWarner Losh #define EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC  0x00
7330d1ba665SWarner Losh 
7340d1ba665SWarner Losh ///
7350d1ba665SWarner Losh /// Corrected Platform Error Polling Processor Structure Definition
7360d1ba665SWarner Losh ///
7370d1ba665SWarner Losh typedef struct {
7380d1ba665SWarner Losh   UINT8   Type;
7390d1ba665SWarner Losh   UINT8   Length;
7400d1ba665SWarner Losh   UINT8   ProcessorId;
7410d1ba665SWarner Losh   UINT8   ProcessorEid;
7420d1ba665SWarner Losh   UINT32  PollingInterval;
7430d1ba665SWarner Losh } EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE;
7440d1ba665SWarner Losh 
7450d1ba665SWarner Losh ///
7460d1ba665SWarner Losh /// Maximum System Characteristics Table (MSCT)
7470d1ba665SWarner Losh ///
7480d1ba665SWarner Losh typedef struct {
7490d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
7500d1ba665SWarner Losh   UINT32                      OffsetProxDomInfo;
7510d1ba665SWarner Losh   UINT32                      MaximumNumberOfProximityDomains;
7520d1ba665SWarner Losh   UINT32                      MaximumNumberOfClockDomains;
7530d1ba665SWarner Losh   UINT64                      MaximumPhysicalAddress;
7540d1ba665SWarner Losh } EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER;
7550d1ba665SWarner Losh 
7560d1ba665SWarner Losh ///
7570d1ba665SWarner Losh /// MSCT Version (as defined in ACPI 5.1 spec.)
7580d1ba665SWarner Losh ///
7590d1ba665SWarner Losh #define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01
7600d1ba665SWarner Losh 
7610d1ba665SWarner Losh ///
7620d1ba665SWarner Losh /// Maximum Proximity Domain Information Structure Definition
7630d1ba665SWarner Losh ///
7640d1ba665SWarner Losh typedef struct {
7650d1ba665SWarner Losh   UINT8   Revision;
7660d1ba665SWarner Losh   UINT8   Length;
7670d1ba665SWarner Losh   UINT32  ProximityDomainRangeLow;
7680d1ba665SWarner Losh   UINT32  ProximityDomainRangeHigh;
7690d1ba665SWarner Losh   UINT32  MaximumProcessorCapacity;
7700d1ba665SWarner Losh   UINT64  MaximumMemoryCapacity;
7710d1ba665SWarner Losh } EFI_ACPI_5_1_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE;
7720d1ba665SWarner Losh 
7730d1ba665SWarner Losh ///
7740d1ba665SWarner Losh /// ACPI RAS Feature Table definition.
7750d1ba665SWarner Losh ///
7760d1ba665SWarner Losh typedef struct {
7770d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
7780d1ba665SWarner Losh   UINT8                       PlatformCommunicationChannelIdentifier[12];
7790d1ba665SWarner Losh } EFI_ACPI_5_1_RAS_FEATURE_TABLE;
7800d1ba665SWarner Losh 
7810d1ba665SWarner Losh ///
7820d1ba665SWarner Losh /// RASF Version (as defined in ACPI 5.1 spec.)
7830d1ba665SWarner Losh ///
7840d1ba665SWarner Losh #define EFI_ACPI_5_1_RAS_FEATURE_TABLE_REVISION 0x01
7850d1ba665SWarner Losh 
7860d1ba665SWarner Losh ///
7870d1ba665SWarner Losh /// ACPI RASF Platform Communication Channel Shared Memory Region definition.
7880d1ba665SWarner Losh ///
7890d1ba665SWarner Losh typedef struct {
7900d1ba665SWarner Losh   UINT32                      Signature;
7910d1ba665SWarner Losh   UINT16                      Command;
7920d1ba665SWarner Losh   UINT16                      Status;
7930d1ba665SWarner Losh   UINT16                      Version;
7940d1ba665SWarner Losh   UINT8                       RASCapabilities[16];
7950d1ba665SWarner Losh   UINT8                       SetRASCapabilities[16];
7960d1ba665SWarner Losh   UINT16                      NumberOfRASFParameterBlocks;
7970d1ba665SWarner Losh   UINT32                      SetRASCapabilitiesStatus;
7980d1ba665SWarner Losh } EFI_ACPI_5_1_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
7990d1ba665SWarner Losh 
8000d1ba665SWarner Losh ///
8010d1ba665SWarner Losh /// ACPI RASF PCC command code
8020d1ba665SWarner Losh ///
8030d1ba665SWarner Losh #define EFI_ACPI_5_1_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND  0x01
8040d1ba665SWarner Losh 
8050d1ba665SWarner Losh ///
8060d1ba665SWarner Losh /// ACPI RASF Platform RAS Capabilities
8070d1ba665SWarner Losh ///
8080d1ba665SWarner Losh #define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED                          0x01
8090d1ba665SWarner Losh #define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE  0x02
8100d1ba665SWarner Losh 
8110d1ba665SWarner Losh ///
8120d1ba665SWarner Losh /// ACPI RASF Parameter Block structure for PATROL_SCRUB
8130d1ba665SWarner Losh ///
8140d1ba665SWarner Losh typedef struct {
8150d1ba665SWarner Losh   UINT16                      Type;
8160d1ba665SWarner Losh   UINT16                      Version;
8170d1ba665SWarner Losh   UINT16                      Length;
8180d1ba665SWarner Losh   UINT16                      PatrolScrubCommand;
8190d1ba665SWarner Losh   UINT64                      RequestedAddressRange[2];
8200d1ba665SWarner Losh   UINT64                      ActualAddressRange[2];
8210d1ba665SWarner Losh   UINT16                      Flags;
8220d1ba665SWarner Losh   UINT8                       RequestedSpeed;
8230d1ba665SWarner Losh } EFI_ACPI_5_1_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE;
8240d1ba665SWarner Losh 
8250d1ba665SWarner Losh ///
8260d1ba665SWarner Losh /// ACPI RASF Patrol Scrub command
8270d1ba665SWarner Losh ///
8280d1ba665SWarner Losh #define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS   0x01
8290d1ba665SWarner Losh #define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER   0x02
8300d1ba665SWarner Losh #define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER    0x03
8310d1ba665SWarner Losh 
8320d1ba665SWarner Losh ///
8330d1ba665SWarner Losh /// Memory Power State Table definition.
8340d1ba665SWarner Losh ///
8350d1ba665SWarner Losh typedef struct {
8360d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
8370d1ba665SWarner Losh   UINT8                       PlatformCommunicationChannelIdentifier;
8380d1ba665SWarner Losh   UINT8                       Reserved[3];
8390d1ba665SWarner Losh // Memory Power Node Structure
8400d1ba665SWarner Losh // Memory Power State Characteristics
8410d1ba665SWarner Losh } EFI_ACPI_5_1_MEMORY_POWER_STATUS_TABLE;
8420d1ba665SWarner Losh 
8430d1ba665SWarner Losh ///
8440d1ba665SWarner Losh /// MPST Version (as defined in ACPI 5.1 spec.)
8450d1ba665SWarner Losh ///
8460d1ba665SWarner Losh #define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_REVISION 0x01
8470d1ba665SWarner Losh 
8480d1ba665SWarner Losh ///
8490d1ba665SWarner Losh /// MPST Platform Communication Channel Shared Memory Region definition.
8500d1ba665SWarner Losh ///
8510d1ba665SWarner Losh typedef struct {
8520d1ba665SWarner Losh   UINT32                      Signature;
8530d1ba665SWarner Losh   UINT16                      Command;
8540d1ba665SWarner Losh   UINT16                      Status;
8550d1ba665SWarner Losh   UINT32                      MemoryPowerCommandRegister;
8560d1ba665SWarner Losh   UINT32                      MemoryPowerStatusRegister;
8570d1ba665SWarner Losh   UINT32                      PowerStateId;
8580d1ba665SWarner Losh   UINT32                      MemoryPowerNodeId;
8590d1ba665SWarner Losh   UINT64                      MemoryEnergyConsumed;
8600d1ba665SWarner Losh   UINT64                      ExpectedAveragePowerComsuned;
8610d1ba665SWarner Losh } EFI_ACPI_5_1_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION;
8620d1ba665SWarner Losh 
8630d1ba665SWarner Losh ///
8640d1ba665SWarner Losh /// ACPI MPST PCC command code
8650d1ba665SWarner Losh ///
8660d1ba665SWarner Losh #define EFI_ACPI_5_1_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND  0x03
8670d1ba665SWarner Losh 
8680d1ba665SWarner Losh ///
8690d1ba665SWarner Losh /// ACPI MPST Memory Power command
8700d1ba665SWarner Losh ///
8710d1ba665SWarner Losh #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE       0x01
8720d1ba665SWarner Losh #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE       0x02
8730d1ba665SWarner Losh #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED   0x03
8740d1ba665SWarner Losh #define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED   0x04
8750d1ba665SWarner Losh 
8760d1ba665SWarner Losh ///
8770d1ba665SWarner Losh /// MPST Memory Power Node Table
8780d1ba665SWarner Losh ///
8790d1ba665SWarner Losh typedef struct {
8800d1ba665SWarner Losh   UINT8                                             PowerStateValue;
8810d1ba665SWarner Losh   UINT8                                             PowerStateInformationIndex;
8820d1ba665SWarner Losh } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE;
8830d1ba665SWarner Losh 
8840d1ba665SWarner Losh typedef struct {
8850d1ba665SWarner Losh   UINT8                                             Flag;
8860d1ba665SWarner Losh   UINT8                                             Reserved;
8870d1ba665SWarner Losh   UINT16                                            MemoryPowerNodeId;
8880d1ba665SWarner Losh   UINT32                                            Length;
8890d1ba665SWarner Losh   UINT64                                            AddressBase;
8900d1ba665SWarner Losh   UINT64                                            AddressLength;
8910d1ba665SWarner Losh   UINT32                                            NumberOfPowerStates;
8920d1ba665SWarner Losh   UINT32                                            NumberOfPhysicalComponents;
8930d1ba665SWarner Losh //EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE              MemoryPowerState[NumberOfPowerStates];
8940d1ba665SWarner Losh //UINT16                                            PhysicalComponentIdentifier[NumberOfPhysicalComponents];
8950d1ba665SWarner Losh } EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE;
8960d1ba665SWarner Losh 
8970d1ba665SWarner Losh #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE          0x01
8980d1ba665SWarner Losh #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED   0x02
8990d1ba665SWarner Losh #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE   0x04
9000d1ba665SWarner Losh 
9010d1ba665SWarner Losh typedef struct {
9020d1ba665SWarner Losh   UINT16                      MemoryPowerNodeCount;
9030d1ba665SWarner Losh   UINT8                       Reserved[2];
9040d1ba665SWarner Losh } EFI_ACPI_5_1_MPST_MEMORY_POWER_NODE_TABLE;
9050d1ba665SWarner Losh 
9060d1ba665SWarner Losh ///
9070d1ba665SWarner Losh /// MPST Memory Power State Characteristics Table
9080d1ba665SWarner Losh ///
9090d1ba665SWarner Losh typedef struct {
9100d1ba665SWarner Losh   UINT8                                             PowerStateStructureID;
9110d1ba665SWarner Losh   UINT8                                             Flag;
9120d1ba665SWarner Losh   UINT16                                            Reserved;
9130d1ba665SWarner Losh   UINT32                                            AveragePowerConsumedInMPS0;
9140d1ba665SWarner Losh   UINT32                                            RelativePowerSavingToMPS0;
9150d1ba665SWarner Losh   UINT64                                            ExitLatencyToMPS0;
9160d1ba665SWarner Losh } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE;
9170d1ba665SWarner Losh 
9180d1ba665SWarner Losh #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED              0x01
9190d1ba665SWarner Losh #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY   0x02
9200d1ba665SWarner Losh #define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT    0x04
9210d1ba665SWarner Losh 
9220d1ba665SWarner Losh typedef struct {
9230d1ba665SWarner Losh   UINT16                      MemoryPowerStateCharacteristicsCount;
9240d1ba665SWarner Losh   UINT8                       Reserved[2];
9250d1ba665SWarner Losh } EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE;
9260d1ba665SWarner Losh 
9270d1ba665SWarner Losh ///
9280d1ba665SWarner Losh /// Memory Topology Table definition.
9290d1ba665SWarner Losh ///
9300d1ba665SWarner Losh typedef struct {
9310d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
9320d1ba665SWarner Losh   UINT32                      Reserved;
9330d1ba665SWarner Losh } EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE;
9340d1ba665SWarner Losh 
9350d1ba665SWarner Losh ///
9360d1ba665SWarner Losh /// PMTT Version (as defined in ACPI 5.1 spec.)
9370d1ba665SWarner Losh ///
9380d1ba665SWarner Losh #define EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE_REVISION 0x01
9390d1ba665SWarner Losh 
9400d1ba665SWarner Losh ///
9410d1ba665SWarner Losh /// Common Memory Aggregator Device Structure.
9420d1ba665SWarner Losh ///
9430d1ba665SWarner Losh typedef struct {
9440d1ba665SWarner Losh   UINT8                       Type;
9450d1ba665SWarner Losh   UINT8                       Reserved;
9460d1ba665SWarner Losh   UINT16                      Length;
9470d1ba665SWarner Losh   UINT16                      Flags;
9480d1ba665SWarner Losh   UINT16                      Reserved1;
9490d1ba665SWarner Losh } EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
9500d1ba665SWarner Losh 
9510d1ba665SWarner Losh ///
9520d1ba665SWarner Losh /// Memory Aggregator Device Type
9530d1ba665SWarner Losh ///
9540d1ba665SWarner Losh #define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET            0x1
9550d1ba665SWarner Losh #define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2
9560d1ba665SWarner Losh #define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM              0x3
9570d1ba665SWarner Losh 
9580d1ba665SWarner Losh ///
9590d1ba665SWarner Losh /// Socket Memory Aggregator Device Structure.
9600d1ba665SWarner Losh ///
9610d1ba665SWarner Losh typedef struct {
9620d1ba665SWarner Losh   EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
9630d1ba665SWarner Losh   UINT16                                                       SocketIdentifier;
9640d1ba665SWarner Losh   UINT16                                                       Reserved;
9650d1ba665SWarner Losh //EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  MemoryController[];
9660d1ba665SWarner Losh } EFI_ACPI_5_1_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
9670d1ba665SWarner Losh 
9680d1ba665SWarner Losh ///
9690d1ba665SWarner Losh /// MemoryController Memory Aggregator Device Structure.
9700d1ba665SWarner Losh ///
9710d1ba665SWarner Losh typedef struct {
9720d1ba665SWarner Losh   EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
9730d1ba665SWarner Losh   UINT32                                                       ReadLatency;
9740d1ba665SWarner Losh   UINT32                                                       WriteLatency;
9750d1ba665SWarner Losh   UINT32                                                       ReadBandwidth;
9760d1ba665SWarner Losh   UINT32                                                       WriteBandwidth;
9770d1ba665SWarner Losh   UINT16                                                       OptimalAccessUnit;
9780d1ba665SWarner Losh   UINT16                                                       OptimalAccessAlignment;
9790d1ba665SWarner Losh   UINT16                                                       Reserved;
9800d1ba665SWarner Losh   UINT16                                                       NumberOfProximityDomains;
9810d1ba665SWarner Losh //UINT32                                                       ProximityDomain[NumberOfProximityDomains];
9820d1ba665SWarner Losh //EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE    PhysicalComponent[];
9830d1ba665SWarner Losh } EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
9840d1ba665SWarner Losh 
9850d1ba665SWarner Losh ///
9860d1ba665SWarner Losh /// DIMM Memory Aggregator Device Structure.
9870d1ba665SWarner Losh ///
9880d1ba665SWarner Losh typedef struct {
9890d1ba665SWarner Losh   EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE  Header;
9900d1ba665SWarner Losh   UINT16                                                       PhysicalComponentIdentifier;
9910d1ba665SWarner Losh   UINT16                                                       Reserved;
9920d1ba665SWarner Losh   UINT32                                                       SizeOfDimm;
9930d1ba665SWarner Losh   UINT32                                                       SmbiosHandle;
9940d1ba665SWarner Losh } EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE;
9950d1ba665SWarner Losh 
9960d1ba665SWarner Losh ///
9970d1ba665SWarner Losh /// Boot Graphics Resource Table definition.
9980d1ba665SWarner Losh ///
9990d1ba665SWarner Losh typedef struct {
10000d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
10010d1ba665SWarner Losh   ///
10020d1ba665SWarner Losh   /// 2-bytes (16 bit) version ID. This value must be 1.
10030d1ba665SWarner Losh   ///
10040d1ba665SWarner Losh   UINT16                      Version;
10050d1ba665SWarner Losh   ///
10060d1ba665SWarner Losh   /// 1-byte status field indicating current status about the table.
10070d1ba665SWarner Losh   ///     Bits[7:1] = Reserved (must be zero)
10080d1ba665SWarner Losh   ///     Bit [0] = Valid. A one indicates the boot image graphic is valid.
10090d1ba665SWarner Losh   ///
10100d1ba665SWarner Losh   UINT8                       Status;
10110d1ba665SWarner Losh   ///
10120d1ba665SWarner Losh   /// 1-byte enumerated type field indicating format of the image.
10130d1ba665SWarner Losh   ///     0 = Bitmap
10140d1ba665SWarner Losh   ///     1 - 255  Reserved (for future use)
10150d1ba665SWarner Losh   ///
10160d1ba665SWarner Losh   UINT8                       ImageType;
10170d1ba665SWarner Losh   ///
10180d1ba665SWarner Losh   /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy
10190d1ba665SWarner Losh   /// of the image bitmap.
10200d1ba665SWarner Losh   ///
10210d1ba665SWarner Losh   UINT64                      ImageAddress;
10220d1ba665SWarner Losh   ///
10230d1ba665SWarner Losh   /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image.
10240d1ba665SWarner Losh   /// (X, Y) display offset of the top left corner of the boot image.
10250d1ba665SWarner Losh   /// The top left corner of the display is at offset (0, 0).
10260d1ba665SWarner Losh   ///
10270d1ba665SWarner Losh   UINT32                      ImageOffsetX;
10280d1ba665SWarner Losh   ///
10290d1ba665SWarner Losh   /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image.
10300d1ba665SWarner Losh   /// (X, Y) display offset of the top left corner of the boot image.
10310d1ba665SWarner Losh   /// The top left corner of the display is at offset (0, 0).
10320d1ba665SWarner Losh   ///
10330d1ba665SWarner Losh   UINT32                      ImageOffsetY;
10340d1ba665SWarner Losh } EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE;
10350d1ba665SWarner Losh 
10360d1ba665SWarner Losh ///
10370d1ba665SWarner Losh /// BGRT Revision
10380d1ba665SWarner Losh ///
10390d1ba665SWarner Losh #define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1
10400d1ba665SWarner Losh 
10410d1ba665SWarner Losh ///
10420d1ba665SWarner Losh /// BGRT Version
10430d1ba665SWarner Losh ///
10440d1ba665SWarner Losh #define EFI_ACPI_5_1_BGRT_VERSION         0x01
10450d1ba665SWarner Losh 
10460d1ba665SWarner Losh ///
10470d1ba665SWarner Losh /// BGRT Status
10480d1ba665SWarner Losh ///
10490d1ba665SWarner Losh #define EFI_ACPI_5_1_BGRT_STATUS_NOT_DISPLAYED 0x00
10500d1ba665SWarner Losh #define EFI_ACPI_5_1_BGRT_STATUS_DISPLAYED     0x01
10510d1ba665SWarner Losh 
10520d1ba665SWarner Losh ///
10530d1ba665SWarner Losh /// BGRT Image Type
10540d1ba665SWarner Losh ///
10550d1ba665SWarner Losh #define EFI_ACPI_5_1_BGRT_IMAGE_TYPE_BMP  0x00
10560d1ba665SWarner Losh 
10570d1ba665SWarner Losh ///
10580d1ba665SWarner Losh /// FPDT Version (as defined in ACPI 5.1 spec.)
10590d1ba665SWarner Losh ///
10600d1ba665SWarner Losh #define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01
10610d1ba665SWarner Losh 
10620d1ba665SWarner Losh ///
10630d1ba665SWarner Losh /// FPDT Performance Record Types
10640d1ba665SWarner Losh ///
10650d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER      0x0000
10660d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER     0x0001
10670d1ba665SWarner Losh 
10680d1ba665SWarner Losh ///
10690d1ba665SWarner Losh /// FPDT Performance Record Revision
10700d1ba665SWarner Losh ///
10710d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER  0x01
10720d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01
10730d1ba665SWarner Losh 
10740d1ba665SWarner Losh ///
10750d1ba665SWarner Losh /// FPDT Runtime Performance Record Types
10760d1ba665SWarner Losh ///
10770d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME                0x0000
10780d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND               0x0001
10790d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT      0x0002
10800d1ba665SWarner Losh 
10810d1ba665SWarner Losh ///
10820d1ba665SWarner Losh /// FPDT Runtime Performance Record Revision
10830d1ba665SWarner Losh ///
10840d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME            0x01
10850d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND           0x01
10860d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT  0x02
10870d1ba665SWarner Losh 
10880d1ba665SWarner Losh ///
10890d1ba665SWarner Losh /// FPDT Performance Record header
10900d1ba665SWarner Losh ///
10910d1ba665SWarner Losh typedef struct {
10920d1ba665SWarner Losh   UINT16           Type;
10930d1ba665SWarner Losh   UINT8            Length;
10940d1ba665SWarner Losh   UINT8            Revision;
10950d1ba665SWarner Losh } EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER;
10960d1ba665SWarner Losh 
10970d1ba665SWarner Losh ///
10980d1ba665SWarner Losh /// FPDT Performance Table header
10990d1ba665SWarner Losh ///
11000d1ba665SWarner Losh typedef struct {
11010d1ba665SWarner Losh   UINT32  Signature;
11020d1ba665SWarner Losh   UINT32  Length;
11030d1ba665SWarner Losh } EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER;
11040d1ba665SWarner Losh 
11050d1ba665SWarner Losh ///
11060d1ba665SWarner Losh /// FPDT Firmware Basic Boot Performance Pointer Record Structure
11070d1ba665SWarner Losh ///
11080d1ba665SWarner Losh typedef struct {
11090d1ba665SWarner Losh   EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
11100d1ba665SWarner Losh   UINT32                                          Reserved;
11110d1ba665SWarner Losh   ///
11120d1ba665SWarner Losh   /// 64-bit processor-relative physical address of the Basic Boot Performance Table.
11130d1ba665SWarner Losh   ///
11140d1ba665SWarner Losh   UINT64                                          BootPerformanceTablePointer;
11150d1ba665SWarner Losh } EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD;
11160d1ba665SWarner Losh 
11170d1ba665SWarner Losh ///
11180d1ba665SWarner Losh /// FPDT S3 Performance Table Pointer Record Structure
11190d1ba665SWarner Losh ///
11200d1ba665SWarner Losh typedef struct {
11210d1ba665SWarner Losh   EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
11220d1ba665SWarner Losh   UINT32                                          Reserved;
11230d1ba665SWarner Losh   ///
11240d1ba665SWarner Losh   /// 64-bit processor-relative physical address of the S3 Performance Table.
11250d1ba665SWarner Losh   ///
11260d1ba665SWarner Losh   UINT64                                          S3PerformanceTablePointer;
11270d1ba665SWarner Losh } EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD;
11280d1ba665SWarner Losh 
11290d1ba665SWarner Losh ///
11300d1ba665SWarner Losh /// FPDT Firmware Basic Boot Performance Record Structure
11310d1ba665SWarner Losh ///
11320d1ba665SWarner Losh typedef struct {
11330d1ba665SWarner Losh   EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
11340d1ba665SWarner Losh   UINT32                                          Reserved;
11350d1ba665SWarner Losh   ///
11360d1ba665SWarner Losh   /// Timer value logged at the beginning of firmware image execution.
11370d1ba665SWarner Losh   /// This may not always be zero or near zero.
11380d1ba665SWarner Losh   ///
11390d1ba665SWarner Losh   UINT64                                          ResetEnd;
11400d1ba665SWarner Losh   ///
11410d1ba665SWarner Losh   /// Timer value logged just prior to loading the OS boot loader into memory.
11420d1ba665SWarner Losh   /// For non-UEFI compatible boots, this field must be zero.
11430d1ba665SWarner Losh   ///
11440d1ba665SWarner Losh   UINT64                                          OsLoaderLoadImageStart;
11450d1ba665SWarner Losh   ///
11460d1ba665SWarner Losh   /// Timer value logged just prior to launching the previously loaded OS boot loader image.
11470d1ba665SWarner Losh   /// For non-UEFI compatible boots, the timer value logged will be just prior
11480d1ba665SWarner Losh   /// to the INT 19h handler invocation.
11490d1ba665SWarner Losh   ///
11500d1ba665SWarner Losh   UINT64                                          OsLoaderStartImageStart;
11510d1ba665SWarner Losh   ///
11520d1ba665SWarner Losh   /// Timer value logged at the point when the OS loader calls the
11530d1ba665SWarner Losh   /// ExitBootServices function for UEFI compatible firmware.
11540d1ba665SWarner Losh   /// For non-UEFI compatible boots, this field must be zero.
11550d1ba665SWarner Losh   ///
11560d1ba665SWarner Losh   UINT64                                          ExitBootServicesEntry;
11570d1ba665SWarner Losh   ///
11580d1ba665SWarner Losh   /// Timer value logged at the point just prior to when the OS loader gaining
11590d1ba665SWarner Losh   /// control back from calls the ExitBootServices function for UEFI compatible firmware.
11600d1ba665SWarner Losh   /// For non-UEFI compatible boots, this field must be zero.
11610d1ba665SWarner Losh   ///
11620d1ba665SWarner Losh   UINT64                                          ExitBootServicesExit;
11630d1ba665SWarner Losh } EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_RECORD;
11640d1ba665SWarner Losh 
11650d1ba665SWarner Losh ///
11660d1ba665SWarner Losh /// FPDT Firmware Basic Boot Performance Table signature
11670d1ba665SWarner Losh ///
11680d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE  SIGNATURE_32('F', 'B', 'P', 'T')
11690d1ba665SWarner Losh 
11700d1ba665SWarner Losh //
11710d1ba665SWarner Losh // FPDT Firmware Basic Boot Performance Table
11720d1ba665SWarner Losh //
11730d1ba665SWarner Losh typedef struct {
11740d1ba665SWarner Losh   EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER      Header;
11750d1ba665SWarner Losh   //
11760d1ba665SWarner Losh   // one or more Performance Records.
11770d1ba665SWarner Losh   //
11780d1ba665SWarner Losh } EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_TABLE;
11790d1ba665SWarner Losh 
11800d1ba665SWarner Losh ///
11810d1ba665SWarner Losh /// FPDT "S3PT" S3 Performance Table
11820d1ba665SWarner Losh ///
11830d1ba665SWarner Losh #define EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE  SIGNATURE_32('S', '3', 'P', 'T')
11840d1ba665SWarner Losh 
11850d1ba665SWarner Losh //
11860d1ba665SWarner Losh // FPDT Firmware S3 Boot Performance Table
11870d1ba665SWarner Losh //
11880d1ba665SWarner Losh typedef struct {
11890d1ba665SWarner Losh   EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER      Header;
11900d1ba665SWarner Losh   //
11910d1ba665SWarner Losh   // one or more Performance Records.
11920d1ba665SWarner Losh   //
11930d1ba665SWarner Losh } EFI_ACPI_5_1_FPDT_FIRMWARE_S3_BOOT_TABLE;
11940d1ba665SWarner Losh 
11950d1ba665SWarner Losh ///
11960d1ba665SWarner Losh /// FPDT Basic S3 Resume Performance Record
11970d1ba665SWarner Losh ///
11980d1ba665SWarner Losh typedef struct {
11990d1ba665SWarner Losh   EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
12000d1ba665SWarner Losh   ///
12010d1ba665SWarner Losh   /// A count of the number of S3 resume cycles since the last full boot sequence.
12020d1ba665SWarner Losh   ///
12030d1ba665SWarner Losh   UINT32                                          ResumeCount;
12040d1ba665SWarner Losh   ///
12050d1ba665SWarner Losh   /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the
12060d1ba665SWarner Losh   /// OS waking vector. Only the most recent resume cycle's time is retained.
12070d1ba665SWarner Losh   ///
12080d1ba665SWarner Losh   UINT64                                          FullResume;
12090d1ba665SWarner Losh   ///
12100d1ba665SWarner Losh   /// Average timer value of all resume cycles logged since the last full boot
12110d1ba665SWarner Losh   /// sequence, including the most recent resume.  Note that the entire log of
12120d1ba665SWarner Losh   /// timer values does not need to be retained in order to calculate this average.
12130d1ba665SWarner Losh   ///
12140d1ba665SWarner Losh   UINT64                                          AverageResume;
12150d1ba665SWarner Losh } EFI_ACPI_5_1_FPDT_S3_RESUME_RECORD;
12160d1ba665SWarner Losh 
12170d1ba665SWarner Losh ///
12180d1ba665SWarner Losh /// FPDT Basic S3 Suspend Performance Record
12190d1ba665SWarner Losh ///
12200d1ba665SWarner Losh typedef struct {
12210d1ba665SWarner Losh   EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER     Header;
12220d1ba665SWarner Losh   ///
12230d1ba665SWarner Losh   /// Timer value recorded at the OS write to SLP_TYP upon entry to S3.
12240d1ba665SWarner Losh   /// Only the most recent suspend cycle's timer value is retained.
12250d1ba665SWarner Losh   ///
12260d1ba665SWarner Losh   UINT64                                          SuspendStart;
12270d1ba665SWarner Losh   ///
12280d1ba665SWarner Losh   /// Timer value recorded at the final firmware write to SLP_TYP (or other
12290d1ba665SWarner Losh   /// mechanism) used to trigger hardware entry to S3.
12300d1ba665SWarner Losh   /// Only the most recent suspend cycle's timer value is retained.
12310d1ba665SWarner Losh   ///
12320d1ba665SWarner Losh   UINT64                                          SuspendEnd;
12330d1ba665SWarner Losh } EFI_ACPI_5_1_FPDT_S3_SUSPEND_RECORD;
12340d1ba665SWarner Losh 
12350d1ba665SWarner Losh ///
12360d1ba665SWarner Losh /// Firmware Performance Record Table definition.
12370d1ba665SWarner Losh ///
12380d1ba665SWarner Losh typedef struct {
12390d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
12400d1ba665SWarner Losh } EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_RECORD_TABLE;
12410d1ba665SWarner Losh 
12420d1ba665SWarner Losh ///
12430d1ba665SWarner Losh /// Generic Timer Description Table definition.
12440d1ba665SWarner Losh ///
12450d1ba665SWarner Losh typedef struct {
12460d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
12470d1ba665SWarner Losh   UINT64                      CntControlBasePhysicalAddress;
12480d1ba665SWarner Losh   UINT32                      Reserved;
12490d1ba665SWarner Losh   UINT32                      SecurePL1TimerGSIV;
12500d1ba665SWarner Losh   UINT32                      SecurePL1TimerFlags;
12510d1ba665SWarner Losh   UINT32                      NonSecurePL1TimerGSIV;
12520d1ba665SWarner Losh   UINT32                      NonSecurePL1TimerFlags;
12530d1ba665SWarner Losh   UINT32                      VirtualTimerGSIV;
12540d1ba665SWarner Losh   UINT32                      VirtualTimerFlags;
12550d1ba665SWarner Losh   UINT32                      NonSecurePL2TimerGSIV;
12560d1ba665SWarner Losh   UINT32                      NonSecurePL2TimerFlags;
12570d1ba665SWarner Losh   UINT64                      CntReadBasePhysicalAddress;
12580d1ba665SWarner Losh   UINT32                      PlatformTimerCount;
12590d1ba665SWarner Losh   UINT32                      PlatformTimerOffset;
12600d1ba665SWarner Losh } EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE;
12610d1ba665SWarner Losh 
12620d1ba665SWarner Losh ///
12630d1ba665SWarner Losh /// GTDT Version (as defined in ACPI 5.1 spec.)
12640d1ba665SWarner Losh ///
12650d1ba665SWarner Losh #define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x02
12660d1ba665SWarner Losh 
12670d1ba665SWarner Losh ///
12680d1ba665SWarner Losh /// Timer Flags.  All other bits are reserved and must be 0.
12690d1ba665SWarner Losh ///
12700d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE          BIT0
12710d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
12720d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY          BIT2
12730d1ba665SWarner Losh 
12740d1ba665SWarner Losh ///
12750d1ba665SWarner Losh /// Platform Timer Type
12760d1ba665SWarner Losh ///
12770d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_GT_BLOCK                       0
12780d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG          1
12790d1ba665SWarner Losh 
12800d1ba665SWarner Losh ///
12810d1ba665SWarner Losh /// GT Block Structure
12820d1ba665SWarner Losh ///
12830d1ba665SWarner Losh typedef struct {
12840d1ba665SWarner Losh   UINT8   Type;
12850d1ba665SWarner Losh   UINT16  Length;
12860d1ba665SWarner Losh   UINT8   Reserved;
12870d1ba665SWarner Losh   UINT64  CntCtlBase;
12880d1ba665SWarner Losh   UINT32  GTBlockTimerCount;
12890d1ba665SWarner Losh   UINT32  GTBlockTimerOffset;
12900d1ba665SWarner Losh } EFI_ACPI_5_1_GTDT_GT_BLOCK_STRUCTURE;
12910d1ba665SWarner Losh 
12920d1ba665SWarner Losh ///
12930d1ba665SWarner Losh /// GT Block Timer Structure
12940d1ba665SWarner Losh ///
12950d1ba665SWarner Losh typedef struct {
12960d1ba665SWarner Losh   UINT8   GTFrameNumber;
12970d1ba665SWarner Losh   UINT8   Reserved[3];
12980d1ba665SWarner Losh   UINT64  CntBaseX;
12990d1ba665SWarner Losh   UINT64  CntEL0BaseX;
13000d1ba665SWarner Losh   UINT32  GTxPhysicalTimerGSIV;
13010d1ba665SWarner Losh   UINT32  GTxPhysicalTimerFlags;
13020d1ba665SWarner Losh   UINT32  GTxVirtualTimerGSIV;
13030d1ba665SWarner Losh   UINT32  GTxVirtualTimerFlags;
13040d1ba665SWarner Losh   UINT32  GTxCommonFlags;
13050d1ba665SWarner Losh } EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_STRUCTURE;
13060d1ba665SWarner Losh 
13070d1ba665SWarner Losh ///
13080d1ba665SWarner Losh /// GT Block Physical Timers and Virtual Timers Flags.  All other bits are reserved and must be 0.
13090d1ba665SWarner Losh ///
13100d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE          BIT0
13110d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
13120d1ba665SWarner Losh 
13130d1ba665SWarner Losh ///
13140d1ba665SWarner Losh /// Common Flags Flags.  All other bits are reserved and must be 0.
13150d1ba665SWarner Losh ///
13160d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER              BIT0
13170d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY      BIT1
13180d1ba665SWarner Losh 
13190d1ba665SWarner Losh ///
13200d1ba665SWarner Losh /// SBSA Generic Watchdog Structure
13210d1ba665SWarner Losh ///
13220d1ba665SWarner Losh typedef struct {
13230d1ba665SWarner Losh   UINT8   Type;
13240d1ba665SWarner Losh   UINT16  Length;
13250d1ba665SWarner Losh   UINT8   Reserved;
13260d1ba665SWarner Losh   UINT64  RefreshFramePhysicalAddress;
13270d1ba665SWarner Losh   UINT64  WatchdogControlFramePhysicalAddress;
13280d1ba665SWarner Losh   UINT32  WatchdogTimerGSIV;
13290d1ba665SWarner Losh   UINT32  WatchdogTimerFlags;
13300d1ba665SWarner Losh } EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE;
13310d1ba665SWarner Losh 
13320d1ba665SWarner Losh ///
13330d1ba665SWarner Losh /// SBSA Generic Watchdog Timer Flags.  All other bits are reserved and must be 0.
13340d1ba665SWarner Losh ///
13350d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE          BIT0
13360d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY      BIT1
13370d1ba665SWarner Losh #define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER                  BIT2
13380d1ba665SWarner Losh 
13390d1ba665SWarner Losh ///
13400d1ba665SWarner Losh /// Boot Error Record Table (BERT)
13410d1ba665SWarner Losh ///
13420d1ba665SWarner Losh typedef struct {
13430d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
13440d1ba665SWarner Losh   UINT32                      BootErrorRegionLength;
13450d1ba665SWarner Losh   UINT64                      BootErrorRegion;
13460d1ba665SWarner Losh } EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_HEADER;
13470d1ba665SWarner Losh 
13480d1ba665SWarner Losh ///
13490d1ba665SWarner Losh /// BERT Version (as defined in ACPI 5.1 spec.)
13500d1ba665SWarner Losh ///
13510d1ba665SWarner Losh #define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_REVISION 0x01
13520d1ba665SWarner Losh 
13530d1ba665SWarner Losh ///
13540d1ba665SWarner Losh /// Boot Error Region Block Status Definition
13550d1ba665SWarner Losh ///
13560d1ba665SWarner Losh typedef struct {
13570d1ba665SWarner Losh   UINT32       UncorrectableErrorValid:1;
13580d1ba665SWarner Losh   UINT32       CorrectableErrorValid:1;
13590d1ba665SWarner Losh   UINT32       MultipleUncorrectableErrors:1;
13600d1ba665SWarner Losh   UINT32       MultipleCorrectableErrors:1;
13610d1ba665SWarner Losh   UINT32       ErrorDataEntryCount:10;
13620d1ba665SWarner Losh   UINT32       Reserved:18;
13630d1ba665SWarner Losh } EFI_ACPI_5_1_ERROR_BLOCK_STATUS;
13640d1ba665SWarner Losh 
13650d1ba665SWarner Losh ///
13660d1ba665SWarner Losh /// Boot Error Region Definition
13670d1ba665SWarner Losh ///
13680d1ba665SWarner Losh typedef struct {
13690d1ba665SWarner Losh   EFI_ACPI_5_1_ERROR_BLOCK_STATUS              BlockStatus;
13700d1ba665SWarner Losh   UINT32                                       RawDataOffset;
13710d1ba665SWarner Losh   UINT32                                       RawDataLength;
13720d1ba665SWarner Losh   UINT32                                       DataLength;
13730d1ba665SWarner Losh   UINT32                                       ErrorSeverity;
13740d1ba665SWarner Losh } EFI_ACPI_5_1_BOOT_ERROR_REGION_STRUCTURE;
13750d1ba665SWarner Losh 
13760d1ba665SWarner Losh //
13770d1ba665SWarner Losh // Boot Error Severity types
13780d1ba665SWarner Losh //
13790d1ba665SWarner Losh #define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTABLE  0x00
13800d1ba665SWarner Losh #define EFI_ACPI_5_1_ERROR_SEVERITY_FATAL        0x01
13810d1ba665SWarner Losh #define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTED    0x02
13820d1ba665SWarner Losh #define EFI_ACPI_5_1_ERROR_SEVERITY_NONE         0x03
13830d1ba665SWarner Losh 
13840d1ba665SWarner Losh ///
13850d1ba665SWarner Losh /// Generic Error Data Entry Definition
13860d1ba665SWarner Losh ///
13870d1ba665SWarner Losh typedef struct {
13880d1ba665SWarner Losh   UINT8    SectionType[16];
13890d1ba665SWarner Losh   UINT32   ErrorSeverity;
13900d1ba665SWarner Losh   UINT16   Revision;
13910d1ba665SWarner Losh   UINT8    ValidationBits;
13920d1ba665SWarner Losh   UINT8    Flags;
13930d1ba665SWarner Losh   UINT32   ErrorDataLength;
13940d1ba665SWarner Losh   UINT8    FruId[16];
13950d1ba665SWarner Losh   UINT8    FruText[20];
13960d1ba665SWarner Losh } EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE;
13970d1ba665SWarner Losh 
13980d1ba665SWarner Losh ///
13990d1ba665SWarner Losh /// Generic Error Data Entry Version (as defined in ACPI 5.1 spec.)
14000d1ba665SWarner Losh ///
14010d1ba665SWarner Losh #define EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_REVISION  0x0201
14020d1ba665SWarner Losh 
14030d1ba665SWarner Losh ///
14040d1ba665SWarner Losh /// HEST - Hardware Error Source Table
14050d1ba665SWarner Losh ///
14060d1ba665SWarner Losh typedef struct {
14070d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
14080d1ba665SWarner Losh   UINT32                      ErrorSourceCount;
14090d1ba665SWarner Losh } EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER;
14100d1ba665SWarner Losh 
14110d1ba665SWarner Losh ///
14120d1ba665SWarner Losh /// HEST Version (as defined in ACPI 5.1 spec.)
14130d1ba665SWarner Losh ///
14140d1ba665SWarner Losh #define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01
14150d1ba665SWarner Losh 
14160d1ba665SWarner Losh //
14170d1ba665SWarner Losh // Error Source structure types.
14180d1ba665SWarner Losh //
14190d1ba665SWarner Losh #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION  0x00
14200d1ba665SWarner Losh #define EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK  0x01
14210d1ba665SWarner Losh #define EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR                0x02
14220d1ba665SWarner Losh #define EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER                  0x06
14230d1ba665SWarner Losh #define EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER                     0x07
14240d1ba665SWarner Losh #define EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER                     0x08
14250d1ba665SWarner Losh #define EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR                     0x09
14260d1ba665SWarner Losh 
14270d1ba665SWarner Losh //
14280d1ba665SWarner Losh // Error Source structure flags.
14290d1ba665SWarner Losh //
14300d1ba665SWarner Losh #define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_FIRMWARE_FIRST       (1 << 0)
14310d1ba665SWarner Losh #define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_GLOBAL               (1 << 1)
14320d1ba665SWarner Losh 
14330d1ba665SWarner Losh ///
14340d1ba665SWarner Losh /// IA-32 Architecture Machine Check Exception Structure Definition
14350d1ba665SWarner Losh ///
14360d1ba665SWarner Losh typedef struct {
14370d1ba665SWarner Losh   UINT16  Type;
14380d1ba665SWarner Losh   UINT16  SourceId;
14390d1ba665SWarner Losh   UINT8   Reserved0[2];
14400d1ba665SWarner Losh   UINT8   Flags;
14410d1ba665SWarner Losh   UINT8   Enabled;
14420d1ba665SWarner Losh   UINT32  NumberOfRecordsToPreAllocate;
14430d1ba665SWarner Losh   UINT32  MaxSectionsPerRecord;
14440d1ba665SWarner Losh   UINT64  GlobalCapabilityInitData;
14450d1ba665SWarner Losh   UINT64  GlobalControlInitData;
14460d1ba665SWarner Losh   UINT8   NumberOfHardwareBanks;
14470d1ba665SWarner Losh   UINT8   Reserved1[7];
14480d1ba665SWarner Losh } EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE;
14490d1ba665SWarner Losh 
14500d1ba665SWarner Losh ///
14510d1ba665SWarner Losh /// IA-32 Architecture Machine Check Bank Structure Definition
14520d1ba665SWarner Losh ///
14530d1ba665SWarner Losh typedef struct {
14540d1ba665SWarner Losh   UINT8   BankNumber;
14550d1ba665SWarner Losh   UINT8   ClearStatusOnInitialization;
14560d1ba665SWarner Losh   UINT8   StatusDataFormat;
14570d1ba665SWarner Losh   UINT8   Reserved0;
14580d1ba665SWarner Losh   UINT32  ControlRegisterMsrAddress;
14590d1ba665SWarner Losh   UINT64  ControlInitData;
14600d1ba665SWarner Losh   UINT32  StatusRegisterMsrAddress;
14610d1ba665SWarner Losh   UINT32  AddressRegisterMsrAddress;
14620d1ba665SWarner Losh   UINT32  MiscRegisterMsrAddress;
14630d1ba665SWarner Losh } EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE;
14640d1ba665SWarner Losh 
14650d1ba665SWarner Losh ///
14660d1ba665SWarner Losh /// IA-32 Architecture Machine Check Bank Structure MCA data format
14670d1ba665SWarner Losh ///
14680d1ba665SWarner Losh #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32      0x00
14690d1ba665SWarner Losh #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64   0x01
14700d1ba665SWarner Losh #define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64     0x02
14710d1ba665SWarner Losh 
14720d1ba665SWarner Losh //
14730d1ba665SWarner Losh // Hardware Error Notification types. All other values are reserved
14740d1ba665SWarner Losh //
14750d1ba665SWarner Losh #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_POLLED                0x00
14760d1ba665SWarner Losh #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT    0x01
14770d1ba665SWarner Losh #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT       0x02
14780d1ba665SWarner Losh #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_SCI                   0x03
14790d1ba665SWarner Losh #define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_NMI                   0x04
14800d1ba665SWarner Losh 
14810d1ba665SWarner Losh ///
14820d1ba665SWarner Losh /// Hardware Error Notification Configuration Write Enable Structure Definition
14830d1ba665SWarner Losh ///
14840d1ba665SWarner Losh typedef struct {
14850d1ba665SWarner Losh   UINT16    Type:1;
14860d1ba665SWarner Losh   UINT16    PollInterval:1;
14870d1ba665SWarner Losh   UINT16    SwitchToPollingThresholdValue:1;
14880d1ba665SWarner Losh   UINT16    SwitchToPollingThresholdWindow:1;
14890d1ba665SWarner Losh   UINT16    ErrorThresholdValue:1;
14900d1ba665SWarner Losh   UINT16    ErrorThresholdWindow:1;
14910d1ba665SWarner Losh   UINT16    Reserved:10;
14920d1ba665SWarner Losh } EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE;
14930d1ba665SWarner Losh 
14940d1ba665SWarner Losh ///
14950d1ba665SWarner Losh /// Hardware Error Notification Structure Definition
14960d1ba665SWarner Losh ///
14970d1ba665SWarner Losh typedef struct {
14980d1ba665SWarner Losh   UINT8                                                                          Type;
14990d1ba665SWarner Losh   UINT8                                                                          Length;
15000d1ba665SWarner Losh   EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE  ConfigurationWriteEnable;
15010d1ba665SWarner Losh   UINT32                                                                         PollInterval;
15020d1ba665SWarner Losh   UINT32                                                                         Vector;
15030d1ba665SWarner Losh   UINT32                                                                         SwitchToPollingThresholdValue;
15040d1ba665SWarner Losh   UINT32                                                                         SwitchToPollingThresholdWindow;
15050d1ba665SWarner Losh   UINT32                                                                         ErrorThresholdValue;
15060d1ba665SWarner Losh   UINT32                                                                         ErrorThresholdWindow;
15070d1ba665SWarner Losh } EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE;
15080d1ba665SWarner Losh 
15090d1ba665SWarner Losh ///
15100d1ba665SWarner Losh /// IA-32 Architecture Corrected Machine Check Structure Definition
15110d1ba665SWarner Losh ///
15120d1ba665SWarner Losh typedef struct {
15130d1ba665SWarner Losh   UINT16                                                 Type;
15140d1ba665SWarner Losh   UINT16                                                 SourceId;
15150d1ba665SWarner Losh   UINT8                                                  Reserved0[2];
15160d1ba665SWarner Losh   UINT8                                                  Flags;
15170d1ba665SWarner Losh   UINT8                                                  Enabled;
15180d1ba665SWarner Losh   UINT32                                                 NumberOfRecordsToPreAllocate;
15190d1ba665SWarner Losh   UINT32                                                 MaxSectionsPerRecord;
15200d1ba665SWarner Losh   EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
15210d1ba665SWarner Losh   UINT8                                                  NumberOfHardwareBanks;
15220d1ba665SWarner Losh   UINT8                                                  Reserved1[3];
15230d1ba665SWarner Losh } EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE;
15240d1ba665SWarner Losh 
15250d1ba665SWarner Losh ///
15260d1ba665SWarner Losh /// IA-32 Architecture NMI Error Structure Definition
15270d1ba665SWarner Losh ///
15280d1ba665SWarner Losh typedef struct {
15290d1ba665SWarner Losh   UINT16  Type;
15300d1ba665SWarner Losh   UINT16  SourceId;
15310d1ba665SWarner Losh   UINT8   Reserved0[2];
15320d1ba665SWarner Losh   UINT32  NumberOfRecordsToPreAllocate;
15330d1ba665SWarner Losh   UINT32  MaxSectionsPerRecord;
15340d1ba665SWarner Losh   UINT32  MaxRawDataLength;
15350d1ba665SWarner Losh } EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE;
15360d1ba665SWarner Losh 
15370d1ba665SWarner Losh ///
15380d1ba665SWarner Losh /// PCI Express Root Port AER Structure Definition
15390d1ba665SWarner Losh ///
15400d1ba665SWarner Losh typedef struct {
15410d1ba665SWarner Losh   UINT16  Type;
15420d1ba665SWarner Losh   UINT16  SourceId;
15430d1ba665SWarner Losh   UINT8   Reserved0[2];
15440d1ba665SWarner Losh   UINT8   Flags;
15450d1ba665SWarner Losh   UINT8   Enabled;
15460d1ba665SWarner Losh   UINT32  NumberOfRecordsToPreAllocate;
15470d1ba665SWarner Losh   UINT32  MaxSectionsPerRecord;
15480d1ba665SWarner Losh   UINT32  Bus;
15490d1ba665SWarner Losh   UINT16  Device;
15500d1ba665SWarner Losh   UINT16  Function;
15510d1ba665SWarner Losh   UINT16  DeviceControl;
15520d1ba665SWarner Losh   UINT8   Reserved1[2];
15530d1ba665SWarner Losh   UINT32  UncorrectableErrorMask;
15540d1ba665SWarner Losh   UINT32  UncorrectableErrorSeverity;
15550d1ba665SWarner Losh   UINT32  CorrectableErrorMask;
15560d1ba665SWarner Losh   UINT32  AdvancedErrorCapabilitiesAndControl;
15570d1ba665SWarner Losh   UINT32  RootErrorCommand;
15580d1ba665SWarner Losh } EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE;
15590d1ba665SWarner Losh 
15600d1ba665SWarner Losh ///
15610d1ba665SWarner Losh /// PCI Express Device AER Structure Definition
15620d1ba665SWarner Losh ///
15630d1ba665SWarner Losh typedef struct {
15640d1ba665SWarner Losh   UINT16  Type;
15650d1ba665SWarner Losh   UINT16  SourceId;
15660d1ba665SWarner Losh   UINT8   Reserved0[2];
15670d1ba665SWarner Losh   UINT8   Flags;
15680d1ba665SWarner Losh   UINT8   Enabled;
15690d1ba665SWarner Losh   UINT32  NumberOfRecordsToPreAllocate;
15700d1ba665SWarner Losh   UINT32  MaxSectionsPerRecord;
15710d1ba665SWarner Losh   UINT32  Bus;
15720d1ba665SWarner Losh   UINT16  Device;
15730d1ba665SWarner Losh   UINT16  Function;
15740d1ba665SWarner Losh   UINT16  DeviceControl;
15750d1ba665SWarner Losh   UINT8   Reserved1[2];
15760d1ba665SWarner Losh   UINT32  UncorrectableErrorMask;
15770d1ba665SWarner Losh   UINT32  UncorrectableErrorSeverity;
15780d1ba665SWarner Losh   UINT32  CorrectableErrorMask;
15790d1ba665SWarner Losh   UINT32  AdvancedErrorCapabilitiesAndControl;
15800d1ba665SWarner Losh } EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER_STRUCTURE;
15810d1ba665SWarner Losh 
15820d1ba665SWarner Losh ///
15830d1ba665SWarner Losh /// PCI Express Bridge AER Structure Definition
15840d1ba665SWarner Losh ///
15850d1ba665SWarner Losh typedef struct {
15860d1ba665SWarner Losh   UINT16  Type;
15870d1ba665SWarner Losh   UINT16  SourceId;
15880d1ba665SWarner Losh   UINT8   Reserved0[2];
15890d1ba665SWarner Losh   UINT8   Flags;
15900d1ba665SWarner Losh   UINT8   Enabled;
15910d1ba665SWarner Losh   UINT32  NumberOfRecordsToPreAllocate;
15920d1ba665SWarner Losh   UINT32  MaxSectionsPerRecord;
15930d1ba665SWarner Losh   UINT32  Bus;
15940d1ba665SWarner Losh   UINT16  Device;
15950d1ba665SWarner Losh   UINT16  Function;
15960d1ba665SWarner Losh   UINT16  DeviceControl;
15970d1ba665SWarner Losh   UINT8   Reserved1[2];
15980d1ba665SWarner Losh   UINT32  UncorrectableErrorMask;
15990d1ba665SWarner Losh   UINT32  UncorrectableErrorSeverity;
16000d1ba665SWarner Losh   UINT32  CorrectableErrorMask;
16010d1ba665SWarner Losh   UINT32  AdvancedErrorCapabilitiesAndControl;
16020d1ba665SWarner Losh   UINT32  SecondaryUncorrectableErrorMask;
16030d1ba665SWarner Losh   UINT32  SecondaryUncorrectableErrorSeverity;
16040d1ba665SWarner Losh   UINT32  SecondaryAdvancedErrorCapabilitiesAndControl;
16050d1ba665SWarner Losh } EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER_STRUCTURE;
16060d1ba665SWarner Losh 
16070d1ba665SWarner Losh ///
16080d1ba665SWarner Losh /// Generic Hardware Error Source Structure Definition
16090d1ba665SWarner Losh ///
16100d1ba665SWarner Losh typedef struct {
16110d1ba665SWarner Losh   UINT16                                                 Type;
16120d1ba665SWarner Losh   UINT16                                                 SourceId;
16130d1ba665SWarner Losh   UINT16                                                 RelatedSourceId;
16140d1ba665SWarner Losh   UINT8                                                  Flags;
16150d1ba665SWarner Losh   UINT8                                                  Enabled;
16160d1ba665SWarner Losh   UINT32                                                 NumberOfRecordsToPreAllocate;
16170d1ba665SWarner Losh   UINT32                                                 MaxSectionsPerRecord;
16180d1ba665SWarner Losh   UINT32                                                 MaxRawDataLength;
16190d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE                 ErrorStatusAddress;
16200d1ba665SWarner Losh   EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE     NotificationStructure;
16210d1ba665SWarner Losh   UINT32                                                 ErrorStatusBlockLength;
16220d1ba665SWarner Losh } EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE;
16230d1ba665SWarner Losh 
16240d1ba665SWarner Losh ///
16250d1ba665SWarner Losh /// Generic Error Status Definition
16260d1ba665SWarner Losh ///
16270d1ba665SWarner Losh typedef struct {
16280d1ba665SWarner Losh   EFI_ACPI_5_1_ERROR_BLOCK_STATUS              BlockStatus;
16290d1ba665SWarner Losh   UINT32                                       RawDataOffset;
16300d1ba665SWarner Losh   UINT32                                       RawDataLength;
16310d1ba665SWarner Losh   UINT32                                       DataLength;
16320d1ba665SWarner Losh   UINT32                                       ErrorSeverity;
16330d1ba665SWarner Losh } EFI_ACPI_5_1_GENERIC_ERROR_STATUS_STRUCTURE;
16340d1ba665SWarner Losh 
16350d1ba665SWarner Losh ///
16360d1ba665SWarner Losh /// ERST - Error Record Serialization Table
16370d1ba665SWarner Losh ///
16380d1ba665SWarner Losh typedef struct {
16390d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
16400d1ba665SWarner Losh   UINT32                      SerializationHeaderSize;
16410d1ba665SWarner Losh   UINT8                       Reserved0[4];
16420d1ba665SWarner Losh   UINT32                      InstructionEntryCount;
16430d1ba665SWarner Losh } EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_HEADER;
16440d1ba665SWarner Losh 
16450d1ba665SWarner Losh ///
16460d1ba665SWarner Losh /// ERST Version (as defined in ACPI 5.1 spec.)
16470d1ba665SWarner Losh ///
16480d1ba665SWarner Losh #define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01
16490d1ba665SWarner Losh 
16500d1ba665SWarner Losh ///
16510d1ba665SWarner Losh /// ERST Serialization Actions
16520d1ba665SWarner Losh ///
16530d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_BEGIN_WRITE_OPERATION                    0x00
16540d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_BEGIN_READ_OPERATION                     0x01
16550d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_BEGIN_CLEAR_OPERATION                    0x02
16560d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_END_OPERATION                            0x03
16570d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_SET_RECORD_OFFSET                        0x04
16580d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_EXECUTE_OPERATION                        0x05
16590d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_CHECK_BUSY_STATUS                        0x06
16600d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_GET_COMMAND_STATUS                       0x07
16610d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_GET_RECORD_IDENTIFIER                    0x08
16620d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_SET_RECORD_IDENTIFIER                    0x09
16630d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_GET_RECORD_COUNT                         0x0A
16640d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_BEGIN_DUMMY_WRITE_OPERATION              0x0B
16650d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE              0x0D
16660d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH       0x0E
16670d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES   0x0F
16680d1ba665SWarner Losh 
16690d1ba665SWarner Losh ///
16700d1ba665SWarner Losh /// ERST Action Command Status
16710d1ba665SWarner Losh ///
16720d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_STATUS_SUCCESS                           0x00
16730d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_STATUS_NOT_ENOUGH_SPACE                  0x01
16740d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_STATUS_HARDWARE_NOT_AVAILABLE            0x02
16750d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_STATUS_FAILED                            0x03
16760d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_STATUS_RECORD_STORE_EMPTY                0x04
16770d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_STATUS_RECORD_NOT_FOUND                  0x05
16780d1ba665SWarner Losh 
16790d1ba665SWarner Losh ///
16800d1ba665SWarner Losh /// ERST Serialization Instructions
16810d1ba665SWarner Losh ///
16820d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_READ_REGISTER                            0x00
16830d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_READ_REGISTER_VALUE                      0x01
16840d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_WRITE_REGISTER                           0x02
16850d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_WRITE_REGISTER_VALUE                     0x03
16860d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_NOOP                                     0x04
16870d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_LOAD_VAR1                                0x05
16880d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_LOAD_VAR2                                0x06
16890d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_STORE_VAR1                               0x07
16900d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_ADD                                      0x08
16910d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_SUBTRACT                                 0x09
16920d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_ADD_VALUE                                0x0A
16930d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_SUBTRACT_VALUE                           0x0B
16940d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_STALL                                    0x0C
16950d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_STALL_WHILE_TRUE                         0x0D
16960d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE            0x0E
16970d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_GOTO                                     0x0F
16980d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_SET_SRC_ADDRESS_BASE                     0x10
16990d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_SET_DST_ADDRESS_BASE                     0x11
17000d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_MOVE_DATA                                0x12
17010d1ba665SWarner Losh 
17020d1ba665SWarner Losh ///
17030d1ba665SWarner Losh /// ERST Instruction Flags
17040d1ba665SWarner Losh ///
17050d1ba665SWarner Losh #define EFI_ACPI_5_1_ERST_PRESERVE_REGISTER                        0x01
17060d1ba665SWarner Losh 
17070d1ba665SWarner Losh ///
17080d1ba665SWarner Losh /// ERST Serialization Instruction Entry
17090d1ba665SWarner Losh ///
17100d1ba665SWarner Losh typedef struct {
17110d1ba665SWarner Losh   UINT8                                    SerializationAction;
17120d1ba665SWarner Losh   UINT8                                    Instruction;
17130d1ba665SWarner Losh   UINT8                                    Flags;
17140d1ba665SWarner Losh   UINT8                                    Reserved0;
17150d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
17160d1ba665SWarner Losh   UINT64                                   Value;
17170d1ba665SWarner Losh   UINT64                                   Mask;
17180d1ba665SWarner Losh } EFI_ACPI_5_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY;
17190d1ba665SWarner Losh 
17200d1ba665SWarner Losh ///
17210d1ba665SWarner Losh /// EINJ - Error Injection Table
17220d1ba665SWarner Losh ///
17230d1ba665SWarner Losh typedef struct {
17240d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
17250d1ba665SWarner Losh   UINT32                      InjectionHeaderSize;
17260d1ba665SWarner Losh   UINT8                       InjectionFlags;
17270d1ba665SWarner Losh   UINT8                       Reserved0[3];
17280d1ba665SWarner Losh   UINT32                      InjectionEntryCount;
17290d1ba665SWarner Losh } EFI_ACPI_5_1_ERROR_INJECTION_TABLE_HEADER;
17300d1ba665SWarner Losh 
17310d1ba665SWarner Losh ///
17320d1ba665SWarner Losh /// EINJ Version (as defined in ACPI 5.1 spec.)
17330d1ba665SWarner Losh ///
17340d1ba665SWarner Losh #define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_REVISION 0x01
17350d1ba665SWarner Losh 
17360d1ba665SWarner Losh ///
17370d1ba665SWarner Losh /// EINJ Error Injection Actions
17380d1ba665SWarner Losh ///
17390d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_BEGIN_INJECTION_OPERATION                0x00
17400d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE           0x01
17410d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_SET_ERROR_TYPE                           0x02
17420d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_GET_ERROR_TYPE                           0x03
17430d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_END_OPERATION                            0x04
17440d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_EXECUTE_OPERATION                        0x05
17450d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_CHECK_BUSY_STATUS                        0x06
17460d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_GET_COMMAND_STATUS                       0x07
17470d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_TRIGGER_ERROR                            0xFF
17480d1ba665SWarner Losh 
17490d1ba665SWarner Losh ///
17500d1ba665SWarner Losh /// EINJ Action Command Status
17510d1ba665SWarner Losh ///
17520d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_STATUS_SUCCESS                           0x00
17530d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_STATUS_UNKNOWN_FAILURE                   0x01
17540d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_STATUS_INVALID_ACCESS                    0x02
17550d1ba665SWarner Losh 
17560d1ba665SWarner Losh ///
17570d1ba665SWarner Losh /// EINJ Error Type Definition
17580d1ba665SWarner Losh ///
17590d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_CORRECTABLE                 (1 << 0)
17600d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL      (1 << 1)
17610d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL         (1 << 2)
17620d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_CORRECTABLE                    (1 << 3)
17630d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL         (1 << 4)
17640d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL            (1 << 5)
17650d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE               (1 << 6)
17660d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL    (1 << 7)
17670d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL       (1 << 8)
17680d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_CORRECTABLE                  (1 << 9)
17690d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL       (1 << 10)
17700d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL          (1 << 11)
17710d1ba665SWarner Losh 
17720d1ba665SWarner Losh ///
17730d1ba665SWarner Losh /// EINJ Injection Instructions
17740d1ba665SWarner Losh ///
17750d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_READ_REGISTER                            0x00
17760d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_READ_REGISTER_VALUE                      0x01
17770d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_WRITE_REGISTER                           0x02
17780d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_WRITE_REGISTER_VALUE                     0x03
17790d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_NOOP                                     0x04
17800d1ba665SWarner Losh 
17810d1ba665SWarner Losh ///
17820d1ba665SWarner Losh /// EINJ Instruction Flags
17830d1ba665SWarner Losh ///
17840d1ba665SWarner Losh #define EFI_ACPI_5_1_EINJ_PRESERVE_REGISTER                        0x01
17850d1ba665SWarner Losh 
17860d1ba665SWarner Losh ///
17870d1ba665SWarner Losh /// EINJ Injection Instruction Entry
17880d1ba665SWarner Losh ///
17890d1ba665SWarner Losh typedef struct {
17900d1ba665SWarner Losh   UINT8                                    InjectionAction;
17910d1ba665SWarner Losh   UINT8                                    Instruction;
17920d1ba665SWarner Losh   UINT8                                    Flags;
17930d1ba665SWarner Losh   UINT8                                    Reserved0;
17940d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE   RegisterRegion;
17950d1ba665SWarner Losh   UINT64                                   Value;
17960d1ba665SWarner Losh   UINT64                                   Mask;
17970d1ba665SWarner Losh } EFI_ACPI_5_1_EINJ_INJECTION_INSTRUCTION_ENTRY;
17980d1ba665SWarner Losh 
17990d1ba665SWarner Losh ///
18000d1ba665SWarner Losh /// EINJ Trigger Action Table
18010d1ba665SWarner Losh ///
18020d1ba665SWarner Losh typedef struct {
18030d1ba665SWarner Losh   UINT32  HeaderSize;
18040d1ba665SWarner Losh   UINT32  Revision;
18050d1ba665SWarner Losh   UINT32  TableSize;
18060d1ba665SWarner Losh   UINT32  EntryCount;
18070d1ba665SWarner Losh } EFI_ACPI_5_1_EINJ_TRIGGER_ACTION_TABLE;
18080d1ba665SWarner Losh 
18090d1ba665SWarner Losh ///
18100d1ba665SWarner Losh /// Platform Communications Channel Table (PCCT)
18110d1ba665SWarner Losh ///
18120d1ba665SWarner Losh typedef struct {
18130d1ba665SWarner Losh   EFI_ACPI_DESCRIPTION_HEADER Header;
18140d1ba665SWarner Losh   UINT32                      Flags;
18150d1ba665SWarner Losh   UINT64                      Reserved;
18160d1ba665SWarner Losh } EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER;
18170d1ba665SWarner Losh 
18180d1ba665SWarner Losh ///
18190d1ba665SWarner Losh /// PCCT Version (as defined in ACPI 5.1 spec.)
18200d1ba665SWarner Losh ///
18210d1ba665SWarner Losh #define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01
18220d1ba665SWarner Losh 
18230d1ba665SWarner Losh ///
18240d1ba665SWarner Losh /// PCCT Global Flags
18250d1ba665SWarner Losh ///
18260d1ba665SWarner Losh #define EFI_ACPI_5_1_PCCT_FLAGS_SCI_DOORBELL                      BIT0
18270d1ba665SWarner Losh 
18280d1ba665SWarner Losh //
18290d1ba665SWarner Losh // PCCT Subspace type
18300d1ba665SWarner Losh //
18310d1ba665SWarner Losh #define EFI_ACPI_5_1_PCCT_SUBSPACE_TYPE_GENERIC  0x00
18320d1ba665SWarner Losh 
18330d1ba665SWarner Losh ///
18340d1ba665SWarner Losh /// PCC Subspace Structure Header
18350d1ba665SWarner Losh ///
18360d1ba665SWarner Losh typedef struct {
18370d1ba665SWarner Losh   UINT8        Type;
18380d1ba665SWarner Losh   UINT8        Length;
18390d1ba665SWarner Losh } EFI_ACPI_5_1_PCCT_SUBSPACE_HEADER;
18400d1ba665SWarner Losh 
18410d1ba665SWarner Losh ///
18420d1ba665SWarner Losh /// Generic Communications Subspace Structure
18430d1ba665SWarner Losh ///
18440d1ba665SWarner Losh typedef struct {
18450d1ba665SWarner Losh   UINT8                                    Type;
18460d1ba665SWarner Losh   UINT8                                    Length;
18470d1ba665SWarner Losh   UINT8                                    Reserved[6];
18480d1ba665SWarner Losh   UINT64                                   BaseAddress;
18490d1ba665SWarner Losh   UINT64                                   AddressLength;
18500d1ba665SWarner Losh   EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE   DoorbellRegister;
18510d1ba665SWarner Losh   UINT64                                   DoorbellPreserve;
18520d1ba665SWarner Losh   UINT64                                   DoorbellWrite;
18530d1ba665SWarner Losh   UINT32                                   NominalLatency;
18540d1ba665SWarner Losh   UINT32                                   MaximumPeriodicAccessRate;
18550d1ba665SWarner Losh   UINT16                                   MinimumRequestTurnaroundTime;
18560d1ba665SWarner Losh } EFI_ACPI_5_1_PCCT_SUBSPACE_GENERIC;
18570d1ba665SWarner Losh 
18580d1ba665SWarner Losh ///
18590d1ba665SWarner Losh /// Generic Communications Channel Shared Memory Region
18600d1ba665SWarner Losh ///
18610d1ba665SWarner Losh 
18620d1ba665SWarner Losh typedef struct {
18630d1ba665SWarner Losh   UINT8                                    Command;
18640d1ba665SWarner Losh   UINT8                                    Reserved:7;
18650d1ba665SWarner Losh   UINT8                                    GenerateSci:1;
18660d1ba665SWarner Losh } EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND;
18670d1ba665SWarner Losh 
18680d1ba665SWarner Losh typedef struct {
18690d1ba665SWarner Losh   UINT8                                    CommandComplete:1;
18700d1ba665SWarner Losh   UINT8                                    SciDoorbell:1;
18710d1ba665SWarner Losh   UINT8                                    Error:1;
18720d1ba665SWarner Losh   UINT8                                    PlatformNotification:1;
18730d1ba665SWarner Losh   UINT8                                    Reserved:4;
18740d1ba665SWarner Losh   UINT8                                    Reserved1;
18750d1ba665SWarner Losh } EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS;
18760d1ba665SWarner Losh 
18770d1ba665SWarner Losh typedef struct {
18780d1ba665SWarner Losh   UINT32                                                    Signature;
18790d1ba665SWarner Losh   EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND    Command;
18800d1ba665SWarner Losh   EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS     Status;
18810d1ba665SWarner Losh } EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER;
18820d1ba665SWarner Losh 
18830d1ba665SWarner Losh //
18840d1ba665SWarner Losh // Known table signatures
18850d1ba665SWarner Losh //
18860d1ba665SWarner Losh 
18870d1ba665SWarner Losh ///
18880d1ba665SWarner Losh /// "RSD PTR " Root System Description Pointer
18890d1ba665SWarner Losh ///
18900d1ba665SWarner Losh #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE  SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ')
18910d1ba665SWarner Losh 
18920d1ba665SWarner Losh ///
18930d1ba665SWarner Losh /// "APIC" Multiple APIC Description Table
18940d1ba665SWarner Losh ///
18950d1ba665SWarner Losh #define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('A', 'P', 'I', 'C')
18960d1ba665SWarner Losh 
18970d1ba665SWarner Losh ///
18980d1ba665SWarner Losh /// "BERT" Boot Error Record Table
18990d1ba665SWarner Losh ///
19000d1ba665SWarner Losh #define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_SIGNATURE  SIGNATURE_32('B', 'E', 'R', 'T')
19010d1ba665SWarner Losh 
19020d1ba665SWarner Losh ///
19030d1ba665SWarner Losh /// "BGRT" Boot Graphics Resource Table
19040d1ba665SWarner Losh ///
19050d1ba665SWarner Losh #define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('B', 'G', 'R', 'T')
19060d1ba665SWarner Losh 
19070d1ba665SWarner Losh ///
19080d1ba665SWarner Losh /// "CPEP" Corrected Platform Error Polling Table
19090d1ba665SWarner Losh ///
19100d1ba665SWarner Losh #define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE  SIGNATURE_32('C', 'P', 'E', 'P')
19110d1ba665SWarner Losh 
19120d1ba665SWarner Losh ///
19130d1ba665SWarner Losh /// "DSDT" Differentiated System Description Table
19140d1ba665SWarner Losh ///
19150d1ba665SWarner Losh #define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('D', 'S', 'D', 'T')
19160d1ba665SWarner Losh 
19170d1ba665SWarner Losh ///
19180d1ba665SWarner Losh /// "ECDT" Embedded Controller Boot Resources Table
19190d1ba665SWarner Losh ///
19200d1ba665SWarner Losh #define EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE  SIGNATURE_32('E', 'C', 'D', 'T')
19210d1ba665SWarner Losh 
19220d1ba665SWarner Losh ///
19230d1ba665SWarner Losh /// "EINJ" Error Injection Table
19240d1ba665SWarner Losh ///
19250d1ba665SWarner Losh #define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_SIGNATURE  SIGNATURE_32('E', 'I', 'N', 'J')
19260d1ba665SWarner Losh 
19270d1ba665SWarner Losh ///
19280d1ba665SWarner Losh /// "ERST" Error Record Serialization Table
19290d1ba665SWarner Losh ///
19300d1ba665SWarner Losh #define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE  SIGNATURE_32('E', 'R', 'S', 'T')
19310d1ba665SWarner Losh 
19320d1ba665SWarner Losh ///
19330d1ba665SWarner Losh /// "FACP" Fixed ACPI Description Table
19340d1ba665SWarner Losh ///
19350d1ba665SWarner Losh #define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'P')
19360d1ba665SWarner Losh 
19370d1ba665SWarner Losh ///
19380d1ba665SWarner Losh /// "FACS" Firmware ACPI Control Structure
19390d1ba665SWarner Losh ///
19400d1ba665SWarner Losh #define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE  SIGNATURE_32('F', 'A', 'C', 'S')
19410d1ba665SWarner Losh 
19420d1ba665SWarner Losh ///
19430d1ba665SWarner Losh /// "FPDT" Firmware Performance Data Table
19440d1ba665SWarner Losh ///
19450d1ba665SWarner Losh #define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE  SIGNATURE_32('F', 'P', 'D', 'T')
19460d1ba665SWarner Losh 
19470d1ba665SWarner Losh ///
19480d1ba665SWarner Losh /// "GTDT" Generic Timer Description Table
19490d1ba665SWarner Losh ///
19500d1ba665SWarner Losh #define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('G', 'T', 'D', 'T')
19510d1ba665SWarner Losh 
19520d1ba665SWarner Losh ///
19530d1ba665SWarner Losh /// "HEST" Hardware Error Source Table
19540d1ba665SWarner Losh ///
19550d1ba665SWarner Losh #define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE  SIGNATURE_32('H', 'E', 'S', 'T')
19560d1ba665SWarner Losh 
19570d1ba665SWarner Losh ///
19580d1ba665SWarner Losh /// "MPST" Memory Power State Table
19590d1ba665SWarner Losh ///
19600d1ba665SWarner Losh #define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_SIGNATURE  SIGNATURE_32('M', 'P', 'S', 'T')
19610d1ba665SWarner Losh 
19620d1ba665SWarner Losh ///
19630d1ba665SWarner Losh /// "MSCT" Maximum System Characteristics Table
19640d1ba665SWarner Losh ///
19650d1ba665SWarner Losh #define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE  SIGNATURE_32('M', 'S', 'C', 'T')
19660d1ba665SWarner Losh 
19670d1ba665SWarner Losh ///
19680d1ba665SWarner Losh /// "PMTT" Platform Memory Topology Table
19690d1ba665SWarner Losh ///
19700d1ba665SWarner Losh #define EFI_ACPI_5_1_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE  SIGNATURE_32('P', 'M', 'T', 'T')
19710d1ba665SWarner Losh 
19720d1ba665SWarner Losh ///
19730d1ba665SWarner Losh /// "PSDT" Persistent System Description Table
19740d1ba665SWarner Losh ///
19750d1ba665SWarner Losh #define EFI_ACPI_5_1_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('P', 'S', 'D', 'T')
19760d1ba665SWarner Losh 
19770d1ba665SWarner Losh ///
19780d1ba665SWarner Losh /// "RASF" ACPI RAS Feature Table
19790d1ba665SWarner Losh ///
19800d1ba665SWarner Losh #define EFI_ACPI_5_1_ACPI_RAS_FEATURE_TABLE_SIGNATURE  SIGNATURE_32('R', 'A', 'S', 'F')
19810d1ba665SWarner Losh 
19820d1ba665SWarner Losh ///
19830d1ba665SWarner Losh /// "RSDT" Root System Description Table
19840d1ba665SWarner Losh ///
19850d1ba665SWarner Losh #define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('R', 'S', 'D', 'T')
19860d1ba665SWarner Losh 
19870d1ba665SWarner Losh ///
19880d1ba665SWarner Losh /// "SBST" Smart Battery Specification Table
19890d1ba665SWarner Losh ///
19900d1ba665SWarner Losh #define EFI_ACPI_5_1_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'B', 'S', 'T')
19910d1ba665SWarner Losh 
19920d1ba665SWarner Losh ///
19930d1ba665SWarner Losh /// "SLIT" System Locality Information Table
19940d1ba665SWarner Losh ///
19950d1ba665SWarner Losh #define EFI_ACPI_5_1_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'T')
19960d1ba665SWarner Losh 
19970d1ba665SWarner Losh ///
19980d1ba665SWarner Losh /// "SRAT" System Resource Affinity Table
19990d1ba665SWarner Losh ///
20000d1ba665SWarner Losh #define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE  SIGNATURE_32('S', 'R', 'A', 'T')
20010d1ba665SWarner Losh 
20020d1ba665SWarner Losh ///
20030d1ba665SWarner Losh /// "SSDT" Secondary System Description Table
20040d1ba665SWarner Losh ///
20050d1ba665SWarner Losh #define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'S', 'D', 'T')
20060d1ba665SWarner Losh 
20070d1ba665SWarner Losh ///
20080d1ba665SWarner Losh /// "XSDT" Extended System Description Table
20090d1ba665SWarner Losh ///
20100d1ba665SWarner Losh #define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('X', 'S', 'D', 'T')
20110d1ba665SWarner Losh 
20120d1ba665SWarner Losh ///
20130d1ba665SWarner Losh /// "BOOT" MS Simple Boot Spec
20140d1ba665SWarner Losh ///
20150d1ba665SWarner Losh #define EFI_ACPI_5_1_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE  SIGNATURE_32('B', 'O', 'O', 'T')
20160d1ba665SWarner Losh 
20170d1ba665SWarner Losh ///
20180d1ba665SWarner Losh /// "CSRT" MS Core System Resource Table
20190d1ba665SWarner Losh ///
20200d1ba665SWarner Losh #define EFI_ACPI_5_1_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('C', 'S', 'R', 'T')
20210d1ba665SWarner Losh 
20220d1ba665SWarner Losh ///
20230d1ba665SWarner Losh /// "DBG2" MS Debug Port 2 Spec
20240d1ba665SWarner Losh ///
20250d1ba665SWarner Losh #define EFI_ACPI_5_1_DEBUG_PORT_2_TABLE_SIGNATURE  SIGNATURE_32('D', 'B', 'G', '2')
20260d1ba665SWarner Losh 
20270d1ba665SWarner Losh ///
20280d1ba665SWarner Losh /// "DBGP" MS Debug Port Spec
20290d1ba665SWarner Losh ///
20300d1ba665SWarner Losh #define EFI_ACPI_5_1_DEBUG_PORT_TABLE_SIGNATURE  SIGNATURE_32('D', 'B', 'G', 'P')
20310d1ba665SWarner Losh 
20320d1ba665SWarner Losh ///
20330d1ba665SWarner Losh /// "DMAR" DMA Remapping Table
20340d1ba665SWarner Losh ///
20350d1ba665SWarner Losh #define EFI_ACPI_5_1_DMA_REMAPPING_TABLE_SIGNATURE  SIGNATURE_32('D', 'M', 'A', 'R')
20360d1ba665SWarner Losh 
20370d1ba665SWarner Losh ///
20380d1ba665SWarner Losh /// "DRTM" Dynamic Root of Trust for Measurement Table
20390d1ba665SWarner Losh ///
20400d1ba665SWarner Losh #define EFI_ACPI_5_1_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE  SIGNATURE_32('D', 'R', 'T', 'M')
20410d1ba665SWarner Losh 
20420d1ba665SWarner Losh ///
20430d1ba665SWarner Losh /// "ETDT" Event Timer Description Table
20440d1ba665SWarner Losh ///
20450d1ba665SWarner Losh #define EFI_ACPI_5_1_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('E', 'T', 'D', 'T')
20460d1ba665SWarner Losh 
20470d1ba665SWarner Losh ///
20480d1ba665SWarner Losh /// "HPET" IA-PC High Precision Event Timer Table
20490d1ba665SWarner Losh ///
20500d1ba665SWarner Losh #define EFI_ACPI_5_1_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE  SIGNATURE_32('H', 'P', 'E', 'T')
20510d1ba665SWarner Losh 
20520d1ba665SWarner Losh ///
20530d1ba665SWarner Losh /// "iBFT" iSCSI Boot Firmware Table
20540d1ba665SWarner Losh ///
20550d1ba665SWarner Losh #define EFI_ACPI_5_1_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE  SIGNATURE_32('i', 'B', 'F', 'T')
20560d1ba665SWarner Losh 
20570d1ba665SWarner Losh ///
20580d1ba665SWarner Losh /// "IVRS" I/O Virtualization Reporting Structure
20590d1ba665SWarner Losh ///
20600d1ba665SWarner Losh #define EFI_ACPI_5_1_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE  SIGNATURE_32('I', 'V', 'R', 'S')
20610d1ba665SWarner Losh 
20620d1ba665SWarner Losh ///
20630d1ba665SWarner Losh /// "LPIT" Low Power Idle Table
20640d1ba665SWarner Losh ///
20650d1ba665SWarner Losh #define EFI_ACPI_5_1_IO_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE  SIGNATURE_32('L', 'P', 'I', 'T')
20660d1ba665SWarner Losh 
20670d1ba665SWarner Losh ///
20680d1ba665SWarner Losh /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table
20690d1ba665SWarner Losh ///
20700d1ba665SWarner Losh #define EFI_ACPI_5_1_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'F', 'G')
20710d1ba665SWarner Losh 
20720d1ba665SWarner Losh ///
20730d1ba665SWarner Losh /// "MCHI" Management Controller Host Interface Table
20740d1ba665SWarner Losh ///
20750d1ba665SWarner Losh #define EFI_ACPI_5_1_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('M', 'C', 'H', 'I')
20760d1ba665SWarner Losh 
20770d1ba665SWarner Losh ///
20780d1ba665SWarner Losh /// "MSDM" MS Data Management Table
20790d1ba665SWarner Losh ///
20800d1ba665SWarner Losh #define EFI_ACPI_5_1_DATA_MANAGEMENT_TABLE_SIGNATURE  SIGNATURE_32('M', 'S', 'D', 'M')
20810d1ba665SWarner Losh 
20820d1ba665SWarner Losh ///
2083*3245fa21SMitchell Horne /// "PCCT" Platform Communications Channel Table
2084*3245fa21SMitchell Horne ///
2085*3245fa21SMitchell Horne #define EFI_ACPI_5_1_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE  SIGNATURE_32('P', 'C', 'C', 'T')
2086*3245fa21SMitchell Horne 
2087*3245fa21SMitchell Horne ///
20880d1ba665SWarner Losh /// "SLIC" MS Software Licensing Table Specification
20890d1ba665SWarner Losh ///
20900d1ba665SWarner Losh #define EFI_ACPI_5_1_SOFTWARE_LICENSING_TABLE_SIGNATURE  SIGNATURE_32('S', 'L', 'I', 'C')
20910d1ba665SWarner Losh 
20920d1ba665SWarner Losh ///
2093*3245fa21SMitchell Horne /// "SPCR" Serial Port Console Redirection Table
20940d1ba665SWarner Losh ///
20950d1ba665SWarner Losh #define EFI_ACPI_5_1_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'C', 'R')
20960d1ba665SWarner Losh 
20970d1ba665SWarner Losh ///
20980d1ba665SWarner Losh /// "SPMI" Server Platform Management Interface Table
20990d1ba665SWarner Losh ///
21000d1ba665SWarner Losh #define EFI_ACPI_5_1_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE  SIGNATURE_32('S', 'P', 'M', 'I')
21010d1ba665SWarner Losh 
21020d1ba665SWarner Losh ///
21030d1ba665SWarner Losh /// "TCPA" Trusted Computing Platform Alliance Capabilities Table
21040d1ba665SWarner Losh ///
21050d1ba665SWarner Losh #define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE  SIGNATURE_32('T', 'C', 'P', 'A')
21060d1ba665SWarner Losh 
21070d1ba665SWarner Losh ///
21080d1ba665SWarner Losh /// "TPM2" Trusted Computing Platform 1 Table
21090d1ba665SWarner Losh ///
21100d1ba665SWarner Losh #define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE  SIGNATURE_32('T', 'P', 'M', '2')
21110d1ba665SWarner Losh 
21120d1ba665SWarner Losh ///
21130d1ba665SWarner Losh /// "UEFI" UEFI ACPI Data Table
21140d1ba665SWarner Losh ///
21150d1ba665SWarner Losh #define EFI_ACPI_5_1_UEFI_ACPI_DATA_TABLE_SIGNATURE  SIGNATURE_32('U', 'E', 'F', 'I')
21160d1ba665SWarner Losh 
21170d1ba665SWarner Losh ///
21180d1ba665SWarner Losh /// "WAET" Windows ACPI Emulated Devices Table
21190d1ba665SWarner Losh ///
21200d1ba665SWarner Losh #define EFI_ACPI_5_1_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE  SIGNATURE_32('W', 'A', 'E', 'T')
21210d1ba665SWarner Losh 
21220d1ba665SWarner Losh ///
21230d1ba665SWarner Losh /// "WDAT" Watchdog Action Table
21240d1ba665SWarner Losh ///
21250d1ba665SWarner Losh #define EFI_ACPI_5_1_WATCHDOG_ACTION_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'A', 'T')
21260d1ba665SWarner Losh 
21270d1ba665SWarner Losh ///
21280d1ba665SWarner Losh /// "WDRT" Watchdog Resource Table
21290d1ba665SWarner Losh ///
21300d1ba665SWarner Losh #define EFI_ACPI_5_1_WATCHDOG_RESOURCE_TABLE_SIGNATURE  SIGNATURE_32('W', 'D', 'R', 'T')
21310d1ba665SWarner Losh 
21320d1ba665SWarner Losh ///
21330d1ba665SWarner Losh /// "WPBT" MS Platform Binary Table
21340d1ba665SWarner Losh ///
21350d1ba665SWarner Losh #define EFI_ACPI_5_1_PLATFORM_BINARY_TABLE_SIGNATURE  SIGNATURE_32('W', 'P', 'B', 'T')
21360d1ba665SWarner Losh 
21370d1ba665SWarner Losh #pragma pack()
21380d1ba665SWarner Losh 
21390d1ba665SWarner Losh #endif
2140