1*1370a723SSascha Wildner /** @file 2*1370a723SSascha Wildner ACPI 4.0 definitions from the ACPI Specification Revision 4.0a April 5, 2010 3*1370a723SSascha Wildner 4*1370a723SSascha Wildner Copyright (c) 2010 - 2022, Intel Corporation. All rights reserved.<BR> 5*1370a723SSascha Wildner SPDX-License-Identifier: BSD-2-Clause-Patent 6*1370a723SSascha Wildner **/ 7*1370a723SSascha Wildner 8*1370a723SSascha Wildner #ifndef _ACPI_4_0_H_ 9*1370a723SSascha Wildner #define _ACPI_4_0_H_ 10*1370a723SSascha Wildner 11*1370a723SSascha Wildner #include <IndustryStandard/Acpi30.h> 12*1370a723SSascha Wildner 13*1370a723SSascha Wildner // 14*1370a723SSascha Wildner // Ensure proper structure formats 15*1370a723SSascha Wildner // 16*1370a723SSascha Wildner #pragma pack(1) 17*1370a723SSascha Wildner 18*1370a723SSascha Wildner /// 19*1370a723SSascha Wildner /// ACPI 4.0 Generic Address Space definition 20*1370a723SSascha Wildner /// 21*1370a723SSascha Wildner typedef struct { 22*1370a723SSascha Wildner UINT8 AddressSpaceId; 23*1370a723SSascha Wildner UINT8 RegisterBitWidth; 24*1370a723SSascha Wildner UINT8 RegisterBitOffset; 25*1370a723SSascha Wildner UINT8 AccessSize; 26*1370a723SSascha Wildner UINT64 Address; 27*1370a723SSascha Wildner } EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE; 28*1370a723SSascha Wildner 29*1370a723SSascha Wildner // 30*1370a723SSascha Wildner // Generic Address Space Address IDs 31*1370a723SSascha Wildner // 32*1370a723SSascha Wildner #define EFI_ACPI_4_0_SYSTEM_MEMORY 0 33*1370a723SSascha Wildner #define EFI_ACPI_4_0_SYSTEM_IO 1 34*1370a723SSascha Wildner #define EFI_ACPI_4_0_PCI_CONFIGURATION_SPACE 2 35*1370a723SSascha Wildner #define EFI_ACPI_4_0_EMBEDDED_CONTROLLER 3 36*1370a723SSascha Wildner #define EFI_ACPI_4_0_SMBUS 4 37*1370a723SSascha Wildner #define EFI_ACPI_4_0_FUNCTIONAL_FIXED_HARDWARE 0x7F 38*1370a723SSascha Wildner 39*1370a723SSascha Wildner // 40*1370a723SSascha Wildner // Generic Address Space Access Sizes 41*1370a723SSascha Wildner // 42*1370a723SSascha Wildner #define EFI_ACPI_4_0_UNDEFINED 0 43*1370a723SSascha Wildner #define EFI_ACPI_4_0_BYTE 1 44*1370a723SSascha Wildner #define EFI_ACPI_4_0_WORD 2 45*1370a723SSascha Wildner #define EFI_ACPI_4_0_DWORD 3 46*1370a723SSascha Wildner #define EFI_ACPI_4_0_QWORD 4 47*1370a723SSascha Wildner 48*1370a723SSascha Wildner // 49*1370a723SSascha Wildner // ACPI 4.0 table structures 50*1370a723SSascha Wildner // 51*1370a723SSascha Wildner 52*1370a723SSascha Wildner /// 53*1370a723SSascha Wildner /// Root System Description Pointer Structure 54*1370a723SSascha Wildner /// 55*1370a723SSascha Wildner typedef struct { 56*1370a723SSascha Wildner UINT64 Signature; 57*1370a723SSascha Wildner UINT8 Checksum; 58*1370a723SSascha Wildner UINT8 OemId[6]; 59*1370a723SSascha Wildner UINT8 Revision; 60*1370a723SSascha Wildner UINT32 RsdtAddress; 61*1370a723SSascha Wildner UINT32 Length; 62*1370a723SSascha Wildner UINT64 XsdtAddress; 63*1370a723SSascha Wildner UINT8 ExtendedChecksum; 64*1370a723SSascha Wildner UINT8 Reserved[3]; 65*1370a723SSascha Wildner } EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER; 66*1370a723SSascha Wildner 67*1370a723SSascha Wildner /// 68*1370a723SSascha Wildner /// RSD_PTR Revision (as defined in ACPI 4.0b spec.) 69*1370a723SSascha Wildner /// 70*1370a723SSascha Wildner #define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 4.0a) says current value is 2 71*1370a723SSascha Wildner 72*1370a723SSascha Wildner /// 73*1370a723SSascha Wildner /// Common table header, this prefaces all ACPI tables, including FACS, but 74*1370a723SSascha Wildner /// excluding the RSD PTR structure 75*1370a723SSascha Wildner /// 76*1370a723SSascha Wildner typedef struct { 77*1370a723SSascha Wildner UINT32 Signature; 78*1370a723SSascha Wildner UINT32 Length; 79*1370a723SSascha Wildner } EFI_ACPI_4_0_COMMON_HEADER; 80*1370a723SSascha Wildner 81*1370a723SSascha Wildner // 82*1370a723SSascha Wildner // Root System Description Table 83*1370a723SSascha Wildner // No definition needed as it is a common description table header, the same with 84*1370a723SSascha Wildner // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. 85*1370a723SSascha Wildner // 86*1370a723SSascha Wildner 87*1370a723SSascha Wildner /// 88*1370a723SSascha Wildner /// RSDT Revision (as defined in ACPI 4.0 spec.) 89*1370a723SSascha Wildner /// 90*1370a723SSascha Wildner #define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 91*1370a723SSascha Wildner 92*1370a723SSascha Wildner // 93*1370a723SSascha Wildner // Extended System Description Table 94*1370a723SSascha Wildner // No definition needed as it is a common description table header, the same with 95*1370a723SSascha Wildner // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers. 96*1370a723SSascha Wildner // 97*1370a723SSascha Wildner 98*1370a723SSascha Wildner /// 99*1370a723SSascha Wildner /// XSDT Revision (as defined in ACPI 4.0 spec.) 100*1370a723SSascha Wildner /// 101*1370a723SSascha Wildner #define EFI_ACPI_4_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 102*1370a723SSascha Wildner 103*1370a723SSascha Wildner /// 104*1370a723SSascha Wildner /// Fixed ACPI Description Table Structure (FADT) 105*1370a723SSascha Wildner /// 106*1370a723SSascha Wildner typedef struct { 107*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 108*1370a723SSascha Wildner UINT32 FirmwareCtrl; 109*1370a723SSascha Wildner UINT32 Dsdt; 110*1370a723SSascha Wildner UINT8 Reserved0; 111*1370a723SSascha Wildner UINT8 PreferredPmProfile; 112*1370a723SSascha Wildner UINT16 SciInt; 113*1370a723SSascha Wildner UINT32 SmiCmd; 114*1370a723SSascha Wildner UINT8 AcpiEnable; 115*1370a723SSascha Wildner UINT8 AcpiDisable; 116*1370a723SSascha Wildner UINT8 S4BiosReq; 117*1370a723SSascha Wildner UINT8 PstateCnt; 118*1370a723SSascha Wildner UINT32 Pm1aEvtBlk; 119*1370a723SSascha Wildner UINT32 Pm1bEvtBlk; 120*1370a723SSascha Wildner UINT32 Pm1aCntBlk; 121*1370a723SSascha Wildner UINT32 Pm1bCntBlk; 122*1370a723SSascha Wildner UINT32 Pm2CntBlk; 123*1370a723SSascha Wildner UINT32 PmTmrBlk; 124*1370a723SSascha Wildner UINT32 Gpe0Blk; 125*1370a723SSascha Wildner UINT32 Gpe1Blk; 126*1370a723SSascha Wildner UINT8 Pm1EvtLen; 127*1370a723SSascha Wildner UINT8 Pm1CntLen; 128*1370a723SSascha Wildner UINT8 Pm2CntLen; 129*1370a723SSascha Wildner UINT8 PmTmrLen; 130*1370a723SSascha Wildner UINT8 Gpe0BlkLen; 131*1370a723SSascha Wildner UINT8 Gpe1BlkLen; 132*1370a723SSascha Wildner UINT8 Gpe1Base; 133*1370a723SSascha Wildner UINT8 CstCnt; 134*1370a723SSascha Wildner UINT16 PLvl2Lat; 135*1370a723SSascha Wildner UINT16 PLvl3Lat; 136*1370a723SSascha Wildner UINT16 FlushSize; 137*1370a723SSascha Wildner UINT16 FlushStride; 138*1370a723SSascha Wildner UINT8 DutyOffset; 139*1370a723SSascha Wildner UINT8 DutyWidth; 140*1370a723SSascha Wildner UINT8 DayAlrm; 141*1370a723SSascha Wildner UINT8 MonAlrm; 142*1370a723SSascha Wildner UINT8 Century; 143*1370a723SSascha Wildner UINT16 IaPcBootArch; 144*1370a723SSascha Wildner UINT8 Reserved1; 145*1370a723SSascha Wildner UINT32 Flags; 146*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE ResetReg; 147*1370a723SSascha Wildner UINT8 ResetValue; 148*1370a723SSascha Wildner UINT8 Reserved2[3]; 149*1370a723SSascha Wildner UINT64 XFirmwareCtrl; 150*1370a723SSascha Wildner UINT64 XDsdt; 151*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; 152*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; 153*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; 154*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; 155*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; 156*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; 157*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; 158*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; 159*1370a723SSascha Wildner } EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE; 160*1370a723SSascha Wildner 161*1370a723SSascha Wildner /// 162*1370a723SSascha Wildner /// FADT Version (as defined in ACPI 4.0 spec.) 163*1370a723SSascha Wildner /// 164*1370a723SSascha Wildner #define EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x04 165*1370a723SSascha Wildner 166*1370a723SSascha Wildner // 167*1370a723SSascha Wildner // Fixed ACPI Description Table Preferred Power Management Profile 168*1370a723SSascha Wildner // 169*1370a723SSascha Wildner #define EFI_ACPI_4_0_PM_PROFILE_UNSPECIFIED 0 170*1370a723SSascha Wildner #define EFI_ACPI_4_0_PM_PROFILE_DESKTOP 1 171*1370a723SSascha Wildner #define EFI_ACPI_4_0_PM_PROFILE_MOBILE 2 172*1370a723SSascha Wildner #define EFI_ACPI_4_0_PM_PROFILE_WORKSTATION 3 173*1370a723SSascha Wildner #define EFI_ACPI_4_0_PM_PROFILE_ENTERPRISE_SERVER 4 174*1370a723SSascha Wildner #define EFI_ACPI_4_0_PM_PROFILE_SOHO_SERVER 5 175*1370a723SSascha Wildner #define EFI_ACPI_4_0_PM_PROFILE_APPLIANCE_PC 6 176*1370a723SSascha Wildner #define EFI_ACPI_4_0_PM_PROFILE_PERFORMANCE_SERVER 7 177*1370a723SSascha Wildner 178*1370a723SSascha Wildner // 179*1370a723SSascha Wildner // Fixed ACPI Description Table Boot Architecture Flags 180*1370a723SSascha Wildner // All other bits are reserved and must be set to 0. 181*1370a723SSascha Wildner // 182*1370a723SSascha Wildner #define EFI_ACPI_4_0_LEGACY_DEVICES BIT0 183*1370a723SSascha Wildner #define EFI_ACPI_4_0_8042 BIT1 184*1370a723SSascha Wildner #define EFI_ACPI_4_0_VGA_NOT_PRESENT BIT2 185*1370a723SSascha Wildner #define EFI_ACPI_4_0_MSI_NOT_SUPPORTED BIT3 186*1370a723SSascha Wildner #define EFI_ACPI_4_0_PCIE_ASPM_CONTROLS BIT4 187*1370a723SSascha Wildner 188*1370a723SSascha Wildner // 189*1370a723SSascha Wildner // Fixed ACPI Description Table Fixed Feature Flags 190*1370a723SSascha Wildner // All other bits are reserved and must be set to 0. 191*1370a723SSascha Wildner // 192*1370a723SSascha Wildner #define EFI_ACPI_4_0_WBINVD BIT0 193*1370a723SSascha Wildner #define EFI_ACPI_4_0_WBINVD_FLUSH BIT1 194*1370a723SSascha Wildner #define EFI_ACPI_4_0_PROC_C1 BIT2 195*1370a723SSascha Wildner #define EFI_ACPI_4_0_P_LVL2_UP BIT3 196*1370a723SSascha Wildner #define EFI_ACPI_4_0_PWR_BUTTON BIT4 197*1370a723SSascha Wildner #define EFI_ACPI_4_0_SLP_BUTTON BIT5 198*1370a723SSascha Wildner #define EFI_ACPI_4_0_FIX_RTC BIT6 199*1370a723SSascha Wildner #define EFI_ACPI_4_0_RTC_S4 BIT7 200*1370a723SSascha Wildner #define EFI_ACPI_4_0_TMR_VAL_EXT BIT8 201*1370a723SSascha Wildner #define EFI_ACPI_4_0_DCK_CAP BIT9 202*1370a723SSascha Wildner #define EFI_ACPI_4_0_RESET_REG_SUP BIT10 203*1370a723SSascha Wildner #define EFI_ACPI_4_0_SEALED_CASE BIT11 204*1370a723SSascha Wildner #define EFI_ACPI_4_0_HEADLESS BIT12 205*1370a723SSascha Wildner #define EFI_ACPI_4_0_CPU_SW_SLP BIT13 206*1370a723SSascha Wildner #define EFI_ACPI_4_0_PCI_EXP_WAK BIT14 207*1370a723SSascha Wildner #define EFI_ACPI_4_0_USE_PLATFORM_CLOCK BIT15 208*1370a723SSascha Wildner #define EFI_ACPI_4_0_S4_RTC_STS_VALID BIT16 209*1370a723SSascha Wildner #define EFI_ACPI_4_0_REMOTE_POWER_ON_CAPABLE BIT17 210*1370a723SSascha Wildner #define EFI_ACPI_4_0_FORCE_APIC_CLUSTER_MODEL BIT18 211*1370a723SSascha Wildner #define EFI_ACPI_4_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19 212*1370a723SSascha Wildner 213*1370a723SSascha Wildner /// 214*1370a723SSascha Wildner /// Firmware ACPI Control Structure 215*1370a723SSascha Wildner /// 216*1370a723SSascha Wildner typedef struct { 217*1370a723SSascha Wildner UINT32 Signature; 218*1370a723SSascha Wildner UINT32 Length; 219*1370a723SSascha Wildner UINT32 HardwareSignature; 220*1370a723SSascha Wildner UINT32 FirmwareWakingVector; 221*1370a723SSascha Wildner UINT32 GlobalLock; 222*1370a723SSascha Wildner UINT32 Flags; 223*1370a723SSascha Wildner UINT64 XFirmwareWakingVector; 224*1370a723SSascha Wildner UINT8 Version; 225*1370a723SSascha Wildner UINT8 Reserved0[3]; 226*1370a723SSascha Wildner UINT32 OspmFlags; 227*1370a723SSascha Wildner UINT8 Reserved1[24]; 228*1370a723SSascha Wildner } EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; 229*1370a723SSascha Wildner 230*1370a723SSascha Wildner /// 231*1370a723SSascha Wildner /// FACS Version (as defined in ACPI 4.0 spec.) 232*1370a723SSascha Wildner /// 233*1370a723SSascha Wildner #define EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02 234*1370a723SSascha Wildner 235*1370a723SSascha Wildner /// 236*1370a723SSascha Wildner /// Firmware Control Structure Feature Flags 237*1370a723SSascha Wildner /// All other bits are reserved and must be set to 0. 238*1370a723SSascha Wildner /// 239*1370a723SSascha Wildner #define EFI_ACPI_4_0_S4BIOS_F BIT0 240*1370a723SSascha Wildner #define EFI_ACPI_4_0_64BIT_WAKE_SUPPORTED_F BIT1 241*1370a723SSascha Wildner 242*1370a723SSascha Wildner /// 243*1370a723SSascha Wildner /// OSPM Enabled Firmware Control Structure Flags 244*1370a723SSascha Wildner /// All other bits are reserved and must be set to 0. 245*1370a723SSascha Wildner /// 246*1370a723SSascha Wildner #define EFI_ACPI_4_0_OSPM_64BIT_WAKE__F BIT0 247*1370a723SSascha Wildner 248*1370a723SSascha Wildner // 249*1370a723SSascha Wildner // Differentiated System Description Table, 250*1370a723SSascha Wildner // Secondary System Description Table 251*1370a723SSascha Wildner // and Persistent System Description Table, 252*1370a723SSascha Wildner // no definition needed as they are common description table header, the same with 253*1370a723SSascha Wildner // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block. 254*1370a723SSascha Wildner // 255*1370a723SSascha Wildner #define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 256*1370a723SSascha Wildner #define EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 257*1370a723SSascha Wildner 258*1370a723SSascha Wildner /// 259*1370a723SSascha Wildner /// Multiple APIC Description Table header definition. The rest of the table 260*1370a723SSascha Wildner /// must be defined in a platform specific manner. 261*1370a723SSascha Wildner /// 262*1370a723SSascha Wildner typedef struct { 263*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 264*1370a723SSascha Wildner UINT32 LocalApicAddress; 265*1370a723SSascha Wildner UINT32 Flags; 266*1370a723SSascha Wildner } EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; 267*1370a723SSascha Wildner 268*1370a723SSascha Wildner /// 269*1370a723SSascha Wildner /// MADT Revision (as defined in ACPI 4.0 spec.) 270*1370a723SSascha Wildner /// 271*1370a723SSascha Wildner #define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03 272*1370a723SSascha Wildner 273*1370a723SSascha Wildner /// 274*1370a723SSascha Wildner /// Multiple APIC Flags 275*1370a723SSascha Wildner /// All other bits are reserved and must be set to 0. 276*1370a723SSascha Wildner /// 277*1370a723SSascha Wildner #define EFI_ACPI_4_0_PCAT_COMPAT BIT0 278*1370a723SSascha Wildner 279*1370a723SSascha Wildner // 280*1370a723SSascha Wildner // Multiple APIC Description Table APIC structure types 281*1370a723SSascha Wildner // All other values between 0x0B an 0xFF are reserved and 282*1370a723SSascha Wildner // will be ignored by OSPM. 283*1370a723SSascha Wildner // 284*1370a723SSascha Wildner #define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC 0x00 285*1370a723SSascha Wildner #define EFI_ACPI_4_0_IO_APIC 0x01 286*1370a723SSascha Wildner #define EFI_ACPI_4_0_INTERRUPT_SOURCE_OVERRIDE 0x02 287*1370a723SSascha Wildner #define EFI_ACPI_4_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 288*1370a723SSascha Wildner #define EFI_ACPI_4_0_LOCAL_APIC_NMI 0x04 289*1370a723SSascha Wildner #define EFI_ACPI_4_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 290*1370a723SSascha Wildner #define EFI_ACPI_4_0_IO_SAPIC 0x06 291*1370a723SSascha Wildner #define EFI_ACPI_4_0_LOCAL_SAPIC 0x07 292*1370a723SSascha Wildner #define EFI_ACPI_4_0_PLATFORM_INTERRUPT_SOURCES 0x08 293*1370a723SSascha Wildner #define EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC 0x09 294*1370a723SSascha Wildner #define EFI_ACPI_4_0_LOCAL_X2APIC_NMI 0x0A 295*1370a723SSascha Wildner 296*1370a723SSascha Wildner // 297*1370a723SSascha Wildner // APIC Structure Definitions 298*1370a723SSascha Wildner // 299*1370a723SSascha Wildner 300*1370a723SSascha Wildner /// 301*1370a723SSascha Wildner /// Processor Local APIC Structure Definition 302*1370a723SSascha Wildner /// 303*1370a723SSascha Wildner typedef struct { 304*1370a723SSascha Wildner UINT8 Type; 305*1370a723SSascha Wildner UINT8 Length; 306*1370a723SSascha Wildner UINT8 AcpiProcessorId; 307*1370a723SSascha Wildner UINT8 ApicId; 308*1370a723SSascha Wildner UINT32 Flags; 309*1370a723SSascha Wildner } EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_STRUCTURE; 310*1370a723SSascha Wildner 311*1370a723SSascha Wildner /// 312*1370a723SSascha Wildner /// Local APIC Flags. All other bits are reserved and must be 0. 313*1370a723SSascha Wildner /// 314*1370a723SSascha Wildner #define EFI_ACPI_4_0_LOCAL_APIC_ENABLED BIT0 315*1370a723SSascha Wildner 316*1370a723SSascha Wildner /// 317*1370a723SSascha Wildner /// IO APIC Structure 318*1370a723SSascha Wildner /// 319*1370a723SSascha Wildner typedef struct { 320*1370a723SSascha Wildner UINT8 Type; 321*1370a723SSascha Wildner UINT8 Length; 322*1370a723SSascha Wildner UINT8 IoApicId; 323*1370a723SSascha Wildner UINT8 Reserved; 324*1370a723SSascha Wildner UINT32 IoApicAddress; 325*1370a723SSascha Wildner UINT32 GlobalSystemInterruptBase; 326*1370a723SSascha Wildner } EFI_ACPI_4_0_IO_APIC_STRUCTURE; 327*1370a723SSascha Wildner 328*1370a723SSascha Wildner /// 329*1370a723SSascha Wildner /// Interrupt Source Override Structure 330*1370a723SSascha Wildner /// 331*1370a723SSascha Wildner typedef struct { 332*1370a723SSascha Wildner UINT8 Type; 333*1370a723SSascha Wildner UINT8 Length; 334*1370a723SSascha Wildner UINT8 Bus; 335*1370a723SSascha Wildner UINT8 Source; 336*1370a723SSascha Wildner UINT32 GlobalSystemInterrupt; 337*1370a723SSascha Wildner UINT16 Flags; 338*1370a723SSascha Wildner } EFI_ACPI_4_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; 339*1370a723SSascha Wildner 340*1370a723SSascha Wildner /// 341*1370a723SSascha Wildner /// Platform Interrupt Sources Structure Definition 342*1370a723SSascha Wildner /// 343*1370a723SSascha Wildner typedef struct { 344*1370a723SSascha Wildner UINT8 Type; 345*1370a723SSascha Wildner UINT8 Length; 346*1370a723SSascha Wildner UINT16 Flags; 347*1370a723SSascha Wildner UINT8 InterruptType; 348*1370a723SSascha Wildner UINT8 ProcessorId; 349*1370a723SSascha Wildner UINT8 ProcessorEid; 350*1370a723SSascha Wildner UINT8 IoSapicVector; 351*1370a723SSascha Wildner UINT32 GlobalSystemInterrupt; 352*1370a723SSascha Wildner UINT32 PlatformInterruptSourceFlags; 353*1370a723SSascha Wildner UINT8 CpeiProcessorOverride; 354*1370a723SSascha Wildner UINT8 Reserved[31]; 355*1370a723SSascha Wildner } EFI_ACPI_4_0_PLATFORM_INTERRUPT_APIC_STRUCTURE; 356*1370a723SSascha Wildner 357*1370a723SSascha Wildner // 358*1370a723SSascha Wildner // MPS INTI flags. 359*1370a723SSascha Wildner // All other bits are reserved and must be set to 0. 360*1370a723SSascha Wildner // 361*1370a723SSascha Wildner #define EFI_ACPI_4_0_POLARITY (3 << 0) 362*1370a723SSascha Wildner #define EFI_ACPI_4_0_TRIGGER_MODE (3 << 2) 363*1370a723SSascha Wildner 364*1370a723SSascha Wildner /// 365*1370a723SSascha Wildner /// Non-Maskable Interrupt Source Structure 366*1370a723SSascha Wildner /// 367*1370a723SSascha Wildner typedef struct { 368*1370a723SSascha Wildner UINT8 Type; 369*1370a723SSascha Wildner UINT8 Length; 370*1370a723SSascha Wildner UINT16 Flags; 371*1370a723SSascha Wildner UINT32 GlobalSystemInterrupt; 372*1370a723SSascha Wildner } EFI_ACPI_4_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; 373*1370a723SSascha Wildner 374*1370a723SSascha Wildner /// 375*1370a723SSascha Wildner /// Local APIC NMI Structure 376*1370a723SSascha Wildner /// 377*1370a723SSascha Wildner typedef struct { 378*1370a723SSascha Wildner UINT8 Type; 379*1370a723SSascha Wildner UINT8 Length; 380*1370a723SSascha Wildner UINT8 AcpiProcessorId; 381*1370a723SSascha Wildner UINT16 Flags; 382*1370a723SSascha Wildner UINT8 LocalApicLint; 383*1370a723SSascha Wildner } EFI_ACPI_4_0_LOCAL_APIC_NMI_STRUCTURE; 384*1370a723SSascha Wildner 385*1370a723SSascha Wildner /// 386*1370a723SSascha Wildner /// Local APIC Address Override Structure 387*1370a723SSascha Wildner /// 388*1370a723SSascha Wildner typedef struct { 389*1370a723SSascha Wildner UINT8 Type; 390*1370a723SSascha Wildner UINT8 Length; 391*1370a723SSascha Wildner UINT16 Reserved; 392*1370a723SSascha Wildner UINT64 LocalApicAddress; 393*1370a723SSascha Wildner } EFI_ACPI_4_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE; 394*1370a723SSascha Wildner 395*1370a723SSascha Wildner /// 396*1370a723SSascha Wildner /// IO SAPIC Structure 397*1370a723SSascha Wildner /// 398*1370a723SSascha Wildner typedef struct { 399*1370a723SSascha Wildner UINT8 Type; 400*1370a723SSascha Wildner UINT8 Length; 401*1370a723SSascha Wildner UINT8 IoApicId; 402*1370a723SSascha Wildner UINT8 Reserved; 403*1370a723SSascha Wildner UINT32 GlobalSystemInterruptBase; 404*1370a723SSascha Wildner UINT64 IoSapicAddress; 405*1370a723SSascha Wildner } EFI_ACPI_4_0_IO_SAPIC_STRUCTURE; 406*1370a723SSascha Wildner 407*1370a723SSascha Wildner /// 408*1370a723SSascha Wildner /// Local SAPIC Structure 409*1370a723SSascha Wildner /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String 410*1370a723SSascha Wildner /// 411*1370a723SSascha Wildner typedef struct { 412*1370a723SSascha Wildner UINT8 Type; 413*1370a723SSascha Wildner UINT8 Length; 414*1370a723SSascha Wildner UINT8 AcpiProcessorId; 415*1370a723SSascha Wildner UINT8 LocalSapicId; 416*1370a723SSascha Wildner UINT8 LocalSapicEid; 417*1370a723SSascha Wildner UINT8 Reserved[3]; 418*1370a723SSascha Wildner UINT32 Flags; 419*1370a723SSascha Wildner UINT32 ACPIProcessorUIDValue; 420*1370a723SSascha Wildner } EFI_ACPI_4_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE; 421*1370a723SSascha Wildner 422*1370a723SSascha Wildner /// 423*1370a723SSascha Wildner /// Platform Interrupt Sources Structure 424*1370a723SSascha Wildner /// 425*1370a723SSascha Wildner typedef struct { 426*1370a723SSascha Wildner UINT8 Type; 427*1370a723SSascha Wildner UINT8 Length; 428*1370a723SSascha Wildner UINT16 Flags; 429*1370a723SSascha Wildner UINT8 InterruptType; 430*1370a723SSascha Wildner UINT8 ProcessorId; 431*1370a723SSascha Wildner UINT8 ProcessorEid; 432*1370a723SSascha Wildner UINT8 IoSapicVector; 433*1370a723SSascha Wildner UINT32 GlobalSystemInterrupt; 434*1370a723SSascha Wildner UINT32 PlatformInterruptSourceFlags; 435*1370a723SSascha Wildner } EFI_ACPI_4_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE; 436*1370a723SSascha Wildner 437*1370a723SSascha Wildner /// 438*1370a723SSascha Wildner /// Platform Interrupt Source Flags. 439*1370a723SSascha Wildner /// All other bits are reserved and must be set to 0. 440*1370a723SSascha Wildner /// 441*1370a723SSascha Wildner #define EFI_ACPI_4_0_CPEI_PROCESSOR_OVERRIDE BIT0 442*1370a723SSascha Wildner 443*1370a723SSascha Wildner /// 444*1370a723SSascha Wildner /// Processor Local x2APIC Structure Definition 445*1370a723SSascha Wildner /// 446*1370a723SSascha Wildner typedef struct { 447*1370a723SSascha Wildner UINT8 Type; 448*1370a723SSascha Wildner UINT8 Length; 449*1370a723SSascha Wildner UINT8 Reserved[2]; 450*1370a723SSascha Wildner UINT32 X2ApicId; 451*1370a723SSascha Wildner UINT32 Flags; 452*1370a723SSascha Wildner UINT32 AcpiProcessorUid; 453*1370a723SSascha Wildner } EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE; 454*1370a723SSascha Wildner 455*1370a723SSascha Wildner /// 456*1370a723SSascha Wildner /// Local x2APIC NMI Structure 457*1370a723SSascha Wildner /// 458*1370a723SSascha Wildner typedef struct { 459*1370a723SSascha Wildner UINT8 Type; 460*1370a723SSascha Wildner UINT8 Length; 461*1370a723SSascha Wildner UINT16 Flags; 462*1370a723SSascha Wildner UINT32 AcpiProcessorUid; 463*1370a723SSascha Wildner UINT8 LocalX2ApicLint; 464*1370a723SSascha Wildner UINT8 Reserved[3]; 465*1370a723SSascha Wildner } EFI_ACPI_4_0_LOCAL_X2APIC_NMI_STRUCTURE; 466*1370a723SSascha Wildner 467*1370a723SSascha Wildner /// 468*1370a723SSascha Wildner /// Smart Battery Description Table (SBST) 469*1370a723SSascha Wildner /// 470*1370a723SSascha Wildner typedef struct { 471*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 472*1370a723SSascha Wildner UINT32 WarningEnergyLevel; 473*1370a723SSascha Wildner UINT32 LowEnergyLevel; 474*1370a723SSascha Wildner UINT32 CriticalEnergyLevel; 475*1370a723SSascha Wildner } EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE; 476*1370a723SSascha Wildner 477*1370a723SSascha Wildner /// 478*1370a723SSascha Wildner /// SBST Version (as defined in ACPI 4.0 spec.) 479*1370a723SSascha Wildner /// 480*1370a723SSascha Wildner #define EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01 481*1370a723SSascha Wildner 482*1370a723SSascha Wildner /// 483*1370a723SSascha Wildner /// Embedded Controller Boot Resources Table (ECDT) 484*1370a723SSascha Wildner /// The table is followed by a null terminated ASCII string that contains 485*1370a723SSascha Wildner /// a fully qualified reference to the name space object. 486*1370a723SSascha Wildner /// 487*1370a723SSascha Wildner typedef struct { 488*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 489*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE EcControl; 490*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE EcData; 491*1370a723SSascha Wildner UINT32 Uid; 492*1370a723SSascha Wildner UINT8 GpeBit; 493*1370a723SSascha Wildner } EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; 494*1370a723SSascha Wildner 495*1370a723SSascha Wildner /// 496*1370a723SSascha Wildner /// ECDT Version (as defined in ACPI 4.0 spec.) 497*1370a723SSascha Wildner /// 498*1370a723SSascha Wildner #define EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01 499*1370a723SSascha Wildner 500*1370a723SSascha Wildner /// 501*1370a723SSascha Wildner /// System Resource Affinity Table (SRAT. The rest of the table 502*1370a723SSascha Wildner /// must be defined in a platform specific manner. 503*1370a723SSascha Wildner /// 504*1370a723SSascha Wildner typedef struct { 505*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 506*1370a723SSascha Wildner UINT32 Reserved1; ///< Must be set to 1 507*1370a723SSascha Wildner UINT64 Reserved2; 508*1370a723SSascha Wildner } EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER; 509*1370a723SSascha Wildner 510*1370a723SSascha Wildner /// 511*1370a723SSascha Wildner /// SRAT Version (as defined in ACPI 4.0 spec.) 512*1370a723SSascha Wildner /// 513*1370a723SSascha Wildner #define EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03 514*1370a723SSascha Wildner 515*1370a723SSascha Wildner // 516*1370a723SSascha Wildner // SRAT structure types. 517*1370a723SSascha Wildner // All other values between 0x03 an 0xFF are reserved and 518*1370a723SSascha Wildner // will be ignored by OSPM. 519*1370a723SSascha Wildner // 520*1370a723SSascha Wildner #define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00 521*1370a723SSascha Wildner #define EFI_ACPI_4_0_MEMORY_AFFINITY 0x01 522*1370a723SSascha Wildner #define EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02 523*1370a723SSascha Wildner 524*1370a723SSascha Wildner /// 525*1370a723SSascha Wildner /// Processor Local APIC/SAPIC Affinity Structure Definition 526*1370a723SSascha Wildner /// 527*1370a723SSascha Wildner typedef struct { 528*1370a723SSascha Wildner UINT8 Type; 529*1370a723SSascha Wildner UINT8 Length; 530*1370a723SSascha Wildner UINT8 ProximityDomain7To0; 531*1370a723SSascha Wildner UINT8 ApicId; 532*1370a723SSascha Wildner UINT32 Flags; 533*1370a723SSascha Wildner UINT8 LocalSapicEid; 534*1370a723SSascha Wildner UINT8 ProximityDomain31To8[3]; 535*1370a723SSascha Wildner UINT32 ClockDomain; 536*1370a723SSascha Wildner } EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE; 537*1370a723SSascha Wildner 538*1370a723SSascha Wildner /// 539*1370a723SSascha Wildner /// Local APIC/SAPIC Flags. All other bits are reserved and must be 0. 540*1370a723SSascha Wildner /// 541*1370a723SSascha Wildner #define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0) 542*1370a723SSascha Wildner 543*1370a723SSascha Wildner /// 544*1370a723SSascha Wildner /// Memory Affinity Structure Definition 545*1370a723SSascha Wildner /// 546*1370a723SSascha Wildner typedef struct { 547*1370a723SSascha Wildner UINT8 Type; 548*1370a723SSascha Wildner UINT8 Length; 549*1370a723SSascha Wildner UINT32 ProximityDomain; 550*1370a723SSascha Wildner UINT16 Reserved1; 551*1370a723SSascha Wildner UINT32 AddressBaseLow; 552*1370a723SSascha Wildner UINT32 AddressBaseHigh; 553*1370a723SSascha Wildner UINT32 LengthLow; 554*1370a723SSascha Wildner UINT32 LengthHigh; 555*1370a723SSascha Wildner UINT32 Reserved2; 556*1370a723SSascha Wildner UINT32 Flags; 557*1370a723SSascha Wildner UINT64 Reserved3; 558*1370a723SSascha Wildner } EFI_ACPI_4_0_MEMORY_AFFINITY_STRUCTURE; 559*1370a723SSascha Wildner 560*1370a723SSascha Wildner // 561*1370a723SSascha Wildner // Memory Flags. All other bits are reserved and must be 0. 562*1370a723SSascha Wildner // 563*1370a723SSascha Wildner #define EFI_ACPI_4_0_MEMORY_ENABLED (1 << 0) 564*1370a723SSascha Wildner #define EFI_ACPI_4_0_MEMORY_HOT_PLUGGABLE (1 << 1) 565*1370a723SSascha Wildner #define EFI_ACPI_4_0_MEMORY_NONVOLATILE (1 << 2) 566*1370a723SSascha Wildner 567*1370a723SSascha Wildner /// 568*1370a723SSascha Wildner /// Processor Local x2APIC Affinity Structure Definition 569*1370a723SSascha Wildner /// 570*1370a723SSascha Wildner typedef struct { 571*1370a723SSascha Wildner UINT8 Type; 572*1370a723SSascha Wildner UINT8 Length; 573*1370a723SSascha Wildner UINT8 Reserved1[2]; 574*1370a723SSascha Wildner UINT32 ProximityDomain; 575*1370a723SSascha Wildner UINT32 X2ApicId; 576*1370a723SSascha Wildner UINT32 Flags; 577*1370a723SSascha Wildner UINT32 ClockDomain; 578*1370a723SSascha Wildner UINT8 Reserved2[4]; 579*1370a723SSascha Wildner } EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE; 580*1370a723SSascha Wildner 581*1370a723SSascha Wildner /// 582*1370a723SSascha Wildner /// System Locality Distance Information Table (SLIT). 583*1370a723SSascha Wildner /// The rest of the table is a matrix. 584*1370a723SSascha Wildner /// 585*1370a723SSascha Wildner typedef struct { 586*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 587*1370a723SSascha Wildner UINT64 NumberOfSystemLocalities; 588*1370a723SSascha Wildner } EFI_ACPI_4_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER; 589*1370a723SSascha Wildner 590*1370a723SSascha Wildner /// 591*1370a723SSascha Wildner /// SLIT Version (as defined in ACPI 4.0 spec.) 592*1370a723SSascha Wildner /// 593*1370a723SSascha Wildner #define EFI_ACPI_4_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01 594*1370a723SSascha Wildner 595*1370a723SSascha Wildner /// 596*1370a723SSascha Wildner /// Corrected Platform Error Polling Table (CPEP) 597*1370a723SSascha Wildner /// 598*1370a723SSascha Wildner typedef struct { 599*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 600*1370a723SSascha Wildner UINT8 Reserved[8]; 601*1370a723SSascha Wildner } EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER; 602*1370a723SSascha Wildner 603*1370a723SSascha Wildner /// 604*1370a723SSascha Wildner /// CPEP Version (as defined in ACPI 4.0 spec.) 605*1370a723SSascha Wildner /// 606*1370a723SSascha Wildner #define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01 607*1370a723SSascha Wildner 608*1370a723SSascha Wildner // 609*1370a723SSascha Wildner // CPEP processor structure types. 610*1370a723SSascha Wildner // 611*1370a723SSascha Wildner #define EFI_ACPI_4_0_CPEP_PROCESSOR_APIC_SAPIC 0x00 612*1370a723SSascha Wildner 613*1370a723SSascha Wildner /// 614*1370a723SSascha Wildner /// Corrected Platform Error Polling Processor Structure Definition 615*1370a723SSascha Wildner /// 616*1370a723SSascha Wildner typedef struct { 617*1370a723SSascha Wildner UINT8 Type; 618*1370a723SSascha Wildner UINT8 Length; 619*1370a723SSascha Wildner UINT8 ProcessorId; 620*1370a723SSascha Wildner UINT8 ProcessorEid; 621*1370a723SSascha Wildner UINT32 PollingInterval; 622*1370a723SSascha Wildner } EFI_ACPI_4_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE; 623*1370a723SSascha Wildner 624*1370a723SSascha Wildner /// 625*1370a723SSascha Wildner /// Maximum System Characteristics Table (MSCT) 626*1370a723SSascha Wildner /// 627*1370a723SSascha Wildner typedef struct { 628*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 629*1370a723SSascha Wildner UINT32 OffsetProxDomInfo; 630*1370a723SSascha Wildner UINT32 MaximumNumberOfProximityDomains; 631*1370a723SSascha Wildner UINT32 MaximumNumberOfClockDomains; 632*1370a723SSascha Wildner UINT64 MaximumPhysicalAddress; 633*1370a723SSascha Wildner } EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER; 634*1370a723SSascha Wildner 635*1370a723SSascha Wildner /// 636*1370a723SSascha Wildner /// MSCT Version (as defined in ACPI 4.0 spec.) 637*1370a723SSascha Wildner /// 638*1370a723SSascha Wildner #define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01 639*1370a723SSascha Wildner 640*1370a723SSascha Wildner /// 641*1370a723SSascha Wildner /// Maximum Proximity Domain Information Structure Definition 642*1370a723SSascha Wildner /// 643*1370a723SSascha Wildner typedef struct { 644*1370a723SSascha Wildner UINT8 Revision; 645*1370a723SSascha Wildner UINT8 Length; 646*1370a723SSascha Wildner UINT32 ProximityDomainRangeLow; 647*1370a723SSascha Wildner UINT32 ProximityDomainRangeHigh; 648*1370a723SSascha Wildner UINT32 MaximumProcessorCapacity; 649*1370a723SSascha Wildner UINT64 MaximumMemoryCapacity; 650*1370a723SSascha Wildner } EFI_ACPI_4_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE; 651*1370a723SSascha Wildner 652*1370a723SSascha Wildner /// 653*1370a723SSascha Wildner /// Boot Error Record Table (BERT) 654*1370a723SSascha Wildner /// 655*1370a723SSascha Wildner typedef struct { 656*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 657*1370a723SSascha Wildner UINT32 BootErrorRegionLength; 658*1370a723SSascha Wildner UINT64 BootErrorRegion; 659*1370a723SSascha Wildner } EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_HEADER; 660*1370a723SSascha Wildner 661*1370a723SSascha Wildner /// 662*1370a723SSascha Wildner /// BERT Version (as defined in ACPI 4.0 spec.) 663*1370a723SSascha Wildner /// 664*1370a723SSascha Wildner #define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01 665*1370a723SSascha Wildner 666*1370a723SSascha Wildner /// 667*1370a723SSascha Wildner /// Boot Error Region Block Status Definition 668*1370a723SSascha Wildner /// 669*1370a723SSascha Wildner typedef struct { 670*1370a723SSascha Wildner UINT32 UncorrectableErrorValid : 1; 671*1370a723SSascha Wildner UINT32 CorrectableErrorValid : 1; 672*1370a723SSascha Wildner UINT32 MultipleUncorrectableErrors : 1; 673*1370a723SSascha Wildner UINT32 MultipleCorrectableErrors : 1; 674*1370a723SSascha Wildner UINT32 ErrorDataEntryCount : 10; 675*1370a723SSascha Wildner UINT32 Reserved : 18; 676*1370a723SSascha Wildner } EFI_ACPI_4_0_ERROR_BLOCK_STATUS; 677*1370a723SSascha Wildner 678*1370a723SSascha Wildner /// 679*1370a723SSascha Wildner /// Boot Error Region Definition 680*1370a723SSascha Wildner /// 681*1370a723SSascha Wildner typedef struct { 682*1370a723SSascha Wildner EFI_ACPI_4_0_ERROR_BLOCK_STATUS BlockStatus; 683*1370a723SSascha Wildner UINT32 RawDataOffset; 684*1370a723SSascha Wildner UINT32 RawDataLength; 685*1370a723SSascha Wildner UINT32 DataLength; 686*1370a723SSascha Wildner UINT32 ErrorSeverity; 687*1370a723SSascha Wildner } EFI_ACPI_4_0_BOOT_ERROR_REGION_STRUCTURE; 688*1370a723SSascha Wildner 689*1370a723SSascha Wildner // 690*1370a723SSascha Wildner // Boot Error Severity types 691*1370a723SSascha Wildner // 692*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTABLE 0x00 693*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERROR_SEVERITY_RECOVERABLE 0x00 694*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERROR_SEVERITY_FATAL 0x01 695*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTED 0x02 696*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERROR_SEVERITY_NONE 0x03 697*1370a723SSascha Wildner 698*1370a723SSascha Wildner /// 699*1370a723SSascha Wildner /// Generic Error Data Entry Definition 700*1370a723SSascha Wildner /// 701*1370a723SSascha Wildner typedef struct { 702*1370a723SSascha Wildner UINT8 SectionType[16]; 703*1370a723SSascha Wildner UINT32 ErrorSeverity; 704*1370a723SSascha Wildner UINT16 Revision; 705*1370a723SSascha Wildner UINT8 ValidationBits; 706*1370a723SSascha Wildner UINT8 Flags; 707*1370a723SSascha Wildner UINT32 ErrorDataLength; 708*1370a723SSascha Wildner UINT8 FruId[16]; 709*1370a723SSascha Wildner UINT8 FruText[20]; 710*1370a723SSascha Wildner } EFI_ACPI_4_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE; 711*1370a723SSascha Wildner 712*1370a723SSascha Wildner /// 713*1370a723SSascha Wildner /// Generic Error Data Entry Version (as defined in ACPI 4.0 spec.) 714*1370a723SSascha Wildner /// 715*1370a723SSascha Wildner #define EFI_ACPI_4_0_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201 716*1370a723SSascha Wildner 717*1370a723SSascha Wildner /// 718*1370a723SSascha Wildner /// HEST - Hardware Error Source Table 719*1370a723SSascha Wildner /// 720*1370a723SSascha Wildner typedef struct { 721*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 722*1370a723SSascha Wildner UINT32 ErrorSourceCount; 723*1370a723SSascha Wildner } EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER; 724*1370a723SSascha Wildner 725*1370a723SSascha Wildner /// 726*1370a723SSascha Wildner /// HEST Version (as defined in ACPI 4.0 spec.) 727*1370a723SSascha Wildner /// 728*1370a723SSascha Wildner #define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01 729*1370a723SSascha Wildner 730*1370a723SSascha Wildner // 731*1370a723SSascha Wildner // Error Source structure types. 732*1370a723SSascha Wildner // 733*1370a723SSascha Wildner #define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00 734*1370a723SSascha Wildner #define EFI_ACPI_4_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01 735*1370a723SSascha Wildner #define EFI_ACPI_4_0_IA32_ARCHITECTURE_NMI_ERROR 0x02 736*1370a723SSascha Wildner #define EFI_ACPI_4_0_PCI_EXPRESS_ROOT_PORT_AER 0x06 737*1370a723SSascha Wildner #define EFI_ACPI_4_0_PCI_EXPRESS_DEVICE_AER 0x07 738*1370a723SSascha Wildner #define EFI_ACPI_4_0_PCI_EXPRESS_BRIDGE_AER 0x08 739*1370a723SSascha Wildner #define EFI_ACPI_4_0_GENERIC_HARDWARE_ERROR 0x09 740*1370a723SSascha Wildner 741*1370a723SSascha Wildner // 742*1370a723SSascha Wildner // Error Source structure flags. 743*1370a723SSascha Wildner // 744*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0) 745*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_GLOBAL (1 << 1) 746*1370a723SSascha Wildner 747*1370a723SSascha Wildner /// 748*1370a723SSascha Wildner /// IA-32 Architecture Machine Check Exception Structure Definition 749*1370a723SSascha Wildner /// 750*1370a723SSascha Wildner typedef struct { 751*1370a723SSascha Wildner UINT16 Type; 752*1370a723SSascha Wildner UINT16 SourceId; 753*1370a723SSascha Wildner UINT8 Reserved0[2]; 754*1370a723SSascha Wildner UINT8 Flags; 755*1370a723SSascha Wildner UINT8 Enabled; 756*1370a723SSascha Wildner UINT32 NumberOfRecordsToPreAllocate; 757*1370a723SSascha Wildner UINT32 MaxSectionsPerRecord; 758*1370a723SSascha Wildner UINT64 GlobalCapabilityInitData; 759*1370a723SSascha Wildner UINT64 GlobalControlInitData; 760*1370a723SSascha Wildner UINT8 NumberOfHardwareBanks; 761*1370a723SSascha Wildner UINT8 Reserved1[7]; 762*1370a723SSascha Wildner } EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE; 763*1370a723SSascha Wildner 764*1370a723SSascha Wildner /// 765*1370a723SSascha Wildner /// IA-32 Architecture Machine Check Bank Structure Definition 766*1370a723SSascha Wildner /// 767*1370a723SSascha Wildner typedef struct { 768*1370a723SSascha Wildner UINT8 BankNumber; 769*1370a723SSascha Wildner UINT8 ClearStatusOnInitialization; 770*1370a723SSascha Wildner UINT8 StatusDataFormat; 771*1370a723SSascha Wildner UINT8 Reserved0; 772*1370a723SSascha Wildner UINT32 ControlRegisterMsrAddress; 773*1370a723SSascha Wildner UINT64 ControlInitData; 774*1370a723SSascha Wildner UINT32 StatusRegisterMsrAddress; 775*1370a723SSascha Wildner UINT32 AddressRegisterMsrAddress; 776*1370a723SSascha Wildner UINT32 MiscRegisterMsrAddress; 777*1370a723SSascha Wildner } EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE; 778*1370a723SSascha Wildner 779*1370a723SSascha Wildner /// 780*1370a723SSascha Wildner /// IA-32 Architecture Machine Check Bank Structure MCA data format 781*1370a723SSascha Wildner /// 782*1370a723SSascha Wildner #define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00 783*1370a723SSascha Wildner #define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01 784*1370a723SSascha Wildner #define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02 785*1370a723SSascha Wildner 786*1370a723SSascha Wildner // 787*1370a723SSascha Wildner // Hardware Error Notification types. All other values are reserved 788*1370a723SSascha Wildner // 789*1370a723SSascha Wildner #define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00 790*1370a723SSascha Wildner #define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01 791*1370a723SSascha Wildner #define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02 792*1370a723SSascha Wildner #define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_SCI 0x03 793*1370a723SSascha Wildner #define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_NMI 0x04 794*1370a723SSascha Wildner 795*1370a723SSascha Wildner /// 796*1370a723SSascha Wildner /// Hardware Error Notification Configuration Write Enable Structure Definition 797*1370a723SSascha Wildner /// 798*1370a723SSascha Wildner typedef struct { 799*1370a723SSascha Wildner UINT16 Type : 1; 800*1370a723SSascha Wildner UINT16 PollInterval : 1; 801*1370a723SSascha Wildner UINT16 SwitchToPollingThresholdValue : 1; 802*1370a723SSascha Wildner UINT16 SwitchToPollingThresholdWindow : 1; 803*1370a723SSascha Wildner UINT16 ErrorThresholdValue : 1; 804*1370a723SSascha Wildner UINT16 ErrorThresholdWindow : 1; 805*1370a723SSascha Wildner UINT16 Reserved : 10; 806*1370a723SSascha Wildner } EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE; 807*1370a723SSascha Wildner 808*1370a723SSascha Wildner /// 809*1370a723SSascha Wildner /// Hardware Error Notification Structure Definition 810*1370a723SSascha Wildner /// 811*1370a723SSascha Wildner typedef struct { 812*1370a723SSascha Wildner UINT8 Type; 813*1370a723SSascha Wildner UINT8 Length; 814*1370a723SSascha Wildner EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable; 815*1370a723SSascha Wildner UINT32 PollInterval; 816*1370a723SSascha Wildner UINT32 Vector; 817*1370a723SSascha Wildner UINT32 SwitchToPollingThresholdValue; 818*1370a723SSascha Wildner UINT32 SwitchToPollingThresholdWindow; 819*1370a723SSascha Wildner UINT32 ErrorThresholdValue; 820*1370a723SSascha Wildner UINT32 ErrorThresholdWindow; 821*1370a723SSascha Wildner } EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE; 822*1370a723SSascha Wildner 823*1370a723SSascha Wildner /// 824*1370a723SSascha Wildner /// IA-32 Architecture Corrected Machine Check Structure Definition 825*1370a723SSascha Wildner /// 826*1370a723SSascha Wildner typedef struct { 827*1370a723SSascha Wildner UINT16 Type; 828*1370a723SSascha Wildner UINT16 SourceId; 829*1370a723SSascha Wildner UINT8 Reserved0[2]; 830*1370a723SSascha Wildner UINT8 Flags; 831*1370a723SSascha Wildner UINT8 Enabled; 832*1370a723SSascha Wildner UINT32 NumberOfRecordsToPreAllocate; 833*1370a723SSascha Wildner UINT32 MaxSectionsPerRecord; 834*1370a723SSascha Wildner EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 835*1370a723SSascha Wildner UINT8 NumberOfHardwareBanks; 836*1370a723SSascha Wildner UINT8 Reserved1[3]; 837*1370a723SSascha Wildner } EFI_ACPI_4_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE; 838*1370a723SSascha Wildner 839*1370a723SSascha Wildner /// 840*1370a723SSascha Wildner /// IA-32 Architecture NMI Error Structure Definition 841*1370a723SSascha Wildner /// 842*1370a723SSascha Wildner typedef struct { 843*1370a723SSascha Wildner UINT16 Type; 844*1370a723SSascha Wildner UINT16 SourceId; 845*1370a723SSascha Wildner UINT8 Reserved0[2]; 846*1370a723SSascha Wildner UINT32 NumberOfRecordsToPreAllocate; 847*1370a723SSascha Wildner UINT32 MaxSectionsPerRecord; 848*1370a723SSascha Wildner UINT32 MaxRawDataLength; 849*1370a723SSascha Wildner } EFI_ACPI_4_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE; 850*1370a723SSascha Wildner 851*1370a723SSascha Wildner /// 852*1370a723SSascha Wildner /// PCI Express Root Port AER Structure Definition 853*1370a723SSascha Wildner /// 854*1370a723SSascha Wildner typedef struct { 855*1370a723SSascha Wildner UINT16 Type; 856*1370a723SSascha Wildner UINT16 SourceId; 857*1370a723SSascha Wildner UINT8 Reserved0[2]; 858*1370a723SSascha Wildner UINT8 Flags; 859*1370a723SSascha Wildner UINT8 Enabled; 860*1370a723SSascha Wildner UINT32 NumberOfRecordsToPreAllocate; 861*1370a723SSascha Wildner UINT32 MaxSectionsPerRecord; 862*1370a723SSascha Wildner UINT32 Bus; 863*1370a723SSascha Wildner UINT16 Device; 864*1370a723SSascha Wildner UINT16 Function; 865*1370a723SSascha Wildner UINT16 DeviceControl; 866*1370a723SSascha Wildner UINT8 Reserved1[2]; 867*1370a723SSascha Wildner UINT32 UncorrectableErrorMask; 868*1370a723SSascha Wildner UINT32 UncorrectableErrorSeverity; 869*1370a723SSascha Wildner UINT32 CorrectableErrorMask; 870*1370a723SSascha Wildner UINT32 AdvancedErrorCapabilitiesAndControl; 871*1370a723SSascha Wildner UINT32 RootErrorCommand; 872*1370a723SSascha Wildner } EFI_ACPI_4_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE; 873*1370a723SSascha Wildner 874*1370a723SSascha Wildner /// 875*1370a723SSascha Wildner /// PCI Express Device AER Structure Definition 876*1370a723SSascha Wildner /// 877*1370a723SSascha Wildner typedef struct { 878*1370a723SSascha Wildner UINT16 Type; 879*1370a723SSascha Wildner UINT16 SourceId; 880*1370a723SSascha Wildner UINT8 Reserved0[2]; 881*1370a723SSascha Wildner UINT8 Flags; 882*1370a723SSascha Wildner UINT8 Enabled; 883*1370a723SSascha Wildner UINT32 NumberOfRecordsToPreAllocate; 884*1370a723SSascha Wildner UINT32 MaxSectionsPerRecord; 885*1370a723SSascha Wildner UINT32 Bus; 886*1370a723SSascha Wildner UINT16 Device; 887*1370a723SSascha Wildner UINT16 Function; 888*1370a723SSascha Wildner UINT16 DeviceControl; 889*1370a723SSascha Wildner UINT8 Reserved1[2]; 890*1370a723SSascha Wildner UINT32 UncorrectableErrorMask; 891*1370a723SSascha Wildner UINT32 UncorrectableErrorSeverity; 892*1370a723SSascha Wildner UINT32 CorrectableErrorMask; 893*1370a723SSascha Wildner UINT32 AdvancedErrorCapabilitiesAndControl; 894*1370a723SSascha Wildner } EFI_ACPI_4_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE; 895*1370a723SSascha Wildner 896*1370a723SSascha Wildner /// 897*1370a723SSascha Wildner /// PCI Express Bridge AER Structure Definition 898*1370a723SSascha Wildner /// 899*1370a723SSascha Wildner typedef struct { 900*1370a723SSascha Wildner UINT16 Type; 901*1370a723SSascha Wildner UINT16 SourceId; 902*1370a723SSascha Wildner UINT8 Reserved0[2]; 903*1370a723SSascha Wildner UINT8 Flags; 904*1370a723SSascha Wildner UINT8 Enabled; 905*1370a723SSascha Wildner UINT32 NumberOfRecordsToPreAllocate; 906*1370a723SSascha Wildner UINT32 MaxSectionsPerRecord; 907*1370a723SSascha Wildner UINT32 Bus; 908*1370a723SSascha Wildner UINT16 Device; 909*1370a723SSascha Wildner UINT16 Function; 910*1370a723SSascha Wildner UINT16 DeviceControl; 911*1370a723SSascha Wildner UINT8 Reserved1[2]; 912*1370a723SSascha Wildner UINT32 UncorrectableErrorMask; 913*1370a723SSascha Wildner UINT32 UncorrectableErrorSeverity; 914*1370a723SSascha Wildner UINT32 CorrectableErrorMask; 915*1370a723SSascha Wildner UINT32 AdvancedErrorCapabilitiesAndControl; 916*1370a723SSascha Wildner UINT32 SecondaryUncorrectableErrorMask; 917*1370a723SSascha Wildner UINT32 SecondaryUncorrectableErrorSeverity; 918*1370a723SSascha Wildner UINT32 SecondaryAdvancedErrorCapabilitiesAndControl; 919*1370a723SSascha Wildner } EFI_ACPI_4_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE; 920*1370a723SSascha Wildner 921*1370a723SSascha Wildner /// 922*1370a723SSascha Wildner /// Generic Hardware Error Source Structure Definition 923*1370a723SSascha Wildner /// 924*1370a723SSascha Wildner typedef struct { 925*1370a723SSascha Wildner UINT16 Type; 926*1370a723SSascha Wildner UINT16 SourceId; 927*1370a723SSascha Wildner UINT16 RelatedSourceId; 928*1370a723SSascha Wildner UINT8 Flags; 929*1370a723SSascha Wildner UINT8 Enabled; 930*1370a723SSascha Wildner UINT32 NumberOfRecordsToPreAllocate; 931*1370a723SSascha Wildner UINT32 MaxSectionsPerRecord; 932*1370a723SSascha Wildner UINT32 MaxRawDataLength; 933*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; 934*1370a723SSascha Wildner EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 935*1370a723SSascha Wildner UINT32 ErrorStatusBlockLength; 936*1370a723SSascha Wildner } EFI_ACPI_4_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE; 937*1370a723SSascha Wildner 938*1370a723SSascha Wildner /// 939*1370a723SSascha Wildner /// Generic Error Status Definition 940*1370a723SSascha Wildner /// 941*1370a723SSascha Wildner typedef struct { 942*1370a723SSascha Wildner EFI_ACPI_4_0_ERROR_BLOCK_STATUS BlockStatus; 943*1370a723SSascha Wildner UINT32 RawDataOffset; 944*1370a723SSascha Wildner UINT32 RawDataLength; 945*1370a723SSascha Wildner UINT32 DataLength; 946*1370a723SSascha Wildner UINT32 ErrorSeverity; 947*1370a723SSascha Wildner } EFI_ACPI_4_0_GENERIC_ERROR_STATUS_STRUCTURE; 948*1370a723SSascha Wildner 949*1370a723SSascha Wildner /// 950*1370a723SSascha Wildner /// ERST - Error Record Serialization Table 951*1370a723SSascha Wildner /// 952*1370a723SSascha Wildner typedef struct { 953*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 954*1370a723SSascha Wildner UINT32 SerializationHeaderSize; 955*1370a723SSascha Wildner UINT8 Reserved0[4]; 956*1370a723SSascha Wildner UINT32 InstructionEntryCount; 957*1370a723SSascha Wildner } EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER; 958*1370a723SSascha Wildner 959*1370a723SSascha Wildner /// 960*1370a723SSascha Wildner /// ERST Version (as defined in ACPI 4.0 spec.) 961*1370a723SSascha Wildner /// 962*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01 963*1370a723SSascha Wildner 964*1370a723SSascha Wildner /// 965*1370a723SSascha Wildner /// ERST Serialization Actions 966*1370a723SSascha Wildner /// 967*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_BEGIN_WRITE_OPERATION 0x00 968*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_BEGIN_READ_OPERATION 0x01 969*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_BEGIN_CLEAR_OPERATION 0x02 970*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_END_OPERATION 0x03 971*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_SET_RECORD_OFFSET 0x04 972*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_EXECUTE_OPERATION 0x05 973*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_CHECK_BUSY_STATUS 0x06 974*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_GET_COMMAND_STATUS 0x07 975*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_GET_RECORD_IDENTIFIER 0x08 976*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_SET_RECORD_IDENTIFIER 0x09 977*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_GET_RECORD_COUNT 0x0A 978*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B 979*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D 980*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E 981*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F 982*1370a723SSascha Wildner 983*1370a723SSascha Wildner /// 984*1370a723SSascha Wildner /// ERST Action Command Status 985*1370a723SSascha Wildner /// 986*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS 0x00 987*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_STATUS_NOT_ENOUGH_SPACE 0x01 988*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_STATUS_HARDWARE_NOT_AVAILABLE 0x02 989*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_STATUS_FAILED 0x03 990*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_STATUS_RECORD_STORE_EMPTY 0x04 991*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_STATUS_RECORD_NOT_FOUND 0x05 992*1370a723SSascha Wildner 993*1370a723SSascha Wildner /// 994*1370a723SSascha Wildner /// ERST Serialization Instructions 995*1370a723SSascha Wildner /// 996*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_READ_REGISTER 0x00 997*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_READ_REGISTER_VALUE 0x01 998*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_WRITE_REGISTER 0x02 999*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_WRITE_REGISTER_VALUE 0x03 1000*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_NOOP 0x04 1001*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_LOAD_VAR1 0x05 1002*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_LOAD_VAR2 0x06 1003*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_STORE_VAR1 0x07 1004*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_ADD 0x08 1005*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_SUBTRACT 0x09 1006*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_ADD_VALUE 0x0A 1007*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_SUBTRACT_VALUE 0x0B 1008*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_STALL 0x0C 1009*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_STALL_WHILE_TRUE 0x0D 1010*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E 1011*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_GOTO 0x0F 1012*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_SET_SRC_ADDRESS_BASE 0x10 1013*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_SET_DST_ADDRESS_BASE 0x11 1014*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_MOVE_DATA 0x12 1015*1370a723SSascha Wildner 1016*1370a723SSascha Wildner /// 1017*1370a723SSascha Wildner /// ERST Instruction Flags 1018*1370a723SSascha Wildner /// 1019*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERST_PRESERVE_REGISTER 0x01 1020*1370a723SSascha Wildner 1021*1370a723SSascha Wildner /// 1022*1370a723SSascha Wildner /// ERST Serialization Instruction Entry 1023*1370a723SSascha Wildner /// 1024*1370a723SSascha Wildner typedef struct { 1025*1370a723SSascha Wildner UINT8 SerializationAction; 1026*1370a723SSascha Wildner UINT8 Instruction; 1027*1370a723SSascha Wildner UINT8 Flags; 1028*1370a723SSascha Wildner UINT8 Reserved0; 1029*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 1030*1370a723SSascha Wildner UINT64 Value; 1031*1370a723SSascha Wildner UINT64 Mask; 1032*1370a723SSascha Wildner } EFI_ACPI_4_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY; 1033*1370a723SSascha Wildner 1034*1370a723SSascha Wildner /// 1035*1370a723SSascha Wildner /// EINJ - Error Injection Table 1036*1370a723SSascha Wildner /// 1037*1370a723SSascha Wildner typedef struct { 1038*1370a723SSascha Wildner EFI_ACPI_DESCRIPTION_HEADER Header; 1039*1370a723SSascha Wildner UINT32 InjectionHeaderSize; 1040*1370a723SSascha Wildner UINT8 InjectionFlags; 1041*1370a723SSascha Wildner UINT8 Reserved0[3]; 1042*1370a723SSascha Wildner UINT32 InjectionEntryCount; 1043*1370a723SSascha Wildner } EFI_ACPI_4_0_ERROR_INJECTION_TABLE_HEADER; 1044*1370a723SSascha Wildner 1045*1370a723SSascha Wildner /// 1046*1370a723SSascha Wildner /// EINJ Version (as defined in ACPI 4.0 spec.) 1047*1370a723SSascha Wildner /// 1048*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_REVISION 0x01 1049*1370a723SSascha Wildner 1050*1370a723SSascha Wildner /// 1051*1370a723SSascha Wildner /// EINJ Error Injection Actions 1052*1370a723SSascha Wildner /// 1053*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_BEGIN_INJECTION_OPERATION 0x00 1054*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01 1055*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_SET_ERROR_TYPE 0x02 1056*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_GET_ERROR_TYPE 0x03 1057*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_END_OPERATION 0x04 1058*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_EXECUTE_OPERATION 0x05 1059*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_CHECK_BUSY_STATUS 0x06 1060*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_GET_COMMAND_STATUS 0x07 1061*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_TRIGGER_ERROR 0xFF 1062*1370a723SSascha Wildner 1063*1370a723SSascha Wildner /// 1064*1370a723SSascha Wildner /// EINJ Action Command Status 1065*1370a723SSascha Wildner /// 1066*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS 0x00 1067*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_STATUS_UNKNOWN_FAILURE 0x01 1068*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_STATUS_INVALID_ACCESS 0x02 1069*1370a723SSascha Wildner 1070*1370a723SSascha Wildner /// 1071*1370a723SSascha Wildner /// EINJ Error Type Definition 1072*1370a723SSascha Wildner /// 1073*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0) 1074*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1) 1075*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2) 1076*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3) 1077*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4) 1078*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5) 1079*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6) 1080*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7) 1081*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8) 1082*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9) 1083*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10) 1084*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11) 1085*1370a723SSascha Wildner 1086*1370a723SSascha Wildner /// 1087*1370a723SSascha Wildner /// EINJ Injection Instructions 1088*1370a723SSascha Wildner /// 1089*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_READ_REGISTER 0x00 1090*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_READ_REGISTER_VALUE 0x01 1091*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_WRITE_REGISTER 0x02 1092*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_WRITE_REGISTER_VALUE 0x03 1093*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_NOOP 0x04 1094*1370a723SSascha Wildner 1095*1370a723SSascha Wildner /// 1096*1370a723SSascha Wildner /// EINJ Instruction Flags 1097*1370a723SSascha Wildner /// 1098*1370a723SSascha Wildner #define EFI_ACPI_4_0_EINJ_PRESERVE_REGISTER 0x01 1099*1370a723SSascha Wildner 1100*1370a723SSascha Wildner /// 1101*1370a723SSascha Wildner /// EINJ Injection Instruction Entry 1102*1370a723SSascha Wildner /// 1103*1370a723SSascha Wildner typedef struct { 1104*1370a723SSascha Wildner UINT8 InjectionAction; 1105*1370a723SSascha Wildner UINT8 Instruction; 1106*1370a723SSascha Wildner UINT8 Flags; 1107*1370a723SSascha Wildner UINT8 Reserved0; 1108*1370a723SSascha Wildner EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 1109*1370a723SSascha Wildner UINT64 Value; 1110*1370a723SSascha Wildner UINT64 Mask; 1111*1370a723SSascha Wildner } EFI_ACPI_4_0_EINJ_INJECTION_INSTRUCTION_ENTRY; 1112*1370a723SSascha Wildner 1113*1370a723SSascha Wildner /// 1114*1370a723SSascha Wildner /// EINJ Trigger Action Table 1115*1370a723SSascha Wildner /// 1116*1370a723SSascha Wildner typedef struct { 1117*1370a723SSascha Wildner UINT32 HeaderSize; 1118*1370a723SSascha Wildner UINT32 Revision; 1119*1370a723SSascha Wildner UINT32 TableSize; 1120*1370a723SSascha Wildner UINT32 EntryCount; 1121*1370a723SSascha Wildner } EFI_ACPI_4_0_EINJ_TRIGGER_ACTION_TABLE; 1122*1370a723SSascha Wildner 1123*1370a723SSascha Wildner // 1124*1370a723SSascha Wildner // Known table signatures 1125*1370a723SSascha Wildner // 1126*1370a723SSascha Wildner 1127*1370a723SSascha Wildner /// 1128*1370a723SSascha Wildner /// "RSD PTR " Root System Description Pointer 1129*1370a723SSascha Wildner /// 1130*1370a723SSascha Wildner #define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') 1131*1370a723SSascha Wildner 1132*1370a723SSascha Wildner /// 1133*1370a723SSascha Wildner /// "APIC" Multiple APIC Description Table 1134*1370a723SSascha Wildner /// 1135*1370a723SSascha Wildner #define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') 1136*1370a723SSascha Wildner 1137*1370a723SSascha Wildner /// 1138*1370a723SSascha Wildner /// "BERT" Boot Error Record Table 1139*1370a723SSascha Wildner /// 1140*1370a723SSascha Wildner #define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T') 1141*1370a723SSascha Wildner 1142*1370a723SSascha Wildner /// 1143*1370a723SSascha Wildner /// "CPEP" Corrected Platform Error Polling Table 1144*1370a723SSascha Wildner /// 1145*1370a723SSascha Wildner #define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P') 1146*1370a723SSascha Wildner 1147*1370a723SSascha Wildner /// 1148*1370a723SSascha Wildner /// "DSDT" Differentiated System Description Table 1149*1370a723SSascha Wildner /// 1150*1370a723SSascha Wildner #define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') 1151*1370a723SSascha Wildner 1152*1370a723SSascha Wildner /// 1153*1370a723SSascha Wildner /// "ECDT" Embedded Controller Boot Resources Table 1154*1370a723SSascha Wildner /// 1155*1370a723SSascha Wildner #define EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') 1156*1370a723SSascha Wildner 1157*1370a723SSascha Wildner /// 1158*1370a723SSascha Wildner /// "EINJ" Error Injection Table 1159*1370a723SSascha Wildner /// 1160*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J') 1161*1370a723SSascha Wildner 1162*1370a723SSascha Wildner /// 1163*1370a723SSascha Wildner /// "ERST" Error Record Serialization Table 1164*1370a723SSascha Wildner /// 1165*1370a723SSascha Wildner #define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T') 1166*1370a723SSascha Wildner 1167*1370a723SSascha Wildner /// 1168*1370a723SSascha Wildner /// "FACP" Fixed ACPI Description Table 1169*1370a723SSascha Wildner /// 1170*1370a723SSascha Wildner #define EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') 1171*1370a723SSascha Wildner 1172*1370a723SSascha Wildner /// 1173*1370a723SSascha Wildner /// "FACS" Firmware ACPI Control Structure 1174*1370a723SSascha Wildner /// 1175*1370a723SSascha Wildner #define EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') 1176*1370a723SSascha Wildner 1177*1370a723SSascha Wildner /// 1178*1370a723SSascha Wildner /// "HEST" Hardware Error Source Table 1179*1370a723SSascha Wildner /// 1180*1370a723SSascha Wildner #define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T') 1181*1370a723SSascha Wildner 1182*1370a723SSascha Wildner /// 1183*1370a723SSascha Wildner /// "MSCT" Maximum System Characteristics Table 1184*1370a723SSascha Wildner /// 1185*1370a723SSascha Wildner #define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T') 1186*1370a723SSascha Wildner 1187*1370a723SSascha Wildner /// 1188*1370a723SSascha Wildner /// "PSDT" Persistent System Description Table 1189*1370a723SSascha Wildner /// 1190*1370a723SSascha Wildner #define EFI_ACPI_4_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') 1191*1370a723SSascha Wildner 1192*1370a723SSascha Wildner /// 1193*1370a723SSascha Wildner /// "RSDT" Root System Description Table 1194*1370a723SSascha Wildner /// 1195*1370a723SSascha Wildner #define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') 1196*1370a723SSascha Wildner 1197*1370a723SSascha Wildner /// 1198*1370a723SSascha Wildner /// "SBST" Smart Battery Specification Table 1199*1370a723SSascha Wildner /// 1200*1370a723SSascha Wildner #define EFI_ACPI_4_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') 1201*1370a723SSascha Wildner 1202*1370a723SSascha Wildner /// 1203*1370a723SSascha Wildner /// "SLIT" System Locality Information Table 1204*1370a723SSascha Wildner /// 1205*1370a723SSascha Wildner #define EFI_ACPI_4_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') 1206*1370a723SSascha Wildner 1207*1370a723SSascha Wildner /// 1208*1370a723SSascha Wildner /// "SRAT" System Resource Affinity Table 1209*1370a723SSascha Wildner /// 1210*1370a723SSascha Wildner #define EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') 1211*1370a723SSascha Wildner 1212*1370a723SSascha Wildner /// 1213*1370a723SSascha Wildner /// "SSDT" Secondary System Description Table 1214*1370a723SSascha Wildner /// 1215*1370a723SSascha Wildner #define EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') 1216*1370a723SSascha Wildner 1217*1370a723SSascha Wildner /// 1218*1370a723SSascha Wildner /// "XSDT" Extended System Description Table 1219*1370a723SSascha Wildner /// 1220*1370a723SSascha Wildner #define EFI_ACPI_4_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') 1221*1370a723SSascha Wildner 1222*1370a723SSascha Wildner /// 1223*1370a723SSascha Wildner /// "BOOT" MS Simple Boot Spec 1224*1370a723SSascha Wildner /// 1225*1370a723SSascha Wildner #define EFI_ACPI_4_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') 1226*1370a723SSascha Wildner 1227*1370a723SSascha Wildner /// 1228*1370a723SSascha Wildner /// "DBGP" MS Debug Port Spec 1229*1370a723SSascha Wildner /// 1230*1370a723SSascha Wildner #define EFI_ACPI_4_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') 1231*1370a723SSascha Wildner 1232*1370a723SSascha Wildner /// 1233*1370a723SSascha Wildner /// "DMAR" DMA Remapping Table 1234*1370a723SSascha Wildner /// 1235*1370a723SSascha Wildner #define EFI_ACPI_4_0_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R') 1236*1370a723SSascha Wildner 1237*1370a723SSascha Wildner /// 1238*1370a723SSascha Wildner /// "ETDT" Event Timer Description Table 1239*1370a723SSascha Wildner /// 1240*1370a723SSascha Wildner #define EFI_ACPI_4_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') 1241*1370a723SSascha Wildner 1242*1370a723SSascha Wildner /// 1243*1370a723SSascha Wildner /// "HPET" IA-PC High Precision Event Timer Table 1244*1370a723SSascha Wildner /// 1245*1370a723SSascha Wildner #define EFI_ACPI_4_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T') 1246*1370a723SSascha Wildner 1247*1370a723SSascha Wildner /// 1248*1370a723SSascha Wildner /// "iBFT" iSCSI Boot Firmware Table 1249*1370a723SSascha Wildner /// 1250*1370a723SSascha Wildner #define EFI_ACPI_4_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T') 1251*1370a723SSascha Wildner 1252*1370a723SSascha Wildner /// 1253*1370a723SSascha Wildner /// "IVRS" I/O Virtualization Reporting Structure 1254*1370a723SSascha Wildner /// 1255*1370a723SSascha Wildner #define EFI_ACPI_4_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S') 1256*1370a723SSascha Wildner 1257*1370a723SSascha Wildner /// 1258*1370a723SSascha Wildner /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table 1259*1370a723SSascha Wildner /// 1260*1370a723SSascha Wildner #define EFI_ACPI_4_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') 1261*1370a723SSascha Wildner 1262*1370a723SSascha Wildner /// 1263*1370a723SSascha Wildner /// "MCHI" Management Controller Host Interface Table 1264*1370a723SSascha Wildner /// 1265*1370a723SSascha Wildner #define EFI_ACPI_4_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I') 1266*1370a723SSascha Wildner 1267*1370a723SSascha Wildner /// 1268*1370a723SSascha Wildner /// "SPCR" Serial Port Console Redirection Table 1269*1370a723SSascha Wildner /// 1270*1370a723SSascha Wildner #define EFI_ACPI_4_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') 1271*1370a723SSascha Wildner 1272*1370a723SSascha Wildner /// 1273*1370a723SSascha Wildner /// "SPMI" Server Platform Management Interface Table 1274*1370a723SSascha Wildner /// 1275*1370a723SSascha Wildner #define EFI_ACPI_4_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') 1276*1370a723SSascha Wildner 1277*1370a723SSascha Wildner /// 1278*1370a723SSascha Wildner /// "TCPA" Trusted Computing Platform Alliance Capabilities Table 1279*1370a723SSascha Wildner /// 1280*1370a723SSascha Wildner #define EFI_ACPI_4_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A') 1281*1370a723SSascha Wildner 1282*1370a723SSascha Wildner /// 1283*1370a723SSascha Wildner /// "UEFI" UEFI ACPI Data Table 1284*1370a723SSascha Wildner /// 1285*1370a723SSascha Wildner #define EFI_ACPI_4_0_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I') 1286*1370a723SSascha Wildner 1287*1370a723SSascha Wildner /// 1288*1370a723SSascha Wildner /// "WAET" Windows ACPI Enlightenment Table 1289*1370a723SSascha Wildner /// 1290*1370a723SSascha Wildner #define EFI_ACPI_4_0_WINDOWS_ACPI_ENLIGHTENMENT_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T') 1291*1370a723SSascha Wildner 1292*1370a723SSascha Wildner /// 1293*1370a723SSascha Wildner /// "WDAT" Watchdog Action Table 1294*1370a723SSascha Wildner /// 1295*1370a723SSascha Wildner #define EFI_ACPI_4_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T') 1296*1370a723SSascha Wildner 1297*1370a723SSascha Wildner /// 1298*1370a723SSascha Wildner /// "WDRT" Watchdog Resource Table 1299*1370a723SSascha Wildner /// 1300*1370a723SSascha Wildner #define EFI_ACPI_4_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T') 1301*1370a723SSascha Wildner 1302*1370a723SSascha Wildner #pragma pack() 1303*1370a723SSascha Wildner 1304*1370a723SSascha Wildner #endif 1305