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