1*f334afcfSToomas Soome /** @file 2*f334afcfSToomas Soome ACPI 6.4 definitions from the ACPI Specification Revision 6.4 Jan, 2021. 3*f334afcfSToomas Soome 4*f334afcfSToomas Soome Copyright (c) 2017 - 2022, Intel Corporation. All rights reserved.<BR> 5*f334afcfSToomas Soome Copyright (c) 2019 - 2021, ARM Ltd. All rights reserved.<BR> 6*f334afcfSToomas Soome 7*f334afcfSToomas Soome SPDX-License-Identifier: BSD-2-Clause-Patent 8*f334afcfSToomas Soome **/ 9*f334afcfSToomas Soome 10*f334afcfSToomas Soome #ifndef ACPI_6_4_H_ 11*f334afcfSToomas Soome #define ACPI_6_4_H_ 12*f334afcfSToomas Soome 13*f334afcfSToomas Soome #include <IndustryStandard/Acpi63.h> 14*f334afcfSToomas Soome 15*f334afcfSToomas Soome // 16*f334afcfSToomas Soome // Ensure proper structure formats 17*f334afcfSToomas Soome // 18*f334afcfSToomas Soome #pragma pack(1) 19*f334afcfSToomas Soome 20*f334afcfSToomas Soome /// 21*f334afcfSToomas Soome /// ACPI 6.4 Generic Address Space definition 22*f334afcfSToomas Soome /// 23*f334afcfSToomas Soome typedef struct { 24*f334afcfSToomas Soome UINT8 AddressSpaceId; 25*f334afcfSToomas Soome UINT8 RegisterBitWidth; 26*f334afcfSToomas Soome UINT8 RegisterBitOffset; 27*f334afcfSToomas Soome UINT8 AccessSize; 28*f334afcfSToomas Soome UINT64 Address; 29*f334afcfSToomas Soome } EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE; 30*f334afcfSToomas Soome 31*f334afcfSToomas Soome // 32*f334afcfSToomas Soome // Generic Address Space Address IDs 33*f334afcfSToomas Soome // 34*f334afcfSToomas Soome #define EFI_ACPI_6_4_SYSTEM_MEMORY 0x00 35*f334afcfSToomas Soome #define EFI_ACPI_6_4_SYSTEM_IO 0x01 36*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCI_CONFIGURATION_SPACE 0x02 37*f334afcfSToomas Soome #define EFI_ACPI_6_4_EMBEDDED_CONTROLLER 0x03 38*f334afcfSToomas Soome #define EFI_ACPI_6_4_SMBUS 0x04 39*f334afcfSToomas Soome #define EFI_ACPI_6_4_SYSTEM_CMOS 0x05 40*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCI_BAR_TARGET 0x06 41*f334afcfSToomas Soome #define EFI_ACPI_6_4_IPMI 0x07 42*f334afcfSToomas Soome #define EFI_ACPI_6_4_GENERAL_PURPOSE_IO 0x08 43*f334afcfSToomas Soome #define EFI_ACPI_6_4_GENERIC_SERIAL_BUS 0x09 44*f334afcfSToomas Soome #define EFI_ACPI_6_4_PLATFORM_COMMUNICATION_CHANNEL 0x0A 45*f334afcfSToomas Soome #define EFI_ACPI_6_4_FUNCTIONAL_FIXED_HARDWARE 0x7F 46*f334afcfSToomas Soome 47*f334afcfSToomas Soome // 48*f334afcfSToomas Soome // Generic Address Space Access Sizes 49*f334afcfSToomas Soome // 50*f334afcfSToomas Soome #define EFI_ACPI_6_4_UNDEFINED 0 51*f334afcfSToomas Soome #define EFI_ACPI_6_4_BYTE 1 52*f334afcfSToomas Soome #define EFI_ACPI_6_4_WORD 2 53*f334afcfSToomas Soome #define EFI_ACPI_6_4_DWORD 3 54*f334afcfSToomas Soome #define EFI_ACPI_6_4_QWORD 4 55*f334afcfSToomas Soome 56*f334afcfSToomas Soome // 57*f334afcfSToomas Soome // ACPI 6.4 table structures 58*f334afcfSToomas Soome // 59*f334afcfSToomas Soome 60*f334afcfSToomas Soome /// 61*f334afcfSToomas Soome /// Root System Description Pointer Structure 62*f334afcfSToomas Soome /// 63*f334afcfSToomas Soome typedef struct { 64*f334afcfSToomas Soome UINT64 Signature; 65*f334afcfSToomas Soome UINT8 Checksum; 66*f334afcfSToomas Soome UINT8 OemId[6]; 67*f334afcfSToomas Soome UINT8 Revision; 68*f334afcfSToomas Soome UINT32 RsdtAddress; 69*f334afcfSToomas Soome UINT32 Length; 70*f334afcfSToomas Soome UINT64 XsdtAddress; 71*f334afcfSToomas Soome UINT8 ExtendedChecksum; 72*f334afcfSToomas Soome UINT8 Reserved[3]; 73*f334afcfSToomas Soome } EFI_ACPI_6_4_ROOT_SYSTEM_DESCRIPTION_POINTER; 74*f334afcfSToomas Soome 75*f334afcfSToomas Soome /// 76*f334afcfSToomas Soome /// RSD_PTR Revision (as defined in ACPI 6.4 spec.) 77*f334afcfSToomas Soome /// 78*f334afcfSToomas Soome #define EFI_ACPI_6_4_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 6.4) says current value is 2 79*f334afcfSToomas Soome 80*f334afcfSToomas Soome /// 81*f334afcfSToomas Soome /// Common table header, this prefaces all ACPI tables, including FACS, but 82*f334afcfSToomas Soome /// excluding the RSD PTR structure 83*f334afcfSToomas Soome /// 84*f334afcfSToomas Soome typedef struct { 85*f334afcfSToomas Soome UINT32 Signature; 86*f334afcfSToomas Soome UINT32 Length; 87*f334afcfSToomas Soome } EFI_ACPI_6_4_COMMON_HEADER; 88*f334afcfSToomas Soome 89*f334afcfSToomas Soome // 90*f334afcfSToomas Soome // Root System Description Table 91*f334afcfSToomas Soome // No definition needed as it is a common description table header, the same with 92*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. 93*f334afcfSToomas Soome // 94*f334afcfSToomas Soome 95*f334afcfSToomas Soome /// 96*f334afcfSToomas Soome /// RSDT Revision (as defined in ACPI 6.4 spec.) 97*f334afcfSToomas Soome /// 98*f334afcfSToomas Soome #define EFI_ACPI_6_4_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 99*f334afcfSToomas Soome 100*f334afcfSToomas Soome // 101*f334afcfSToomas Soome // Extended System Description Table 102*f334afcfSToomas Soome // No definition needed as it is a common description table header, the same with 103*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers. 104*f334afcfSToomas Soome // 105*f334afcfSToomas Soome 106*f334afcfSToomas Soome /// 107*f334afcfSToomas Soome /// XSDT Revision (as defined in ACPI 6.4 spec.) 108*f334afcfSToomas Soome /// 109*f334afcfSToomas Soome #define EFI_ACPI_6_4_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 110*f334afcfSToomas Soome 111*f334afcfSToomas Soome /// 112*f334afcfSToomas Soome /// Fixed ACPI Description Table Structure (FADT) 113*f334afcfSToomas Soome /// 114*f334afcfSToomas Soome typedef struct { 115*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 116*f334afcfSToomas Soome UINT32 FirmwareCtrl; 117*f334afcfSToomas Soome UINT32 Dsdt; 118*f334afcfSToomas Soome UINT8 Reserved0; 119*f334afcfSToomas Soome UINT8 PreferredPmProfile; 120*f334afcfSToomas Soome UINT16 SciInt; 121*f334afcfSToomas Soome UINT32 SmiCmd; 122*f334afcfSToomas Soome UINT8 AcpiEnable; 123*f334afcfSToomas Soome UINT8 AcpiDisable; 124*f334afcfSToomas Soome UINT8 S4BiosReq; 125*f334afcfSToomas Soome UINT8 PstateCnt; 126*f334afcfSToomas Soome UINT32 Pm1aEvtBlk; 127*f334afcfSToomas Soome UINT32 Pm1bEvtBlk; 128*f334afcfSToomas Soome UINT32 Pm1aCntBlk; 129*f334afcfSToomas Soome UINT32 Pm1bCntBlk; 130*f334afcfSToomas Soome UINT32 Pm2CntBlk; 131*f334afcfSToomas Soome UINT32 PmTmrBlk; 132*f334afcfSToomas Soome UINT32 Gpe0Blk; 133*f334afcfSToomas Soome UINT32 Gpe1Blk; 134*f334afcfSToomas Soome UINT8 Pm1EvtLen; 135*f334afcfSToomas Soome UINT8 Pm1CntLen; 136*f334afcfSToomas Soome UINT8 Pm2CntLen; 137*f334afcfSToomas Soome UINT8 PmTmrLen; 138*f334afcfSToomas Soome UINT8 Gpe0BlkLen; 139*f334afcfSToomas Soome UINT8 Gpe1BlkLen; 140*f334afcfSToomas Soome UINT8 Gpe1Base; 141*f334afcfSToomas Soome UINT8 CstCnt; 142*f334afcfSToomas Soome UINT16 PLvl2Lat; 143*f334afcfSToomas Soome UINT16 PLvl3Lat; 144*f334afcfSToomas Soome UINT16 FlushSize; 145*f334afcfSToomas Soome UINT16 FlushStride; 146*f334afcfSToomas Soome UINT8 DutyOffset; 147*f334afcfSToomas Soome UINT8 DutyWidth; 148*f334afcfSToomas Soome UINT8 DayAlrm; 149*f334afcfSToomas Soome UINT8 MonAlrm; 150*f334afcfSToomas Soome UINT8 Century; 151*f334afcfSToomas Soome UINT16 IaPcBootArch; 152*f334afcfSToomas Soome UINT8 Reserved1; 153*f334afcfSToomas Soome UINT32 Flags; 154*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ResetReg; 155*f334afcfSToomas Soome UINT8 ResetValue; 156*f334afcfSToomas Soome UINT16 ArmBootArch; 157*f334afcfSToomas Soome UINT8 MinorVersion; 158*f334afcfSToomas Soome UINT64 XFirmwareCtrl; 159*f334afcfSToomas Soome UINT64 XDsdt; 160*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; 161*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; 162*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; 163*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; 164*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; 165*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; 166*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; 167*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; 168*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE SleepControlReg; 169*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE SleepStatusReg; 170*f334afcfSToomas Soome UINT64 HypervisorVendorIdentity; 171*f334afcfSToomas Soome } EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE; 172*f334afcfSToomas Soome 173*f334afcfSToomas Soome /// 174*f334afcfSToomas Soome /// FADT Version (as defined in ACPI 6.4 spec.) 175*f334afcfSToomas Soome /// 176*f334afcfSToomas Soome #define EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x06 177*f334afcfSToomas Soome #define EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x04 178*f334afcfSToomas Soome 179*f334afcfSToomas Soome // 180*f334afcfSToomas Soome // Fixed ACPI Description Table Preferred Power Management Profile 181*f334afcfSToomas Soome // 182*f334afcfSToomas Soome #define EFI_ACPI_6_4_PM_PROFILE_UNSPECIFIED 0 183*f334afcfSToomas Soome #define EFI_ACPI_6_4_PM_PROFILE_DESKTOP 1 184*f334afcfSToomas Soome #define EFI_ACPI_6_4_PM_PROFILE_MOBILE 2 185*f334afcfSToomas Soome #define EFI_ACPI_6_4_PM_PROFILE_WORKSTATION 3 186*f334afcfSToomas Soome #define EFI_ACPI_6_4_PM_PROFILE_ENTERPRISE_SERVER 4 187*f334afcfSToomas Soome #define EFI_ACPI_6_4_PM_PROFILE_SOHO_SERVER 5 188*f334afcfSToomas Soome #define EFI_ACPI_6_4_PM_PROFILE_APPLIANCE_PC 6 189*f334afcfSToomas Soome #define EFI_ACPI_6_4_PM_PROFILE_PERFORMANCE_SERVER 7 190*f334afcfSToomas Soome #define EFI_ACPI_6_4_PM_PROFILE_TABLET 8 191*f334afcfSToomas Soome 192*f334afcfSToomas Soome // 193*f334afcfSToomas Soome // Fixed ACPI Description Table Boot Architecture Flags 194*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 195*f334afcfSToomas Soome // 196*f334afcfSToomas Soome #define EFI_ACPI_6_4_LEGACY_DEVICES BIT0 197*f334afcfSToomas Soome #define EFI_ACPI_6_4_8042 BIT1 198*f334afcfSToomas Soome #define EFI_ACPI_6_4_VGA_NOT_PRESENT BIT2 199*f334afcfSToomas Soome #define EFI_ACPI_6_4_MSI_NOT_SUPPORTED BIT3 200*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCIE_ASPM_CONTROLS BIT4 201*f334afcfSToomas Soome #define EFI_ACPI_6_4_CMOS_RTC_NOT_PRESENT BIT5 202*f334afcfSToomas Soome 203*f334afcfSToomas Soome // 204*f334afcfSToomas Soome // Fixed ACPI Description Table Arm Boot Architecture Flags 205*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 206*f334afcfSToomas Soome // 207*f334afcfSToomas Soome #define EFI_ACPI_6_4_ARM_PSCI_COMPLIANT BIT0 208*f334afcfSToomas Soome #define EFI_ACPI_6_4_ARM_PSCI_USE_HVC BIT1 209*f334afcfSToomas Soome 210*f334afcfSToomas Soome // 211*f334afcfSToomas Soome // Fixed ACPI Description Table Fixed Feature Flags 212*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 213*f334afcfSToomas Soome // 214*f334afcfSToomas Soome #define EFI_ACPI_6_4_WBINVD BIT0 215*f334afcfSToomas Soome #define EFI_ACPI_6_4_WBINVD_FLUSH BIT1 216*f334afcfSToomas Soome #define EFI_ACPI_6_4_PROC_C1 BIT2 217*f334afcfSToomas Soome #define EFI_ACPI_6_4_P_LVL2_UP BIT3 218*f334afcfSToomas Soome #define EFI_ACPI_6_4_PWR_BUTTON BIT4 219*f334afcfSToomas Soome #define EFI_ACPI_6_4_SLP_BUTTON BIT5 220*f334afcfSToomas Soome #define EFI_ACPI_6_4_FIX_RTC BIT6 221*f334afcfSToomas Soome #define EFI_ACPI_6_4_RTC_S4 BIT7 222*f334afcfSToomas Soome #define EFI_ACPI_6_4_TMR_VAL_EXT BIT8 223*f334afcfSToomas Soome #define EFI_ACPI_6_4_DCK_CAP BIT9 224*f334afcfSToomas Soome #define EFI_ACPI_6_4_RESET_REG_SUP BIT10 225*f334afcfSToomas Soome #define EFI_ACPI_6_4_SEALED_CASE BIT11 226*f334afcfSToomas Soome #define EFI_ACPI_6_4_HEADLESS BIT12 227*f334afcfSToomas Soome #define EFI_ACPI_6_4_CPU_SW_SLP BIT13 228*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCI_EXP_WAK BIT14 229*f334afcfSToomas Soome #define EFI_ACPI_6_4_USE_PLATFORM_CLOCK BIT15 230*f334afcfSToomas Soome #define EFI_ACPI_6_4_S4_RTC_STS_VALID BIT16 231*f334afcfSToomas Soome #define EFI_ACPI_6_4_REMOTE_POWER_ON_CAPABLE BIT17 232*f334afcfSToomas Soome #define EFI_ACPI_6_4_FORCE_APIC_CLUSTER_MODEL BIT18 233*f334afcfSToomas Soome #define EFI_ACPI_6_4_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19 234*f334afcfSToomas Soome #define EFI_ACPI_6_4_HW_REDUCED_ACPI BIT20 235*f334afcfSToomas Soome #define EFI_ACPI_6_4_LOW_POWER_S0_IDLE_CAPABLE BIT21 236*f334afcfSToomas Soome 237*f334afcfSToomas Soome /// 238*f334afcfSToomas Soome /// Firmware ACPI Control Structure 239*f334afcfSToomas Soome /// 240*f334afcfSToomas Soome typedef struct { 241*f334afcfSToomas Soome UINT32 Signature; 242*f334afcfSToomas Soome UINT32 Length; 243*f334afcfSToomas Soome UINT32 HardwareSignature; 244*f334afcfSToomas Soome UINT32 FirmwareWakingVector; 245*f334afcfSToomas Soome UINT32 GlobalLock; 246*f334afcfSToomas Soome UINT32 Flags; 247*f334afcfSToomas Soome UINT64 XFirmwareWakingVector; 248*f334afcfSToomas Soome UINT8 Version; 249*f334afcfSToomas Soome UINT8 Reserved0[3]; 250*f334afcfSToomas Soome UINT32 OspmFlags; 251*f334afcfSToomas Soome UINT8 Reserved1[24]; 252*f334afcfSToomas Soome } EFI_ACPI_6_4_FIRMWARE_ACPI_CONTROL_STRUCTURE; 253*f334afcfSToomas Soome 254*f334afcfSToomas Soome /// 255*f334afcfSToomas Soome /// FACS Version (as defined in ACPI 6.4 spec.) 256*f334afcfSToomas Soome /// 257*f334afcfSToomas Soome #define EFI_ACPI_6_4_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02 258*f334afcfSToomas Soome 259*f334afcfSToomas Soome /// 260*f334afcfSToomas Soome /// Firmware Control Structure Feature Flags 261*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 262*f334afcfSToomas Soome /// 263*f334afcfSToomas Soome #define EFI_ACPI_6_4_S4BIOS_F BIT0 264*f334afcfSToomas Soome #define EFI_ACPI_6_4_64BIT_WAKE_SUPPORTED_F BIT1 265*f334afcfSToomas Soome 266*f334afcfSToomas Soome /// 267*f334afcfSToomas Soome /// OSPM Enabled Firmware Control Structure Flags 268*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 269*f334afcfSToomas Soome /// 270*f334afcfSToomas Soome #define EFI_ACPI_6_4_OSPM_64BIT_WAKE_F BIT0 271*f334afcfSToomas Soome 272*f334afcfSToomas Soome // 273*f334afcfSToomas Soome // Differentiated System Description Table, 274*f334afcfSToomas Soome // Secondary System Description Table 275*f334afcfSToomas Soome // and Persistent System Description Table, 276*f334afcfSToomas Soome // no definition needed as they are common description table header, the same with 277*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block. 278*f334afcfSToomas Soome // 279*f334afcfSToomas Soome #define EFI_ACPI_6_4_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 280*f334afcfSToomas Soome #define EFI_ACPI_6_4_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 281*f334afcfSToomas Soome 282*f334afcfSToomas Soome /// 283*f334afcfSToomas Soome /// Multiple APIC Description Table header definition. The rest of the table 284*f334afcfSToomas Soome /// must be defined in a platform specific manner. 285*f334afcfSToomas Soome /// 286*f334afcfSToomas Soome typedef struct { 287*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 288*f334afcfSToomas Soome UINT32 LocalApicAddress; 289*f334afcfSToomas Soome UINT32 Flags; 290*f334afcfSToomas Soome } EFI_ACPI_6_4_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; 291*f334afcfSToomas Soome 292*f334afcfSToomas Soome /// 293*f334afcfSToomas Soome /// MADT Revision (as defined in ACPI 6.4 spec.) 294*f334afcfSToomas Soome /// 295*f334afcfSToomas Soome #define EFI_ACPI_6_4_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x05 296*f334afcfSToomas Soome 297*f334afcfSToomas Soome /// 298*f334afcfSToomas Soome /// Multiple APIC Flags 299*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 300*f334afcfSToomas Soome /// 301*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCAT_COMPAT BIT0 302*f334afcfSToomas Soome 303*f334afcfSToomas Soome // 304*f334afcfSToomas Soome // Multiple APIC Description Table APIC structure types 305*f334afcfSToomas Soome // All other values between 0x10 and 0x7F are reserved and 306*f334afcfSToomas Soome // will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM. 307*f334afcfSToomas Soome // 308*f334afcfSToomas Soome #define EFI_ACPI_6_4_PROCESSOR_LOCAL_APIC 0x00 309*f334afcfSToomas Soome #define EFI_ACPI_6_4_IO_APIC 0x01 310*f334afcfSToomas Soome #define EFI_ACPI_6_4_INTERRUPT_SOURCE_OVERRIDE 0x02 311*f334afcfSToomas Soome #define EFI_ACPI_6_4_NON_MASKABLE_INTERRUPT_SOURCE 0x03 312*f334afcfSToomas Soome #define EFI_ACPI_6_4_LOCAL_APIC_NMI 0x04 313*f334afcfSToomas Soome #define EFI_ACPI_6_4_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 314*f334afcfSToomas Soome #define EFI_ACPI_6_4_IO_SAPIC 0x06 315*f334afcfSToomas Soome #define EFI_ACPI_6_4_LOCAL_SAPIC 0x07 316*f334afcfSToomas Soome #define EFI_ACPI_6_4_PLATFORM_INTERRUPT_SOURCES 0x08 317*f334afcfSToomas Soome #define EFI_ACPI_6_4_PROCESSOR_LOCAL_X2APIC 0x09 318*f334afcfSToomas Soome #define EFI_ACPI_6_4_LOCAL_X2APIC_NMI 0x0A 319*f334afcfSToomas Soome #define EFI_ACPI_6_4_GIC 0x0B 320*f334afcfSToomas Soome #define EFI_ACPI_6_4_GICD 0x0C 321*f334afcfSToomas Soome #define EFI_ACPI_6_4_GIC_MSI_FRAME 0x0D 322*f334afcfSToomas Soome #define EFI_ACPI_6_4_GICR 0x0E 323*f334afcfSToomas Soome #define EFI_ACPI_6_4_GIC_ITS 0x0F 324*f334afcfSToomas Soome #define EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP 0x10 325*f334afcfSToomas Soome 326*f334afcfSToomas Soome // 327*f334afcfSToomas Soome // APIC Structure Definitions 328*f334afcfSToomas Soome // 329*f334afcfSToomas Soome 330*f334afcfSToomas Soome /// 331*f334afcfSToomas Soome /// Processor Local APIC Structure Definition 332*f334afcfSToomas Soome /// 333*f334afcfSToomas Soome typedef struct { 334*f334afcfSToomas Soome UINT8 Type; 335*f334afcfSToomas Soome UINT8 Length; 336*f334afcfSToomas Soome UINT8 AcpiProcessorUid; 337*f334afcfSToomas Soome UINT8 ApicId; 338*f334afcfSToomas Soome UINT32 Flags; 339*f334afcfSToomas Soome } EFI_ACPI_6_4_PROCESSOR_LOCAL_APIC_STRUCTURE; 340*f334afcfSToomas Soome 341*f334afcfSToomas Soome /// 342*f334afcfSToomas Soome /// Local APIC Flags. All other bits are reserved and must be 0. 343*f334afcfSToomas Soome /// 344*f334afcfSToomas Soome #define EFI_ACPI_6_4_LOCAL_APIC_ENABLED BIT0 345*f334afcfSToomas Soome #define EFI_ACPI_6_4_LOCAL_APIC_ONLINE_CAPABLE BIT1 346*f334afcfSToomas Soome 347*f334afcfSToomas Soome /// 348*f334afcfSToomas Soome /// IO APIC Structure 349*f334afcfSToomas Soome /// 350*f334afcfSToomas Soome typedef struct { 351*f334afcfSToomas Soome UINT8 Type; 352*f334afcfSToomas Soome UINT8 Length; 353*f334afcfSToomas Soome UINT8 IoApicId; 354*f334afcfSToomas Soome UINT8 Reserved; 355*f334afcfSToomas Soome UINT32 IoApicAddress; 356*f334afcfSToomas Soome UINT32 GlobalSystemInterruptBase; 357*f334afcfSToomas Soome } EFI_ACPI_6_4_IO_APIC_STRUCTURE; 358*f334afcfSToomas Soome 359*f334afcfSToomas Soome /// 360*f334afcfSToomas Soome /// Interrupt Source Override Structure 361*f334afcfSToomas Soome /// 362*f334afcfSToomas Soome typedef struct { 363*f334afcfSToomas Soome UINT8 Type; 364*f334afcfSToomas Soome UINT8 Length; 365*f334afcfSToomas Soome UINT8 Bus; 366*f334afcfSToomas Soome UINT8 Source; 367*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 368*f334afcfSToomas Soome UINT16 Flags; 369*f334afcfSToomas Soome } EFI_ACPI_6_4_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; 370*f334afcfSToomas Soome 371*f334afcfSToomas Soome /// 372*f334afcfSToomas Soome /// Platform Interrupt Sources Structure Definition 373*f334afcfSToomas Soome /// 374*f334afcfSToomas Soome typedef struct { 375*f334afcfSToomas Soome UINT8 Type; 376*f334afcfSToomas Soome UINT8 Length; 377*f334afcfSToomas Soome UINT16 Flags; 378*f334afcfSToomas Soome UINT8 InterruptType; 379*f334afcfSToomas Soome UINT8 ProcessorId; 380*f334afcfSToomas Soome UINT8 ProcessorEid; 381*f334afcfSToomas Soome UINT8 IoSapicVector; 382*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 383*f334afcfSToomas Soome UINT32 PlatformInterruptSourceFlags; 384*f334afcfSToomas Soome UINT8 CpeiProcessorOverride; 385*f334afcfSToomas Soome UINT8 Reserved[31]; 386*f334afcfSToomas Soome } EFI_ACPI_6_4_PLATFORM_INTERRUPT_APIC_STRUCTURE; 387*f334afcfSToomas Soome 388*f334afcfSToomas Soome // 389*f334afcfSToomas Soome // MPS INTI flags. 390*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 391*f334afcfSToomas Soome // 392*f334afcfSToomas Soome #define EFI_ACPI_6_4_POLARITY (3 << 0) 393*f334afcfSToomas Soome #define EFI_ACPI_6_4_TRIGGER_MODE (3 << 2) 394*f334afcfSToomas Soome 395*f334afcfSToomas Soome /// 396*f334afcfSToomas Soome /// Non-Maskable Interrupt Source Structure 397*f334afcfSToomas Soome /// 398*f334afcfSToomas Soome typedef struct { 399*f334afcfSToomas Soome UINT8 Type; 400*f334afcfSToomas Soome UINT8 Length; 401*f334afcfSToomas Soome UINT16 Flags; 402*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 403*f334afcfSToomas Soome } EFI_ACPI_6_4_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; 404*f334afcfSToomas Soome 405*f334afcfSToomas Soome /// 406*f334afcfSToomas Soome /// Local APIC NMI Structure 407*f334afcfSToomas Soome /// 408*f334afcfSToomas Soome typedef struct { 409*f334afcfSToomas Soome UINT8 Type; 410*f334afcfSToomas Soome UINT8 Length; 411*f334afcfSToomas Soome UINT8 AcpiProcessorUid; 412*f334afcfSToomas Soome UINT16 Flags; 413*f334afcfSToomas Soome UINT8 LocalApicLint; 414*f334afcfSToomas Soome } EFI_ACPI_6_4_LOCAL_APIC_NMI_STRUCTURE; 415*f334afcfSToomas Soome 416*f334afcfSToomas Soome /// 417*f334afcfSToomas Soome /// Local APIC Address Override Structure 418*f334afcfSToomas Soome /// 419*f334afcfSToomas Soome typedef struct { 420*f334afcfSToomas Soome UINT8 Type; 421*f334afcfSToomas Soome UINT8 Length; 422*f334afcfSToomas Soome UINT16 Reserved; 423*f334afcfSToomas Soome UINT64 LocalApicAddress; 424*f334afcfSToomas Soome } EFI_ACPI_6_4_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE; 425*f334afcfSToomas Soome 426*f334afcfSToomas Soome /// 427*f334afcfSToomas Soome /// IO SAPIC Structure 428*f334afcfSToomas Soome /// 429*f334afcfSToomas Soome typedef struct { 430*f334afcfSToomas Soome UINT8 Type; 431*f334afcfSToomas Soome UINT8 Length; 432*f334afcfSToomas Soome UINT8 IoApicId; 433*f334afcfSToomas Soome UINT8 Reserved; 434*f334afcfSToomas Soome UINT32 GlobalSystemInterruptBase; 435*f334afcfSToomas Soome UINT64 IoSapicAddress; 436*f334afcfSToomas Soome } EFI_ACPI_6_4_IO_SAPIC_STRUCTURE; 437*f334afcfSToomas Soome 438*f334afcfSToomas Soome /// 439*f334afcfSToomas Soome /// Local SAPIC Structure 440*f334afcfSToomas Soome /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String 441*f334afcfSToomas Soome /// 442*f334afcfSToomas Soome typedef struct { 443*f334afcfSToomas Soome UINT8 Type; 444*f334afcfSToomas Soome UINT8 Length; 445*f334afcfSToomas Soome UINT8 AcpiProcessorId; 446*f334afcfSToomas Soome UINT8 LocalSapicId; 447*f334afcfSToomas Soome UINT8 LocalSapicEid; 448*f334afcfSToomas Soome UINT8 Reserved[3]; 449*f334afcfSToomas Soome UINT32 Flags; 450*f334afcfSToomas Soome UINT32 ACPIProcessorUIDValue; 451*f334afcfSToomas Soome } EFI_ACPI_6_4_PROCESSOR_LOCAL_SAPIC_STRUCTURE; 452*f334afcfSToomas Soome 453*f334afcfSToomas Soome /// 454*f334afcfSToomas Soome /// Platform Interrupt Sources Structure 455*f334afcfSToomas Soome /// 456*f334afcfSToomas Soome typedef struct { 457*f334afcfSToomas Soome UINT8 Type; 458*f334afcfSToomas Soome UINT8 Length; 459*f334afcfSToomas Soome UINT16 Flags; 460*f334afcfSToomas Soome UINT8 InterruptType; 461*f334afcfSToomas Soome UINT8 ProcessorId; 462*f334afcfSToomas Soome UINT8 ProcessorEid; 463*f334afcfSToomas Soome UINT8 IoSapicVector; 464*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 465*f334afcfSToomas Soome UINT32 PlatformInterruptSourceFlags; 466*f334afcfSToomas Soome } EFI_ACPI_6_4_PLATFORM_INTERRUPT_SOURCES_STRUCTURE; 467*f334afcfSToomas Soome 468*f334afcfSToomas Soome /// 469*f334afcfSToomas Soome /// Platform Interrupt Source Flags. 470*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 471*f334afcfSToomas Soome /// 472*f334afcfSToomas Soome #define EFI_ACPI_6_4_CPEI_PROCESSOR_OVERRIDE BIT0 473*f334afcfSToomas Soome 474*f334afcfSToomas Soome /// 475*f334afcfSToomas Soome /// Processor Local x2APIC Structure Definition 476*f334afcfSToomas Soome /// 477*f334afcfSToomas Soome typedef struct { 478*f334afcfSToomas Soome UINT8 Type; 479*f334afcfSToomas Soome UINT8 Length; 480*f334afcfSToomas Soome UINT8 Reserved[2]; 481*f334afcfSToomas Soome UINT32 X2ApicId; 482*f334afcfSToomas Soome UINT32 Flags; 483*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 484*f334afcfSToomas Soome } EFI_ACPI_6_4_PROCESSOR_LOCAL_X2APIC_STRUCTURE; 485*f334afcfSToomas Soome 486*f334afcfSToomas Soome /// 487*f334afcfSToomas Soome /// Local x2APIC NMI Structure 488*f334afcfSToomas Soome /// 489*f334afcfSToomas Soome typedef struct { 490*f334afcfSToomas Soome UINT8 Type; 491*f334afcfSToomas Soome UINT8 Length; 492*f334afcfSToomas Soome UINT16 Flags; 493*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 494*f334afcfSToomas Soome UINT8 LocalX2ApicLint; 495*f334afcfSToomas Soome UINT8 Reserved[3]; 496*f334afcfSToomas Soome } EFI_ACPI_6_4_LOCAL_X2APIC_NMI_STRUCTURE; 497*f334afcfSToomas Soome 498*f334afcfSToomas Soome /// 499*f334afcfSToomas Soome /// GIC Structure 500*f334afcfSToomas Soome /// 501*f334afcfSToomas Soome typedef struct { 502*f334afcfSToomas Soome UINT8 Type; 503*f334afcfSToomas Soome UINT8 Length; 504*f334afcfSToomas Soome UINT16 Reserved; 505*f334afcfSToomas Soome UINT32 CPUInterfaceNumber; 506*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 507*f334afcfSToomas Soome UINT32 Flags; 508*f334afcfSToomas Soome UINT32 ParkingProtocolVersion; 509*f334afcfSToomas Soome UINT32 PerformanceInterruptGsiv; 510*f334afcfSToomas Soome UINT64 ParkedAddress; 511*f334afcfSToomas Soome UINT64 PhysicalBaseAddress; 512*f334afcfSToomas Soome UINT64 GICV; 513*f334afcfSToomas Soome UINT64 GICH; 514*f334afcfSToomas Soome UINT32 VGICMaintenanceInterrupt; 515*f334afcfSToomas Soome UINT64 GICRBaseAddress; 516*f334afcfSToomas Soome UINT64 MPIDR; 517*f334afcfSToomas Soome UINT8 ProcessorPowerEfficiencyClass; 518*f334afcfSToomas Soome UINT8 Reserved2; 519*f334afcfSToomas Soome UINT16 SpeOverflowInterrupt; 520*f334afcfSToomas Soome } EFI_ACPI_6_4_GIC_STRUCTURE; 521*f334afcfSToomas Soome 522*f334afcfSToomas Soome /// 523*f334afcfSToomas Soome /// GIC Flags. All other bits are reserved and must be 0. 524*f334afcfSToomas Soome /// 525*f334afcfSToomas Soome #define EFI_ACPI_6_4_GIC_ENABLED BIT0 526*f334afcfSToomas Soome #define EFI_ACPI_6_4_PERFORMANCE_INTERRUPT_MODEL BIT1 527*f334afcfSToomas Soome #define EFI_ACPI_6_4_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS BIT2 528*f334afcfSToomas Soome 529*f334afcfSToomas Soome /// 530*f334afcfSToomas Soome /// GIC Distributor Structure 531*f334afcfSToomas Soome /// 532*f334afcfSToomas Soome typedef struct { 533*f334afcfSToomas Soome UINT8 Type; 534*f334afcfSToomas Soome UINT8 Length; 535*f334afcfSToomas Soome UINT16 Reserved1; 536*f334afcfSToomas Soome UINT32 GicId; 537*f334afcfSToomas Soome UINT64 PhysicalBaseAddress; 538*f334afcfSToomas Soome UINT32 SystemVectorBase; 539*f334afcfSToomas Soome UINT8 GicVersion; 540*f334afcfSToomas Soome UINT8 Reserved2[3]; 541*f334afcfSToomas Soome } EFI_ACPI_6_4_GIC_DISTRIBUTOR_STRUCTURE; 542*f334afcfSToomas Soome 543*f334afcfSToomas Soome /// 544*f334afcfSToomas Soome /// GIC Version 545*f334afcfSToomas Soome /// 546*f334afcfSToomas Soome #define EFI_ACPI_6_4_GIC_V1 0x01 547*f334afcfSToomas Soome #define EFI_ACPI_6_4_GIC_V2 0x02 548*f334afcfSToomas Soome #define EFI_ACPI_6_4_GIC_V3 0x03 549*f334afcfSToomas Soome #define EFI_ACPI_6_4_GIC_V4 0x04 550*f334afcfSToomas Soome 551*f334afcfSToomas Soome /// 552*f334afcfSToomas Soome /// GIC MSI Frame Structure 553*f334afcfSToomas Soome /// 554*f334afcfSToomas Soome typedef struct { 555*f334afcfSToomas Soome UINT8 Type; 556*f334afcfSToomas Soome UINT8 Length; 557*f334afcfSToomas Soome UINT16 Reserved1; 558*f334afcfSToomas Soome UINT32 GicMsiFrameId; 559*f334afcfSToomas Soome UINT64 PhysicalBaseAddress; 560*f334afcfSToomas Soome UINT32 Flags; 561*f334afcfSToomas Soome UINT16 SPICount; 562*f334afcfSToomas Soome UINT16 SPIBase; 563*f334afcfSToomas Soome } EFI_ACPI_6_4_GIC_MSI_FRAME_STRUCTURE; 564*f334afcfSToomas Soome 565*f334afcfSToomas Soome /// 566*f334afcfSToomas Soome /// GIC MSI Frame Flags. All other bits are reserved and must be 0. 567*f334afcfSToomas Soome /// 568*f334afcfSToomas Soome #define EFI_ACPI_6_4_SPI_COUNT_BASE_SELECT BIT0 569*f334afcfSToomas Soome 570*f334afcfSToomas Soome /// 571*f334afcfSToomas Soome /// GICR Structure 572*f334afcfSToomas Soome /// 573*f334afcfSToomas Soome typedef struct { 574*f334afcfSToomas Soome UINT8 Type; 575*f334afcfSToomas Soome UINT8 Length; 576*f334afcfSToomas Soome UINT16 Reserved; 577*f334afcfSToomas Soome UINT64 DiscoveryRangeBaseAddress; 578*f334afcfSToomas Soome UINT32 DiscoveryRangeLength; 579*f334afcfSToomas Soome } EFI_ACPI_6_4_GICR_STRUCTURE; 580*f334afcfSToomas Soome 581*f334afcfSToomas Soome /// 582*f334afcfSToomas Soome /// GIC Interrupt Translation Service Structure 583*f334afcfSToomas Soome /// 584*f334afcfSToomas Soome typedef struct { 585*f334afcfSToomas Soome UINT8 Type; 586*f334afcfSToomas Soome UINT8 Length; 587*f334afcfSToomas Soome UINT16 Reserved; 588*f334afcfSToomas Soome UINT32 GicItsId; 589*f334afcfSToomas Soome UINT64 PhysicalBaseAddress; 590*f334afcfSToomas Soome UINT32 Reserved2; 591*f334afcfSToomas Soome } EFI_ACPI_6_4_GIC_ITS_STRUCTURE; 592*f334afcfSToomas Soome 593*f334afcfSToomas Soome /// 594*f334afcfSToomas Soome /// Multiprocessor Wakeup Structure 595*f334afcfSToomas Soome /// 596*f334afcfSToomas Soome typedef struct { 597*f334afcfSToomas Soome UINT8 Type; 598*f334afcfSToomas Soome UINT8 Length; 599*f334afcfSToomas Soome UINT16 MailBoxVersion; 600*f334afcfSToomas Soome UINT32 Reserved; 601*f334afcfSToomas Soome UINT64 MailBoxAddress; 602*f334afcfSToomas Soome } EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_STRUCTURE; 603*f334afcfSToomas Soome 604*f334afcfSToomas Soome /// 605*f334afcfSToomas Soome /// Multiprocessor Wakeup Mailbox Structure 606*f334afcfSToomas Soome /// 607*f334afcfSToomas Soome typedef struct { 608*f334afcfSToomas Soome UINT16 Command; 609*f334afcfSToomas Soome UINT16 Reserved; 610*f334afcfSToomas Soome UINT32 AcpiId; 611*f334afcfSToomas Soome UINT64 WakeupVector; 612*f334afcfSToomas Soome UINT8 ReservedForOs[2032]; 613*f334afcfSToomas Soome UINT8 ReservedForFirmware[2048]; 614*f334afcfSToomas Soome } EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_MAILBOX_STRUCTURE; 615*f334afcfSToomas Soome 616*f334afcfSToomas Soome #define EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_MAILBOX_COMMAND_NOOP 0x0000 617*f334afcfSToomas Soome #define EFI_ACPI_6_4_MULTIPROCESSOR_WAKEUP_MAILBOX_COMMAND_WAKEUP 0x0001 618*f334afcfSToomas Soome 619*f334afcfSToomas Soome /// 620*f334afcfSToomas Soome /// Smart Battery Description Table (SBST) 621*f334afcfSToomas Soome /// 622*f334afcfSToomas Soome typedef struct { 623*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 624*f334afcfSToomas Soome UINT32 WarningEnergyLevel; 625*f334afcfSToomas Soome UINT32 LowEnergyLevel; 626*f334afcfSToomas Soome UINT32 CriticalEnergyLevel; 627*f334afcfSToomas Soome } EFI_ACPI_6_4_SMART_BATTERY_DESCRIPTION_TABLE; 628*f334afcfSToomas Soome 629*f334afcfSToomas Soome /// 630*f334afcfSToomas Soome /// SBST Version (as defined in ACPI 6.4 spec.) 631*f334afcfSToomas Soome /// 632*f334afcfSToomas Soome #define EFI_ACPI_6_4_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01 633*f334afcfSToomas Soome 634*f334afcfSToomas Soome /// 635*f334afcfSToomas Soome /// Embedded Controller Boot Resources Table (ECDT) 636*f334afcfSToomas Soome /// The table is followed by a null terminated ASCII string that contains 637*f334afcfSToomas Soome /// a fully qualified reference to the name space object. 638*f334afcfSToomas Soome /// 639*f334afcfSToomas Soome typedef struct { 640*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 641*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE EcControl; 642*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE EcData; 643*f334afcfSToomas Soome UINT32 Uid; 644*f334afcfSToomas Soome UINT8 GpeBit; 645*f334afcfSToomas Soome } EFI_ACPI_6_4_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; 646*f334afcfSToomas Soome 647*f334afcfSToomas Soome /// 648*f334afcfSToomas Soome /// ECDT Version (as defined in ACPI 6.4 spec.) 649*f334afcfSToomas Soome /// 650*f334afcfSToomas Soome #define EFI_ACPI_6_4_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01 651*f334afcfSToomas Soome 652*f334afcfSToomas Soome /// 653*f334afcfSToomas Soome /// System Resource Affinity Table (SRAT). The rest of the table 654*f334afcfSToomas Soome /// must be defined in a platform specific manner. 655*f334afcfSToomas Soome /// 656*f334afcfSToomas Soome typedef struct { 657*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 658*f334afcfSToomas Soome UINT32 Reserved1; ///< Must be set to 1 659*f334afcfSToomas Soome UINT64 Reserved2; 660*f334afcfSToomas Soome } EFI_ACPI_6_4_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER; 661*f334afcfSToomas Soome 662*f334afcfSToomas Soome /// 663*f334afcfSToomas Soome /// SRAT Version (as defined in ACPI 6.4 spec.) 664*f334afcfSToomas Soome /// 665*f334afcfSToomas Soome #define EFI_ACPI_6_4_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03 666*f334afcfSToomas Soome 667*f334afcfSToomas Soome // 668*f334afcfSToomas Soome // SRAT structure types. 669*f334afcfSToomas Soome // All other values between 0x06 an 0xFF are reserved and 670*f334afcfSToomas Soome // will be ignored by OSPM. 671*f334afcfSToomas Soome // 672*f334afcfSToomas Soome #define EFI_ACPI_6_4_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00 673*f334afcfSToomas Soome #define EFI_ACPI_6_4_MEMORY_AFFINITY 0x01 674*f334afcfSToomas Soome #define EFI_ACPI_6_4_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02 675*f334afcfSToomas Soome #define EFI_ACPI_6_4_GICC_AFFINITY 0x03 676*f334afcfSToomas Soome #define EFI_ACPI_6_4_GIC_ITS_AFFINITY 0x04 677*f334afcfSToomas Soome #define EFI_ACPI_6_4_GENERIC_INITIATOR_AFFINITY 0x05 678*f334afcfSToomas Soome 679*f334afcfSToomas Soome /// 680*f334afcfSToomas Soome /// Processor Local APIC/SAPIC Affinity Structure Definition 681*f334afcfSToomas Soome /// 682*f334afcfSToomas Soome typedef struct { 683*f334afcfSToomas Soome UINT8 Type; 684*f334afcfSToomas Soome UINT8 Length; 685*f334afcfSToomas Soome UINT8 ProximityDomain7To0; 686*f334afcfSToomas Soome UINT8 ApicId; 687*f334afcfSToomas Soome UINT32 Flags; 688*f334afcfSToomas Soome UINT8 LocalSapicEid; 689*f334afcfSToomas Soome UINT8 ProximityDomain31To8[3]; 690*f334afcfSToomas Soome UINT32 ClockDomain; 691*f334afcfSToomas Soome } EFI_ACPI_6_4_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE; 692*f334afcfSToomas Soome 693*f334afcfSToomas Soome /// 694*f334afcfSToomas Soome /// Local APIC/SAPIC Flags. All other bits are reserved and must be 0. 695*f334afcfSToomas Soome /// 696*f334afcfSToomas Soome #define EFI_ACPI_6_4_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0) 697*f334afcfSToomas Soome 698*f334afcfSToomas Soome /// 699*f334afcfSToomas Soome /// Memory Affinity Structure Definition 700*f334afcfSToomas Soome /// 701*f334afcfSToomas Soome typedef struct { 702*f334afcfSToomas Soome UINT8 Type; 703*f334afcfSToomas Soome UINT8 Length; 704*f334afcfSToomas Soome UINT32 ProximityDomain; 705*f334afcfSToomas Soome UINT16 Reserved1; 706*f334afcfSToomas Soome UINT32 AddressBaseLow; 707*f334afcfSToomas Soome UINT32 AddressBaseHigh; 708*f334afcfSToomas Soome UINT32 LengthLow; 709*f334afcfSToomas Soome UINT32 LengthHigh; 710*f334afcfSToomas Soome UINT32 Reserved2; 711*f334afcfSToomas Soome UINT32 Flags; 712*f334afcfSToomas Soome UINT64 Reserved3; 713*f334afcfSToomas Soome } EFI_ACPI_6_4_MEMORY_AFFINITY_STRUCTURE; 714*f334afcfSToomas Soome 715*f334afcfSToomas Soome // 716*f334afcfSToomas Soome // Memory Flags. All other bits are reserved and must be 0. 717*f334afcfSToomas Soome // 718*f334afcfSToomas Soome #define EFI_ACPI_6_4_MEMORY_ENABLED (1 << 0) 719*f334afcfSToomas Soome #define EFI_ACPI_6_4_MEMORY_HOT_PLUGGABLE (1 << 1) 720*f334afcfSToomas Soome #define EFI_ACPI_6_4_MEMORY_NONVOLATILE (1 << 2) 721*f334afcfSToomas Soome 722*f334afcfSToomas Soome /// 723*f334afcfSToomas Soome /// Processor Local x2APIC Affinity Structure Definition 724*f334afcfSToomas Soome /// 725*f334afcfSToomas Soome typedef struct { 726*f334afcfSToomas Soome UINT8 Type; 727*f334afcfSToomas Soome UINT8 Length; 728*f334afcfSToomas Soome UINT8 Reserved1[2]; 729*f334afcfSToomas Soome UINT32 ProximityDomain; 730*f334afcfSToomas Soome UINT32 X2ApicId; 731*f334afcfSToomas Soome UINT32 Flags; 732*f334afcfSToomas Soome UINT32 ClockDomain; 733*f334afcfSToomas Soome UINT8 Reserved2[4]; 734*f334afcfSToomas Soome } EFI_ACPI_6_4_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE; 735*f334afcfSToomas Soome 736*f334afcfSToomas Soome /// 737*f334afcfSToomas Soome /// GICC Affinity Structure Definition 738*f334afcfSToomas Soome /// 739*f334afcfSToomas Soome typedef struct { 740*f334afcfSToomas Soome UINT8 Type; 741*f334afcfSToomas Soome UINT8 Length; 742*f334afcfSToomas Soome UINT32 ProximityDomain; 743*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 744*f334afcfSToomas Soome UINT32 Flags; 745*f334afcfSToomas Soome UINT32 ClockDomain; 746*f334afcfSToomas Soome } EFI_ACPI_6_4_GICC_AFFINITY_STRUCTURE; 747*f334afcfSToomas Soome 748*f334afcfSToomas Soome /// 749*f334afcfSToomas Soome /// GICC Flags. All other bits are reserved and must be 0. 750*f334afcfSToomas Soome /// 751*f334afcfSToomas Soome #define EFI_ACPI_6_4_GICC_ENABLED (1 << 0) 752*f334afcfSToomas Soome 753*f334afcfSToomas Soome /// 754*f334afcfSToomas Soome /// GIC Interrupt Translation Service (ITS) Affinity Structure Definition 755*f334afcfSToomas Soome /// 756*f334afcfSToomas Soome typedef struct { 757*f334afcfSToomas Soome UINT8 Type; 758*f334afcfSToomas Soome UINT8 Length; 759*f334afcfSToomas Soome UINT32 ProximityDomain; 760*f334afcfSToomas Soome UINT8 Reserved[2]; 761*f334afcfSToomas Soome UINT32 ItsId; 762*f334afcfSToomas Soome } EFI_ACPI_6_4_GIC_ITS_AFFINITY_STRUCTURE; 763*f334afcfSToomas Soome 764*f334afcfSToomas Soome // 765*f334afcfSToomas Soome // Generic Initiator Affinity Structure Device Handle Types 766*f334afcfSToomas Soome // All other values between 0x02 an 0xFF are reserved and 767*f334afcfSToomas Soome // will be ignored by OSPM. 768*f334afcfSToomas Soome // 769*f334afcfSToomas Soome #define EFI_ACPI_6_4_ACPI_DEVICE_HANDLE 0x00 770*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCI_DEVICE_HANDLE 0x01 771*f334afcfSToomas Soome 772*f334afcfSToomas Soome /// 773*f334afcfSToomas Soome /// Device Handle - ACPI 774*f334afcfSToomas Soome /// 775*f334afcfSToomas Soome typedef struct { 776*f334afcfSToomas Soome UINT64 AcpiHid; 777*f334afcfSToomas Soome UINT32 AcpiUid; 778*f334afcfSToomas Soome UINT8 Reserved[4]; 779*f334afcfSToomas Soome } EFI_ACPI_6_4_DEVICE_HANDLE_ACPI; 780*f334afcfSToomas Soome 781*f334afcfSToomas Soome /// 782*f334afcfSToomas Soome /// Device Handle - PCI 783*f334afcfSToomas Soome /// 784*f334afcfSToomas Soome typedef struct { 785*f334afcfSToomas Soome UINT16 PciSegment; 786*f334afcfSToomas Soome UINT16 PciBdfNumber; 787*f334afcfSToomas Soome UINT8 Reserved[12]; 788*f334afcfSToomas Soome } EFI_ACPI_6_4_DEVICE_HANDLE_PCI; 789*f334afcfSToomas Soome 790*f334afcfSToomas Soome /// 791*f334afcfSToomas Soome /// Device Handle 792*f334afcfSToomas Soome /// 793*f334afcfSToomas Soome typedef union { 794*f334afcfSToomas Soome EFI_ACPI_6_4_DEVICE_HANDLE_ACPI Acpi; 795*f334afcfSToomas Soome EFI_ACPI_6_4_DEVICE_HANDLE_PCI Pci; 796*f334afcfSToomas Soome } EFI_ACPI_6_4_DEVICE_HANDLE; 797*f334afcfSToomas Soome 798*f334afcfSToomas Soome /// 799*f334afcfSToomas Soome /// Generic Initiator Affinity Structure 800*f334afcfSToomas Soome /// 801*f334afcfSToomas Soome typedef struct { 802*f334afcfSToomas Soome UINT8 Type; 803*f334afcfSToomas Soome UINT8 Length; 804*f334afcfSToomas Soome UINT8 Reserved1; 805*f334afcfSToomas Soome UINT8 DeviceHandleType; 806*f334afcfSToomas Soome UINT32 ProximityDomain; 807*f334afcfSToomas Soome EFI_ACPI_6_4_DEVICE_HANDLE DeviceHandle; 808*f334afcfSToomas Soome UINT32 Flags; 809*f334afcfSToomas Soome UINT8 Reserved2[4]; 810*f334afcfSToomas Soome } EFI_ACPI_6_4_GENERIC_INITIATOR_AFFINITY_STRUCTURE; 811*f334afcfSToomas Soome 812*f334afcfSToomas Soome /// 813*f334afcfSToomas Soome /// Generic Initiator Affinity Structure Flags. All other bits are reserved 814*f334afcfSToomas Soome /// and must be 0. 815*f334afcfSToomas Soome /// 816*f334afcfSToomas Soome #define EFI_ACPI_6_4_GENERIC_INITIATOR_AFFINITY_STRUCTURE_ENABLED BIT0 817*f334afcfSToomas Soome #define EFI_ACPI_6_4_GENERIC_INITIATOR_AFFINITY_STRUCTURE_ARCHITECTURAL_TRANSACTIONS BIT1 818*f334afcfSToomas Soome 819*f334afcfSToomas Soome /// 820*f334afcfSToomas Soome /// System Locality Distance Information Table (SLIT). 821*f334afcfSToomas Soome /// The rest of the table is a matrix. 822*f334afcfSToomas Soome /// 823*f334afcfSToomas Soome typedef struct { 824*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 825*f334afcfSToomas Soome UINT64 NumberOfSystemLocalities; 826*f334afcfSToomas Soome } EFI_ACPI_6_4_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER; 827*f334afcfSToomas Soome 828*f334afcfSToomas Soome /// 829*f334afcfSToomas Soome /// SLIT Version (as defined in ACPI 6.4 spec.) 830*f334afcfSToomas Soome /// 831*f334afcfSToomas Soome #define EFI_ACPI_6_4_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01 832*f334afcfSToomas Soome 833*f334afcfSToomas Soome /// 834*f334afcfSToomas Soome /// Corrected Platform Error Polling Table (CPEP) 835*f334afcfSToomas Soome /// 836*f334afcfSToomas Soome typedef struct { 837*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 838*f334afcfSToomas Soome UINT8 Reserved[8]; 839*f334afcfSToomas Soome } EFI_ACPI_6_4_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER; 840*f334afcfSToomas Soome 841*f334afcfSToomas Soome /// 842*f334afcfSToomas Soome /// CPEP Version (as defined in ACPI 6.4 spec.) 843*f334afcfSToomas Soome /// 844*f334afcfSToomas Soome #define EFI_ACPI_6_4_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01 845*f334afcfSToomas Soome 846*f334afcfSToomas Soome // 847*f334afcfSToomas Soome // CPEP processor structure types. 848*f334afcfSToomas Soome // 849*f334afcfSToomas Soome #define EFI_ACPI_6_4_CPEP_PROCESSOR_APIC_SAPIC 0x00 850*f334afcfSToomas Soome 851*f334afcfSToomas Soome /// 852*f334afcfSToomas Soome /// Corrected Platform Error Polling Processor Structure Definition 853*f334afcfSToomas Soome /// 854*f334afcfSToomas Soome typedef struct { 855*f334afcfSToomas Soome UINT8 Type; 856*f334afcfSToomas Soome UINT8 Length; 857*f334afcfSToomas Soome UINT8 ProcessorId; 858*f334afcfSToomas Soome UINT8 ProcessorEid; 859*f334afcfSToomas Soome UINT32 PollingInterval; 860*f334afcfSToomas Soome } EFI_ACPI_6_4_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE; 861*f334afcfSToomas Soome 862*f334afcfSToomas Soome /// 863*f334afcfSToomas Soome /// Maximum System Characteristics Table (MSCT) 864*f334afcfSToomas Soome /// 865*f334afcfSToomas Soome typedef struct { 866*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 867*f334afcfSToomas Soome UINT32 OffsetProxDomInfo; 868*f334afcfSToomas Soome UINT32 MaximumNumberOfProximityDomains; 869*f334afcfSToomas Soome UINT32 MaximumNumberOfClockDomains; 870*f334afcfSToomas Soome UINT64 MaximumPhysicalAddress; 871*f334afcfSToomas Soome } EFI_ACPI_6_4_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER; 872*f334afcfSToomas Soome 873*f334afcfSToomas Soome /// 874*f334afcfSToomas Soome /// MSCT Version (as defined in ACPI 6.4 spec.) 875*f334afcfSToomas Soome /// 876*f334afcfSToomas Soome #define EFI_ACPI_6_4_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01 877*f334afcfSToomas Soome 878*f334afcfSToomas Soome /// 879*f334afcfSToomas Soome /// Maximum Proximity Domain Information Structure Definition 880*f334afcfSToomas Soome /// 881*f334afcfSToomas Soome typedef struct { 882*f334afcfSToomas Soome UINT8 Revision; 883*f334afcfSToomas Soome UINT8 Length; 884*f334afcfSToomas Soome UINT32 ProximityDomainRangeLow; 885*f334afcfSToomas Soome UINT32 ProximityDomainRangeHigh; 886*f334afcfSToomas Soome UINT32 MaximumProcessorCapacity; 887*f334afcfSToomas Soome UINT64 MaximumMemoryCapacity; 888*f334afcfSToomas Soome } EFI_ACPI_6_4_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE; 889*f334afcfSToomas Soome 890*f334afcfSToomas Soome /// 891*f334afcfSToomas Soome /// ACPI RAS Feature Table definition. 892*f334afcfSToomas Soome /// 893*f334afcfSToomas Soome typedef struct { 894*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 895*f334afcfSToomas Soome UINT8 PlatformCommunicationChannelIdentifier[12]; 896*f334afcfSToomas Soome } EFI_ACPI_6_4_RAS_FEATURE_TABLE; 897*f334afcfSToomas Soome 898*f334afcfSToomas Soome /// 899*f334afcfSToomas Soome /// RASF Version (as defined in ACPI 6.4 spec.) 900*f334afcfSToomas Soome /// 901*f334afcfSToomas Soome #define EFI_ACPI_6_4_RAS_FEATURE_TABLE_REVISION 0x01 902*f334afcfSToomas Soome 903*f334afcfSToomas Soome /// 904*f334afcfSToomas Soome /// ACPI RASF Platform Communication Channel Shared Memory Region definition. 905*f334afcfSToomas Soome /// 906*f334afcfSToomas Soome typedef struct { 907*f334afcfSToomas Soome UINT32 Signature; 908*f334afcfSToomas Soome UINT16 Command; 909*f334afcfSToomas Soome UINT16 Status; 910*f334afcfSToomas Soome UINT16 Version; 911*f334afcfSToomas Soome UINT8 RASCapabilities[16]; 912*f334afcfSToomas Soome UINT8 SetRASCapabilities[16]; 913*f334afcfSToomas Soome UINT16 NumberOfRASFParameterBlocks; 914*f334afcfSToomas Soome UINT32 SetRASCapabilitiesStatus; 915*f334afcfSToomas Soome } EFI_ACPI_6_4_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; 916*f334afcfSToomas Soome 917*f334afcfSToomas Soome /// 918*f334afcfSToomas Soome /// ACPI RASF PCC command code 919*f334afcfSToomas Soome /// 920*f334afcfSToomas Soome #define EFI_ACPI_6_4_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01 921*f334afcfSToomas Soome 922*f334afcfSToomas Soome /// 923*f334afcfSToomas Soome /// ACPI RASF Platform RAS Capabilities 924*f334afcfSToomas Soome /// 925*f334afcfSToomas Soome #define EFI_ACPI_6_4_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPORTED BIT0 926*f334afcfSToomas Soome #define EFI_ACPI_6_4_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPORTED_AND_EXPOSED_TO_SOFTWARE BIT1 927*f334afcfSToomas Soome #define EFI_ACPI_6_4_RASF_PLATFORM_RAS_CAPABILITY_CPU_CACHE_FLUSH_TO_NVDIMM_DURABILITY_ON_POWER_LOSS BIT2 928*f334afcfSToomas Soome #define EFI_ACPI_6_4_RASF_PLATFORM_RAS_CAPABILITY_MEMORY_CONTROLLER_FLUSH_TO_NVDIMM_DURABILITY_ON_POWER_LOSS BIT3 929*f334afcfSToomas Soome #define EFI_ACPI_6_4_RASF_PLATFORM_RAS_CAPABILITY_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_HARDWARE_MIRRORING BIT4 930*f334afcfSToomas Soome 931*f334afcfSToomas Soome /// 932*f334afcfSToomas Soome /// ACPI RASF Parameter Block structure for PATROL_SCRUB 933*f334afcfSToomas Soome /// 934*f334afcfSToomas Soome typedef struct { 935*f334afcfSToomas Soome UINT16 Type; 936*f334afcfSToomas Soome UINT16 Version; 937*f334afcfSToomas Soome UINT16 Length; 938*f334afcfSToomas Soome UINT16 PatrolScrubCommand; 939*f334afcfSToomas Soome UINT64 RequestedAddressRange[2]; 940*f334afcfSToomas Soome UINT64 ActualAddressRange[2]; 941*f334afcfSToomas Soome UINT16 Flags; 942*f334afcfSToomas Soome UINT8 RequestedSpeed; 943*f334afcfSToomas Soome } EFI_ACPI_6_4_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE; 944*f334afcfSToomas Soome 945*f334afcfSToomas Soome /// 946*f334afcfSToomas Soome /// ACPI RASF Patrol Scrub command 947*f334afcfSToomas Soome /// 948*f334afcfSToomas Soome #define EFI_ACPI_6_4_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01 949*f334afcfSToomas Soome #define EFI_ACPI_6_4_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02 950*f334afcfSToomas Soome #define EFI_ACPI_6_4_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03 951*f334afcfSToomas Soome 952*f334afcfSToomas Soome /// 953*f334afcfSToomas Soome /// Memory Power State Table definition. 954*f334afcfSToomas Soome /// 955*f334afcfSToomas Soome typedef struct { 956*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 957*f334afcfSToomas Soome UINT8 PlatformCommunicationChannelIdentifier; 958*f334afcfSToomas Soome UINT8 Reserved[3]; 959*f334afcfSToomas Soome // Memory Power Node Structure 960*f334afcfSToomas Soome // Memory Power State Characteristics 961*f334afcfSToomas Soome } EFI_ACPI_6_4_MEMORY_POWER_STATUS_TABLE; 962*f334afcfSToomas Soome 963*f334afcfSToomas Soome /// 964*f334afcfSToomas Soome /// MPST Version (as defined in ACPI 6.4 spec.) 965*f334afcfSToomas Soome /// 966*f334afcfSToomas Soome #define EFI_ACPI_6_4_MEMORY_POWER_STATE_TABLE_REVISION 0x01 967*f334afcfSToomas Soome 968*f334afcfSToomas Soome /// 969*f334afcfSToomas Soome /// MPST Platform Communication Channel Shared Memory Region definition. 970*f334afcfSToomas Soome /// 971*f334afcfSToomas Soome typedef struct { 972*f334afcfSToomas Soome UINT32 Signature; 973*f334afcfSToomas Soome UINT16 Command; 974*f334afcfSToomas Soome UINT16 Status; 975*f334afcfSToomas Soome UINT32 MemoryPowerCommandRegister; 976*f334afcfSToomas Soome UINT32 MemoryPowerStatusRegister; 977*f334afcfSToomas Soome UINT32 PowerStateId; 978*f334afcfSToomas Soome UINT32 MemoryPowerNodeId; 979*f334afcfSToomas Soome UINT64 MemoryEnergyConsumed; 980*f334afcfSToomas Soome UINT64 ExpectedAveragePowerComsuned; 981*f334afcfSToomas Soome } EFI_ACPI_6_4_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; 982*f334afcfSToomas Soome 983*f334afcfSToomas Soome /// 984*f334afcfSToomas Soome /// ACPI MPST PCC command code 985*f334afcfSToomas Soome /// 986*f334afcfSToomas Soome #define EFI_ACPI_6_4_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03 987*f334afcfSToomas Soome 988*f334afcfSToomas Soome /// 989*f334afcfSToomas Soome /// ACPI MPST Memory Power command 990*f334afcfSToomas Soome /// 991*f334afcfSToomas Soome #define EFI_ACPI_6_4_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01 992*f334afcfSToomas Soome #define EFI_ACPI_6_4_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02 993*f334afcfSToomas Soome #define EFI_ACPI_6_4_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03 994*f334afcfSToomas Soome #define EFI_ACPI_6_4_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04 995*f334afcfSToomas Soome 996*f334afcfSToomas Soome /// 997*f334afcfSToomas Soome /// MPST Memory Power Node Table 998*f334afcfSToomas Soome /// 999*f334afcfSToomas Soome typedef struct { 1000*f334afcfSToomas Soome UINT8 PowerStateValue; 1001*f334afcfSToomas Soome UINT8 PowerStateInformationIndex; 1002*f334afcfSToomas Soome } EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE; 1003*f334afcfSToomas Soome 1004*f334afcfSToomas Soome typedef struct { 1005*f334afcfSToomas Soome UINT8 Flag; 1006*f334afcfSToomas Soome UINT8 Reserved; 1007*f334afcfSToomas Soome UINT16 MemoryPowerNodeId; 1008*f334afcfSToomas Soome UINT32 Length; 1009*f334afcfSToomas Soome UINT64 AddressBase; 1010*f334afcfSToomas Soome UINT64 AddressLength; 1011*f334afcfSToomas Soome UINT32 NumberOfPowerStates; 1012*f334afcfSToomas Soome UINT32 NumberOfPhysicalComponents; 1013*f334afcfSToomas Soome // EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates]; 1014*f334afcfSToomas Soome // UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents]; 1015*f334afcfSToomas Soome } EFI_ACPI_6_4_MPST_MEMORY_POWER_STRUCTURE; 1016*f334afcfSToomas Soome 1017*f334afcfSToomas Soome #define EFI_ACPI_6_4_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01 1018*f334afcfSToomas Soome #define EFI_ACPI_6_4_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02 1019*f334afcfSToomas Soome #define EFI_ACPI_6_4_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04 1020*f334afcfSToomas Soome 1021*f334afcfSToomas Soome typedef struct { 1022*f334afcfSToomas Soome UINT16 MemoryPowerNodeCount; 1023*f334afcfSToomas Soome UINT8 Reserved[2]; 1024*f334afcfSToomas Soome } EFI_ACPI_6_4_MPST_MEMORY_POWER_NODE_TABLE; 1025*f334afcfSToomas Soome 1026*f334afcfSToomas Soome /// 1027*f334afcfSToomas Soome /// MPST Memory Power State Characteristics Table 1028*f334afcfSToomas Soome /// 1029*f334afcfSToomas Soome typedef struct { 1030*f334afcfSToomas Soome UINT8 PowerStateStructureID; 1031*f334afcfSToomas Soome UINT8 Flag; 1032*f334afcfSToomas Soome UINT16 Reserved; 1033*f334afcfSToomas Soome UINT32 AveragePowerConsumedInMPS0; 1034*f334afcfSToomas Soome UINT32 RelativePowerSavingToMPS0; 1035*f334afcfSToomas Soome UINT64 ExitLatencyToMPS0; 1036*f334afcfSToomas Soome } EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE; 1037*f334afcfSToomas Soome 1038*f334afcfSToomas Soome #define EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01 1039*f334afcfSToomas Soome #define EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02 1040*f334afcfSToomas Soome #define EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04 1041*f334afcfSToomas Soome 1042*f334afcfSToomas Soome typedef struct { 1043*f334afcfSToomas Soome UINT16 MemoryPowerStateCharacteristicsCount; 1044*f334afcfSToomas Soome UINT8 Reserved[2]; 1045*f334afcfSToomas Soome } EFI_ACPI_6_4_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE; 1046*f334afcfSToomas Soome 1047*f334afcfSToomas Soome /// 1048*f334afcfSToomas Soome /// Platform Memory Topology Table definition. 1049*f334afcfSToomas Soome /// 1050*f334afcfSToomas Soome typedef struct { 1051*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1052*f334afcfSToomas Soome UINT32 NumberOfMemoryDevices; 1053*f334afcfSToomas Soome // EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[NumberOfMemoryDevices]; 1054*f334afcfSToomas Soome } EFI_ACPI_6_4_PLATFORM_MEMORY_TOPOLOGY_TABLE; 1055*f334afcfSToomas Soome 1056*f334afcfSToomas Soome /// 1057*f334afcfSToomas Soome /// PMTT Version (as defined in ACPI 6.4 spec.) 1058*f334afcfSToomas Soome /// 1059*f334afcfSToomas Soome #define EFI_ACPI_6_4_MEMORY_TOPOLOGY_TABLE_REVISION 0x02 1060*f334afcfSToomas Soome 1061*f334afcfSToomas Soome /// 1062*f334afcfSToomas Soome /// Common Memory Device. 1063*f334afcfSToomas Soome /// 1064*f334afcfSToomas Soome typedef struct { 1065*f334afcfSToomas Soome UINT8 Type; 1066*f334afcfSToomas Soome UINT8 Reserved; 1067*f334afcfSToomas Soome UINT16 Length; 1068*f334afcfSToomas Soome UINT16 Flags; 1069*f334afcfSToomas Soome UINT16 Reserved1; 1070*f334afcfSToomas Soome UINT32 NumberOfMemoryDevices; 1071*f334afcfSToomas Soome // UINT8 TypeSpecificData[]; 1072*f334afcfSToomas Soome // EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[NumberOfMemoryDevices]; 1073*f334afcfSToomas Soome } EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE; 1074*f334afcfSToomas Soome 1075*f334afcfSToomas Soome /// 1076*f334afcfSToomas Soome /// Memory Device Type. 1077*f334afcfSToomas Soome /// 1078*f334afcfSToomas Soome #define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_SOCKET 0x0 1079*f334afcfSToomas Soome #define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_MEMORY_CONTROLLER 0x1 1080*f334afcfSToomas Soome #define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_DIMM 0x2 1081*f334afcfSToomas Soome #define EFI_ACPI_6_4_PMTT_MEMORY_DEVICE_TYPE_VENDOR_SPECIFIC_TYPE 0xFF 1082*f334afcfSToomas Soome 1083*f334afcfSToomas Soome /// 1084*f334afcfSToomas Soome /// Socket Type Data. 1085*f334afcfSToomas Soome /// 1086*f334afcfSToomas Soome typedef struct { 1087*f334afcfSToomas Soome EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader; 1088*f334afcfSToomas Soome UINT16 SocketIdentifier; 1089*f334afcfSToomas Soome UINT16 Reserved; 1090*f334afcfSToomas Soome // EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[]; 1091*f334afcfSToomas Soome } EFI_ACPI_6_4_PMTT_SOCKET_TYPE_DATA; 1092*f334afcfSToomas Soome 1093*f334afcfSToomas Soome /// 1094*f334afcfSToomas Soome /// Memory Controller Type Data. 1095*f334afcfSToomas Soome /// 1096*f334afcfSToomas Soome typedef struct { 1097*f334afcfSToomas Soome EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader; 1098*f334afcfSToomas Soome UINT16 MemoryControllerIdentifier; 1099*f334afcfSToomas Soome UINT16 Reserved; 1100*f334afcfSToomas Soome // EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[]; 1101*f334afcfSToomas Soome } EFI_ACPI_6_4_PMTT_MEMORY_CONTROLLER_TYPE_DATA; 1102*f334afcfSToomas Soome 1103*f334afcfSToomas Soome /// 1104*f334afcfSToomas Soome /// DIMM Type Specific Data. 1105*f334afcfSToomas Soome /// 1106*f334afcfSToomas Soome typedef struct { 1107*f334afcfSToomas Soome EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader; 1108*f334afcfSToomas Soome UINT32 SmbiosHandle; 1109*f334afcfSToomas Soome } EFI_ACPI_6_4_PMTT_DIMM_TYPE_SPECIFIC_DATA; 1110*f334afcfSToomas Soome 1111*f334afcfSToomas Soome /// 1112*f334afcfSToomas Soome /// Vendor Specific Type Data. 1113*f334afcfSToomas Soome /// 1114*f334afcfSToomas Soome typedef struct { 1115*f334afcfSToomas Soome EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE CommonMemoryDeviceHeader; 1116*f334afcfSToomas Soome UINT8 TypeUuid[16]; 1117*f334afcfSToomas Soome // EFI_ACPI_6_4_PMTT_VENDOR_SPECIFIC_TYPE_DATA VendorSpecificData[]; 1118*f334afcfSToomas Soome // EFI_ACPI_6_4_PMTT_COMMON_MEMORY_DEVICE MemoryDeviceStructure[]; 1119*f334afcfSToomas Soome } EFI_ACPI_6_4_PMTT_VENDOR_SPECIFIC_TYPE_DATA; 1120*f334afcfSToomas Soome 1121*f334afcfSToomas Soome /// 1122*f334afcfSToomas Soome /// Boot Graphics Resource Table definition. 1123*f334afcfSToomas Soome /// 1124*f334afcfSToomas Soome typedef struct { 1125*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1126*f334afcfSToomas Soome /// 1127*f334afcfSToomas Soome /// 2-bytes (16 bit) version ID. This value must be 1. 1128*f334afcfSToomas Soome /// 1129*f334afcfSToomas Soome UINT16 Version; 1130*f334afcfSToomas Soome /// 1131*f334afcfSToomas Soome /// 1-byte status field indicating current status about the table. 1132*f334afcfSToomas Soome /// Bits[7:3] = Reserved (must be zero) 1133*f334afcfSToomas Soome /// Bits[2:1] = Orientation Offset. These bits describe the clockwise 1134*f334afcfSToomas Soome /// degree offset from the image's default orientation. 1135*f334afcfSToomas Soome /// [00] = 0, no offset 1136*f334afcfSToomas Soome /// [01] = 90 1137*f334afcfSToomas Soome /// [10] = 180 1138*f334afcfSToomas Soome /// [11] = 270 1139*f334afcfSToomas Soome /// Bit [0] = Displayed. A one indicates the boot image graphic is 1140*f334afcfSToomas Soome /// displayed. 1141*f334afcfSToomas Soome /// 1142*f334afcfSToomas Soome UINT8 Status; 1143*f334afcfSToomas Soome /// 1144*f334afcfSToomas Soome /// 1-byte enumerated type field indicating format of the image. 1145*f334afcfSToomas Soome /// 0 = Bitmap 1146*f334afcfSToomas Soome /// 1 - 255 Reserved (for future use) 1147*f334afcfSToomas Soome /// 1148*f334afcfSToomas Soome UINT8 ImageType; 1149*f334afcfSToomas Soome /// 1150*f334afcfSToomas Soome /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy 1151*f334afcfSToomas Soome /// of the image bitmap. 1152*f334afcfSToomas Soome /// 1153*f334afcfSToomas Soome UINT64 ImageAddress; 1154*f334afcfSToomas Soome /// 1155*f334afcfSToomas Soome /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image. 1156*f334afcfSToomas Soome /// (X, Y) display offset of the top left corner of the boot image. 1157*f334afcfSToomas Soome /// The top left corner of the display is at offset (0, 0). 1158*f334afcfSToomas Soome /// 1159*f334afcfSToomas Soome UINT32 ImageOffsetX; 1160*f334afcfSToomas Soome /// 1161*f334afcfSToomas Soome /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image. 1162*f334afcfSToomas Soome /// (X, Y) display offset of the top left corner of the boot image. 1163*f334afcfSToomas Soome /// The top left corner of the display is at offset (0, 0). 1164*f334afcfSToomas Soome /// 1165*f334afcfSToomas Soome UINT32 ImageOffsetY; 1166*f334afcfSToomas Soome } EFI_ACPI_6_4_BOOT_GRAPHICS_RESOURCE_TABLE; 1167*f334afcfSToomas Soome 1168*f334afcfSToomas Soome /// 1169*f334afcfSToomas Soome /// BGRT Revision 1170*f334afcfSToomas Soome /// 1171*f334afcfSToomas Soome #define EFI_ACPI_6_4_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1 1172*f334afcfSToomas Soome 1173*f334afcfSToomas Soome /// 1174*f334afcfSToomas Soome /// BGRT Version 1175*f334afcfSToomas Soome /// 1176*f334afcfSToomas Soome #define EFI_ACPI_6_4_BGRT_VERSION 0x01 1177*f334afcfSToomas Soome 1178*f334afcfSToomas Soome /// 1179*f334afcfSToomas Soome /// BGRT Status 1180*f334afcfSToomas Soome /// 1181*f334afcfSToomas Soome #define EFI_ACPI_6_4_BGRT_STATUS_NOT_DISPLAYED 0x00 1182*f334afcfSToomas Soome #define EFI_ACPI_6_4_BGRT_STATUS_DISPLAYED 0x01 1183*f334afcfSToomas Soome 1184*f334afcfSToomas Soome /// 1185*f334afcfSToomas Soome /// BGRT Image Type 1186*f334afcfSToomas Soome /// 1187*f334afcfSToomas Soome #define EFI_ACPI_6_4_BGRT_IMAGE_TYPE_BMP 0x00 1188*f334afcfSToomas Soome 1189*f334afcfSToomas Soome /// 1190*f334afcfSToomas Soome /// FPDT Version (as defined in ACPI 6.4 spec.) 1191*f334afcfSToomas Soome /// 1192*f334afcfSToomas Soome #define EFI_ACPI_6_4_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01 1193*f334afcfSToomas Soome 1194*f334afcfSToomas Soome /// 1195*f334afcfSToomas Soome /// FPDT Performance Record Types 1196*f334afcfSToomas Soome /// 1197*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000 1198*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001 1199*f334afcfSToomas Soome 1200*f334afcfSToomas Soome /// 1201*f334afcfSToomas Soome /// FPDT Performance Record Revision 1202*f334afcfSToomas Soome /// 1203*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01 1204*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01 1205*f334afcfSToomas Soome 1206*f334afcfSToomas Soome /// 1207*f334afcfSToomas Soome /// FPDT Runtime Performance Record Types 1208*f334afcfSToomas Soome /// 1209*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000 1210*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001 1211*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002 1212*f334afcfSToomas Soome 1213*f334afcfSToomas Soome /// 1214*f334afcfSToomas Soome /// FPDT Runtime Performance Record Revision 1215*f334afcfSToomas Soome /// 1216*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01 1217*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01 1218*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02 1219*f334afcfSToomas Soome 1220*f334afcfSToomas Soome /// 1221*f334afcfSToomas Soome /// FPDT Performance Record header 1222*f334afcfSToomas Soome /// 1223*f334afcfSToomas Soome typedef struct { 1224*f334afcfSToomas Soome UINT16 Type; 1225*f334afcfSToomas Soome UINT8 Length; 1226*f334afcfSToomas Soome UINT8 Revision; 1227*f334afcfSToomas Soome } EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER; 1228*f334afcfSToomas Soome 1229*f334afcfSToomas Soome /// 1230*f334afcfSToomas Soome /// FPDT Performance Table header 1231*f334afcfSToomas Soome /// 1232*f334afcfSToomas Soome typedef struct { 1233*f334afcfSToomas Soome UINT32 Signature; 1234*f334afcfSToomas Soome UINT32 Length; 1235*f334afcfSToomas Soome } EFI_ACPI_6_4_FPDT_PERFORMANCE_TABLE_HEADER; 1236*f334afcfSToomas Soome 1237*f334afcfSToomas Soome /// 1238*f334afcfSToomas Soome /// FPDT Firmware Basic Boot Performance Pointer Record Structure 1239*f334afcfSToomas Soome /// 1240*f334afcfSToomas Soome typedef struct { 1241*f334afcfSToomas Soome EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER Header; 1242*f334afcfSToomas Soome UINT32 Reserved; 1243*f334afcfSToomas Soome /// 1244*f334afcfSToomas Soome /// 64-bit processor-relative physical address of the Basic Boot Performance Table. 1245*f334afcfSToomas Soome /// 1246*f334afcfSToomas Soome UINT64 BootPerformanceTablePointer; 1247*f334afcfSToomas Soome } EFI_ACPI_6_4_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD; 1248*f334afcfSToomas Soome 1249*f334afcfSToomas Soome /// 1250*f334afcfSToomas Soome /// FPDT S3 Performance Table Pointer Record Structure 1251*f334afcfSToomas Soome /// 1252*f334afcfSToomas Soome typedef struct { 1253*f334afcfSToomas Soome EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER Header; 1254*f334afcfSToomas Soome UINT32 Reserved; 1255*f334afcfSToomas Soome /// 1256*f334afcfSToomas Soome /// 64-bit processor-relative physical address of the S3 Performance Table. 1257*f334afcfSToomas Soome /// 1258*f334afcfSToomas Soome UINT64 S3PerformanceTablePointer; 1259*f334afcfSToomas Soome } EFI_ACPI_6_4_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD; 1260*f334afcfSToomas Soome 1261*f334afcfSToomas Soome /// 1262*f334afcfSToomas Soome /// FPDT Firmware Basic Boot Performance Record Structure 1263*f334afcfSToomas Soome /// 1264*f334afcfSToomas Soome typedef struct { 1265*f334afcfSToomas Soome EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER Header; 1266*f334afcfSToomas Soome UINT32 Reserved; 1267*f334afcfSToomas Soome /// 1268*f334afcfSToomas Soome /// Timer value logged at the beginning of firmware image execution. 1269*f334afcfSToomas Soome /// This may not always be zero or near zero. 1270*f334afcfSToomas Soome /// 1271*f334afcfSToomas Soome UINT64 ResetEnd; 1272*f334afcfSToomas Soome /// 1273*f334afcfSToomas Soome /// Timer value logged just prior to loading the OS boot loader into memory. 1274*f334afcfSToomas Soome /// For non-UEFI compatible boots, this field must be zero. 1275*f334afcfSToomas Soome /// 1276*f334afcfSToomas Soome UINT64 OsLoaderLoadImageStart; 1277*f334afcfSToomas Soome /// 1278*f334afcfSToomas Soome /// Timer value logged just prior to launching the previously loaded OS boot loader image. 1279*f334afcfSToomas Soome /// For non-UEFI compatible boots, the timer value logged will be just prior 1280*f334afcfSToomas Soome /// to the INT 19h handler invocation. 1281*f334afcfSToomas Soome /// 1282*f334afcfSToomas Soome UINT64 OsLoaderStartImageStart; 1283*f334afcfSToomas Soome /// 1284*f334afcfSToomas Soome /// Timer value logged at the point when the OS loader calls the 1285*f334afcfSToomas Soome /// ExitBootServices function for UEFI compatible firmware. 1286*f334afcfSToomas Soome /// For non-UEFI compatible boots, this field must be zero. 1287*f334afcfSToomas Soome /// 1288*f334afcfSToomas Soome UINT64 ExitBootServicesEntry; 1289*f334afcfSToomas Soome /// 1290*f334afcfSToomas Soome /// Timer value logged at the point just prior towhen the OS loader gaining 1291*f334afcfSToomas Soome /// control back from calls the ExitBootServices function for UEFI compatible firmware. 1292*f334afcfSToomas Soome /// For non-UEFI compatible boots, this field must be zero. 1293*f334afcfSToomas Soome /// 1294*f334afcfSToomas Soome UINT64 ExitBootServicesExit; 1295*f334afcfSToomas Soome } EFI_ACPI_6_4_FPDT_FIRMWARE_BASIC_BOOT_RECORD; 1296*f334afcfSToomas Soome 1297*f334afcfSToomas Soome /// 1298*f334afcfSToomas Soome /// FPDT Firmware Basic Boot Performance Table signature 1299*f334afcfSToomas Soome /// 1300*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T') 1301*f334afcfSToomas Soome 1302*f334afcfSToomas Soome // 1303*f334afcfSToomas Soome // FPDT Firmware Basic Boot Performance Table 1304*f334afcfSToomas Soome // 1305*f334afcfSToomas Soome typedef struct { 1306*f334afcfSToomas Soome EFI_ACPI_6_4_FPDT_PERFORMANCE_TABLE_HEADER Header; 1307*f334afcfSToomas Soome // 1308*f334afcfSToomas Soome // one or more Performance Records. 1309*f334afcfSToomas Soome // 1310*f334afcfSToomas Soome } EFI_ACPI_6_4_FPDT_FIRMWARE_BASIC_BOOT_TABLE; 1311*f334afcfSToomas Soome 1312*f334afcfSToomas Soome /// 1313*f334afcfSToomas Soome /// FPDT "S3PT" S3 Performance Table 1314*f334afcfSToomas Soome /// 1315*f334afcfSToomas Soome #define EFI_ACPI_6_4_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T') 1316*f334afcfSToomas Soome 1317*f334afcfSToomas Soome // 1318*f334afcfSToomas Soome // FPDT Firmware S3 Boot Performance Table 1319*f334afcfSToomas Soome // 1320*f334afcfSToomas Soome typedef struct { 1321*f334afcfSToomas Soome EFI_ACPI_6_4_FPDT_PERFORMANCE_TABLE_HEADER Header; 1322*f334afcfSToomas Soome // 1323*f334afcfSToomas Soome // one or more Performance Records. 1324*f334afcfSToomas Soome // 1325*f334afcfSToomas Soome } EFI_ACPI_6_4_FPDT_FIRMWARE_S3_BOOT_TABLE; 1326*f334afcfSToomas Soome 1327*f334afcfSToomas Soome /// 1328*f334afcfSToomas Soome /// FPDT Basic S3 Resume Performance Record 1329*f334afcfSToomas Soome /// 1330*f334afcfSToomas Soome typedef struct { 1331*f334afcfSToomas Soome EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER Header; 1332*f334afcfSToomas Soome /// 1333*f334afcfSToomas Soome /// A count of the number of S3 resume cycles since the last full boot sequence. 1334*f334afcfSToomas Soome /// 1335*f334afcfSToomas Soome UINT32 ResumeCount; 1336*f334afcfSToomas Soome /// 1337*f334afcfSToomas Soome /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the 1338*f334afcfSToomas Soome /// OS waking vector. Only the most recent resume cycle's time is retained. 1339*f334afcfSToomas Soome /// 1340*f334afcfSToomas Soome UINT64 FullResume; 1341*f334afcfSToomas Soome /// 1342*f334afcfSToomas Soome /// Average timer value of all resume cycles logged since the last full boot 1343*f334afcfSToomas Soome /// sequence, including the most recent resume. Note that the entire log of 1344*f334afcfSToomas Soome /// timer values does not need to be retained in order to calculate this average. 1345*f334afcfSToomas Soome /// 1346*f334afcfSToomas Soome UINT64 AverageResume; 1347*f334afcfSToomas Soome } EFI_ACPI_6_4_FPDT_S3_RESUME_RECORD; 1348*f334afcfSToomas Soome 1349*f334afcfSToomas Soome /// 1350*f334afcfSToomas Soome /// FPDT Basic S3 Suspend Performance Record 1351*f334afcfSToomas Soome /// 1352*f334afcfSToomas Soome typedef struct { 1353*f334afcfSToomas Soome EFI_ACPI_6_4_FPDT_PERFORMANCE_RECORD_HEADER Header; 1354*f334afcfSToomas Soome /// 1355*f334afcfSToomas Soome /// Timer value recorded at the OS write to SLP_TYP upon entry to S3. 1356*f334afcfSToomas Soome /// Only the most recent suspend cycle's timer value is retained. 1357*f334afcfSToomas Soome /// 1358*f334afcfSToomas Soome UINT64 SuspendStart; 1359*f334afcfSToomas Soome /// 1360*f334afcfSToomas Soome /// Timer value recorded at the final firmware write to SLP_TYP (or other 1361*f334afcfSToomas Soome /// mechanism) used to trigger hardware entry to S3. 1362*f334afcfSToomas Soome /// Only the most recent suspend cycle's timer value is retained. 1363*f334afcfSToomas Soome /// 1364*f334afcfSToomas Soome UINT64 SuspendEnd; 1365*f334afcfSToomas Soome } EFI_ACPI_6_4_FPDT_S3_SUSPEND_RECORD; 1366*f334afcfSToomas Soome 1367*f334afcfSToomas Soome /// 1368*f334afcfSToomas Soome /// Firmware Performance Record Table definition. 1369*f334afcfSToomas Soome /// 1370*f334afcfSToomas Soome typedef struct { 1371*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1372*f334afcfSToomas Soome } EFI_ACPI_6_4_FIRMWARE_PERFORMANCE_RECORD_TABLE; 1373*f334afcfSToomas Soome 1374*f334afcfSToomas Soome /// 1375*f334afcfSToomas Soome /// Generic Timer Description Table definition. 1376*f334afcfSToomas Soome /// 1377*f334afcfSToomas Soome typedef struct { 1378*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1379*f334afcfSToomas Soome UINT64 CntControlBasePhysicalAddress; 1380*f334afcfSToomas Soome UINT32 Reserved; 1381*f334afcfSToomas Soome UINT32 SecurePL1TimerGSIV; 1382*f334afcfSToomas Soome UINT32 SecurePL1TimerFlags; 1383*f334afcfSToomas Soome UINT32 NonSecurePL1TimerGSIV; 1384*f334afcfSToomas Soome UINT32 NonSecurePL1TimerFlags; 1385*f334afcfSToomas Soome UINT32 VirtualTimerGSIV; 1386*f334afcfSToomas Soome UINT32 VirtualTimerFlags; 1387*f334afcfSToomas Soome UINT32 NonSecurePL2TimerGSIV; 1388*f334afcfSToomas Soome UINT32 NonSecurePL2TimerFlags; 1389*f334afcfSToomas Soome UINT64 CntReadBasePhysicalAddress; 1390*f334afcfSToomas Soome UINT32 PlatformTimerCount; 1391*f334afcfSToomas Soome UINT32 PlatformTimerOffset; 1392*f334afcfSToomas Soome UINT32 VirtualPL2TimerGSIV; 1393*f334afcfSToomas Soome UINT32 VirtualPL2TimerFlags; 1394*f334afcfSToomas Soome } EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE; 1395*f334afcfSToomas Soome 1396*f334afcfSToomas Soome /// 1397*f334afcfSToomas Soome /// GTDT Version (as defined in ACPI 6.4 spec.) 1398*f334afcfSToomas Soome /// 1399*f334afcfSToomas Soome #define EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x03 1400*f334afcfSToomas Soome 1401*f334afcfSToomas Soome /// 1402*f334afcfSToomas Soome /// Timer Flags. All other bits are reserved and must be 0. 1403*f334afcfSToomas Soome /// 1404*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 1405*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 1406*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY BIT2 1407*f334afcfSToomas Soome 1408*f334afcfSToomas Soome /// 1409*f334afcfSToomas Soome /// Platform Timer Type 1410*f334afcfSToomas Soome /// 1411*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_GT_BLOCK 0 1412*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG 1 1413*f334afcfSToomas Soome 1414*f334afcfSToomas Soome /// 1415*f334afcfSToomas Soome /// GT Block Structure 1416*f334afcfSToomas Soome /// 1417*f334afcfSToomas Soome typedef struct { 1418*f334afcfSToomas Soome UINT8 Type; 1419*f334afcfSToomas Soome UINT16 Length; 1420*f334afcfSToomas Soome UINT8 Reserved; 1421*f334afcfSToomas Soome UINT64 CntCtlBase; 1422*f334afcfSToomas Soome UINT32 GTBlockTimerCount; 1423*f334afcfSToomas Soome UINT32 GTBlockTimerOffset; 1424*f334afcfSToomas Soome } EFI_ACPI_6_4_GTDT_GT_BLOCK_STRUCTURE; 1425*f334afcfSToomas Soome 1426*f334afcfSToomas Soome /// 1427*f334afcfSToomas Soome /// GT Block Timer Structure 1428*f334afcfSToomas Soome /// 1429*f334afcfSToomas Soome typedef struct { 1430*f334afcfSToomas Soome UINT8 GTFrameNumber; 1431*f334afcfSToomas Soome UINT8 Reserved[3]; 1432*f334afcfSToomas Soome UINT64 CntBaseX; 1433*f334afcfSToomas Soome UINT64 CntEL0BaseX; 1434*f334afcfSToomas Soome UINT32 GTxPhysicalTimerGSIV; 1435*f334afcfSToomas Soome UINT32 GTxPhysicalTimerFlags; 1436*f334afcfSToomas Soome UINT32 GTxVirtualTimerGSIV; 1437*f334afcfSToomas Soome UINT32 GTxVirtualTimerFlags; 1438*f334afcfSToomas Soome UINT32 GTxCommonFlags; 1439*f334afcfSToomas Soome } EFI_ACPI_6_4_GTDT_GT_BLOCK_TIMER_STRUCTURE; 1440*f334afcfSToomas Soome 1441*f334afcfSToomas Soome /// 1442*f334afcfSToomas Soome /// GT Block Physical Timers and Virtual Timers Flags. All other bits are reserved and must be 0. 1443*f334afcfSToomas Soome /// 1444*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 1445*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 1446*f334afcfSToomas Soome 1447*f334afcfSToomas Soome /// 1448*f334afcfSToomas Soome /// Common Flags Flags. All other bits are reserved and must be 0. 1449*f334afcfSToomas Soome /// 1450*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER BIT0 1451*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY BIT1 1452*f334afcfSToomas Soome 1453*f334afcfSToomas Soome /// 1454*f334afcfSToomas Soome /// Arm Generic Watchdog Structure 1455*f334afcfSToomas Soome /// 1456*f334afcfSToomas Soome typedef struct { 1457*f334afcfSToomas Soome UINT8 Type; 1458*f334afcfSToomas Soome UINT16 Length; 1459*f334afcfSToomas Soome UINT8 Reserved; 1460*f334afcfSToomas Soome UINT64 RefreshFramePhysicalAddress; 1461*f334afcfSToomas Soome UINT64 WatchdogControlFramePhysicalAddress; 1462*f334afcfSToomas Soome UINT32 WatchdogTimerGSIV; 1463*f334afcfSToomas Soome UINT32 WatchdogTimerFlags; 1464*f334afcfSToomas Soome } EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_STRUCTURE; 1465*f334afcfSToomas Soome 1466*f334afcfSToomas Soome /// 1467*f334afcfSToomas Soome /// Arm Generic Watchdog Timer Flags. All other bits are reserved and must be 0. 1468*f334afcfSToomas Soome /// 1469*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE BIT0 1470*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY BIT1 1471*f334afcfSToomas Soome #define EFI_ACPI_6_4_GTDT_ARM_GENERIC_WATCHDOG_FLAG_SECURE_TIMER BIT2 1472*f334afcfSToomas Soome 1473*f334afcfSToomas Soome // 1474*f334afcfSToomas Soome // NVDIMM Firmware Interface Table definition. 1475*f334afcfSToomas Soome // 1476*f334afcfSToomas Soome typedef struct { 1477*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1478*f334afcfSToomas Soome UINT32 Reserved; 1479*f334afcfSToomas Soome } EFI_ACPI_6_4_NVDIMM_FIRMWARE_INTERFACE_TABLE; 1480*f334afcfSToomas Soome 1481*f334afcfSToomas Soome // 1482*f334afcfSToomas Soome // NFIT Version (as defined in ACPI 6.4 spec.) 1483*f334afcfSToomas Soome // 1484*f334afcfSToomas Soome #define EFI_ACPI_6_4_NVDIMM_FIRMWARE_INTERFACE_TABLE_REVISION 0x1 1485*f334afcfSToomas Soome 1486*f334afcfSToomas Soome // 1487*f334afcfSToomas Soome // Definition for NFIT Table Structure Types 1488*f334afcfSToomas Soome // 1489*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE_TYPE 0 1490*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_NVDIMM_REGION_MAPPING_STRUCTURE_TYPE 1 1491*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_INTERLEAVE_STRUCTURE_TYPE 2 1492*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE_TYPE 3 1493*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE_TYPE 4 1494*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE_TYPE 5 1495*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE_TYPE 6 1496*f334afcfSToomas Soome 1497*f334afcfSToomas Soome // 1498*f334afcfSToomas Soome // Definition for NFIT Structure Header 1499*f334afcfSToomas Soome // 1500*f334afcfSToomas Soome typedef struct { 1501*f334afcfSToomas Soome UINT16 Type; 1502*f334afcfSToomas Soome UINT16 Length; 1503*f334afcfSToomas Soome } EFI_ACPI_6_4_NFIT_STRUCTURE_HEADER; 1504*f334afcfSToomas Soome 1505*f334afcfSToomas Soome // 1506*f334afcfSToomas Soome // Definition for System Physical Address Range Structure 1507*f334afcfSToomas Soome // 1508*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT BIT0 1509*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID BIT1 1510*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_SPA_LOCATION_COOKIE_VALID BIT2 1511*f334afcfSToomas Soome 1512*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_GUID_VOLATILE_MEMORY_REGION { 0x7305944F, 0xFDDA, 0x44E3, { 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0 }} 1513*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_GUID_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_REGION { 0x66F0D379, 0xB4F3, 0x4074, { 0xAC, 0x43, 0x0D, 0x33, 0x18, 0xB7, 0x8C, 0xDB }} 1514*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_GUID_NVDIMM_CONTROL_REGION { 0x92F701F6, 0x13B4, 0x405D, { 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C }} 1515*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_GUID_NVDIMM_BLOCK_DATA_WINDOW_REGION { 0x91AF0530, 0x5D86, 0x470E, { 0xA6, 0xB0, 0x0A, 0x2D, 0xB9, 0x40, 0x82, 0x49 }} 1516*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE { 0x77AB535A, 0x45FC, 0x624B, { 0x55, 0x60, 0xF7, 0xB2, 0x81, 0xD1, 0xF9, 0x6E }} 1517*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE { 0x3D5ABD30, 0x4175, 0x87CE, { 0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB }} 1518*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT { 0x5CEA02C9, 0x4D07, 0x69D3, { 0x26, 0x9F ,0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9 }} 1519*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT { 0x08018188, 0x42CD, 0xBB48, { 0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D }} 1520*f334afcfSToomas Soome 1521*f334afcfSToomas Soome typedef struct { 1522*f334afcfSToomas Soome UINT16 Type; 1523*f334afcfSToomas Soome UINT16 Length; 1524*f334afcfSToomas Soome UINT16 SPARangeStructureIndex; 1525*f334afcfSToomas Soome UINT16 Flags; 1526*f334afcfSToomas Soome UINT32 Reserved_8; 1527*f334afcfSToomas Soome UINT32 ProximityDomain; 1528*f334afcfSToomas Soome GUID AddressRangeTypeGUID; 1529*f334afcfSToomas Soome UINT64 SystemPhysicalAddressRangeBase; 1530*f334afcfSToomas Soome UINT64 SystemPhysicalAddressRangeLength; 1531*f334afcfSToomas Soome UINT64 AddressRangeMemoryMappingAttribute; 1532*f334afcfSToomas Soome UINT64 SPALocationCookie; 1533*f334afcfSToomas Soome } EFI_ACPI_6_4_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE; 1534*f334afcfSToomas Soome 1535*f334afcfSToomas Soome // 1536*f334afcfSToomas Soome // Definition for Memory Device to System Physical Address Range Mapping Structure 1537*f334afcfSToomas Soome // 1538*f334afcfSToomas Soome typedef struct { 1539*f334afcfSToomas Soome UINT32 DIMMNumber : 4; 1540*f334afcfSToomas Soome UINT32 MemoryChannelNumber : 4; 1541*f334afcfSToomas Soome UINT32 MemoryControllerID : 4; 1542*f334afcfSToomas Soome UINT32 SocketID : 4; 1543*f334afcfSToomas Soome UINT32 NodeControllerID : 12; 1544*f334afcfSToomas Soome UINT32 Reserved_28 : 4; 1545*f334afcfSToomas Soome } EFI_ACPI_6_4_NFIT_DEVICE_HANDLE; 1546*f334afcfSToomas Soome 1547*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_PREVIOUS_SAVE_FAIL BIT0 1548*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_LAST_RESTORE_FAIL BIT1 1549*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_PLATFORM_FLUSH_FAIL BIT2 1550*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_NOT_ARMED_PRIOR_TO_OSPM_HAND_OFF BIT3 1551*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_SMART_HEALTH_EVENTS_PRIOR_OSPM_HAND_OFF BIT4 1552*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_ENABLED_TO_NOTIFY_OSPM_ON_SMART_HEALTH_EVENTS BIT5 1553*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_NOT_MAP_NVDIMM_TO_SPA BIT6 1554*f334afcfSToomas Soome 1555*f334afcfSToomas Soome typedef struct { 1556*f334afcfSToomas Soome UINT16 Type; 1557*f334afcfSToomas Soome UINT16 Length; 1558*f334afcfSToomas Soome EFI_ACPI_6_4_NFIT_DEVICE_HANDLE NFITDeviceHandle; 1559*f334afcfSToomas Soome UINT16 NVDIMMPhysicalID; 1560*f334afcfSToomas Soome UINT16 NVDIMMRegionID; 1561*f334afcfSToomas Soome UINT16 SPARangeStructureIndex; 1562*f334afcfSToomas Soome UINT16 NVDIMMControlRegionStructureIndex; 1563*f334afcfSToomas Soome UINT64 NVDIMMRegionSize; 1564*f334afcfSToomas Soome UINT64 RegionOffset; 1565*f334afcfSToomas Soome UINT64 NVDIMMPhysicalAddressRegionBase; 1566*f334afcfSToomas Soome UINT16 InterleaveStructureIndex; 1567*f334afcfSToomas Soome UINT16 InterleaveWays; 1568*f334afcfSToomas Soome UINT16 NVDIMMStateFlags; 1569*f334afcfSToomas Soome UINT16 Reserved_46; 1570*f334afcfSToomas Soome } EFI_ACPI_6_4_NFIT_NVDIMM_REGION_MAPPING_STRUCTURE; 1571*f334afcfSToomas Soome 1572*f334afcfSToomas Soome // 1573*f334afcfSToomas Soome // Definition for Interleave Structure 1574*f334afcfSToomas Soome // 1575*f334afcfSToomas Soome typedef struct { 1576*f334afcfSToomas Soome UINT16 Type; 1577*f334afcfSToomas Soome UINT16 Length; 1578*f334afcfSToomas Soome UINT16 InterleaveStructureIndex; 1579*f334afcfSToomas Soome UINT16 Reserved_6; 1580*f334afcfSToomas Soome UINT32 NumberOfLines; 1581*f334afcfSToomas Soome UINT32 LineSize; 1582*f334afcfSToomas Soome // UINT32 LineOffset[NumberOfLines]; 1583*f334afcfSToomas Soome } EFI_ACPI_6_4_NFIT_INTERLEAVE_STRUCTURE; 1584*f334afcfSToomas Soome 1585*f334afcfSToomas Soome // 1586*f334afcfSToomas Soome // Definition for SMBIOS Management Information Structure 1587*f334afcfSToomas Soome // 1588*f334afcfSToomas Soome typedef struct { 1589*f334afcfSToomas Soome UINT16 Type; 1590*f334afcfSToomas Soome UINT16 Length; 1591*f334afcfSToomas Soome UINT32 Reserved_4; 1592*f334afcfSToomas Soome // UINT8 Data[]; 1593*f334afcfSToomas Soome } EFI_ACPI_6_4_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE; 1594*f334afcfSToomas Soome 1595*f334afcfSToomas Soome // 1596*f334afcfSToomas Soome // Definition for NVDIMM Control Region Structure 1597*f334afcfSToomas Soome // 1598*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_NVDIMM_CONTROL_REGION_VALID_FIELDS_MANUFACTURING BIT0 1599*f334afcfSToomas Soome 1600*f334afcfSToomas Soome #define EFI_ACPI_6_4_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED BIT0 1601*f334afcfSToomas Soome 1602*f334afcfSToomas Soome typedef struct { 1603*f334afcfSToomas Soome UINT16 Type; 1604*f334afcfSToomas Soome UINT16 Length; 1605*f334afcfSToomas Soome UINT16 NVDIMMControlRegionStructureIndex; 1606*f334afcfSToomas Soome UINT16 VendorID; 1607*f334afcfSToomas Soome UINT16 DeviceID; 1608*f334afcfSToomas Soome UINT16 RevisionID; 1609*f334afcfSToomas Soome UINT16 SubsystemVendorID; 1610*f334afcfSToomas Soome UINT16 SubsystemDeviceID; 1611*f334afcfSToomas Soome UINT16 SubsystemRevisionID; 1612*f334afcfSToomas Soome UINT8 ValidFields; 1613*f334afcfSToomas Soome UINT8 ManufacturingLocation; 1614*f334afcfSToomas Soome UINT16 ManufacturingDate; 1615*f334afcfSToomas Soome UINT8 Reserved_22[2]; 1616*f334afcfSToomas Soome UINT32 SerialNumber; 1617*f334afcfSToomas Soome UINT16 RegionFormatInterfaceCode; 1618*f334afcfSToomas Soome UINT16 NumberOfBlockControlWindows; 1619*f334afcfSToomas Soome UINT64 SizeOfBlockControlWindow; 1620*f334afcfSToomas Soome UINT64 CommandRegisterOffsetInBlockControlWindow; 1621*f334afcfSToomas Soome UINT64 SizeOfCommandRegisterInBlockControlWindows; 1622*f334afcfSToomas Soome UINT64 StatusRegisterOffsetInBlockControlWindow; 1623*f334afcfSToomas Soome UINT64 SizeOfStatusRegisterInBlockControlWindows; 1624*f334afcfSToomas Soome UINT16 NVDIMMControlRegionFlag; 1625*f334afcfSToomas Soome UINT8 Reserved_74[6]; 1626*f334afcfSToomas Soome } EFI_ACPI_6_4_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE; 1627*f334afcfSToomas Soome 1628*f334afcfSToomas Soome // 1629*f334afcfSToomas Soome // Definition for NVDIMM Block Data Window Region Structure 1630*f334afcfSToomas Soome // 1631*f334afcfSToomas Soome typedef struct { 1632*f334afcfSToomas Soome UINT16 Type; 1633*f334afcfSToomas Soome UINT16 Length; 1634*f334afcfSToomas Soome UINT16 NVDIMMControlRegionStructureIndex; 1635*f334afcfSToomas Soome UINT16 NumberOfBlockDataWindows; 1636*f334afcfSToomas Soome UINT64 BlockDataWindowStartOffset; 1637*f334afcfSToomas Soome UINT64 SizeOfBlockDataWindow; 1638*f334afcfSToomas Soome UINT64 BlockAccessibleMemoryCapacity; 1639*f334afcfSToomas Soome UINT64 BeginningAddressOfFirstBlockInBlockAccessibleMemory; 1640*f334afcfSToomas Soome } EFI_ACPI_6_4_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE; 1641*f334afcfSToomas Soome 1642*f334afcfSToomas Soome // 1643*f334afcfSToomas Soome // Definition for Flush Hint Address Structure 1644*f334afcfSToomas Soome // 1645*f334afcfSToomas Soome typedef struct { 1646*f334afcfSToomas Soome UINT16 Type; 1647*f334afcfSToomas Soome UINT16 Length; 1648*f334afcfSToomas Soome EFI_ACPI_6_4_NFIT_DEVICE_HANDLE NFITDeviceHandle; 1649*f334afcfSToomas Soome UINT16 NumberOfFlushHintAddresses; 1650*f334afcfSToomas Soome UINT8 Reserved_10[6]; 1651*f334afcfSToomas Soome // UINT64 FlushHintAddress[NumberOfFlushHintAddresses]; 1652*f334afcfSToomas Soome } EFI_ACPI_6_4_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE; 1653*f334afcfSToomas Soome 1654*f334afcfSToomas Soome /// 1655*f334afcfSToomas Soome /// Secure DEVices Table (SDEV) 1656*f334afcfSToomas Soome /// 1657*f334afcfSToomas Soome typedef struct { 1658*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1659*f334afcfSToomas Soome } EFI_ACPI_6_4_SECURE_DEVICES_TABLE_HEADER; 1660*f334afcfSToomas Soome 1661*f334afcfSToomas Soome /// 1662*f334afcfSToomas Soome /// SDEV Revision (as defined in ACPI 6.4 spec.) 1663*f334afcfSToomas Soome /// 1664*f334afcfSToomas Soome #define EFI_ACPI_6_4_SECURE_DEVICES_TABLE_REVISION 0x01 1665*f334afcfSToomas Soome 1666*f334afcfSToomas Soome /// 1667*f334afcfSToomas Soome /// Secure Device types 1668*f334afcfSToomas Soome /// 1669*f334afcfSToomas Soome #define EFI_ACPI_6_4_SDEV_TYPE_ACPI_NAMESPACE_DEVICE 0x00 1670*f334afcfSToomas Soome #define EFI_ACPI_6_4_SDEV_TYPE_PCIE_ENDPOINT_DEVICE 0x01 1671*f334afcfSToomas Soome 1672*f334afcfSToomas Soome /// 1673*f334afcfSToomas Soome /// Secure Device flags 1674*f334afcfSToomas Soome /// 1675*f334afcfSToomas Soome #define EFI_ACPI_6_4_SDEV_FLAG_ALLOW_HANDOFF BIT0 1676*f334afcfSToomas Soome #define EFI_ACPI_6_4_SDEV_FLAG_SECURE_ACCESS_COMPONENTS_PRESENT BIT1 1677*f334afcfSToomas Soome 1678*f334afcfSToomas Soome /// 1679*f334afcfSToomas Soome /// SDEV Structure Header 1680*f334afcfSToomas Soome /// 1681*f334afcfSToomas Soome typedef struct { 1682*f334afcfSToomas Soome UINT8 Type; 1683*f334afcfSToomas Soome UINT8 Flags; 1684*f334afcfSToomas Soome UINT16 Length; 1685*f334afcfSToomas Soome } EFI_ACPI_6_4_SDEV_STRUCTURE_HEADER; 1686*f334afcfSToomas Soome 1687*f334afcfSToomas Soome /// 1688*f334afcfSToomas Soome /// ACPI_NAMESPACE_DEVICE based Secure Device Structure 1689*f334afcfSToomas Soome /// 1690*f334afcfSToomas Soome typedef struct { 1691*f334afcfSToomas Soome EFI_ACPI_6_4_SDEV_STRUCTURE_HEADER Header; 1692*f334afcfSToomas Soome UINT16 DeviceIdentifierOffset; 1693*f334afcfSToomas Soome UINT16 DeviceIdentifierLength; 1694*f334afcfSToomas Soome UINT16 VendorSpecificDataOffset; 1695*f334afcfSToomas Soome UINT16 VendorSpecificDataLength; 1696*f334afcfSToomas Soome UINT16 SecureAccessComponentsOffset; 1697*f334afcfSToomas Soome UINT16 SecureAccessComponentsLength; 1698*f334afcfSToomas Soome } EFI_ACPI_6_4_SDEV_STRUCTURE_ACPI_NAMESPACE_DEVICE; 1699*f334afcfSToomas Soome 1700*f334afcfSToomas Soome /// 1701*f334afcfSToomas Soome /// Secure Access Component Types 1702*f334afcfSToomas Soome /// 1703*f334afcfSToomas Soome #define EFI_ACPI_6_4_SDEV_SECURE_ACCESS_COMPONENT_TYPE_IDENTIFICATION 0x00 1704*f334afcfSToomas Soome #define EFI_ACPI_6_4_SDEV_SECURE_ACCESS_COMPONENT_TYPE_MEMORY 0x01 1705*f334afcfSToomas Soome 1706*f334afcfSToomas Soome /// 1707*f334afcfSToomas Soome /// Identification Based Secure Access Component 1708*f334afcfSToomas Soome /// 1709*f334afcfSToomas Soome typedef struct { 1710*f334afcfSToomas Soome EFI_ACPI_6_4_SDEV_STRUCTURE_HEADER Header; 1711*f334afcfSToomas Soome UINT16 HardwareIdentifierOffset; 1712*f334afcfSToomas Soome UINT16 HardwareIdentifierLength; 1713*f334afcfSToomas Soome UINT16 SubsystemIdentifierOffset; 1714*f334afcfSToomas Soome UINT16 SubsystemIdentifierLength; 1715*f334afcfSToomas Soome UINT16 HardwareRevision; 1716*f334afcfSToomas Soome UINT8 HardwareRevisionPresent; 1717*f334afcfSToomas Soome UINT8 ClassCodePresent; 1718*f334afcfSToomas Soome UINT8 PciCompatibleBaseClass; 1719*f334afcfSToomas Soome UINT8 PciCompatibleSubClass; 1720*f334afcfSToomas Soome UINT8 PciCompatibleProgrammingInterface; 1721*f334afcfSToomas Soome } EFI_ACPI_6_4_SDEV_SECURE_ACCESS_COMPONENT_IDENTIFICATION_STRUCTURE; 1722*f334afcfSToomas Soome 1723*f334afcfSToomas Soome /// 1724*f334afcfSToomas Soome /// Memory-based Secure Access Component 1725*f334afcfSToomas Soome /// 1726*f334afcfSToomas Soome typedef struct { 1727*f334afcfSToomas Soome EFI_ACPI_6_4_SDEV_STRUCTURE_HEADER Header; 1728*f334afcfSToomas Soome UINT32 Reserved; 1729*f334afcfSToomas Soome UINT64 MemoryAddressBase; 1730*f334afcfSToomas Soome UINT64 MemoryLength; 1731*f334afcfSToomas Soome } EFI_ACPI_6_4_SDEV_SECURE_ACCESS_COMPONENT_MEMORY_STRUCTURE; 1732*f334afcfSToomas Soome 1733*f334afcfSToomas Soome /// 1734*f334afcfSToomas Soome /// PCIe Endpoint Device based Secure Device Structure 1735*f334afcfSToomas Soome /// 1736*f334afcfSToomas Soome typedef struct { 1737*f334afcfSToomas Soome EFI_ACPI_6_4_SDEV_STRUCTURE_HEADER Header; 1738*f334afcfSToomas Soome UINT16 PciSegmentNumber; 1739*f334afcfSToomas Soome UINT16 StartBusNumber; 1740*f334afcfSToomas Soome UINT16 PciPathOffset; 1741*f334afcfSToomas Soome UINT16 PciPathLength; 1742*f334afcfSToomas Soome UINT16 VendorSpecificDataOffset; 1743*f334afcfSToomas Soome UINT16 VendorSpecificDataLength; 1744*f334afcfSToomas Soome } EFI_ACPI_6_4_SDEV_STRUCTURE_PCIE_ENDPOINT_DEVICE; 1745*f334afcfSToomas Soome 1746*f334afcfSToomas Soome /// 1747*f334afcfSToomas Soome /// Boot Error Record Table (BERT) 1748*f334afcfSToomas Soome /// 1749*f334afcfSToomas Soome typedef struct { 1750*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1751*f334afcfSToomas Soome UINT32 BootErrorRegionLength; 1752*f334afcfSToomas Soome UINT64 BootErrorRegion; 1753*f334afcfSToomas Soome } EFI_ACPI_6_4_BOOT_ERROR_RECORD_TABLE_HEADER; 1754*f334afcfSToomas Soome 1755*f334afcfSToomas Soome /// 1756*f334afcfSToomas Soome /// BERT Version (as defined in ACPI 6.4 spec.) 1757*f334afcfSToomas Soome /// 1758*f334afcfSToomas Soome #define EFI_ACPI_6_4_BOOT_ERROR_RECORD_TABLE_REVISION 0x01 1759*f334afcfSToomas Soome 1760*f334afcfSToomas Soome /// 1761*f334afcfSToomas Soome /// Boot Error Region Block Status Definition 1762*f334afcfSToomas Soome /// 1763*f334afcfSToomas Soome typedef struct { 1764*f334afcfSToomas Soome UINT32 UncorrectableErrorValid : 1; 1765*f334afcfSToomas Soome UINT32 CorrectableErrorValid : 1; 1766*f334afcfSToomas Soome UINT32 MultipleUncorrectableErrors : 1; 1767*f334afcfSToomas Soome UINT32 MultipleCorrectableErrors : 1; 1768*f334afcfSToomas Soome UINT32 ErrorDataEntryCount : 10; 1769*f334afcfSToomas Soome UINT32 Reserved : 18; 1770*f334afcfSToomas Soome } EFI_ACPI_6_4_ERROR_BLOCK_STATUS; 1771*f334afcfSToomas Soome 1772*f334afcfSToomas Soome /// 1773*f334afcfSToomas Soome /// Boot Error Region Definition 1774*f334afcfSToomas Soome /// 1775*f334afcfSToomas Soome typedef struct { 1776*f334afcfSToomas Soome EFI_ACPI_6_4_ERROR_BLOCK_STATUS BlockStatus; 1777*f334afcfSToomas Soome UINT32 RawDataOffset; 1778*f334afcfSToomas Soome UINT32 RawDataLength; 1779*f334afcfSToomas Soome UINT32 DataLength; 1780*f334afcfSToomas Soome UINT32 ErrorSeverity; 1781*f334afcfSToomas Soome } EFI_ACPI_6_4_BOOT_ERROR_REGION_STRUCTURE; 1782*f334afcfSToomas Soome 1783*f334afcfSToomas Soome // 1784*f334afcfSToomas Soome // Boot Error Severity types 1785*f334afcfSToomas Soome // 1786*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_SEVERITY_RECOVERABLE 0x00 1787*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_SEVERITY_FATAL 0x01 1788*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_SEVERITY_CORRECTED 0x02 1789*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_SEVERITY_NONE 0x03 1790*f334afcfSToomas Soome // 1791*f334afcfSToomas Soome // The term 'Correctable' is no longer being used as an error severity of the 1792*f334afcfSToomas Soome // reported error since ACPI Specification Version 5.1 Errata B. 1793*f334afcfSToomas Soome // The below macro is considered as deprecated and should no longer be used. 1794*f334afcfSToomas Soome // 1795*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_SEVERITY_CORRECTABLE 0x00 1796*f334afcfSToomas Soome 1797*f334afcfSToomas Soome /// 1798*f334afcfSToomas Soome /// Generic Error Data Entry Definition 1799*f334afcfSToomas Soome /// 1800*f334afcfSToomas Soome typedef struct { 1801*f334afcfSToomas Soome UINT8 SectionType[16]; 1802*f334afcfSToomas Soome UINT32 ErrorSeverity; 1803*f334afcfSToomas Soome UINT16 Revision; 1804*f334afcfSToomas Soome UINT8 ValidationBits; 1805*f334afcfSToomas Soome UINT8 Flags; 1806*f334afcfSToomas Soome UINT32 ErrorDataLength; 1807*f334afcfSToomas Soome UINT8 FruId[16]; 1808*f334afcfSToomas Soome UINT8 FruText[20]; 1809*f334afcfSToomas Soome UINT8 Timestamp[8]; 1810*f334afcfSToomas Soome } EFI_ACPI_6_4_GENERIC_ERROR_DATA_ENTRY_STRUCTURE; 1811*f334afcfSToomas Soome 1812*f334afcfSToomas Soome /// 1813*f334afcfSToomas Soome /// Generic Error Data Entry Version (as defined in ACPI 6.4 spec.) 1814*f334afcfSToomas Soome /// 1815*f334afcfSToomas Soome #define EFI_ACPI_6_4_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0300 1816*f334afcfSToomas Soome 1817*f334afcfSToomas Soome /// 1818*f334afcfSToomas Soome /// HEST - Hardware Error Source Table 1819*f334afcfSToomas Soome /// 1820*f334afcfSToomas Soome typedef struct { 1821*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1822*f334afcfSToomas Soome UINT32 ErrorSourceCount; 1823*f334afcfSToomas Soome } EFI_ACPI_6_4_HARDWARE_ERROR_SOURCE_TABLE_HEADER; 1824*f334afcfSToomas Soome 1825*f334afcfSToomas Soome /// 1826*f334afcfSToomas Soome /// HEST Version (as defined in ACPI 6.4 spec.) 1827*f334afcfSToomas Soome /// 1828*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01 1829*f334afcfSToomas Soome 1830*f334afcfSToomas Soome // 1831*f334afcfSToomas Soome // Error Source structure types. 1832*f334afcfSToomas Soome // 1833*f334afcfSToomas Soome #define EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00 1834*f334afcfSToomas Soome #define EFI_ACPI_6_4_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01 1835*f334afcfSToomas Soome #define EFI_ACPI_6_4_IA32_ARCHITECTURE_NMI_ERROR 0x02 1836*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCI_EXPRESS_ROOT_PORT_AER 0x06 1837*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCI_EXPRESS_DEVICE_AER 0x07 1838*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCI_EXPRESS_BRIDGE_AER 0x08 1839*f334afcfSToomas Soome #define EFI_ACPI_6_4_GENERIC_HARDWARE_ERROR 0x09 1840*f334afcfSToomas Soome #define EFI_ACPI_6_4_GENERIC_HARDWARE_ERROR_VERSION_2 0x0A 1841*f334afcfSToomas Soome #define EFI_ACPI_6_4_IA32_ARCHITECTURE_DEFERRED_MACHINE_CHECK 0x0B 1842*f334afcfSToomas Soome 1843*f334afcfSToomas Soome // 1844*f334afcfSToomas Soome // Error Source structure flags. 1845*f334afcfSToomas Soome // 1846*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0) 1847*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_SOURCE_FLAG_GLOBAL (1 << 1) 1848*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_SOURCE_FLAG_GHES_ASSIST (1 << 2) 1849*f334afcfSToomas Soome 1850*f334afcfSToomas Soome /// 1851*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Exception Structure Definition 1852*f334afcfSToomas Soome /// 1853*f334afcfSToomas Soome typedef struct { 1854*f334afcfSToomas Soome UINT16 Type; 1855*f334afcfSToomas Soome UINT16 SourceId; 1856*f334afcfSToomas Soome UINT8 Reserved0[2]; 1857*f334afcfSToomas Soome UINT8 Flags; 1858*f334afcfSToomas Soome UINT8 Enabled; 1859*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1860*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1861*f334afcfSToomas Soome UINT64 GlobalCapabilityInitData; 1862*f334afcfSToomas Soome UINT64 GlobalControlInitData; 1863*f334afcfSToomas Soome UINT8 NumberOfHardwareBanks; 1864*f334afcfSToomas Soome UINT8 Reserved1[7]; 1865*f334afcfSToomas Soome } EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE; 1866*f334afcfSToomas Soome 1867*f334afcfSToomas Soome /// 1868*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Bank Structure Definition 1869*f334afcfSToomas Soome /// 1870*f334afcfSToomas Soome typedef struct { 1871*f334afcfSToomas Soome UINT8 BankNumber; 1872*f334afcfSToomas Soome UINT8 ClearStatusOnInitialization; 1873*f334afcfSToomas Soome UINT8 StatusDataFormat; 1874*f334afcfSToomas Soome UINT8 Reserved0; 1875*f334afcfSToomas Soome UINT32 ControlRegisterMsrAddress; 1876*f334afcfSToomas Soome UINT64 ControlInitData; 1877*f334afcfSToomas Soome UINT32 StatusRegisterMsrAddress; 1878*f334afcfSToomas Soome UINT32 AddressRegisterMsrAddress; 1879*f334afcfSToomas Soome UINT32 MiscRegisterMsrAddress; 1880*f334afcfSToomas Soome } EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE; 1881*f334afcfSToomas Soome 1882*f334afcfSToomas Soome /// 1883*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Bank Structure MCA data format 1884*f334afcfSToomas Soome /// 1885*f334afcfSToomas Soome #define EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00 1886*f334afcfSToomas Soome #define EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01 1887*f334afcfSToomas Soome #define EFI_ACPI_6_4_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02 1888*f334afcfSToomas Soome 1889*f334afcfSToomas Soome // 1890*f334afcfSToomas Soome // Hardware Error Notification types. All other values are reserved 1891*f334afcfSToomas Soome // 1892*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00 1893*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01 1894*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02 1895*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_SCI 0x03 1896*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_NMI 0x04 1897*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_CMCI 0x05 1898*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_MCE 0x06 1899*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_GPIO_SIGNAL 0x07 1900*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_ARMV8_SEA 0x08 1901*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_ARMV8_SEI 0x09 1902*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_GSIV 0x0A 1903*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_SOFTWARE_DELEGATED_EXCEPTION 0x0B 1904*f334afcfSToomas Soome 1905*f334afcfSToomas Soome /// 1906*f334afcfSToomas Soome /// Hardware Error Notification Configuration Write Enable Structure Definition 1907*f334afcfSToomas Soome /// 1908*f334afcfSToomas Soome typedef struct { 1909*f334afcfSToomas Soome UINT16 Type : 1; 1910*f334afcfSToomas Soome UINT16 PollInterval : 1; 1911*f334afcfSToomas Soome UINT16 SwitchToPollingThresholdValue : 1; 1912*f334afcfSToomas Soome UINT16 SwitchToPollingThresholdWindow : 1; 1913*f334afcfSToomas Soome UINT16 ErrorThresholdValue : 1; 1914*f334afcfSToomas Soome UINT16 ErrorThresholdWindow : 1; 1915*f334afcfSToomas Soome UINT16 Reserved : 10; 1916*f334afcfSToomas Soome } EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE; 1917*f334afcfSToomas Soome 1918*f334afcfSToomas Soome /// 1919*f334afcfSToomas Soome /// Hardware Error Notification Structure Definition 1920*f334afcfSToomas Soome /// 1921*f334afcfSToomas Soome typedef struct { 1922*f334afcfSToomas Soome UINT8 Type; 1923*f334afcfSToomas Soome UINT8 Length; 1924*f334afcfSToomas Soome EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable; 1925*f334afcfSToomas Soome UINT32 PollInterval; 1926*f334afcfSToomas Soome UINT32 Vector; 1927*f334afcfSToomas Soome UINT32 SwitchToPollingThresholdValue; 1928*f334afcfSToomas Soome UINT32 SwitchToPollingThresholdWindow; 1929*f334afcfSToomas Soome UINT32 ErrorThresholdValue; 1930*f334afcfSToomas Soome UINT32 ErrorThresholdWindow; 1931*f334afcfSToomas Soome } EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_STRUCTURE; 1932*f334afcfSToomas Soome 1933*f334afcfSToomas Soome /// 1934*f334afcfSToomas Soome /// IA-32 Architecture Corrected Machine Check Structure Definition 1935*f334afcfSToomas Soome /// 1936*f334afcfSToomas Soome typedef struct { 1937*f334afcfSToomas Soome UINT16 Type; 1938*f334afcfSToomas Soome UINT16 SourceId; 1939*f334afcfSToomas Soome UINT8 Reserved0[2]; 1940*f334afcfSToomas Soome UINT8 Flags; 1941*f334afcfSToomas Soome UINT8 Enabled; 1942*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1943*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1944*f334afcfSToomas Soome EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 1945*f334afcfSToomas Soome UINT8 NumberOfHardwareBanks; 1946*f334afcfSToomas Soome UINT8 Reserved1[3]; 1947*f334afcfSToomas Soome } EFI_ACPI_6_4_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE; 1948*f334afcfSToomas Soome 1949*f334afcfSToomas Soome /// 1950*f334afcfSToomas Soome /// IA-32 Architecture NMI Error Structure Definition 1951*f334afcfSToomas Soome /// 1952*f334afcfSToomas Soome typedef struct { 1953*f334afcfSToomas Soome UINT16 Type; 1954*f334afcfSToomas Soome UINT16 SourceId; 1955*f334afcfSToomas Soome UINT8 Reserved0[2]; 1956*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1957*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1958*f334afcfSToomas Soome UINT32 MaxRawDataLength; 1959*f334afcfSToomas Soome } EFI_ACPI_6_4_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE; 1960*f334afcfSToomas Soome 1961*f334afcfSToomas Soome /// 1962*f334afcfSToomas Soome /// PCI Express Root Port AER Structure Definition 1963*f334afcfSToomas Soome /// 1964*f334afcfSToomas Soome typedef struct { 1965*f334afcfSToomas Soome UINT16 Type; 1966*f334afcfSToomas Soome UINT16 SourceId; 1967*f334afcfSToomas Soome UINT8 Reserved0[2]; 1968*f334afcfSToomas Soome UINT8 Flags; 1969*f334afcfSToomas Soome UINT8 Enabled; 1970*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1971*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1972*f334afcfSToomas Soome UINT32 Bus; 1973*f334afcfSToomas Soome UINT16 Device; 1974*f334afcfSToomas Soome UINT16 Function; 1975*f334afcfSToomas Soome UINT16 DeviceControl; 1976*f334afcfSToomas Soome UINT8 Reserved1[2]; 1977*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 1978*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 1979*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 1980*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 1981*f334afcfSToomas Soome UINT32 RootErrorCommand; 1982*f334afcfSToomas Soome } EFI_ACPI_6_4_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE; 1983*f334afcfSToomas Soome 1984*f334afcfSToomas Soome /// 1985*f334afcfSToomas Soome /// PCI Express Device AER Structure Definition 1986*f334afcfSToomas Soome /// 1987*f334afcfSToomas Soome typedef struct { 1988*f334afcfSToomas Soome UINT16 Type; 1989*f334afcfSToomas Soome UINT16 SourceId; 1990*f334afcfSToomas Soome UINT8 Reserved0[2]; 1991*f334afcfSToomas Soome UINT8 Flags; 1992*f334afcfSToomas Soome UINT8 Enabled; 1993*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1994*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1995*f334afcfSToomas Soome UINT32 Bus; 1996*f334afcfSToomas Soome UINT16 Device; 1997*f334afcfSToomas Soome UINT16 Function; 1998*f334afcfSToomas Soome UINT16 DeviceControl; 1999*f334afcfSToomas Soome UINT8 Reserved1[2]; 2000*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 2001*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 2002*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 2003*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 2004*f334afcfSToomas Soome } EFI_ACPI_6_4_PCI_EXPRESS_DEVICE_AER_STRUCTURE; 2005*f334afcfSToomas Soome 2006*f334afcfSToomas Soome /// 2007*f334afcfSToomas Soome /// PCI Express Bridge AER Structure Definition 2008*f334afcfSToomas Soome /// 2009*f334afcfSToomas Soome typedef struct { 2010*f334afcfSToomas Soome UINT16 Type; 2011*f334afcfSToomas Soome UINT16 SourceId; 2012*f334afcfSToomas Soome UINT8 Reserved0[2]; 2013*f334afcfSToomas Soome UINT8 Flags; 2014*f334afcfSToomas Soome UINT8 Enabled; 2015*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 2016*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 2017*f334afcfSToomas Soome UINT32 Bus; 2018*f334afcfSToomas Soome UINT16 Device; 2019*f334afcfSToomas Soome UINT16 Function; 2020*f334afcfSToomas Soome UINT16 DeviceControl; 2021*f334afcfSToomas Soome UINT8 Reserved1[2]; 2022*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 2023*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 2024*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 2025*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 2026*f334afcfSToomas Soome UINT32 SecondaryUncorrectableErrorMask; 2027*f334afcfSToomas Soome UINT32 SecondaryUncorrectableErrorSeverity; 2028*f334afcfSToomas Soome UINT32 SecondaryAdvancedErrorCapabilitiesAndControl; 2029*f334afcfSToomas Soome } EFI_ACPI_6_4_PCI_EXPRESS_BRIDGE_AER_STRUCTURE; 2030*f334afcfSToomas Soome 2031*f334afcfSToomas Soome /// 2032*f334afcfSToomas Soome /// Generic Hardware Error Source Structure Definition 2033*f334afcfSToomas Soome /// 2034*f334afcfSToomas Soome typedef struct { 2035*f334afcfSToomas Soome UINT16 Type; 2036*f334afcfSToomas Soome UINT16 SourceId; 2037*f334afcfSToomas Soome UINT16 RelatedSourceId; 2038*f334afcfSToomas Soome UINT8 Flags; 2039*f334afcfSToomas Soome UINT8 Enabled; 2040*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 2041*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 2042*f334afcfSToomas Soome UINT32 MaxRawDataLength; 2043*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; 2044*f334afcfSToomas Soome EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 2045*f334afcfSToomas Soome UINT32 ErrorStatusBlockLength; 2046*f334afcfSToomas Soome } EFI_ACPI_6_4_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE; 2047*f334afcfSToomas Soome 2048*f334afcfSToomas Soome /// 2049*f334afcfSToomas Soome /// Generic Hardware Error Source Version 2 Structure Definition 2050*f334afcfSToomas Soome /// 2051*f334afcfSToomas Soome typedef struct { 2052*f334afcfSToomas Soome UINT16 Type; 2053*f334afcfSToomas Soome UINT16 SourceId; 2054*f334afcfSToomas Soome UINT16 RelatedSourceId; 2055*f334afcfSToomas Soome UINT8 Flags; 2056*f334afcfSToomas Soome UINT8 Enabled; 2057*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 2058*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 2059*f334afcfSToomas Soome UINT32 MaxRawDataLength; 2060*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; 2061*f334afcfSToomas Soome EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 2062*f334afcfSToomas Soome UINT32 ErrorStatusBlockLength; 2063*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ReadAckRegister; 2064*f334afcfSToomas Soome UINT64 ReadAckPreserve; 2065*f334afcfSToomas Soome UINT64 ReadAckWrite; 2066*f334afcfSToomas Soome } EFI_ACPI_6_4_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE; 2067*f334afcfSToomas Soome 2068*f334afcfSToomas Soome /// 2069*f334afcfSToomas Soome /// Generic Error Status Definition 2070*f334afcfSToomas Soome /// 2071*f334afcfSToomas Soome typedef struct { 2072*f334afcfSToomas Soome EFI_ACPI_6_4_ERROR_BLOCK_STATUS BlockStatus; 2073*f334afcfSToomas Soome UINT32 RawDataOffset; 2074*f334afcfSToomas Soome UINT32 RawDataLength; 2075*f334afcfSToomas Soome UINT32 DataLength; 2076*f334afcfSToomas Soome UINT32 ErrorSeverity; 2077*f334afcfSToomas Soome } EFI_ACPI_6_4_GENERIC_ERROR_STATUS_STRUCTURE; 2078*f334afcfSToomas Soome 2079*f334afcfSToomas Soome /// 2080*f334afcfSToomas Soome /// IA-32 Architecture Deferred Machine Check Structure Definition 2081*f334afcfSToomas Soome /// 2082*f334afcfSToomas Soome typedef struct { 2083*f334afcfSToomas Soome UINT16 Type; 2084*f334afcfSToomas Soome UINT16 SourceId; 2085*f334afcfSToomas Soome UINT8 Reserved0[2]; 2086*f334afcfSToomas Soome UINT8 Flags; 2087*f334afcfSToomas Soome UINT8 Enabled; 2088*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 2089*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 2090*f334afcfSToomas Soome EFI_ACPI_6_4_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 2091*f334afcfSToomas Soome UINT8 NumberOfHardwareBanks; 2092*f334afcfSToomas Soome UINT8 Reserved1[3]; 2093*f334afcfSToomas Soome } EFI_ACPI_6_4_IA32_ARCHITECTURE_DEFERRED_MACHINE_CHECK_STRUCTURE; 2094*f334afcfSToomas Soome 2095*f334afcfSToomas Soome /// 2096*f334afcfSToomas Soome /// HMAT - Heterogeneous Memory Attribute Table 2097*f334afcfSToomas Soome /// 2098*f334afcfSToomas Soome typedef struct { 2099*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 2100*f334afcfSToomas Soome UINT8 Reserved[4]; 2101*f334afcfSToomas Soome } EFI_ACPI_6_4_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_HEADER; 2102*f334afcfSToomas Soome 2103*f334afcfSToomas Soome /// 2104*f334afcfSToomas Soome /// HMAT Revision (as defined in ACPI 6.4 spec.) 2105*f334afcfSToomas Soome /// 2106*f334afcfSToomas Soome #define EFI_ACPI_6_4_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_REVISION 0x02 2107*f334afcfSToomas Soome 2108*f334afcfSToomas Soome /// 2109*f334afcfSToomas Soome /// HMAT types 2110*f334afcfSToomas Soome /// 2111*f334afcfSToomas Soome #define EFI_ACPI_6_4_HMAT_TYPE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES 0x00 2112*f334afcfSToomas Soome #define EFI_ACPI_6_4_HMAT_TYPE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO 0x01 2113*f334afcfSToomas Soome #define EFI_ACPI_6_4_HMAT_TYPE_MEMORY_SIDE_CACHE_INFO 0x02 2114*f334afcfSToomas Soome 2115*f334afcfSToomas Soome /// 2116*f334afcfSToomas Soome /// HMAT Structure Header 2117*f334afcfSToomas Soome /// 2118*f334afcfSToomas Soome typedef struct { 2119*f334afcfSToomas Soome UINT16 Type; 2120*f334afcfSToomas Soome UINT8 Reserved[2]; 2121*f334afcfSToomas Soome UINT32 Length; 2122*f334afcfSToomas Soome } EFI_ACPI_6_4_HMAT_STRUCTURE_HEADER; 2123*f334afcfSToomas Soome 2124*f334afcfSToomas Soome /// 2125*f334afcfSToomas Soome /// Memory Proximity Domain Attributes Structure flags 2126*f334afcfSToomas Soome /// 2127*f334afcfSToomas Soome typedef struct { 2128*f334afcfSToomas Soome UINT16 InitiatorProximityDomainValid : 1; 2129*f334afcfSToomas Soome UINT16 Reserved : 15; 2130*f334afcfSToomas Soome } EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES_FLAGS; 2131*f334afcfSToomas Soome 2132*f334afcfSToomas Soome /// 2133*f334afcfSToomas Soome /// Memory Proximity Domain Attributes Structure 2134*f334afcfSToomas Soome /// 2135*f334afcfSToomas Soome typedef struct { 2136*f334afcfSToomas Soome UINT16 Type; 2137*f334afcfSToomas Soome UINT8 Reserved[2]; 2138*f334afcfSToomas Soome UINT32 Length; 2139*f334afcfSToomas Soome EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES_FLAGS Flags; 2140*f334afcfSToomas Soome UINT8 Reserved1[2]; 2141*f334afcfSToomas Soome UINT32 InitiatorProximityDomain; 2142*f334afcfSToomas Soome UINT32 MemoryProximityDomain; 2143*f334afcfSToomas Soome UINT8 Reserved2[20]; 2144*f334afcfSToomas Soome } EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_PROXIMITY_DOMAIN_ATTRIBUTES; 2145*f334afcfSToomas Soome 2146*f334afcfSToomas Soome /// 2147*f334afcfSToomas Soome /// System Locality Latency and Bandwidth Information Structure flags 2148*f334afcfSToomas Soome /// 2149*f334afcfSToomas Soome typedef struct { 2150*f334afcfSToomas Soome UINT8 MemoryHierarchy : 4; 2151*f334afcfSToomas Soome UINT8 AccessAttributes : 2; 2152*f334afcfSToomas Soome UINT8 Reserved : 2; 2153*f334afcfSToomas Soome } EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_FLAGS; 2154*f334afcfSToomas Soome 2155*f334afcfSToomas Soome /// 2156*f334afcfSToomas Soome /// System Locality Latency and Bandwidth Information Structure 2157*f334afcfSToomas Soome /// 2158*f334afcfSToomas Soome typedef struct { 2159*f334afcfSToomas Soome UINT16 Type; 2160*f334afcfSToomas Soome UINT8 Reserved[2]; 2161*f334afcfSToomas Soome UINT32 Length; 2162*f334afcfSToomas Soome EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO_FLAGS Flags; 2163*f334afcfSToomas Soome UINT8 DataType; 2164*f334afcfSToomas Soome UINT8 MinTransferSize; 2165*f334afcfSToomas Soome UINT8 Reserved1; 2166*f334afcfSToomas Soome UINT32 NumberOfInitiatorProximityDomains; 2167*f334afcfSToomas Soome UINT32 NumberOfTargetProximityDomains; 2168*f334afcfSToomas Soome UINT8 Reserved2[4]; 2169*f334afcfSToomas Soome UINT64 EntryBaseUnit; 2170*f334afcfSToomas Soome } EFI_ACPI_6_4_HMAT_STRUCTURE_SYSTEM_LOCALITY_LATENCY_AND_BANDWIDTH_INFO; 2171*f334afcfSToomas Soome 2172*f334afcfSToomas Soome /// 2173*f334afcfSToomas Soome /// Memory Side Cache Information Structure cache attributes 2174*f334afcfSToomas Soome /// 2175*f334afcfSToomas Soome typedef struct { 2176*f334afcfSToomas Soome UINT32 TotalCacheLevels : 4; 2177*f334afcfSToomas Soome UINT32 CacheLevel : 4; 2178*f334afcfSToomas Soome UINT32 CacheAssociativity : 4; 2179*f334afcfSToomas Soome UINT32 WritePolicy : 4; 2180*f334afcfSToomas Soome UINT32 CacheLineSize : 16; 2181*f334afcfSToomas Soome } EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES; 2182*f334afcfSToomas Soome 2183*f334afcfSToomas Soome /// 2184*f334afcfSToomas Soome /// Memory Side Cache Information Structure 2185*f334afcfSToomas Soome /// 2186*f334afcfSToomas Soome typedef struct { 2187*f334afcfSToomas Soome UINT16 Type; 2188*f334afcfSToomas Soome UINT8 Reserved[2]; 2189*f334afcfSToomas Soome UINT32 Length; 2190*f334afcfSToomas Soome UINT32 MemoryProximityDomain; 2191*f334afcfSToomas Soome UINT8 Reserved1[4]; 2192*f334afcfSToomas Soome UINT64 MemorySideCacheSize; 2193*f334afcfSToomas Soome EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO_CACHE_ATTRIBUTES CacheAttributes; 2194*f334afcfSToomas Soome UINT8 Reserved2[2]; 2195*f334afcfSToomas Soome UINT16 NumberOfSmbiosHandles; 2196*f334afcfSToomas Soome } EFI_ACPI_6_4_HMAT_STRUCTURE_MEMORY_SIDE_CACHE_INFO; 2197*f334afcfSToomas Soome 2198*f334afcfSToomas Soome /// 2199*f334afcfSToomas Soome /// ERST - Error Record Serialization Table 2200*f334afcfSToomas Soome /// 2201*f334afcfSToomas Soome typedef struct { 2202*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 2203*f334afcfSToomas Soome UINT32 SerializationHeaderSize; 2204*f334afcfSToomas Soome UINT8 Reserved0[4]; 2205*f334afcfSToomas Soome UINT32 InstructionEntryCount; 2206*f334afcfSToomas Soome } EFI_ACPI_6_4_ERROR_RECORD_SERIALIZATION_TABLE_HEADER; 2207*f334afcfSToomas Soome 2208*f334afcfSToomas Soome /// 2209*f334afcfSToomas Soome /// ERST Version (as defined in ACPI 6.4 spec.) 2210*f334afcfSToomas Soome /// 2211*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01 2212*f334afcfSToomas Soome 2213*f334afcfSToomas Soome /// 2214*f334afcfSToomas Soome /// ERST Serialization Actions 2215*f334afcfSToomas Soome /// 2216*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_BEGIN_WRITE_OPERATION 0x00 2217*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_BEGIN_READ_OPERATION 0x01 2218*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_BEGIN_CLEAR_OPERATION 0x02 2219*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_END_OPERATION 0x03 2220*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_SET_RECORD_OFFSET 0x04 2221*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_EXECUTE_OPERATION 0x05 2222*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_CHECK_BUSY_STATUS 0x06 2223*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_GET_COMMAND_STATUS 0x07 2224*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_GET_RECORD_IDENTIFIER 0x08 2225*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_SET_RECORD_IDENTIFIER 0x09 2226*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_GET_RECORD_COUNT 0x0A 2227*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B 2228*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D 2229*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E 2230*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F 2231*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_GET_EXECUTE_OPERATION_TIMINGS 0x10 2232*f334afcfSToomas Soome 2233*f334afcfSToomas Soome /// 2234*f334afcfSToomas Soome /// ERST Action Command Status 2235*f334afcfSToomas Soome /// 2236*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_STATUS_SUCCESS 0x00 2237*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_STATUS_NOT_ENOUGH_SPACE 0x01 2238*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02 2239*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_STATUS_FAILED 0x03 2240*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_STATUS_RECORD_STORE_EMPTY 0x04 2241*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_STATUS_RECORD_NOT_FOUND 0x05 2242*f334afcfSToomas Soome 2243*f334afcfSToomas Soome /// 2244*f334afcfSToomas Soome /// ERST Serialization Instructions 2245*f334afcfSToomas Soome /// 2246*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_READ_REGISTER 0x00 2247*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_READ_REGISTER_VALUE 0x01 2248*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_WRITE_REGISTER 0x02 2249*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_WRITE_REGISTER_VALUE 0x03 2250*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_NOOP 0x04 2251*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_LOAD_VAR1 0x05 2252*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_LOAD_VAR2 0x06 2253*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_STORE_VAR1 0x07 2254*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_ADD 0x08 2255*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_SUBTRACT 0x09 2256*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_ADD_VALUE 0x0A 2257*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_SUBTRACT_VALUE 0x0B 2258*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_STALL 0x0C 2259*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_STALL_WHILE_TRUE 0x0D 2260*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E 2261*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_GOTO 0x0F 2262*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_SET_SRC_ADDRESS_BASE 0x10 2263*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_SET_DST_ADDRESS_BASE 0x11 2264*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_MOVE_DATA 0x12 2265*f334afcfSToomas Soome 2266*f334afcfSToomas Soome /// 2267*f334afcfSToomas Soome /// ERST Instruction Flags 2268*f334afcfSToomas Soome /// 2269*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERST_PRESERVE_REGISTER 0x01 2270*f334afcfSToomas Soome 2271*f334afcfSToomas Soome /// 2272*f334afcfSToomas Soome /// ERST Serialization Instruction Entry 2273*f334afcfSToomas Soome /// 2274*f334afcfSToomas Soome typedef struct { 2275*f334afcfSToomas Soome UINT8 SerializationAction; 2276*f334afcfSToomas Soome UINT8 Instruction; 2277*f334afcfSToomas Soome UINT8 Flags; 2278*f334afcfSToomas Soome UINT8 Reserved0; 2279*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 2280*f334afcfSToomas Soome UINT64 Value; 2281*f334afcfSToomas Soome UINT64 Mask; 2282*f334afcfSToomas Soome } EFI_ACPI_6_4_ERST_SERIALIZATION_INSTRUCTION_ENTRY; 2283*f334afcfSToomas Soome 2284*f334afcfSToomas Soome /// 2285*f334afcfSToomas Soome /// EINJ - Error Injection Table 2286*f334afcfSToomas Soome /// 2287*f334afcfSToomas Soome typedef struct { 2288*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 2289*f334afcfSToomas Soome UINT32 InjectionHeaderSize; 2290*f334afcfSToomas Soome UINT8 InjectionFlags; 2291*f334afcfSToomas Soome UINT8 Reserved0[3]; 2292*f334afcfSToomas Soome UINT32 InjectionEntryCount; 2293*f334afcfSToomas Soome } EFI_ACPI_6_4_ERROR_INJECTION_TABLE_HEADER; 2294*f334afcfSToomas Soome 2295*f334afcfSToomas Soome /// 2296*f334afcfSToomas Soome /// EINJ Version (as defined in ACPI 6.4 spec.) 2297*f334afcfSToomas Soome /// 2298*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_INJECTION_TABLE_REVISION 0x01 2299*f334afcfSToomas Soome 2300*f334afcfSToomas Soome /// 2301*f334afcfSToomas Soome /// EINJ Error Injection Actions 2302*f334afcfSToomas Soome /// 2303*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_BEGIN_INJECTION_OPERATION 0x00 2304*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01 2305*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_SET_ERROR_TYPE 0x02 2306*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_GET_ERROR_TYPE 0x03 2307*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_END_OPERATION 0x04 2308*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_EXECUTE_OPERATION 0x05 2309*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_CHECK_BUSY_STATUS 0x06 2310*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_GET_COMMAND_STATUS 0x07 2311*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_TRIGGER_ERROR 0xFF 2312*f334afcfSToomas Soome 2313*f334afcfSToomas Soome /// 2314*f334afcfSToomas Soome /// EINJ Action Command Status 2315*f334afcfSToomas Soome /// 2316*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_STATUS_SUCCESS 0x00 2317*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_STATUS_UNKNOWN_FAILURE 0x01 2318*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_STATUS_INVALID_ACCESS 0x02 2319*f334afcfSToomas Soome 2320*f334afcfSToomas Soome /// 2321*f334afcfSToomas Soome /// EINJ Error Type Definition 2322*f334afcfSToomas Soome /// 2323*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0) 2324*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1) 2325*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2) 2326*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3) 2327*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4) 2328*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5) 2329*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6) 2330*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7) 2331*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8) 2332*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9) 2333*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10) 2334*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11) 2335*f334afcfSToomas Soome 2336*f334afcfSToomas Soome /// 2337*f334afcfSToomas Soome /// EINJ Injection Instructions 2338*f334afcfSToomas Soome /// 2339*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_READ_REGISTER 0x00 2340*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_READ_REGISTER_VALUE 0x01 2341*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_WRITE_REGISTER 0x02 2342*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_WRITE_REGISTER_VALUE 0x03 2343*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_NOOP 0x04 2344*f334afcfSToomas Soome 2345*f334afcfSToomas Soome /// 2346*f334afcfSToomas Soome /// EINJ Instruction Flags 2347*f334afcfSToomas Soome /// 2348*f334afcfSToomas Soome #define EFI_ACPI_6_4_EINJ_PRESERVE_REGISTER 0x01 2349*f334afcfSToomas Soome 2350*f334afcfSToomas Soome /// 2351*f334afcfSToomas Soome /// EINJ Injection Instruction Entry 2352*f334afcfSToomas Soome /// 2353*f334afcfSToomas Soome typedef struct { 2354*f334afcfSToomas Soome UINT8 InjectionAction; 2355*f334afcfSToomas Soome UINT8 Instruction; 2356*f334afcfSToomas Soome UINT8 Flags; 2357*f334afcfSToomas Soome UINT8 Reserved0; 2358*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 2359*f334afcfSToomas Soome UINT64 Value; 2360*f334afcfSToomas Soome UINT64 Mask; 2361*f334afcfSToomas Soome } EFI_ACPI_6_4_EINJ_INJECTION_INSTRUCTION_ENTRY; 2362*f334afcfSToomas Soome 2363*f334afcfSToomas Soome /// 2364*f334afcfSToomas Soome /// EINJ Trigger Action Table 2365*f334afcfSToomas Soome /// 2366*f334afcfSToomas Soome typedef struct { 2367*f334afcfSToomas Soome UINT32 HeaderSize; 2368*f334afcfSToomas Soome UINT32 Revision; 2369*f334afcfSToomas Soome UINT32 TableSize; 2370*f334afcfSToomas Soome UINT32 EntryCount; 2371*f334afcfSToomas Soome } EFI_ACPI_6_4_EINJ_TRIGGER_ACTION_TABLE; 2372*f334afcfSToomas Soome 2373*f334afcfSToomas Soome /// 2374*f334afcfSToomas Soome /// Platform Communications Channel Table (PCCT) 2375*f334afcfSToomas Soome /// 2376*f334afcfSToomas Soome typedef struct { 2377*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 2378*f334afcfSToomas Soome UINT32 Flags; 2379*f334afcfSToomas Soome UINT64 Reserved; 2380*f334afcfSToomas Soome } EFI_ACPI_6_4_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER; 2381*f334afcfSToomas Soome 2382*f334afcfSToomas Soome /// 2383*f334afcfSToomas Soome /// PCCT Version (as defined in ACPI 6.4 spec.) 2384*f334afcfSToomas Soome /// 2385*f334afcfSToomas Soome #define EFI_ACPI_6_4_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x02 2386*f334afcfSToomas Soome 2387*f334afcfSToomas Soome /// 2388*f334afcfSToomas Soome /// PCCT Global Flags 2389*f334afcfSToomas Soome /// 2390*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCCT_FLAGS_PLATFORM_INTERRUPT BIT0 2391*f334afcfSToomas Soome 2392*f334afcfSToomas Soome // 2393*f334afcfSToomas Soome // PCCT Subspace type 2394*f334afcfSToomas Soome // 2395*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_GENERIC 0x00 2396*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_1_HW_REDUCED_COMMUNICATIONS 0x01 2397*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_2_HW_REDUCED_COMMUNICATIONS 0x02 2398*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_3_EXTENDED_PCC 0x03 2399*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_4_EXTENDED_PCC 0x04 2400*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCCT_SUBSPACE_TYPE_5_HW_REGISTERS_COMMUNICATIONS 0x05 2401*f334afcfSToomas Soome 2402*f334afcfSToomas Soome /// 2403*f334afcfSToomas Soome /// PCC Subspace Structure Header 2404*f334afcfSToomas Soome /// 2405*f334afcfSToomas Soome typedef struct { 2406*f334afcfSToomas Soome UINT8 Type; 2407*f334afcfSToomas Soome UINT8 Length; 2408*f334afcfSToomas Soome } EFI_ACPI_6_4_PCCT_SUBSPACE_HEADER; 2409*f334afcfSToomas Soome 2410*f334afcfSToomas Soome /// 2411*f334afcfSToomas Soome /// Generic Communications Subspace Structure 2412*f334afcfSToomas Soome /// 2413*f334afcfSToomas Soome typedef struct { 2414*f334afcfSToomas Soome UINT8 Type; 2415*f334afcfSToomas Soome UINT8 Length; 2416*f334afcfSToomas Soome UINT8 Reserved[6]; 2417*f334afcfSToomas Soome UINT64 BaseAddress; 2418*f334afcfSToomas Soome UINT64 AddressLength; 2419*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 2420*f334afcfSToomas Soome UINT64 DoorbellPreserve; 2421*f334afcfSToomas Soome UINT64 DoorbellWrite; 2422*f334afcfSToomas Soome UINT32 NominalLatency; 2423*f334afcfSToomas Soome UINT32 MaximumPeriodicAccessRate; 2424*f334afcfSToomas Soome UINT16 MinimumRequestTurnaroundTime; 2425*f334afcfSToomas Soome } EFI_ACPI_6_4_PCCT_SUBSPACE_GENERIC; 2426*f334afcfSToomas Soome 2427*f334afcfSToomas Soome /// 2428*f334afcfSToomas Soome /// Generic Communications Channel Shared Memory Region 2429*f334afcfSToomas Soome /// 2430*f334afcfSToomas Soome 2431*f334afcfSToomas Soome typedef struct { 2432*f334afcfSToomas Soome UINT8 Command; 2433*f334afcfSToomas Soome UINT8 Reserved : 7; 2434*f334afcfSToomas Soome UINT8 NotifyOnCompletion : 1; 2435*f334afcfSToomas Soome } EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND; 2436*f334afcfSToomas Soome 2437*f334afcfSToomas Soome typedef struct { 2438*f334afcfSToomas Soome UINT8 CommandComplete : 1; 2439*f334afcfSToomas Soome UINT8 PlatformInterrupt : 1; 2440*f334afcfSToomas Soome UINT8 Error : 1; 2441*f334afcfSToomas Soome UINT8 PlatformNotification : 1; 2442*f334afcfSToomas Soome UINT8 Reserved : 4; 2443*f334afcfSToomas Soome UINT8 Reserved1; 2444*f334afcfSToomas Soome } EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS; 2445*f334afcfSToomas Soome 2446*f334afcfSToomas Soome typedef struct { 2447*f334afcfSToomas Soome UINT32 Signature; 2448*f334afcfSToomas Soome EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command; 2449*f334afcfSToomas Soome EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status; 2450*f334afcfSToomas Soome } EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER; 2451*f334afcfSToomas Soome 2452*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCCT_SUBSPACE_PLATFORM_INTERRUPT_FLAGS_POLARITY BIT0 2453*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCCT_SUBSPACE_PLATFORM_INTERRUPT_FLAGS_MODE BIT1 2454*f334afcfSToomas Soome 2455*f334afcfSToomas Soome /// 2456*f334afcfSToomas Soome /// Type 1 HW-Reduced Communications Subspace Structure 2457*f334afcfSToomas Soome /// 2458*f334afcfSToomas Soome typedef struct { 2459*f334afcfSToomas Soome UINT8 Type; 2460*f334afcfSToomas Soome UINT8 Length; 2461*f334afcfSToomas Soome UINT32 PlatformInterrupt; 2462*f334afcfSToomas Soome UINT8 PlatformInterruptFlags; 2463*f334afcfSToomas Soome UINT8 Reserved; 2464*f334afcfSToomas Soome UINT64 BaseAddress; 2465*f334afcfSToomas Soome UINT64 AddressLength; 2466*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 2467*f334afcfSToomas Soome UINT64 DoorbellPreserve; 2468*f334afcfSToomas Soome UINT64 DoorbellWrite; 2469*f334afcfSToomas Soome UINT32 NominalLatency; 2470*f334afcfSToomas Soome UINT32 MaximumPeriodicAccessRate; 2471*f334afcfSToomas Soome UINT16 MinimumRequestTurnaroundTime; 2472*f334afcfSToomas Soome } EFI_ACPI_6_4_PCCT_SUBSPACE_1_HW_REDUCED_COMMUNICATIONS; 2473*f334afcfSToomas Soome 2474*f334afcfSToomas Soome /// 2475*f334afcfSToomas Soome /// Type 2 HW-Reduced Communications Subspace Structure 2476*f334afcfSToomas Soome /// 2477*f334afcfSToomas Soome typedef struct { 2478*f334afcfSToomas Soome UINT8 Type; 2479*f334afcfSToomas Soome UINT8 Length; 2480*f334afcfSToomas Soome UINT32 PlatformInterrupt; 2481*f334afcfSToomas Soome UINT8 PlatformInterruptFlags; 2482*f334afcfSToomas Soome UINT8 Reserved; 2483*f334afcfSToomas Soome UINT64 BaseAddress; 2484*f334afcfSToomas Soome UINT64 AddressLength; 2485*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 2486*f334afcfSToomas Soome UINT64 DoorbellPreserve; 2487*f334afcfSToomas Soome UINT64 DoorbellWrite; 2488*f334afcfSToomas Soome UINT32 NominalLatency; 2489*f334afcfSToomas Soome UINT32 MaximumPeriodicAccessRate; 2490*f334afcfSToomas Soome UINT16 MinimumRequestTurnaroundTime; 2491*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PlatformInterruptAckRegister; 2492*f334afcfSToomas Soome UINT64 PlatformInterruptAckPreserve; 2493*f334afcfSToomas Soome UINT64 PlatformInterruptAckWrite; 2494*f334afcfSToomas Soome } EFI_ACPI_6_4_PCCT_SUBSPACE_2_HW_REDUCED_COMMUNICATIONS; 2495*f334afcfSToomas Soome 2496*f334afcfSToomas Soome /// 2497*f334afcfSToomas Soome /// Type 3 Extended PCC Subspace Structure 2498*f334afcfSToomas Soome /// 2499*f334afcfSToomas Soome typedef struct { 2500*f334afcfSToomas Soome UINT8 Type; 2501*f334afcfSToomas Soome UINT8 Length; 2502*f334afcfSToomas Soome UINT32 PlatformInterrupt; 2503*f334afcfSToomas Soome UINT8 PlatformInterruptFlags; 2504*f334afcfSToomas Soome UINT8 Reserved; 2505*f334afcfSToomas Soome UINT64 BaseAddress; 2506*f334afcfSToomas Soome UINT32 AddressLength; 2507*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 2508*f334afcfSToomas Soome UINT64 DoorbellPreserve; 2509*f334afcfSToomas Soome UINT64 DoorbellWrite; 2510*f334afcfSToomas Soome UINT32 NominalLatency; 2511*f334afcfSToomas Soome UINT32 MaximumPeriodicAccessRate; 2512*f334afcfSToomas Soome UINT32 MinimumRequestTurnaroundTime; 2513*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PlatformInterruptAckRegister; 2514*f334afcfSToomas Soome UINT64 PlatformInterruptAckPreserve; 2515*f334afcfSToomas Soome UINT64 PlatformInterruptAckSet; 2516*f334afcfSToomas Soome UINT8 Reserved1[8]; 2517*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CommandCompleteCheckRegister; 2518*f334afcfSToomas Soome UINT64 CommandCompleteCheckMask; 2519*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CommandCompleteUpdateRegister; 2520*f334afcfSToomas Soome UINT64 CommandCompleteUpdatePreserve; 2521*f334afcfSToomas Soome UINT64 CommandCompleteUpdateSet; 2522*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ErrorStatusRegister; 2523*f334afcfSToomas Soome UINT64 ErrorStatusMask; 2524*f334afcfSToomas Soome } EFI_ACPI_6_4_PCCT_SUBSPACE_3_EXTENDED_PCC; 2525*f334afcfSToomas Soome 2526*f334afcfSToomas Soome /// 2527*f334afcfSToomas Soome /// Type 4 Extended PCC Subspace Structure 2528*f334afcfSToomas Soome /// 2529*f334afcfSToomas Soome typedef EFI_ACPI_6_4_PCCT_SUBSPACE_3_EXTENDED_PCC EFI_ACPI_6_4_PCCT_SUBSPACE_4_EXTENDED_PCC; 2530*f334afcfSToomas Soome 2531*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCCT_MASTER_SLAVE_COMMUNICATIONS_CHANNEL_FLAGS_NOTIFY_ON_COMPLETION BIT0 2532*f334afcfSToomas Soome 2533*f334afcfSToomas Soome typedef struct { 2534*f334afcfSToomas Soome UINT32 Signature; 2535*f334afcfSToomas Soome UINT32 Flags; 2536*f334afcfSToomas Soome UINT32 Length; 2537*f334afcfSToomas Soome UINT32 Command; 2538*f334afcfSToomas Soome } EFI_ACPI_6_4_PCCT_EXTENDED_PCC_SHARED_MEMORY_REGION_HEADER; 2539*f334afcfSToomas Soome 2540*f334afcfSToomas Soome /// 2541*f334afcfSToomas Soome /// Type 5 HW Registers based Communications Subspace Structure 2542*f334afcfSToomas Soome /// 2543*f334afcfSToomas Soome typedef struct { 2544*f334afcfSToomas Soome UINT8 Type; 2545*f334afcfSToomas Soome UINT8 Length; 2546*f334afcfSToomas Soome UINT16 Version; 2547*f334afcfSToomas Soome UINT64 BaseAddress; 2548*f334afcfSToomas Soome UINT64 SharedMemoryRangeLength; 2549*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 2550*f334afcfSToomas Soome UINT64 DoorbellPreserve; 2551*f334afcfSToomas Soome UINT64 DoorbellWrite; 2552*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CommandCompleteCheckRegister; 2553*f334afcfSToomas Soome UINT64 CommandCompleteCheckMask; 2554*f334afcfSToomas Soome EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ErrorStatusRegister; 2555*f334afcfSToomas Soome UINT64 ErrorStatusMask; 2556*f334afcfSToomas Soome UINT32 NominalLatency; 2557*f334afcfSToomas Soome UINT32 MinimumRequestTurnaroundTime; 2558*f334afcfSToomas Soome } EFI_ACPI_6_4_PCCT_SUBSPACE_5_HW_REGISTERS_COMMUNICATIONS; 2559*f334afcfSToomas Soome 2560*f334afcfSToomas Soome /// 2561*f334afcfSToomas Soome /// Reduced PCC Subspace Shared Memory Region 2562*f334afcfSToomas Soome /// 2563*f334afcfSToomas Soome typedef struct { 2564*f334afcfSToomas Soome UINT32 Signature; 2565*f334afcfSToomas Soome // UINT8 CommunicationSubspace[]; 2566*f334afcfSToomas Soome } EFI_6_4_PCCT_REDUCED_PCC_SUBSPACE_SHARED_MEMORY_REGION; 2567*f334afcfSToomas Soome 2568*f334afcfSToomas Soome /// 2569*f334afcfSToomas Soome /// Platform Debug Trigger Table (PDTT) 2570*f334afcfSToomas Soome /// 2571*f334afcfSToomas Soome typedef struct { 2572*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 2573*f334afcfSToomas Soome UINT8 TriggerCount; 2574*f334afcfSToomas Soome UINT8 Reserved[3]; 2575*f334afcfSToomas Soome UINT32 TriggerIdentifierArrayOffset; 2576*f334afcfSToomas Soome } EFI_ACPI_6_4_PLATFORM_DEBUG_TRIGGER_TABLE_HEADER; 2577*f334afcfSToomas Soome 2578*f334afcfSToomas Soome /// 2579*f334afcfSToomas Soome /// PDTT Revision (as defined in ACPI 6.4 spec.) 2580*f334afcfSToomas Soome /// 2581*f334afcfSToomas Soome #define EFI_ACPI_6_4_PLATFORM_DEBUG_TRIGGER_TABLE_REVISION 0x00 2582*f334afcfSToomas Soome 2583*f334afcfSToomas Soome /// 2584*f334afcfSToomas Soome /// PDTT Platform Communication Channel Identifier Structure 2585*f334afcfSToomas Soome /// 2586*f334afcfSToomas Soome typedef struct { 2587*f334afcfSToomas Soome UINT16 SubChannelIdentifer : 8; 2588*f334afcfSToomas Soome UINT16 Runtime : 1; 2589*f334afcfSToomas Soome UINT16 WaitForCompletion : 1; 2590*f334afcfSToomas Soome UINT16 TriggerOrder : 1; 2591*f334afcfSToomas Soome UINT16 Reserved : 5; 2592*f334afcfSToomas Soome } EFI_ACPI_6_4_PDTT_PCC_IDENTIFIER; 2593*f334afcfSToomas Soome 2594*f334afcfSToomas Soome /// 2595*f334afcfSToomas Soome /// PCC Commands Codes used by Platform Debug Trigger Table 2596*f334afcfSToomas Soome /// 2597*f334afcfSToomas Soome #define EFI_ACPI_6_4_PDTT_PCC_COMMAND_DOORBELL_ONLY 0x00 2598*f334afcfSToomas Soome #define EFI_ACPI_6_4_PDTT_PCC_COMMAND_VENDOR_SPECIFIC 0x01 2599*f334afcfSToomas Soome 2600*f334afcfSToomas Soome /// 2601*f334afcfSToomas Soome /// PDTT Platform Communication Channel 2602*f334afcfSToomas Soome /// 2603*f334afcfSToomas Soome typedef EFI_ACPI_6_4_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER EFI_ACPI_6_4_PDTT_PCC; 2604*f334afcfSToomas Soome 2605*f334afcfSToomas Soome /// 2606*f334afcfSToomas Soome /// Processor Properties Topology Table (PPTT) 2607*f334afcfSToomas Soome /// 2608*f334afcfSToomas Soome typedef struct { 2609*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 2610*f334afcfSToomas Soome } EFI_ACPI_6_4_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_HEADER; 2611*f334afcfSToomas Soome 2612*f334afcfSToomas Soome /// 2613*f334afcfSToomas Soome /// PPTT Revision (as defined in ACPI 6.4 spec.) 2614*f334afcfSToomas Soome /// 2615*f334afcfSToomas Soome #define EFI_ACPI_6_4_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_REVISION 0x03 2616*f334afcfSToomas Soome 2617*f334afcfSToomas Soome /// 2618*f334afcfSToomas Soome /// PPTT types 2619*f334afcfSToomas Soome /// 2620*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_TYPE_PROCESSOR 0x00 2621*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_TYPE_CACHE 0x01 2622*f334afcfSToomas Soome 2623*f334afcfSToomas Soome /// 2624*f334afcfSToomas Soome /// PPTT Structure Header 2625*f334afcfSToomas Soome /// 2626*f334afcfSToomas Soome typedef struct { 2627*f334afcfSToomas Soome UINT8 Type; 2628*f334afcfSToomas Soome UINT8 Length; 2629*f334afcfSToomas Soome UINT8 Reserved[2]; 2630*f334afcfSToomas Soome } EFI_ACPI_6_4_PPTT_STRUCTURE_HEADER; 2631*f334afcfSToomas Soome 2632*f334afcfSToomas Soome /// 2633*f334afcfSToomas Soome /// For PPTT struct processor flags 2634*f334afcfSToomas Soome /// 2635*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_PACKAGE_NOT_PHYSICAL 0x0 2636*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_PACKAGE_PHYSICAL 0x1 2637*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_PROCESSOR_ID_INVALID 0x0 2638*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_PROCESSOR_ID_VALID 0x1 2639*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_PROCESSOR_IS_NOT_THREAD 0x0 2640*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_PROCESSOR_IS_THREAD 0x1 2641*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_NODE_IS_NOT_LEAF 0x0 2642*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_NODE_IS_LEAF 0x1 2643*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_IMPLEMENTATION_NOT_IDENTICAL 0x0 2644*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_IMPLEMENTATION_IDENTICAL 0x1 2645*f334afcfSToomas Soome 2646*f334afcfSToomas Soome /// 2647*f334afcfSToomas Soome /// Processor hierarchy node structure flags 2648*f334afcfSToomas Soome /// 2649*f334afcfSToomas Soome typedef struct { 2650*f334afcfSToomas Soome UINT32 PhysicalPackage : 1; 2651*f334afcfSToomas Soome UINT32 AcpiProcessorIdValid : 1; 2652*f334afcfSToomas Soome UINT32 ProcessorIsAThread : 1; 2653*f334afcfSToomas Soome UINT32 NodeIsALeaf : 1; 2654*f334afcfSToomas Soome UINT32 IdenticalImplementation : 1; 2655*f334afcfSToomas Soome UINT32 Reserved : 27; 2656*f334afcfSToomas Soome } EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR_FLAGS; 2657*f334afcfSToomas Soome 2658*f334afcfSToomas Soome /// 2659*f334afcfSToomas Soome /// Processor hierarchy node structure 2660*f334afcfSToomas Soome /// 2661*f334afcfSToomas Soome typedef struct { 2662*f334afcfSToomas Soome UINT8 Type; 2663*f334afcfSToomas Soome UINT8 Length; 2664*f334afcfSToomas Soome UINT8 Reserved[2]; 2665*f334afcfSToomas Soome EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR_FLAGS Flags; 2666*f334afcfSToomas Soome UINT32 Parent; 2667*f334afcfSToomas Soome UINT32 AcpiProcessorId; 2668*f334afcfSToomas Soome UINT32 NumberOfPrivateResources; 2669*f334afcfSToomas Soome } EFI_ACPI_6_4_PPTT_STRUCTURE_PROCESSOR; 2670*f334afcfSToomas Soome 2671*f334afcfSToomas Soome /// 2672*f334afcfSToomas Soome /// For PPTT struct cache flags 2673*f334afcfSToomas Soome /// 2674*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_CACHE_SIZE_INVALID 0x0 2675*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_CACHE_SIZE_VALID 0x1 2676*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_NUMBER_OF_SETS_INVALID 0x0 2677*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_NUMBER_OF_SETS_VALID 0x1 2678*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_ASSOCIATIVITY_INVALID 0x0 2679*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_ASSOCIATIVITY_VALID 0x1 2680*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_ALLOCATION_TYPE_INVALID 0x0 2681*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_ALLOCATION_TYPE_VALID 0x1 2682*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_CACHE_TYPE_INVALID 0x0 2683*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_CACHE_TYPE_VALID 0x1 2684*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_WRITE_POLICY_INVALID 0x0 2685*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_WRITE_POLICY_VALID 0x1 2686*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_LINE_SIZE_INVALID 0x0 2687*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_LINE_SIZE_VALID 0x1 2688*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_CACHE_ID_INVALID 0x0 2689*f334afcfSToomas Soome #define EFI_ACPI_6_4_PPTT_CACHE_ID_VALID 0x1 2690*f334afcfSToomas Soome 2691*f334afcfSToomas Soome /// 2692*f334afcfSToomas Soome /// Cache Type Structure flags 2693*f334afcfSToomas Soome /// 2694*f334afcfSToomas Soome typedef struct { 2695*f334afcfSToomas Soome UINT32 SizePropertyValid : 1; 2696*f334afcfSToomas Soome UINT32 NumberOfSetsValid : 1; 2697*f334afcfSToomas Soome UINT32 AssociativityValid : 1; 2698*f334afcfSToomas Soome UINT32 AllocationTypeValid : 1; 2699*f334afcfSToomas Soome UINT32 CacheTypeValid : 1; 2700*f334afcfSToomas Soome UINT32 WritePolicyValid : 1; 2701*f334afcfSToomas Soome UINT32 LineSizeValid : 1; 2702*f334afcfSToomas Soome UINT32 CacheIdValid : 1; 2703*f334afcfSToomas Soome UINT32 Reserved : 24; 2704*f334afcfSToomas Soome } EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE_FLAGS; 2705*f334afcfSToomas Soome 2706*f334afcfSToomas Soome /// 2707*f334afcfSToomas Soome /// For cache attributes 2708*f334afcfSToomas Soome /// 2709*f334afcfSToomas Soome #define EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_READ 0x0 2710*f334afcfSToomas Soome #define EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_WRITE 0x1 2711*f334afcfSToomas Soome #define EFI_ACPI_6_4_CACHE_ATTRIBUTES_ALLOCATION_READ_WRITE 0x2 2712*f334afcfSToomas Soome #define EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_DATA 0x0 2713*f334afcfSToomas Soome #define EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_INSTRUCTION 0x1 2714*f334afcfSToomas Soome #define EFI_ACPI_6_4_CACHE_ATTRIBUTES_CACHE_TYPE_UNIFIED 0x2 2715*f334afcfSToomas Soome #define EFI_ACPI_6_4_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_BACK 0x0 2716*f334afcfSToomas Soome #define EFI_ACPI_6_4_CACHE_ATTRIBUTES_WRITE_POLICY_WRITE_THROUGH 0x1 2717*f334afcfSToomas Soome 2718*f334afcfSToomas Soome /// 2719*f334afcfSToomas Soome /// Cache Type Structure cache attributes 2720*f334afcfSToomas Soome /// 2721*f334afcfSToomas Soome typedef struct { 2722*f334afcfSToomas Soome UINT8 AllocationType : 2; 2723*f334afcfSToomas Soome UINT8 CacheType : 2; 2724*f334afcfSToomas Soome UINT8 WritePolicy : 1; 2725*f334afcfSToomas Soome UINT8 Reserved : 3; 2726*f334afcfSToomas Soome } EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE_ATTRIBUTES; 2727*f334afcfSToomas Soome 2728*f334afcfSToomas Soome /// 2729*f334afcfSToomas Soome /// Cache Type Structure 2730*f334afcfSToomas Soome /// 2731*f334afcfSToomas Soome typedef struct { 2732*f334afcfSToomas Soome UINT8 Type; 2733*f334afcfSToomas Soome UINT8 Length; 2734*f334afcfSToomas Soome UINT8 Reserved[2]; 2735*f334afcfSToomas Soome EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE_FLAGS Flags; 2736*f334afcfSToomas Soome UINT32 NextLevelOfCache; 2737*f334afcfSToomas Soome UINT32 Size; 2738*f334afcfSToomas Soome UINT32 NumberOfSets; 2739*f334afcfSToomas Soome UINT8 Associativity; 2740*f334afcfSToomas Soome EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE_ATTRIBUTES Attributes; 2741*f334afcfSToomas Soome UINT16 LineSize; 2742*f334afcfSToomas Soome UINT32 CacheId; 2743*f334afcfSToomas Soome } EFI_ACPI_6_4_PPTT_STRUCTURE_CACHE; 2744*f334afcfSToomas Soome 2745*f334afcfSToomas Soome /// 2746*f334afcfSToomas Soome /// Platform Health Assessment Table (PHAT) Format 2747*f334afcfSToomas Soome /// 2748*f334afcfSToomas Soome typedef struct { 2749*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 2750*f334afcfSToomas Soome // UINT8 PlatformTelemetryRecords[]; 2751*f334afcfSToomas Soome } EFI_ACPI_6_4_PLATFORM_HEALTH_ASSESSMENT_TABLE; 2752*f334afcfSToomas Soome 2753*f334afcfSToomas Soome #define EFI_ACPI_6_4_PLATFORM_HEALTH_ASSESSMENT_TABLE_REVISION 0x01 2754*f334afcfSToomas Soome 2755*f334afcfSToomas Soome /// 2756*f334afcfSToomas Soome /// PHAT Record Format 2757*f334afcfSToomas Soome /// 2758*f334afcfSToomas Soome typedef struct { 2759*f334afcfSToomas Soome UINT16 PlatformHealthAssessmentRecordType; 2760*f334afcfSToomas Soome UINT16 RecordLength; 2761*f334afcfSToomas Soome UINT8 Revision; 2762*f334afcfSToomas Soome // UINT8 Data[]; 2763*f334afcfSToomas Soome } EFI_ACPI_6_4_PHAT_RECORD; 2764*f334afcfSToomas Soome 2765*f334afcfSToomas Soome /// 2766*f334afcfSToomas Soome /// PHAT Record Type Format 2767*f334afcfSToomas Soome /// 2768*f334afcfSToomas Soome #define EFI_ACPI_6_4_PHAT_RECORD_TYPE_FIRMWARE_VERSION_DATA_RECORD 0x0000 2769*f334afcfSToomas Soome #define EFI_ACPI_6_4_PHAT_RECORD_TYPE_FIRMWARE_HEALTH_DATA_RECORD 0x0001 2770*f334afcfSToomas Soome 2771*f334afcfSToomas Soome /// 2772*f334afcfSToomas Soome /// PHAT Version Element 2773*f334afcfSToomas Soome /// 2774*f334afcfSToomas Soome typedef struct { 2775*f334afcfSToomas Soome GUID ComponentId; 2776*f334afcfSToomas Soome UINT64 VersionValue; 2777*f334afcfSToomas Soome UINT32 ProducerId; 2778*f334afcfSToomas Soome } EFI_ACPI_6_4_PHAT_VERSION_ELEMENT; 2779*f334afcfSToomas Soome 2780*f334afcfSToomas Soome /// 2781*f334afcfSToomas Soome /// PHAT Firmware Version Data Record 2782*f334afcfSToomas Soome /// 2783*f334afcfSToomas Soome typedef struct { 2784*f334afcfSToomas Soome UINT16 PlatformRecordType; 2785*f334afcfSToomas Soome UINT16 RecordLength; 2786*f334afcfSToomas Soome UINT8 Revision; 2787*f334afcfSToomas Soome UINT8 Reserved[3]; 2788*f334afcfSToomas Soome UINT32 RecordCount; 2789*f334afcfSToomas Soome // UINT8 PhatVersionElement[]; 2790*f334afcfSToomas Soome } EFI_ACPI_6_4_PHAT_FIRMWARE_VERISON_DATA_RECORD; 2791*f334afcfSToomas Soome 2792*f334afcfSToomas Soome #define EFI_ACPI_6_4_PHAT_FIRMWARE_VERSION_DATA_RECORD_REVISION 0x01 2793*f334afcfSToomas Soome 2794*f334afcfSToomas Soome /// 2795*f334afcfSToomas Soome /// Firmware Health Data Record Structure 2796*f334afcfSToomas Soome /// 2797*f334afcfSToomas Soome typedef struct { 2798*f334afcfSToomas Soome UINT16 PlatformRecordType; 2799*f334afcfSToomas Soome UINT16 RecordLength; 2800*f334afcfSToomas Soome UINT8 Revision; 2801*f334afcfSToomas Soome UINT16 Reserved; 2802*f334afcfSToomas Soome UINT8 AmHealthy; 2803*f334afcfSToomas Soome GUID DeviceSignature; 2804*f334afcfSToomas Soome UINT32 DeviceSpecificDataOffset; 2805*f334afcfSToomas Soome // UINT8 DevicePath[]; 2806*f334afcfSToomas Soome // UINT8 DeviceSpecificData[]; 2807*f334afcfSToomas Soome } EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_STRUCTURE; 2808*f334afcfSToomas Soome 2809*f334afcfSToomas Soome #define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_REVISION 0x01 2810*f334afcfSToomas Soome 2811*f334afcfSToomas Soome /// 2812*f334afcfSToomas Soome /// Firmware Health Data Record device health state 2813*f334afcfSToomas Soome /// 2814*f334afcfSToomas Soome #define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_ERRORS_FOUND 0x00 2815*f334afcfSToomas Soome #define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_NO_ERRORS_FOUND 0x01 2816*f334afcfSToomas Soome #define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_UNKNOWN 0x02 2817*f334afcfSToomas Soome #define EFI_ACPI_6_4_PHAT_FIRMWARE_HEALTH_DATA_RECORD_ADVISORY 0x03 2818*f334afcfSToomas Soome 2819*f334afcfSToomas Soome // 2820*f334afcfSToomas Soome // Known table signatures 2821*f334afcfSToomas Soome // 2822*f334afcfSToomas Soome 2823*f334afcfSToomas Soome /// 2824*f334afcfSToomas Soome /// "RSD PTR " Root System Description Pointer 2825*f334afcfSToomas Soome /// 2826*f334afcfSToomas Soome #define EFI_ACPI_6_4_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') 2827*f334afcfSToomas Soome 2828*f334afcfSToomas Soome /// 2829*f334afcfSToomas Soome /// "APIC" Multiple APIC Description Table 2830*f334afcfSToomas Soome /// 2831*f334afcfSToomas Soome #define EFI_ACPI_6_4_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') 2832*f334afcfSToomas Soome 2833*f334afcfSToomas Soome /// 2834*f334afcfSToomas Soome /// "BERT" Boot Error Record Table 2835*f334afcfSToomas Soome /// 2836*f334afcfSToomas Soome #define EFI_ACPI_6_4_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T') 2837*f334afcfSToomas Soome 2838*f334afcfSToomas Soome /// 2839*f334afcfSToomas Soome /// "BGRT" Boot Graphics Resource Table 2840*f334afcfSToomas Soome /// 2841*f334afcfSToomas Soome #define EFI_ACPI_6_4_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T') 2842*f334afcfSToomas Soome 2843*f334afcfSToomas Soome /// 2844*f334afcfSToomas Soome /// "CDIT" Component Distance Information Table 2845*f334afcfSToomas Soome /// 2846*f334afcfSToomas Soome #define EFI_ACPI_6_4_COMPONENT_DISTANCE_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('C', 'D', 'I', 'T') 2847*f334afcfSToomas Soome 2848*f334afcfSToomas Soome /// 2849*f334afcfSToomas Soome /// "CPEP" Corrected Platform Error Polling Table 2850*f334afcfSToomas Soome /// 2851*f334afcfSToomas Soome #define EFI_ACPI_6_4_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P') 2852*f334afcfSToomas Soome 2853*f334afcfSToomas Soome /// 2854*f334afcfSToomas Soome /// "CRAT" Component Resource Attribute Table 2855*f334afcfSToomas Soome /// 2856*f334afcfSToomas Soome #define EFI_ACPI_6_4_COMPONENT_RESOURCE_ATTRIBUTE_TABLE_SIGNATURE SIGNATURE_32('C', 'R', 'A', 'T') 2857*f334afcfSToomas Soome 2858*f334afcfSToomas Soome /// 2859*f334afcfSToomas Soome /// "DSDT" Differentiated System Description Table 2860*f334afcfSToomas Soome /// 2861*f334afcfSToomas Soome #define EFI_ACPI_6_4_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') 2862*f334afcfSToomas Soome 2863*f334afcfSToomas Soome /// 2864*f334afcfSToomas Soome /// "ECDT" Embedded Controller Boot Resources Table 2865*f334afcfSToomas Soome /// 2866*f334afcfSToomas Soome #define EFI_ACPI_6_4_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') 2867*f334afcfSToomas Soome 2868*f334afcfSToomas Soome /// 2869*f334afcfSToomas Soome /// "EINJ" Error Injection Table 2870*f334afcfSToomas Soome /// 2871*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J') 2872*f334afcfSToomas Soome 2873*f334afcfSToomas Soome /// 2874*f334afcfSToomas Soome /// "ERST" Error Record Serialization Table 2875*f334afcfSToomas Soome /// 2876*f334afcfSToomas Soome #define EFI_ACPI_6_4_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T') 2877*f334afcfSToomas Soome 2878*f334afcfSToomas Soome /// 2879*f334afcfSToomas Soome /// "FACP" Fixed ACPI Description Table 2880*f334afcfSToomas Soome /// 2881*f334afcfSToomas Soome #define EFI_ACPI_6_4_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') 2882*f334afcfSToomas Soome 2883*f334afcfSToomas Soome /// 2884*f334afcfSToomas Soome /// "FACS" Firmware ACPI Control Structure 2885*f334afcfSToomas Soome /// 2886*f334afcfSToomas Soome #define EFI_ACPI_6_4_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') 2887*f334afcfSToomas Soome 2888*f334afcfSToomas Soome /// 2889*f334afcfSToomas Soome /// "FPDT" Firmware Performance Data Table 2890*f334afcfSToomas Soome /// 2891*f334afcfSToomas Soome #define EFI_ACPI_6_4_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T') 2892*f334afcfSToomas Soome 2893*f334afcfSToomas Soome /// 2894*f334afcfSToomas Soome /// "GTDT" Generic Timer Description Table 2895*f334afcfSToomas Soome /// 2896*f334afcfSToomas Soome #define EFI_ACPI_6_4_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T') 2897*f334afcfSToomas Soome 2898*f334afcfSToomas Soome /// 2899*f334afcfSToomas Soome /// "HEST" Hardware Error Source Table 2900*f334afcfSToomas Soome /// 2901*f334afcfSToomas Soome #define EFI_ACPI_6_4_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T') 2902*f334afcfSToomas Soome 2903*f334afcfSToomas Soome /// 2904*f334afcfSToomas Soome /// "HMAT" Heterogeneous Memory Attribute Table 2905*f334afcfSToomas Soome /// 2906*f334afcfSToomas Soome #define EFI_ACPI_6_4_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_SIGNATURE SIGNATURE_32('H', 'M', 'A', 'T') 2907*f334afcfSToomas Soome 2908*f334afcfSToomas Soome /// 2909*f334afcfSToomas Soome /// "MPST" Memory Power State Table 2910*f334afcfSToomas Soome /// 2911*f334afcfSToomas Soome #define EFI_ACPI_6_4_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T') 2912*f334afcfSToomas Soome 2913*f334afcfSToomas Soome /// 2914*f334afcfSToomas Soome /// "MSCT" Maximum System Characteristics Table 2915*f334afcfSToomas Soome /// 2916*f334afcfSToomas Soome #define EFI_ACPI_6_4_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T') 2917*f334afcfSToomas Soome 2918*f334afcfSToomas Soome /// 2919*f334afcfSToomas Soome /// "NFIT" NVDIMM Firmware Interface Table 2920*f334afcfSToomas Soome /// 2921*f334afcfSToomas Soome #define EFI_ACPI_6_4_NVDIMM_FIRMWARE_INTERFACE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('N', 'F', 'I', 'T') 2922*f334afcfSToomas Soome 2923*f334afcfSToomas Soome /// 2924*f334afcfSToomas Soome /// "PDTT" Platform Debug Trigger Table 2925*f334afcfSToomas Soome /// 2926*f334afcfSToomas Soome #define EFI_ACPI_6_4_PLATFORM_DEBUG_TRIGGER_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('P', 'D', 'T', 'T') 2927*f334afcfSToomas Soome 2928*f334afcfSToomas Soome /// 2929*f334afcfSToomas Soome /// "PMTT" Platform Memory Topology Table 2930*f334afcfSToomas Soome /// 2931*f334afcfSToomas Soome #define EFI_ACPI_6_4_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T') 2932*f334afcfSToomas Soome 2933*f334afcfSToomas Soome /// 2934*f334afcfSToomas Soome /// "PPTT" Processor Properties Topology Table 2935*f334afcfSToomas Soome /// 2936*f334afcfSToomas Soome #define EFI_ACPI_6_4_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('P', 'P', 'T', 'T') 2937*f334afcfSToomas Soome 2938*f334afcfSToomas Soome /// 2939*f334afcfSToomas Soome /// "PSDT" Persistent System Description Table 2940*f334afcfSToomas Soome /// 2941*f334afcfSToomas Soome #define EFI_ACPI_6_4_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') 2942*f334afcfSToomas Soome 2943*f334afcfSToomas Soome /// 2944*f334afcfSToomas Soome /// "RASF" ACPI RAS Feature Table 2945*f334afcfSToomas Soome /// 2946*f334afcfSToomas Soome #define EFI_ACPI_6_4_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F') 2947*f334afcfSToomas Soome 2948*f334afcfSToomas Soome /// 2949*f334afcfSToomas Soome /// "RSDT" Root System Description Table 2950*f334afcfSToomas Soome /// 2951*f334afcfSToomas Soome #define EFI_ACPI_6_4_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') 2952*f334afcfSToomas Soome 2953*f334afcfSToomas Soome /// 2954*f334afcfSToomas Soome /// "SBST" Smart Battery Specification Table 2955*f334afcfSToomas Soome /// 2956*f334afcfSToomas Soome #define EFI_ACPI_6_4_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') 2957*f334afcfSToomas Soome 2958*f334afcfSToomas Soome /// 2959*f334afcfSToomas Soome /// "SDEV" Secure DEVices Table 2960*f334afcfSToomas Soome /// 2961*f334afcfSToomas Soome #define EFI_ACPI_6_4_SECURE_DEVICES_TABLE_SIGNATURE SIGNATURE_32('S', 'D', 'E', 'V') 2962*f334afcfSToomas Soome 2963*f334afcfSToomas Soome /// 2964*f334afcfSToomas Soome /// "SLIT" System Locality Information Table 2965*f334afcfSToomas Soome /// 2966*f334afcfSToomas Soome #define EFI_ACPI_6_4_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') 2967*f334afcfSToomas Soome 2968*f334afcfSToomas Soome /// 2969*f334afcfSToomas Soome /// "SRAT" System Resource Affinity Table 2970*f334afcfSToomas Soome /// 2971*f334afcfSToomas Soome #define EFI_ACPI_6_4_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') 2972*f334afcfSToomas Soome 2973*f334afcfSToomas Soome /// 2974*f334afcfSToomas Soome /// "SSDT" Secondary System Description Table 2975*f334afcfSToomas Soome /// 2976*f334afcfSToomas Soome #define EFI_ACPI_6_4_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') 2977*f334afcfSToomas Soome 2978*f334afcfSToomas Soome /// 2979*f334afcfSToomas Soome /// "XSDT" Extended System Description Table 2980*f334afcfSToomas Soome /// 2981*f334afcfSToomas Soome #define EFI_ACPI_6_4_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') 2982*f334afcfSToomas Soome 2983*f334afcfSToomas Soome /// 2984*f334afcfSToomas Soome /// "BOOT" MS Simple Boot Spec 2985*f334afcfSToomas Soome /// 2986*f334afcfSToomas Soome #define EFI_ACPI_6_4_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') 2987*f334afcfSToomas Soome 2988*f334afcfSToomas Soome /// 2989*f334afcfSToomas Soome /// "CSRT" MS Core System Resource Table 2990*f334afcfSToomas Soome /// 2991*f334afcfSToomas Soome #define EFI_ACPI_6_4_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T') 2992*f334afcfSToomas Soome 2993*f334afcfSToomas Soome /// 2994*f334afcfSToomas Soome /// "DBG2" MS Debug Port 2 Spec 2995*f334afcfSToomas Soome /// 2996*f334afcfSToomas Soome #define EFI_ACPI_6_4_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2') 2997*f334afcfSToomas Soome 2998*f334afcfSToomas Soome /// 2999*f334afcfSToomas Soome /// "DBGP" MS Debug Port Spec 3000*f334afcfSToomas Soome /// 3001*f334afcfSToomas Soome #define EFI_ACPI_6_4_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') 3002*f334afcfSToomas Soome 3003*f334afcfSToomas Soome /// 3004*f334afcfSToomas Soome /// "DMAR" DMA Remapping Table 3005*f334afcfSToomas Soome /// 3006*f334afcfSToomas Soome #define EFI_ACPI_6_4_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R') 3007*f334afcfSToomas Soome 3008*f334afcfSToomas Soome /// 3009*f334afcfSToomas Soome /// "DRTM" Dynamic Root of Trust for Measurement Table 3010*f334afcfSToomas Soome /// 3011*f334afcfSToomas Soome #define EFI_ACPI_6_4_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M') 3012*f334afcfSToomas Soome 3013*f334afcfSToomas Soome /// 3014*f334afcfSToomas Soome /// "ETDT" Event Timer Description Table 3015*f334afcfSToomas Soome /// 3016*f334afcfSToomas Soome #define EFI_ACPI_6_4_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') 3017*f334afcfSToomas Soome 3018*f334afcfSToomas Soome /// 3019*f334afcfSToomas Soome /// "HPET" IA-PC High Precision Event Timer Table 3020*f334afcfSToomas Soome /// 3021*f334afcfSToomas Soome #define EFI_ACPI_6_4_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T') 3022*f334afcfSToomas Soome 3023*f334afcfSToomas Soome /// 3024*f334afcfSToomas Soome /// "iBFT" iSCSI Boot Firmware Table 3025*f334afcfSToomas Soome /// 3026*f334afcfSToomas Soome #define EFI_ACPI_6_4_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T') 3027*f334afcfSToomas Soome 3028*f334afcfSToomas Soome /// 3029*f334afcfSToomas Soome /// "IORT" I/O Remapping Table 3030*f334afcfSToomas Soome /// 3031*f334afcfSToomas Soome #define EFI_ACPI_6_4_IO_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('I', 'O', 'R', 'T') 3032*f334afcfSToomas Soome 3033*f334afcfSToomas Soome /// 3034*f334afcfSToomas Soome /// "IVRS" I/O Virtualization Reporting Structure 3035*f334afcfSToomas Soome /// 3036*f334afcfSToomas Soome #define EFI_ACPI_6_4_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S') 3037*f334afcfSToomas Soome 3038*f334afcfSToomas Soome /// 3039*f334afcfSToomas Soome /// "LPIT" Low Power Idle Table 3040*f334afcfSToomas Soome /// 3041*f334afcfSToomas Soome #define EFI_ACPI_6_4_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('L', 'P', 'I', 'T') 3042*f334afcfSToomas Soome 3043*f334afcfSToomas Soome /// 3044*f334afcfSToomas Soome /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table 3045*f334afcfSToomas Soome /// 3046*f334afcfSToomas Soome #define EFI_ACPI_6_4_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') 3047*f334afcfSToomas Soome 3048*f334afcfSToomas Soome /// 3049*f334afcfSToomas Soome /// "MCHI" Management Controller Host Interface Table 3050*f334afcfSToomas Soome /// 3051*f334afcfSToomas Soome #define EFI_ACPI_6_4_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I') 3052*f334afcfSToomas Soome 3053*f334afcfSToomas Soome /// 3054*f334afcfSToomas Soome /// "MSDM" MS Data Management Table 3055*f334afcfSToomas Soome /// 3056*f334afcfSToomas Soome #define EFI_ACPI_6_4_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M') 3057*f334afcfSToomas Soome 3058*f334afcfSToomas Soome /// 3059*f334afcfSToomas Soome /// "PCCT" Platform Communications Channel Table 3060*f334afcfSToomas Soome /// 3061*f334afcfSToomas Soome #define EFI_ACPI_6_4_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE SIGNATURE_32('P', 'C', 'C', 'T') 3062*f334afcfSToomas Soome 3063*f334afcfSToomas Soome /// 3064*f334afcfSToomas Soome /// "PHAT" Platform Health Assessment Table 3065*f334afcfSToomas Soome /// 3066*f334afcfSToomas Soome #define EFI_ACPI_6_4_PLATFORM_HEALTH_ASSESSMENT_TABLE_SIGNATURE SIGNATURE_32('P', 'H', 'A', 'T') 3067*f334afcfSToomas Soome 3068*f334afcfSToomas Soome /// 3069*f334afcfSToomas Soome /// "SDEI" Software Delegated Exceptions Interface Table 3070*f334afcfSToomas Soome /// 3071*f334afcfSToomas Soome #define EFI_ACPI_6_4_SOFTWARE_DELEGATED_EXCEPTIONS_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'D', 'E', 'I') 3072*f334afcfSToomas Soome 3073*f334afcfSToomas Soome /// 3074*f334afcfSToomas Soome /// "SLIC" MS Software Licensing Table Specification 3075*f334afcfSToomas Soome /// 3076*f334afcfSToomas Soome #define EFI_ACPI_6_4_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C') 3077*f334afcfSToomas Soome 3078*f334afcfSToomas Soome /// 3079*f334afcfSToomas Soome /// "SPCR" Serial Port Concole Redirection Table 3080*f334afcfSToomas Soome /// 3081*f334afcfSToomas Soome #define EFI_ACPI_6_4_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') 3082*f334afcfSToomas Soome 3083*f334afcfSToomas Soome /// 3084*f334afcfSToomas Soome /// "SPMI" Server Platform Management Interface Table 3085*f334afcfSToomas Soome /// 3086*f334afcfSToomas Soome #define EFI_ACPI_6_4_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') 3087*f334afcfSToomas Soome 3088*f334afcfSToomas Soome /// 3089*f334afcfSToomas Soome /// "STAO" _STA Override Table 3090*f334afcfSToomas Soome /// 3091*f334afcfSToomas Soome #define EFI_ACPI_6_4_STA_OVERRIDE_TABLE_SIGNATURE SIGNATURE_32('S', 'T', 'A', 'O') 3092*f334afcfSToomas Soome 3093*f334afcfSToomas Soome /// 3094*f334afcfSToomas Soome /// "TCPA" Trusted Computing Platform Alliance Capabilities Table 3095*f334afcfSToomas Soome /// 3096*f334afcfSToomas Soome #define EFI_ACPI_6_4_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A') 3097*f334afcfSToomas Soome 3098*f334afcfSToomas Soome /// 3099*f334afcfSToomas Soome /// "TPM2" Trusted Computing Platform 1 Table 3100*f334afcfSToomas Soome /// 3101*f334afcfSToomas Soome #define EFI_ACPI_6_4_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2') 3102*f334afcfSToomas Soome 3103*f334afcfSToomas Soome /// 3104*f334afcfSToomas Soome /// "UEFI" UEFI ACPI Data Table 3105*f334afcfSToomas Soome /// 3106*f334afcfSToomas Soome #define EFI_ACPI_6_4_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I') 3107*f334afcfSToomas Soome 3108*f334afcfSToomas Soome /// 3109*f334afcfSToomas Soome /// "WAET" Windows ACPI Emulated Devices Table 3110*f334afcfSToomas Soome /// 3111*f334afcfSToomas Soome #define EFI_ACPI_6_4_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T') 3112*f334afcfSToomas Soome 3113*f334afcfSToomas Soome /// 3114*f334afcfSToomas Soome /// "WDAT" Watchdog Action Table 3115*f334afcfSToomas Soome /// 3116*f334afcfSToomas Soome #define EFI_ACPI_6_4_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T') 3117*f334afcfSToomas Soome 3118*f334afcfSToomas Soome /// 3119*f334afcfSToomas Soome /// "WDRT" Watchdog Resource Table 3120*f334afcfSToomas Soome /// 3121*f334afcfSToomas Soome #define EFI_ACPI_6_4_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T') 3122*f334afcfSToomas Soome 3123*f334afcfSToomas Soome /// 3124*f334afcfSToomas Soome /// "WPBT" MS Platform Binary Table 3125*f334afcfSToomas Soome /// 3126*f334afcfSToomas Soome #define EFI_ACPI_6_4_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T') 3127*f334afcfSToomas Soome 3128*f334afcfSToomas Soome /// 3129*f334afcfSToomas Soome /// "WSMT" Windows SMM Security Mitigation Table 3130*f334afcfSToomas Soome /// 3131*f334afcfSToomas Soome #define EFI_ACPI_6_4_WINDOWS_SMM_SECURITY_MITIGATION_TABLE_SIGNATURE SIGNATURE_32('W', 'S', 'M', 'T') 3132*f334afcfSToomas Soome 3133*f334afcfSToomas Soome /// 3134*f334afcfSToomas Soome /// "XENV" Xen Project Table 3135*f334afcfSToomas Soome /// 3136*f334afcfSToomas Soome #define EFI_ACPI_6_4_XEN_PROJECT_TABLE_SIGNATURE SIGNATURE_32('X', 'E', 'N', 'V') 3137*f334afcfSToomas Soome 3138*f334afcfSToomas Soome #pragma pack() 3139*f334afcfSToomas Soome 3140*f334afcfSToomas Soome #endif 3141