1*f334afcfSToomas Soome /** @file 2*f334afcfSToomas Soome ACPI 6.0 definitions from the ACPI Specification Revision 6.0 Errata A January, 2016. 3*f334afcfSToomas Soome 4*f334afcfSToomas Soome Copyright (c) 2015 - 2022, Intel Corporation. All rights reserved.<BR> 5*f334afcfSToomas Soome (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR> 6*f334afcfSToomas Soome Copyright (c) 2020, ARM Ltd. All rights reserved.<BR> 7*f334afcfSToomas Soome SPDX-License-Identifier: BSD-2-Clause-Patent 8*f334afcfSToomas Soome **/ 9*f334afcfSToomas Soome 10*f334afcfSToomas Soome #ifndef _ACPI_6_0_H_ 11*f334afcfSToomas Soome #define _ACPI_6_0_H_ 12*f334afcfSToomas Soome 13*f334afcfSToomas Soome #include <IndustryStandard/Acpi51.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.0 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_0_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_0_SYSTEM_MEMORY 0 35*f334afcfSToomas Soome #define EFI_ACPI_6_0_SYSTEM_IO 1 36*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCI_CONFIGURATION_SPACE 2 37*f334afcfSToomas Soome #define EFI_ACPI_6_0_EMBEDDED_CONTROLLER 3 38*f334afcfSToomas Soome #define EFI_ACPI_6_0_SMBUS 4 39*f334afcfSToomas Soome #define EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL 0x0A 40*f334afcfSToomas Soome #define EFI_ACPI_6_0_FUNCTIONAL_FIXED_HARDWARE 0x7F 41*f334afcfSToomas Soome 42*f334afcfSToomas Soome // 43*f334afcfSToomas Soome // Generic Address Space Access Sizes 44*f334afcfSToomas Soome // 45*f334afcfSToomas Soome #define EFI_ACPI_6_0_UNDEFINED 0 46*f334afcfSToomas Soome #define EFI_ACPI_6_0_BYTE 1 47*f334afcfSToomas Soome #define EFI_ACPI_6_0_WORD 2 48*f334afcfSToomas Soome #define EFI_ACPI_6_0_DWORD 3 49*f334afcfSToomas Soome #define EFI_ACPI_6_0_QWORD 4 50*f334afcfSToomas Soome 51*f334afcfSToomas Soome // 52*f334afcfSToomas Soome // ACPI 6.0 table structures 53*f334afcfSToomas Soome // 54*f334afcfSToomas Soome 55*f334afcfSToomas Soome /// 56*f334afcfSToomas Soome /// Root System Description Pointer Structure 57*f334afcfSToomas Soome /// 58*f334afcfSToomas Soome typedef struct { 59*f334afcfSToomas Soome UINT64 Signature; 60*f334afcfSToomas Soome UINT8 Checksum; 61*f334afcfSToomas Soome UINT8 OemId[6]; 62*f334afcfSToomas Soome UINT8 Revision; 63*f334afcfSToomas Soome UINT32 RsdtAddress; 64*f334afcfSToomas Soome UINT32 Length; 65*f334afcfSToomas Soome UINT64 XsdtAddress; 66*f334afcfSToomas Soome UINT8 ExtendedChecksum; 67*f334afcfSToomas Soome UINT8 Reserved[3]; 68*f334afcfSToomas Soome } EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER; 69*f334afcfSToomas Soome 70*f334afcfSToomas Soome /// 71*f334afcfSToomas Soome /// RSD_PTR Revision (as defined in ACPI 6.0 spec.) 72*f334afcfSToomas Soome /// 73*f334afcfSToomas Soome #define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 6.0) says current value is 2 74*f334afcfSToomas Soome 75*f334afcfSToomas Soome /// 76*f334afcfSToomas Soome /// Common table header, this prefaces all ACPI tables, including FACS, but 77*f334afcfSToomas Soome /// excluding the RSD PTR structure 78*f334afcfSToomas Soome /// 79*f334afcfSToomas Soome typedef struct { 80*f334afcfSToomas Soome UINT32 Signature; 81*f334afcfSToomas Soome UINT32 Length; 82*f334afcfSToomas Soome } EFI_ACPI_6_0_COMMON_HEADER; 83*f334afcfSToomas Soome 84*f334afcfSToomas Soome // 85*f334afcfSToomas Soome // Root System Description Table 86*f334afcfSToomas Soome // No definition needed as it is a common description table header, the same with 87*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. 88*f334afcfSToomas Soome // 89*f334afcfSToomas Soome 90*f334afcfSToomas Soome /// 91*f334afcfSToomas Soome /// RSDT Revision (as defined in ACPI 6.0 spec.) 92*f334afcfSToomas Soome /// 93*f334afcfSToomas Soome #define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 94*f334afcfSToomas Soome 95*f334afcfSToomas Soome // 96*f334afcfSToomas Soome // Extended System Description Table 97*f334afcfSToomas Soome // No definition needed as it is a common description table header, the same with 98*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers. 99*f334afcfSToomas Soome // 100*f334afcfSToomas Soome 101*f334afcfSToomas Soome /// 102*f334afcfSToomas Soome /// XSDT Revision (as defined in ACPI 6.0 spec.) 103*f334afcfSToomas Soome /// 104*f334afcfSToomas Soome #define EFI_ACPI_6_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 105*f334afcfSToomas Soome 106*f334afcfSToomas Soome /// 107*f334afcfSToomas Soome /// Fixed ACPI Description Table Structure (FADT) 108*f334afcfSToomas Soome /// 109*f334afcfSToomas Soome typedef struct { 110*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 111*f334afcfSToomas Soome UINT32 FirmwareCtrl; 112*f334afcfSToomas Soome UINT32 Dsdt; 113*f334afcfSToomas Soome UINT8 Reserved0; 114*f334afcfSToomas Soome UINT8 PreferredPmProfile; 115*f334afcfSToomas Soome UINT16 SciInt; 116*f334afcfSToomas Soome UINT32 SmiCmd; 117*f334afcfSToomas Soome UINT8 AcpiEnable; 118*f334afcfSToomas Soome UINT8 AcpiDisable; 119*f334afcfSToomas Soome UINT8 S4BiosReq; 120*f334afcfSToomas Soome UINT8 PstateCnt; 121*f334afcfSToomas Soome UINT32 Pm1aEvtBlk; 122*f334afcfSToomas Soome UINT32 Pm1bEvtBlk; 123*f334afcfSToomas Soome UINT32 Pm1aCntBlk; 124*f334afcfSToomas Soome UINT32 Pm1bCntBlk; 125*f334afcfSToomas Soome UINT32 Pm2CntBlk; 126*f334afcfSToomas Soome UINT32 PmTmrBlk; 127*f334afcfSToomas Soome UINT32 Gpe0Blk; 128*f334afcfSToomas Soome UINT32 Gpe1Blk; 129*f334afcfSToomas Soome UINT8 Pm1EvtLen; 130*f334afcfSToomas Soome UINT8 Pm1CntLen; 131*f334afcfSToomas Soome UINT8 Pm2CntLen; 132*f334afcfSToomas Soome UINT8 PmTmrLen; 133*f334afcfSToomas Soome UINT8 Gpe0BlkLen; 134*f334afcfSToomas Soome UINT8 Gpe1BlkLen; 135*f334afcfSToomas Soome UINT8 Gpe1Base; 136*f334afcfSToomas Soome UINT8 CstCnt; 137*f334afcfSToomas Soome UINT16 PLvl2Lat; 138*f334afcfSToomas Soome UINT16 PLvl3Lat; 139*f334afcfSToomas Soome UINT16 FlushSize; 140*f334afcfSToomas Soome UINT16 FlushStride; 141*f334afcfSToomas Soome UINT8 DutyOffset; 142*f334afcfSToomas Soome UINT8 DutyWidth; 143*f334afcfSToomas Soome UINT8 DayAlrm; 144*f334afcfSToomas Soome UINT8 MonAlrm; 145*f334afcfSToomas Soome UINT8 Century; 146*f334afcfSToomas Soome UINT16 IaPcBootArch; 147*f334afcfSToomas Soome UINT8 Reserved1; 148*f334afcfSToomas Soome UINT32 Flags; 149*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE ResetReg; 150*f334afcfSToomas Soome UINT8 ResetValue; 151*f334afcfSToomas Soome UINT16 ArmBootArch; 152*f334afcfSToomas Soome UINT8 MinorVersion; 153*f334afcfSToomas Soome UINT64 XFirmwareCtrl; 154*f334afcfSToomas Soome UINT64 XDsdt; 155*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; 156*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; 157*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; 158*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; 159*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; 160*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; 161*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; 162*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; 163*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE SleepControlReg; 164*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg; 165*f334afcfSToomas Soome UINT64 HypervisorVendorIdentity; 166*f334afcfSToomas Soome } EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE; 167*f334afcfSToomas Soome 168*f334afcfSToomas Soome /// 169*f334afcfSToomas Soome /// FADT Version (as defined in ACPI 6.0 spec.) 170*f334afcfSToomas Soome /// 171*f334afcfSToomas Soome #define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x06 172*f334afcfSToomas Soome #define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x00 173*f334afcfSToomas Soome 174*f334afcfSToomas Soome // 175*f334afcfSToomas Soome // Fixed ACPI Description Table Preferred Power Management Profile 176*f334afcfSToomas Soome // 177*f334afcfSToomas Soome #define EFI_ACPI_6_0_PM_PROFILE_UNSPECIFIED 0 178*f334afcfSToomas Soome #define EFI_ACPI_6_0_PM_PROFILE_DESKTOP 1 179*f334afcfSToomas Soome #define EFI_ACPI_6_0_PM_PROFILE_MOBILE 2 180*f334afcfSToomas Soome #define EFI_ACPI_6_0_PM_PROFILE_WORKSTATION 3 181*f334afcfSToomas Soome #define EFI_ACPI_6_0_PM_PROFILE_ENTERPRISE_SERVER 4 182*f334afcfSToomas Soome #define EFI_ACPI_6_0_PM_PROFILE_SOHO_SERVER 5 183*f334afcfSToomas Soome #define EFI_ACPI_6_0_PM_PROFILE_APPLIANCE_PC 6 184*f334afcfSToomas Soome #define EFI_ACPI_6_0_PM_PROFILE_PERFORMANCE_SERVER 7 185*f334afcfSToomas Soome #define EFI_ACPI_6_0_PM_PROFILE_TABLET 8 186*f334afcfSToomas Soome 187*f334afcfSToomas Soome // 188*f334afcfSToomas Soome // Fixed ACPI Description Table Boot Architecture Flags 189*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 190*f334afcfSToomas Soome // 191*f334afcfSToomas Soome #define EFI_ACPI_6_0_LEGACY_DEVICES BIT0 192*f334afcfSToomas Soome #define EFI_ACPI_6_0_8042 BIT1 193*f334afcfSToomas Soome #define EFI_ACPI_6_0_VGA_NOT_PRESENT BIT2 194*f334afcfSToomas Soome #define EFI_ACPI_6_0_MSI_NOT_SUPPORTED BIT3 195*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCIE_ASPM_CONTROLS BIT4 196*f334afcfSToomas Soome #define EFI_ACPI_6_0_CMOS_RTC_NOT_PRESENT BIT5 197*f334afcfSToomas Soome 198*f334afcfSToomas Soome // 199*f334afcfSToomas Soome // Fixed ACPI Description Table Arm Boot Architecture Flags 200*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 201*f334afcfSToomas Soome // 202*f334afcfSToomas Soome #define EFI_ACPI_6_0_ARM_PSCI_COMPLIANT BIT0 203*f334afcfSToomas Soome #define EFI_ACPI_6_0_ARM_PSCI_USE_HVC BIT1 204*f334afcfSToomas Soome 205*f334afcfSToomas Soome // 206*f334afcfSToomas Soome // Fixed ACPI Description Table Fixed Feature Flags 207*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 208*f334afcfSToomas Soome // 209*f334afcfSToomas Soome #define EFI_ACPI_6_0_WBINVD BIT0 210*f334afcfSToomas Soome #define EFI_ACPI_6_0_WBINVD_FLUSH BIT1 211*f334afcfSToomas Soome #define EFI_ACPI_6_0_PROC_C1 BIT2 212*f334afcfSToomas Soome #define EFI_ACPI_6_0_P_LVL2_UP BIT3 213*f334afcfSToomas Soome #define EFI_ACPI_6_0_PWR_BUTTON BIT4 214*f334afcfSToomas Soome #define EFI_ACPI_6_0_SLP_BUTTON BIT5 215*f334afcfSToomas Soome #define EFI_ACPI_6_0_FIX_RTC BIT6 216*f334afcfSToomas Soome #define EFI_ACPI_6_0_RTC_S4 BIT7 217*f334afcfSToomas Soome #define EFI_ACPI_6_0_TMR_VAL_EXT BIT8 218*f334afcfSToomas Soome #define EFI_ACPI_6_0_DCK_CAP BIT9 219*f334afcfSToomas Soome #define EFI_ACPI_6_0_RESET_REG_SUP BIT10 220*f334afcfSToomas Soome #define EFI_ACPI_6_0_SEALED_CASE BIT11 221*f334afcfSToomas Soome #define EFI_ACPI_6_0_HEADLESS BIT12 222*f334afcfSToomas Soome #define EFI_ACPI_6_0_CPU_SW_SLP BIT13 223*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCI_EXP_WAK BIT14 224*f334afcfSToomas Soome #define EFI_ACPI_6_0_USE_PLATFORM_CLOCK BIT15 225*f334afcfSToomas Soome #define EFI_ACPI_6_0_S4_RTC_STS_VALID BIT16 226*f334afcfSToomas Soome #define EFI_ACPI_6_0_REMOTE_POWER_ON_CAPABLE BIT17 227*f334afcfSToomas Soome #define EFI_ACPI_6_0_FORCE_APIC_CLUSTER_MODEL BIT18 228*f334afcfSToomas Soome #define EFI_ACPI_6_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19 229*f334afcfSToomas Soome #define EFI_ACPI_6_0_HW_REDUCED_ACPI BIT20 230*f334afcfSToomas Soome #define EFI_ACPI_6_0_LOW_POWER_S0_IDLE_CAPABLE BIT21 231*f334afcfSToomas Soome 232*f334afcfSToomas Soome /// 233*f334afcfSToomas Soome /// Firmware ACPI Control Structure 234*f334afcfSToomas Soome /// 235*f334afcfSToomas Soome typedef struct { 236*f334afcfSToomas Soome UINT32 Signature; 237*f334afcfSToomas Soome UINT32 Length; 238*f334afcfSToomas Soome UINT32 HardwareSignature; 239*f334afcfSToomas Soome UINT32 FirmwareWakingVector; 240*f334afcfSToomas Soome UINT32 GlobalLock; 241*f334afcfSToomas Soome UINT32 Flags; 242*f334afcfSToomas Soome UINT64 XFirmwareWakingVector; 243*f334afcfSToomas Soome UINT8 Version; 244*f334afcfSToomas Soome UINT8 Reserved0[3]; 245*f334afcfSToomas Soome UINT32 OspmFlags; 246*f334afcfSToomas Soome UINT8 Reserved1[24]; 247*f334afcfSToomas Soome } EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; 248*f334afcfSToomas Soome 249*f334afcfSToomas Soome /// 250*f334afcfSToomas Soome /// FACS Version (as defined in ACPI 6.0 spec.) 251*f334afcfSToomas Soome /// 252*f334afcfSToomas Soome #define EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02 253*f334afcfSToomas Soome 254*f334afcfSToomas Soome /// 255*f334afcfSToomas Soome /// Firmware Control Structure Feature Flags 256*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 257*f334afcfSToomas Soome /// 258*f334afcfSToomas Soome #define EFI_ACPI_6_0_S4BIOS_F BIT0 259*f334afcfSToomas Soome #define EFI_ACPI_6_0_64BIT_WAKE_SUPPORTED_F BIT1 260*f334afcfSToomas Soome 261*f334afcfSToomas Soome /// 262*f334afcfSToomas Soome /// OSPM Enabled Firmware Control Structure Flags 263*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 264*f334afcfSToomas Soome /// 265*f334afcfSToomas Soome #define EFI_ACPI_6_0_OSPM_64BIT_WAKE_F BIT0 266*f334afcfSToomas Soome 267*f334afcfSToomas Soome // 268*f334afcfSToomas Soome // Differentiated System Description Table, 269*f334afcfSToomas Soome // Secondary System Description Table 270*f334afcfSToomas Soome // and Persistent System Description Table, 271*f334afcfSToomas Soome // no definition needed as they are common description table header, the same with 272*f334afcfSToomas Soome // EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block. 273*f334afcfSToomas Soome // 274*f334afcfSToomas Soome #define EFI_ACPI_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 275*f334afcfSToomas Soome #define EFI_ACPI_6_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 276*f334afcfSToomas Soome 277*f334afcfSToomas Soome /// 278*f334afcfSToomas Soome /// Multiple APIC Description Table header definition. The rest of the table 279*f334afcfSToomas Soome /// must be defined in a platform specific manner. 280*f334afcfSToomas Soome /// 281*f334afcfSToomas Soome typedef struct { 282*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 283*f334afcfSToomas Soome UINT32 LocalApicAddress; 284*f334afcfSToomas Soome UINT32 Flags; 285*f334afcfSToomas Soome } EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; 286*f334afcfSToomas Soome 287*f334afcfSToomas Soome /// 288*f334afcfSToomas Soome /// MADT Revision (as defined in ACPI 6.0 Errata A spec.) 289*f334afcfSToomas Soome /// 290*f334afcfSToomas Soome #define EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x04 291*f334afcfSToomas Soome 292*f334afcfSToomas Soome /// 293*f334afcfSToomas Soome /// Multiple APIC Flags 294*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 295*f334afcfSToomas Soome /// 296*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCAT_COMPAT BIT0 297*f334afcfSToomas Soome 298*f334afcfSToomas Soome // 299*f334afcfSToomas Soome // Multiple APIC Description Table APIC structure types 300*f334afcfSToomas Soome // All other values between 0x0D and 0x7F are reserved and 301*f334afcfSToomas Soome // will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM. 302*f334afcfSToomas Soome // 303*f334afcfSToomas Soome #define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC 0x00 304*f334afcfSToomas Soome #define EFI_ACPI_6_0_IO_APIC 0x01 305*f334afcfSToomas Soome #define EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE 0x02 306*f334afcfSToomas Soome #define EFI_ACPI_6_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 307*f334afcfSToomas Soome #define EFI_ACPI_6_0_LOCAL_APIC_NMI 0x04 308*f334afcfSToomas Soome #define EFI_ACPI_6_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 309*f334afcfSToomas Soome #define EFI_ACPI_6_0_IO_SAPIC 0x06 310*f334afcfSToomas Soome #define EFI_ACPI_6_0_LOCAL_SAPIC 0x07 311*f334afcfSToomas Soome #define EFI_ACPI_6_0_PLATFORM_INTERRUPT_SOURCES 0x08 312*f334afcfSToomas Soome #define EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC 0x09 313*f334afcfSToomas Soome #define EFI_ACPI_6_0_LOCAL_X2APIC_NMI 0x0A 314*f334afcfSToomas Soome #define EFI_ACPI_6_0_GIC 0x0B 315*f334afcfSToomas Soome #define EFI_ACPI_6_0_GICD 0x0C 316*f334afcfSToomas Soome #define EFI_ACPI_6_0_GIC_MSI_FRAME 0x0D 317*f334afcfSToomas Soome #define EFI_ACPI_6_0_GICR 0x0E 318*f334afcfSToomas Soome #define EFI_ACPI_6_0_GIC_ITS 0x0F 319*f334afcfSToomas Soome 320*f334afcfSToomas Soome // 321*f334afcfSToomas Soome // APIC Structure Definitions 322*f334afcfSToomas Soome // 323*f334afcfSToomas Soome 324*f334afcfSToomas Soome /// 325*f334afcfSToomas Soome /// Processor Local APIC Structure Definition 326*f334afcfSToomas Soome /// 327*f334afcfSToomas Soome typedef struct { 328*f334afcfSToomas Soome UINT8 Type; 329*f334afcfSToomas Soome UINT8 Length; 330*f334afcfSToomas Soome UINT8 AcpiProcessorUid; 331*f334afcfSToomas Soome UINT8 ApicId; 332*f334afcfSToomas Soome UINT32 Flags; 333*f334afcfSToomas Soome } EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_STRUCTURE; 334*f334afcfSToomas Soome 335*f334afcfSToomas Soome /// 336*f334afcfSToomas Soome /// Local APIC Flags. All other bits are reserved and must be 0. 337*f334afcfSToomas Soome /// 338*f334afcfSToomas Soome #define EFI_ACPI_6_0_LOCAL_APIC_ENABLED BIT0 339*f334afcfSToomas Soome 340*f334afcfSToomas Soome /// 341*f334afcfSToomas Soome /// IO APIC Structure 342*f334afcfSToomas Soome /// 343*f334afcfSToomas Soome typedef struct { 344*f334afcfSToomas Soome UINT8 Type; 345*f334afcfSToomas Soome UINT8 Length; 346*f334afcfSToomas Soome UINT8 IoApicId; 347*f334afcfSToomas Soome UINT8 Reserved; 348*f334afcfSToomas Soome UINT32 IoApicAddress; 349*f334afcfSToomas Soome UINT32 GlobalSystemInterruptBase; 350*f334afcfSToomas Soome } EFI_ACPI_6_0_IO_APIC_STRUCTURE; 351*f334afcfSToomas Soome 352*f334afcfSToomas Soome /// 353*f334afcfSToomas Soome /// Interrupt Source Override Structure 354*f334afcfSToomas Soome /// 355*f334afcfSToomas Soome typedef struct { 356*f334afcfSToomas Soome UINT8 Type; 357*f334afcfSToomas Soome UINT8 Length; 358*f334afcfSToomas Soome UINT8 Bus; 359*f334afcfSToomas Soome UINT8 Source; 360*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 361*f334afcfSToomas Soome UINT16 Flags; 362*f334afcfSToomas Soome } EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; 363*f334afcfSToomas Soome 364*f334afcfSToomas Soome /// 365*f334afcfSToomas Soome /// Platform Interrupt Sources Structure Definition 366*f334afcfSToomas Soome /// 367*f334afcfSToomas Soome typedef struct { 368*f334afcfSToomas Soome UINT8 Type; 369*f334afcfSToomas Soome UINT8 Length; 370*f334afcfSToomas Soome UINT16 Flags; 371*f334afcfSToomas Soome UINT8 InterruptType; 372*f334afcfSToomas Soome UINT8 ProcessorId; 373*f334afcfSToomas Soome UINT8 ProcessorEid; 374*f334afcfSToomas Soome UINT8 IoSapicVector; 375*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 376*f334afcfSToomas Soome UINT32 PlatformInterruptSourceFlags; 377*f334afcfSToomas Soome UINT8 CpeiProcessorOverride; 378*f334afcfSToomas Soome UINT8 Reserved[31]; 379*f334afcfSToomas Soome } EFI_ACPI_6_0_PLATFORM_INTERRUPT_APIC_STRUCTURE; 380*f334afcfSToomas Soome 381*f334afcfSToomas Soome // 382*f334afcfSToomas Soome // MPS INTI flags. 383*f334afcfSToomas Soome // All other bits are reserved and must be set to 0. 384*f334afcfSToomas Soome // 385*f334afcfSToomas Soome #define EFI_ACPI_6_0_POLARITY (3 << 0) 386*f334afcfSToomas Soome #define EFI_ACPI_6_0_TRIGGER_MODE (3 << 2) 387*f334afcfSToomas Soome 388*f334afcfSToomas Soome /// 389*f334afcfSToomas Soome /// Non-Maskable Interrupt Source Structure 390*f334afcfSToomas Soome /// 391*f334afcfSToomas Soome typedef struct { 392*f334afcfSToomas Soome UINT8 Type; 393*f334afcfSToomas Soome UINT8 Length; 394*f334afcfSToomas Soome UINT16 Flags; 395*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 396*f334afcfSToomas Soome } EFI_ACPI_6_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; 397*f334afcfSToomas Soome 398*f334afcfSToomas Soome /// 399*f334afcfSToomas Soome /// Local APIC NMI Structure 400*f334afcfSToomas Soome /// 401*f334afcfSToomas Soome typedef struct { 402*f334afcfSToomas Soome UINT8 Type; 403*f334afcfSToomas Soome UINT8 Length; 404*f334afcfSToomas Soome UINT8 AcpiProcessorUid; 405*f334afcfSToomas Soome UINT16 Flags; 406*f334afcfSToomas Soome UINT8 LocalApicLint; 407*f334afcfSToomas Soome } EFI_ACPI_6_0_LOCAL_APIC_NMI_STRUCTURE; 408*f334afcfSToomas Soome 409*f334afcfSToomas Soome /// 410*f334afcfSToomas Soome /// Local APIC Address Override Structure 411*f334afcfSToomas Soome /// 412*f334afcfSToomas Soome typedef struct { 413*f334afcfSToomas Soome UINT8 Type; 414*f334afcfSToomas Soome UINT8 Length; 415*f334afcfSToomas Soome UINT16 Reserved; 416*f334afcfSToomas Soome UINT64 LocalApicAddress; 417*f334afcfSToomas Soome } EFI_ACPI_6_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE; 418*f334afcfSToomas Soome 419*f334afcfSToomas Soome /// 420*f334afcfSToomas Soome /// IO SAPIC Structure 421*f334afcfSToomas Soome /// 422*f334afcfSToomas Soome typedef struct { 423*f334afcfSToomas Soome UINT8 Type; 424*f334afcfSToomas Soome UINT8 Length; 425*f334afcfSToomas Soome UINT8 IoApicId; 426*f334afcfSToomas Soome UINT8 Reserved; 427*f334afcfSToomas Soome UINT32 GlobalSystemInterruptBase; 428*f334afcfSToomas Soome UINT64 IoSapicAddress; 429*f334afcfSToomas Soome } EFI_ACPI_6_0_IO_SAPIC_STRUCTURE; 430*f334afcfSToomas Soome 431*f334afcfSToomas Soome /// 432*f334afcfSToomas Soome /// Local SAPIC Structure 433*f334afcfSToomas Soome /// This struct followed by a null-terminated ASCII string - ACPI Processor UID String 434*f334afcfSToomas Soome /// 435*f334afcfSToomas Soome typedef struct { 436*f334afcfSToomas Soome UINT8 Type; 437*f334afcfSToomas Soome UINT8 Length; 438*f334afcfSToomas Soome UINT8 AcpiProcessorId; 439*f334afcfSToomas Soome UINT8 LocalSapicId; 440*f334afcfSToomas Soome UINT8 LocalSapicEid; 441*f334afcfSToomas Soome UINT8 Reserved[3]; 442*f334afcfSToomas Soome UINT32 Flags; 443*f334afcfSToomas Soome UINT32 ACPIProcessorUIDValue; 444*f334afcfSToomas Soome } EFI_ACPI_6_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE; 445*f334afcfSToomas Soome 446*f334afcfSToomas Soome /// 447*f334afcfSToomas Soome /// Platform Interrupt Sources Structure 448*f334afcfSToomas Soome /// 449*f334afcfSToomas Soome typedef struct { 450*f334afcfSToomas Soome UINT8 Type; 451*f334afcfSToomas Soome UINT8 Length; 452*f334afcfSToomas Soome UINT16 Flags; 453*f334afcfSToomas Soome UINT8 InterruptType; 454*f334afcfSToomas Soome UINT8 ProcessorId; 455*f334afcfSToomas Soome UINT8 ProcessorEid; 456*f334afcfSToomas Soome UINT8 IoSapicVector; 457*f334afcfSToomas Soome UINT32 GlobalSystemInterrupt; 458*f334afcfSToomas Soome UINT32 PlatformInterruptSourceFlags; 459*f334afcfSToomas Soome } EFI_ACPI_6_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE; 460*f334afcfSToomas Soome 461*f334afcfSToomas Soome /// 462*f334afcfSToomas Soome /// Platform Interrupt Source Flags. 463*f334afcfSToomas Soome /// All other bits are reserved and must be set to 0. 464*f334afcfSToomas Soome /// 465*f334afcfSToomas Soome #define EFI_ACPI_6_0_CPEI_PROCESSOR_OVERRIDE BIT0 466*f334afcfSToomas Soome 467*f334afcfSToomas Soome /// 468*f334afcfSToomas Soome /// Processor Local x2APIC Structure Definition 469*f334afcfSToomas Soome /// 470*f334afcfSToomas Soome typedef struct { 471*f334afcfSToomas Soome UINT8 Type; 472*f334afcfSToomas Soome UINT8 Length; 473*f334afcfSToomas Soome UINT8 Reserved[2]; 474*f334afcfSToomas Soome UINT32 X2ApicId; 475*f334afcfSToomas Soome UINT32 Flags; 476*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 477*f334afcfSToomas Soome } EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE; 478*f334afcfSToomas Soome 479*f334afcfSToomas Soome /// 480*f334afcfSToomas Soome /// Local x2APIC NMI Structure 481*f334afcfSToomas Soome /// 482*f334afcfSToomas Soome typedef struct { 483*f334afcfSToomas Soome UINT8 Type; 484*f334afcfSToomas Soome UINT8 Length; 485*f334afcfSToomas Soome UINT16 Flags; 486*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 487*f334afcfSToomas Soome UINT8 LocalX2ApicLint; 488*f334afcfSToomas Soome UINT8 Reserved[3]; 489*f334afcfSToomas Soome } EFI_ACPI_6_0_LOCAL_X2APIC_NMI_STRUCTURE; 490*f334afcfSToomas Soome 491*f334afcfSToomas Soome /// 492*f334afcfSToomas Soome /// GIC Structure 493*f334afcfSToomas Soome /// 494*f334afcfSToomas Soome typedef struct { 495*f334afcfSToomas Soome UINT8 Type; 496*f334afcfSToomas Soome UINT8 Length; 497*f334afcfSToomas Soome UINT16 Reserved; 498*f334afcfSToomas Soome UINT32 CPUInterfaceNumber; 499*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 500*f334afcfSToomas Soome UINT32 Flags; 501*f334afcfSToomas Soome UINT32 ParkingProtocolVersion; 502*f334afcfSToomas Soome UINT32 PerformanceInterruptGsiv; 503*f334afcfSToomas Soome UINT64 ParkedAddress; 504*f334afcfSToomas Soome UINT64 PhysicalBaseAddress; 505*f334afcfSToomas Soome UINT64 GICV; 506*f334afcfSToomas Soome UINT64 GICH; 507*f334afcfSToomas Soome UINT32 VGICMaintenanceInterrupt; 508*f334afcfSToomas Soome UINT64 GICRBaseAddress; 509*f334afcfSToomas Soome UINT64 MPIDR; 510*f334afcfSToomas Soome UINT8 ProcessorPowerEfficiencyClass; 511*f334afcfSToomas Soome UINT8 Reserved2[3]; 512*f334afcfSToomas Soome } EFI_ACPI_6_0_GIC_STRUCTURE; 513*f334afcfSToomas Soome 514*f334afcfSToomas Soome /// 515*f334afcfSToomas Soome /// GIC Flags. All other bits are reserved and must be 0. 516*f334afcfSToomas Soome /// 517*f334afcfSToomas Soome #define EFI_ACPI_6_0_GIC_ENABLED BIT0 518*f334afcfSToomas Soome #define EFI_ACPI_6_0_PERFORMANCE_INTERRUPT_MODEL BIT1 519*f334afcfSToomas Soome #define EFI_ACPI_6_0_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS BIT2 520*f334afcfSToomas Soome 521*f334afcfSToomas Soome /// 522*f334afcfSToomas Soome /// GIC Distributor Structure 523*f334afcfSToomas Soome /// 524*f334afcfSToomas Soome typedef struct { 525*f334afcfSToomas Soome UINT8 Type; 526*f334afcfSToomas Soome UINT8 Length; 527*f334afcfSToomas Soome UINT16 Reserved1; 528*f334afcfSToomas Soome UINT32 GicId; 529*f334afcfSToomas Soome UINT64 PhysicalBaseAddress; 530*f334afcfSToomas Soome UINT32 SystemVectorBase; 531*f334afcfSToomas Soome UINT8 GicVersion; 532*f334afcfSToomas Soome UINT8 Reserved2[3]; 533*f334afcfSToomas Soome } EFI_ACPI_6_0_GIC_DISTRIBUTOR_STRUCTURE; 534*f334afcfSToomas Soome 535*f334afcfSToomas Soome /// 536*f334afcfSToomas Soome /// GIC Version 537*f334afcfSToomas Soome /// 538*f334afcfSToomas Soome #define EFI_ACPI_6_0_GIC_V1 0x01 539*f334afcfSToomas Soome #define EFI_ACPI_6_0_GIC_V2 0x02 540*f334afcfSToomas Soome #define EFI_ACPI_6_0_GIC_V3 0x03 541*f334afcfSToomas Soome #define EFI_ACPI_6_0_GIC_V4 0x04 542*f334afcfSToomas Soome 543*f334afcfSToomas Soome /// 544*f334afcfSToomas Soome /// GIC MSI Frame Structure 545*f334afcfSToomas Soome /// 546*f334afcfSToomas Soome typedef struct { 547*f334afcfSToomas Soome UINT8 Type; 548*f334afcfSToomas Soome UINT8 Length; 549*f334afcfSToomas Soome UINT16 Reserved1; 550*f334afcfSToomas Soome UINT32 GicMsiFrameId; 551*f334afcfSToomas Soome UINT64 PhysicalBaseAddress; 552*f334afcfSToomas Soome UINT32 Flags; 553*f334afcfSToomas Soome UINT16 SPICount; 554*f334afcfSToomas Soome UINT16 SPIBase; 555*f334afcfSToomas Soome } EFI_ACPI_6_0_GIC_MSI_FRAME_STRUCTURE; 556*f334afcfSToomas Soome 557*f334afcfSToomas Soome /// 558*f334afcfSToomas Soome /// GIC MSI Frame Flags. All other bits are reserved and must be 0. 559*f334afcfSToomas Soome /// 560*f334afcfSToomas Soome #define EFI_ACPI_6_0_SPI_COUNT_BASE_SELECT BIT0 561*f334afcfSToomas Soome 562*f334afcfSToomas Soome /// 563*f334afcfSToomas Soome /// GICR Structure 564*f334afcfSToomas Soome /// 565*f334afcfSToomas Soome typedef struct { 566*f334afcfSToomas Soome UINT8 Type; 567*f334afcfSToomas Soome UINT8 Length; 568*f334afcfSToomas Soome UINT16 Reserved; 569*f334afcfSToomas Soome UINT64 DiscoveryRangeBaseAddress; 570*f334afcfSToomas Soome UINT32 DiscoveryRangeLength; 571*f334afcfSToomas Soome } EFI_ACPI_6_0_GICR_STRUCTURE; 572*f334afcfSToomas Soome 573*f334afcfSToomas Soome /// 574*f334afcfSToomas Soome /// GIC Interrupt Translation Service Structure 575*f334afcfSToomas Soome /// 576*f334afcfSToomas Soome typedef struct { 577*f334afcfSToomas Soome UINT8 Type; 578*f334afcfSToomas Soome UINT8 Length; 579*f334afcfSToomas Soome UINT16 Reserved; 580*f334afcfSToomas Soome UINT32 GicItsId; 581*f334afcfSToomas Soome UINT64 PhysicalBaseAddress; 582*f334afcfSToomas Soome UINT32 Reserved2; 583*f334afcfSToomas Soome } EFI_ACPI_6_0_GIC_ITS_STRUCTURE; 584*f334afcfSToomas Soome 585*f334afcfSToomas Soome /// 586*f334afcfSToomas Soome /// Smart Battery Description Table (SBST) 587*f334afcfSToomas Soome /// 588*f334afcfSToomas Soome typedef struct { 589*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 590*f334afcfSToomas Soome UINT32 WarningEnergyLevel; 591*f334afcfSToomas Soome UINT32 LowEnergyLevel; 592*f334afcfSToomas Soome UINT32 CriticalEnergyLevel; 593*f334afcfSToomas Soome } EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE; 594*f334afcfSToomas Soome 595*f334afcfSToomas Soome /// 596*f334afcfSToomas Soome /// SBST Version (as defined in ACPI 6.0 spec.) 597*f334afcfSToomas Soome /// 598*f334afcfSToomas Soome #define EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01 599*f334afcfSToomas Soome 600*f334afcfSToomas Soome /// 601*f334afcfSToomas Soome /// Embedded Controller Boot Resources Table (ECDT) 602*f334afcfSToomas Soome /// The table is followed by a null terminated ASCII string that contains 603*f334afcfSToomas Soome /// a fully qualified reference to the name space object. 604*f334afcfSToomas Soome /// 605*f334afcfSToomas Soome typedef struct { 606*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 607*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE EcControl; 608*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE EcData; 609*f334afcfSToomas Soome UINT32 Uid; 610*f334afcfSToomas Soome UINT8 GpeBit; 611*f334afcfSToomas Soome } EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; 612*f334afcfSToomas Soome 613*f334afcfSToomas Soome /// 614*f334afcfSToomas Soome /// ECDT Version (as defined in ACPI 6.0 spec.) 615*f334afcfSToomas Soome /// 616*f334afcfSToomas Soome #define EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01 617*f334afcfSToomas Soome 618*f334afcfSToomas Soome /// 619*f334afcfSToomas Soome /// System Resource Affinity Table (SRAT). The rest of the table 620*f334afcfSToomas Soome /// must be defined in a platform specific manner. 621*f334afcfSToomas Soome /// 622*f334afcfSToomas Soome typedef struct { 623*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 624*f334afcfSToomas Soome UINT32 Reserved1; ///< Must be set to 1 625*f334afcfSToomas Soome UINT64 Reserved2; 626*f334afcfSToomas Soome } EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER; 627*f334afcfSToomas Soome 628*f334afcfSToomas Soome /// 629*f334afcfSToomas Soome /// SRAT Version (as defined in ACPI 6.0 spec.) 630*f334afcfSToomas Soome /// 631*f334afcfSToomas Soome #define EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03 632*f334afcfSToomas Soome 633*f334afcfSToomas Soome // 634*f334afcfSToomas Soome // SRAT structure types. 635*f334afcfSToomas Soome // All other values between 0x04 an 0xFF are reserved and 636*f334afcfSToomas Soome // will be ignored by OSPM. 637*f334afcfSToomas Soome // 638*f334afcfSToomas Soome #define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00 639*f334afcfSToomas Soome #define EFI_ACPI_6_0_MEMORY_AFFINITY 0x01 640*f334afcfSToomas Soome #define EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02 641*f334afcfSToomas Soome #define EFI_ACPI_6_0_GICC_AFFINITY 0x03 642*f334afcfSToomas Soome 643*f334afcfSToomas Soome /// 644*f334afcfSToomas Soome /// Processor Local APIC/SAPIC Affinity Structure Definition 645*f334afcfSToomas Soome /// 646*f334afcfSToomas Soome typedef struct { 647*f334afcfSToomas Soome UINT8 Type; 648*f334afcfSToomas Soome UINT8 Length; 649*f334afcfSToomas Soome UINT8 ProximityDomain7To0; 650*f334afcfSToomas Soome UINT8 ApicId; 651*f334afcfSToomas Soome UINT32 Flags; 652*f334afcfSToomas Soome UINT8 LocalSapicEid; 653*f334afcfSToomas Soome UINT8 ProximityDomain31To8[3]; 654*f334afcfSToomas Soome UINT32 ClockDomain; 655*f334afcfSToomas Soome } EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE; 656*f334afcfSToomas Soome 657*f334afcfSToomas Soome /// 658*f334afcfSToomas Soome /// Local APIC/SAPIC Flags. All other bits are reserved and must be 0. 659*f334afcfSToomas Soome /// 660*f334afcfSToomas Soome #define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0) 661*f334afcfSToomas Soome 662*f334afcfSToomas Soome /// 663*f334afcfSToomas Soome /// Memory Affinity Structure Definition 664*f334afcfSToomas Soome /// 665*f334afcfSToomas Soome typedef struct { 666*f334afcfSToomas Soome UINT8 Type; 667*f334afcfSToomas Soome UINT8 Length; 668*f334afcfSToomas Soome UINT32 ProximityDomain; 669*f334afcfSToomas Soome UINT16 Reserved1; 670*f334afcfSToomas Soome UINT32 AddressBaseLow; 671*f334afcfSToomas Soome UINT32 AddressBaseHigh; 672*f334afcfSToomas Soome UINT32 LengthLow; 673*f334afcfSToomas Soome UINT32 LengthHigh; 674*f334afcfSToomas Soome UINT32 Reserved2; 675*f334afcfSToomas Soome UINT32 Flags; 676*f334afcfSToomas Soome UINT64 Reserved3; 677*f334afcfSToomas Soome } EFI_ACPI_6_0_MEMORY_AFFINITY_STRUCTURE; 678*f334afcfSToomas Soome 679*f334afcfSToomas Soome // 680*f334afcfSToomas Soome // Memory Flags. All other bits are reserved and must be 0. 681*f334afcfSToomas Soome // 682*f334afcfSToomas Soome #define EFI_ACPI_6_0_MEMORY_ENABLED (1 << 0) 683*f334afcfSToomas Soome #define EFI_ACPI_6_0_MEMORY_HOT_PLUGGABLE (1 << 1) 684*f334afcfSToomas Soome #define EFI_ACPI_6_0_MEMORY_NONVOLATILE (1 << 2) 685*f334afcfSToomas Soome 686*f334afcfSToomas Soome /// 687*f334afcfSToomas Soome /// Processor Local x2APIC Affinity Structure Definition 688*f334afcfSToomas Soome /// 689*f334afcfSToomas Soome typedef struct { 690*f334afcfSToomas Soome UINT8 Type; 691*f334afcfSToomas Soome UINT8 Length; 692*f334afcfSToomas Soome UINT8 Reserved1[2]; 693*f334afcfSToomas Soome UINT32 ProximityDomain; 694*f334afcfSToomas Soome UINT32 X2ApicId; 695*f334afcfSToomas Soome UINT32 Flags; 696*f334afcfSToomas Soome UINT32 ClockDomain; 697*f334afcfSToomas Soome UINT8 Reserved2[4]; 698*f334afcfSToomas Soome } EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE; 699*f334afcfSToomas Soome 700*f334afcfSToomas Soome /// 701*f334afcfSToomas Soome /// GICC Affinity Structure Definition 702*f334afcfSToomas Soome /// 703*f334afcfSToomas Soome typedef struct { 704*f334afcfSToomas Soome UINT8 Type; 705*f334afcfSToomas Soome UINT8 Length; 706*f334afcfSToomas Soome UINT32 ProximityDomain; 707*f334afcfSToomas Soome UINT32 AcpiProcessorUid; 708*f334afcfSToomas Soome UINT32 Flags; 709*f334afcfSToomas Soome UINT32 ClockDomain; 710*f334afcfSToomas Soome } EFI_ACPI_6_0_GICC_AFFINITY_STRUCTURE; 711*f334afcfSToomas Soome 712*f334afcfSToomas Soome /// 713*f334afcfSToomas Soome /// GICC Flags. All other bits are reserved and must be 0. 714*f334afcfSToomas Soome /// 715*f334afcfSToomas Soome #define EFI_ACPI_6_0_GICC_ENABLED (1 << 0) 716*f334afcfSToomas Soome 717*f334afcfSToomas Soome /// 718*f334afcfSToomas Soome /// System Locality Distance Information Table (SLIT). 719*f334afcfSToomas Soome /// The rest of the table is a matrix. 720*f334afcfSToomas Soome /// 721*f334afcfSToomas Soome typedef struct { 722*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 723*f334afcfSToomas Soome UINT64 NumberOfSystemLocalities; 724*f334afcfSToomas Soome } EFI_ACPI_6_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER; 725*f334afcfSToomas Soome 726*f334afcfSToomas Soome /// 727*f334afcfSToomas Soome /// SLIT Version (as defined in ACPI 6.0 spec.) 728*f334afcfSToomas Soome /// 729*f334afcfSToomas Soome #define EFI_ACPI_6_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01 730*f334afcfSToomas Soome 731*f334afcfSToomas Soome /// 732*f334afcfSToomas Soome /// Corrected Platform Error Polling Table (CPEP) 733*f334afcfSToomas Soome /// 734*f334afcfSToomas Soome typedef struct { 735*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 736*f334afcfSToomas Soome UINT8 Reserved[8]; 737*f334afcfSToomas Soome } EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER; 738*f334afcfSToomas Soome 739*f334afcfSToomas Soome /// 740*f334afcfSToomas Soome /// CPEP Version (as defined in ACPI 6.0 spec.) 741*f334afcfSToomas Soome /// 742*f334afcfSToomas Soome #define EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01 743*f334afcfSToomas Soome 744*f334afcfSToomas Soome // 745*f334afcfSToomas Soome // CPEP processor structure types. 746*f334afcfSToomas Soome // 747*f334afcfSToomas Soome #define EFI_ACPI_6_0_CPEP_PROCESSOR_APIC_SAPIC 0x00 748*f334afcfSToomas Soome 749*f334afcfSToomas Soome /// 750*f334afcfSToomas Soome /// Corrected Platform Error Polling Processor Structure Definition 751*f334afcfSToomas Soome /// 752*f334afcfSToomas Soome typedef struct { 753*f334afcfSToomas Soome UINT8 Type; 754*f334afcfSToomas Soome UINT8 Length; 755*f334afcfSToomas Soome UINT8 ProcessorId; 756*f334afcfSToomas Soome UINT8 ProcessorEid; 757*f334afcfSToomas Soome UINT32 PollingInterval; 758*f334afcfSToomas Soome } EFI_ACPI_6_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE; 759*f334afcfSToomas Soome 760*f334afcfSToomas Soome /// 761*f334afcfSToomas Soome /// Maximum System Characteristics Table (MSCT) 762*f334afcfSToomas Soome /// 763*f334afcfSToomas Soome typedef struct { 764*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 765*f334afcfSToomas Soome UINT32 OffsetProxDomInfo; 766*f334afcfSToomas Soome UINT32 MaximumNumberOfProximityDomains; 767*f334afcfSToomas Soome UINT32 MaximumNumberOfClockDomains; 768*f334afcfSToomas Soome UINT64 MaximumPhysicalAddress; 769*f334afcfSToomas Soome } EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER; 770*f334afcfSToomas Soome 771*f334afcfSToomas Soome /// 772*f334afcfSToomas Soome /// MSCT Version (as defined in ACPI 6.0 spec.) 773*f334afcfSToomas Soome /// 774*f334afcfSToomas Soome #define EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01 775*f334afcfSToomas Soome 776*f334afcfSToomas Soome /// 777*f334afcfSToomas Soome /// Maximum Proximity Domain Information Structure Definition 778*f334afcfSToomas Soome /// 779*f334afcfSToomas Soome typedef struct { 780*f334afcfSToomas Soome UINT8 Revision; 781*f334afcfSToomas Soome UINT8 Length; 782*f334afcfSToomas Soome UINT32 ProximityDomainRangeLow; 783*f334afcfSToomas Soome UINT32 ProximityDomainRangeHigh; 784*f334afcfSToomas Soome UINT32 MaximumProcessorCapacity; 785*f334afcfSToomas Soome UINT64 MaximumMemoryCapacity; 786*f334afcfSToomas Soome } EFI_ACPI_6_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE; 787*f334afcfSToomas Soome 788*f334afcfSToomas Soome /// 789*f334afcfSToomas Soome /// ACPI RAS Feature Table definition. 790*f334afcfSToomas Soome /// 791*f334afcfSToomas Soome typedef struct { 792*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 793*f334afcfSToomas Soome UINT8 PlatformCommunicationChannelIdentifier[12]; 794*f334afcfSToomas Soome } EFI_ACPI_6_0_RAS_FEATURE_TABLE; 795*f334afcfSToomas Soome 796*f334afcfSToomas Soome /// 797*f334afcfSToomas Soome /// RASF Version (as defined in ACPI 6.0 spec.) 798*f334afcfSToomas Soome /// 799*f334afcfSToomas Soome #define EFI_ACPI_6_0_RAS_FEATURE_TABLE_REVISION 0x01 800*f334afcfSToomas Soome 801*f334afcfSToomas Soome /// 802*f334afcfSToomas Soome /// ACPI RASF Platform Communication Channel Shared Memory Region definition. 803*f334afcfSToomas Soome /// 804*f334afcfSToomas Soome typedef struct { 805*f334afcfSToomas Soome UINT32 Signature; 806*f334afcfSToomas Soome UINT16 Command; 807*f334afcfSToomas Soome UINT16 Status; 808*f334afcfSToomas Soome UINT16 Version; 809*f334afcfSToomas Soome UINT8 RASCapabilities[16]; 810*f334afcfSToomas Soome UINT8 SetRASCapabilities[16]; 811*f334afcfSToomas Soome UINT16 NumberOfRASFParameterBlocks; 812*f334afcfSToomas Soome UINT32 SetRASCapabilitiesStatus; 813*f334afcfSToomas Soome } EFI_ACPI_6_0_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; 814*f334afcfSToomas Soome 815*f334afcfSToomas Soome /// 816*f334afcfSToomas Soome /// ACPI RASF PCC command code 817*f334afcfSToomas Soome /// 818*f334afcfSToomas Soome #define EFI_ACPI_6_0_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01 819*f334afcfSToomas Soome 820*f334afcfSToomas Soome /// 821*f334afcfSToomas Soome /// ACPI RASF Platform RAS Capabilities 822*f334afcfSToomas Soome /// 823*f334afcfSToomas Soome #define EFI_ACPI_6_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01 824*f334afcfSToomas Soome #define EFI_ACPI_6_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02 825*f334afcfSToomas Soome 826*f334afcfSToomas Soome /// 827*f334afcfSToomas Soome /// ACPI RASF Parameter Block structure for PATROL_SCRUB 828*f334afcfSToomas Soome /// 829*f334afcfSToomas Soome typedef struct { 830*f334afcfSToomas Soome UINT16 Type; 831*f334afcfSToomas Soome UINT16 Version; 832*f334afcfSToomas Soome UINT16 Length; 833*f334afcfSToomas Soome UINT16 PatrolScrubCommand; 834*f334afcfSToomas Soome UINT64 RequestedAddressRange[2]; 835*f334afcfSToomas Soome UINT64 ActualAddressRange[2]; 836*f334afcfSToomas Soome UINT16 Flags; 837*f334afcfSToomas Soome UINT8 RequestedSpeed; 838*f334afcfSToomas Soome } EFI_ACPI_6_0_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE; 839*f334afcfSToomas Soome 840*f334afcfSToomas Soome /// 841*f334afcfSToomas Soome /// ACPI RASF Patrol Scrub command 842*f334afcfSToomas Soome /// 843*f334afcfSToomas Soome #define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01 844*f334afcfSToomas Soome #define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02 845*f334afcfSToomas Soome #define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03 846*f334afcfSToomas Soome 847*f334afcfSToomas Soome /// 848*f334afcfSToomas Soome /// Memory Power State Table definition. 849*f334afcfSToomas Soome /// 850*f334afcfSToomas Soome typedef struct { 851*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 852*f334afcfSToomas Soome UINT8 PlatformCommunicationChannelIdentifier; 853*f334afcfSToomas Soome UINT8 Reserved[3]; 854*f334afcfSToomas Soome // Memory Power Node Structure 855*f334afcfSToomas Soome // Memory Power State Characteristics 856*f334afcfSToomas Soome } EFI_ACPI_6_0_MEMORY_POWER_STATUS_TABLE; 857*f334afcfSToomas Soome 858*f334afcfSToomas Soome /// 859*f334afcfSToomas Soome /// MPST Version (as defined in ACPI 6.0 spec.) 860*f334afcfSToomas Soome /// 861*f334afcfSToomas Soome #define EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_REVISION 0x01 862*f334afcfSToomas Soome 863*f334afcfSToomas Soome /// 864*f334afcfSToomas Soome /// MPST Platform Communication Channel Shared Memory Region definition. 865*f334afcfSToomas Soome /// 866*f334afcfSToomas Soome typedef struct { 867*f334afcfSToomas Soome UINT32 Signature; 868*f334afcfSToomas Soome UINT16 Command; 869*f334afcfSToomas Soome UINT16 Status; 870*f334afcfSToomas Soome UINT32 MemoryPowerCommandRegister; 871*f334afcfSToomas Soome UINT32 MemoryPowerStatusRegister; 872*f334afcfSToomas Soome UINT32 PowerStateId; 873*f334afcfSToomas Soome UINT32 MemoryPowerNodeId; 874*f334afcfSToomas Soome UINT64 MemoryEnergyConsumed; 875*f334afcfSToomas Soome UINT64 ExpectedAveragePowerComsuned; 876*f334afcfSToomas Soome } EFI_ACPI_6_0_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; 877*f334afcfSToomas Soome 878*f334afcfSToomas Soome /// 879*f334afcfSToomas Soome /// ACPI MPST PCC command code 880*f334afcfSToomas Soome /// 881*f334afcfSToomas Soome #define EFI_ACPI_6_0_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03 882*f334afcfSToomas Soome 883*f334afcfSToomas Soome /// 884*f334afcfSToomas Soome /// ACPI MPST Memory Power command 885*f334afcfSToomas Soome /// 886*f334afcfSToomas Soome #define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01 887*f334afcfSToomas Soome #define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02 888*f334afcfSToomas Soome #define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03 889*f334afcfSToomas Soome #define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04 890*f334afcfSToomas Soome 891*f334afcfSToomas Soome /// 892*f334afcfSToomas Soome /// MPST Memory Power Node Table 893*f334afcfSToomas Soome /// 894*f334afcfSToomas Soome typedef struct { 895*f334afcfSToomas Soome UINT8 PowerStateValue; 896*f334afcfSToomas Soome UINT8 PowerStateInformationIndex; 897*f334afcfSToomas Soome } EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE; 898*f334afcfSToomas Soome 899*f334afcfSToomas Soome typedef struct { 900*f334afcfSToomas Soome UINT8 Flag; 901*f334afcfSToomas Soome UINT8 Reserved; 902*f334afcfSToomas Soome UINT16 MemoryPowerNodeId; 903*f334afcfSToomas Soome UINT32 Length; 904*f334afcfSToomas Soome UINT64 AddressBase; 905*f334afcfSToomas Soome UINT64 AddressLength; 906*f334afcfSToomas Soome UINT32 NumberOfPowerStates; 907*f334afcfSToomas Soome UINT32 NumberOfPhysicalComponents; 908*f334afcfSToomas Soome // EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates]; 909*f334afcfSToomas Soome // UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents]; 910*f334afcfSToomas Soome } EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE; 911*f334afcfSToomas Soome 912*f334afcfSToomas Soome #define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01 913*f334afcfSToomas Soome #define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02 914*f334afcfSToomas Soome #define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04 915*f334afcfSToomas Soome 916*f334afcfSToomas Soome typedef struct { 917*f334afcfSToomas Soome UINT16 MemoryPowerNodeCount; 918*f334afcfSToomas Soome UINT8 Reserved[2]; 919*f334afcfSToomas Soome } EFI_ACPI_6_0_MPST_MEMORY_POWER_NODE_TABLE; 920*f334afcfSToomas Soome 921*f334afcfSToomas Soome /// 922*f334afcfSToomas Soome /// MPST Memory Power State Characteristics Table 923*f334afcfSToomas Soome /// 924*f334afcfSToomas Soome typedef struct { 925*f334afcfSToomas Soome UINT8 PowerStateStructureID; 926*f334afcfSToomas Soome UINT8 Flag; 927*f334afcfSToomas Soome UINT16 Reserved; 928*f334afcfSToomas Soome UINT32 AveragePowerConsumedInMPS0; 929*f334afcfSToomas Soome UINT32 RelativePowerSavingToMPS0; 930*f334afcfSToomas Soome UINT64 ExitLatencyToMPS0; 931*f334afcfSToomas Soome } EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE; 932*f334afcfSToomas Soome 933*f334afcfSToomas Soome #define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01 934*f334afcfSToomas Soome #define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02 935*f334afcfSToomas Soome #define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04 936*f334afcfSToomas Soome 937*f334afcfSToomas Soome typedef struct { 938*f334afcfSToomas Soome UINT16 MemoryPowerStateCharacteristicsCount; 939*f334afcfSToomas Soome UINT8 Reserved[2]; 940*f334afcfSToomas Soome } EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE; 941*f334afcfSToomas Soome 942*f334afcfSToomas Soome /// 943*f334afcfSToomas Soome /// Memory Topology Table definition. 944*f334afcfSToomas Soome /// 945*f334afcfSToomas Soome typedef struct { 946*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 947*f334afcfSToomas Soome UINT32 Reserved; 948*f334afcfSToomas Soome } EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE; 949*f334afcfSToomas Soome 950*f334afcfSToomas Soome /// 951*f334afcfSToomas Soome /// PMTT Version (as defined in ACPI 6.0 spec.) 952*f334afcfSToomas Soome /// 953*f334afcfSToomas Soome #define EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE_REVISION 0x01 954*f334afcfSToomas Soome 955*f334afcfSToomas Soome /// 956*f334afcfSToomas Soome /// Common Memory Aggregator Device Structure. 957*f334afcfSToomas Soome /// 958*f334afcfSToomas Soome typedef struct { 959*f334afcfSToomas Soome UINT8 Type; 960*f334afcfSToomas Soome UINT8 Reserved; 961*f334afcfSToomas Soome UINT16 Length; 962*f334afcfSToomas Soome UINT16 Flags; 963*f334afcfSToomas Soome UINT16 Reserved1; 964*f334afcfSToomas Soome } EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; 965*f334afcfSToomas Soome 966*f334afcfSToomas Soome /// 967*f334afcfSToomas Soome /// Memory Aggregator Device Type 968*f334afcfSToomas Soome /// 969*f334afcfSToomas Soome #define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x0 970*f334afcfSToomas Soome #define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x1 971*f334afcfSToomas Soome #define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM 0x2 972*f334afcfSToomas Soome 973*f334afcfSToomas Soome /// 974*f334afcfSToomas Soome /// Socket Memory Aggregator Device Structure. 975*f334afcfSToomas Soome /// 976*f334afcfSToomas Soome typedef struct { 977*f334afcfSToomas Soome EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; 978*f334afcfSToomas Soome UINT16 SocketIdentifier; 979*f334afcfSToomas Soome UINT16 Reserved; 980*f334afcfSToomas Soome // EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[]; 981*f334afcfSToomas Soome } EFI_ACPI_6_0_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; 982*f334afcfSToomas Soome 983*f334afcfSToomas Soome /// 984*f334afcfSToomas Soome /// MemoryController Memory Aggregator Device Structure. 985*f334afcfSToomas Soome /// 986*f334afcfSToomas Soome typedef struct { 987*f334afcfSToomas Soome EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; 988*f334afcfSToomas Soome UINT32 ReadLatency; 989*f334afcfSToomas Soome UINT32 WriteLatency; 990*f334afcfSToomas Soome UINT32 ReadBandwidth; 991*f334afcfSToomas Soome UINT32 WriteBandwidth; 992*f334afcfSToomas Soome UINT16 OptimalAccessUnit; 993*f334afcfSToomas Soome UINT16 OptimalAccessAlignment; 994*f334afcfSToomas Soome UINT16 Reserved; 995*f334afcfSToomas Soome UINT16 NumberOfProximityDomains; 996*f334afcfSToomas Soome // UINT32 ProximityDomain[NumberOfProximityDomains]; 997*f334afcfSToomas Soome // EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[]; 998*f334afcfSToomas Soome } EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; 999*f334afcfSToomas Soome 1000*f334afcfSToomas Soome /// 1001*f334afcfSToomas Soome /// DIMM Memory Aggregator Device Structure. 1002*f334afcfSToomas Soome /// 1003*f334afcfSToomas Soome typedef struct { 1004*f334afcfSToomas Soome EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; 1005*f334afcfSToomas Soome UINT16 PhysicalComponentIdentifier; 1006*f334afcfSToomas Soome UINT16 Reserved; 1007*f334afcfSToomas Soome UINT32 SizeOfDimm; 1008*f334afcfSToomas Soome UINT32 SmbiosHandle; 1009*f334afcfSToomas Soome } EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; 1010*f334afcfSToomas Soome 1011*f334afcfSToomas Soome /// 1012*f334afcfSToomas Soome /// Boot Graphics Resource Table definition. 1013*f334afcfSToomas Soome /// 1014*f334afcfSToomas Soome typedef struct { 1015*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1016*f334afcfSToomas Soome /// 1017*f334afcfSToomas Soome /// 2-bytes (16 bit) version ID. This value must be 1. 1018*f334afcfSToomas Soome /// 1019*f334afcfSToomas Soome UINT16 Version; 1020*f334afcfSToomas Soome /// 1021*f334afcfSToomas Soome /// 1-byte status field indicating current status about the table. 1022*f334afcfSToomas Soome /// Bits[7:1] = Reserved (must be zero) 1023*f334afcfSToomas Soome /// Bit [0] = Valid. A one indicates the boot image graphic is valid. 1024*f334afcfSToomas Soome /// 1025*f334afcfSToomas Soome UINT8 Status; 1026*f334afcfSToomas Soome /// 1027*f334afcfSToomas Soome /// 1-byte enumerated type field indicating format of the image. 1028*f334afcfSToomas Soome /// 0 = Bitmap 1029*f334afcfSToomas Soome /// 1 - 255 Reserved (for future use) 1030*f334afcfSToomas Soome /// 1031*f334afcfSToomas Soome UINT8 ImageType; 1032*f334afcfSToomas Soome /// 1033*f334afcfSToomas Soome /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy 1034*f334afcfSToomas Soome /// of the image bitmap. 1035*f334afcfSToomas Soome /// 1036*f334afcfSToomas Soome UINT64 ImageAddress; 1037*f334afcfSToomas Soome /// 1038*f334afcfSToomas Soome /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image. 1039*f334afcfSToomas Soome /// (X, Y) display offset of the top left corner of the boot image. 1040*f334afcfSToomas Soome /// The top left corner of the display is at offset (0, 0). 1041*f334afcfSToomas Soome /// 1042*f334afcfSToomas Soome UINT32 ImageOffsetX; 1043*f334afcfSToomas Soome /// 1044*f334afcfSToomas Soome /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image. 1045*f334afcfSToomas Soome /// (X, Y) display offset of the top left corner of the boot image. 1046*f334afcfSToomas Soome /// The top left corner of the display is at offset (0, 0). 1047*f334afcfSToomas Soome /// 1048*f334afcfSToomas Soome UINT32 ImageOffsetY; 1049*f334afcfSToomas Soome } EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE; 1050*f334afcfSToomas Soome 1051*f334afcfSToomas Soome /// 1052*f334afcfSToomas Soome /// BGRT Revision 1053*f334afcfSToomas Soome /// 1054*f334afcfSToomas Soome #define EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1 1055*f334afcfSToomas Soome 1056*f334afcfSToomas Soome /// 1057*f334afcfSToomas Soome /// BGRT Version 1058*f334afcfSToomas Soome /// 1059*f334afcfSToomas Soome #define EFI_ACPI_6_0_BGRT_VERSION 0x01 1060*f334afcfSToomas Soome 1061*f334afcfSToomas Soome /// 1062*f334afcfSToomas Soome /// BGRT Status 1063*f334afcfSToomas Soome /// 1064*f334afcfSToomas Soome #define EFI_ACPI_6_0_BGRT_STATUS_NOT_DISPLAYED 0x00 1065*f334afcfSToomas Soome #define EFI_ACPI_6_0_BGRT_STATUS_DISPLAYED 0x01 1066*f334afcfSToomas Soome 1067*f334afcfSToomas Soome /// 1068*f334afcfSToomas Soome /// BGRT Image Type 1069*f334afcfSToomas Soome /// 1070*f334afcfSToomas Soome #define EFI_ACPI_6_0_BGRT_IMAGE_TYPE_BMP 0x00 1071*f334afcfSToomas Soome 1072*f334afcfSToomas Soome /// 1073*f334afcfSToomas Soome /// FPDT Version (as defined in ACPI 6.0 spec.) 1074*f334afcfSToomas Soome /// 1075*f334afcfSToomas Soome #define EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01 1076*f334afcfSToomas Soome 1077*f334afcfSToomas Soome /// 1078*f334afcfSToomas Soome /// FPDT Performance Record Types 1079*f334afcfSToomas Soome /// 1080*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000 1081*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001 1082*f334afcfSToomas Soome 1083*f334afcfSToomas Soome /// 1084*f334afcfSToomas Soome /// FPDT Performance Record Revision 1085*f334afcfSToomas Soome /// 1086*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01 1087*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01 1088*f334afcfSToomas Soome 1089*f334afcfSToomas Soome /// 1090*f334afcfSToomas Soome /// FPDT Runtime Performance Record Types 1091*f334afcfSToomas Soome /// 1092*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000 1093*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001 1094*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002 1095*f334afcfSToomas Soome 1096*f334afcfSToomas Soome /// 1097*f334afcfSToomas Soome /// FPDT Runtime Performance Record Revision 1098*f334afcfSToomas Soome /// 1099*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01 1100*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01 1101*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02 1102*f334afcfSToomas Soome 1103*f334afcfSToomas Soome /// 1104*f334afcfSToomas Soome /// FPDT Performance Record header 1105*f334afcfSToomas Soome /// 1106*f334afcfSToomas Soome typedef struct { 1107*f334afcfSToomas Soome UINT16 Type; 1108*f334afcfSToomas Soome UINT8 Length; 1109*f334afcfSToomas Soome UINT8 Revision; 1110*f334afcfSToomas Soome } EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER; 1111*f334afcfSToomas Soome 1112*f334afcfSToomas Soome /// 1113*f334afcfSToomas Soome /// FPDT Performance Table header 1114*f334afcfSToomas Soome /// 1115*f334afcfSToomas Soome typedef struct { 1116*f334afcfSToomas Soome UINT32 Signature; 1117*f334afcfSToomas Soome UINT32 Length; 1118*f334afcfSToomas Soome } EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER; 1119*f334afcfSToomas Soome 1120*f334afcfSToomas Soome /// 1121*f334afcfSToomas Soome /// FPDT Firmware Basic Boot Performance Pointer Record Structure 1122*f334afcfSToomas Soome /// 1123*f334afcfSToomas Soome typedef struct { 1124*f334afcfSToomas Soome EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; 1125*f334afcfSToomas Soome UINT32 Reserved; 1126*f334afcfSToomas Soome /// 1127*f334afcfSToomas Soome /// 64-bit processor-relative physical address of the Basic Boot Performance Table. 1128*f334afcfSToomas Soome /// 1129*f334afcfSToomas Soome UINT64 BootPerformanceTablePointer; 1130*f334afcfSToomas Soome } EFI_ACPI_6_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD; 1131*f334afcfSToomas Soome 1132*f334afcfSToomas Soome /// 1133*f334afcfSToomas Soome /// FPDT S3 Performance Table Pointer Record Structure 1134*f334afcfSToomas Soome /// 1135*f334afcfSToomas Soome typedef struct { 1136*f334afcfSToomas Soome EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; 1137*f334afcfSToomas Soome UINT32 Reserved; 1138*f334afcfSToomas Soome /// 1139*f334afcfSToomas Soome /// 64-bit processor-relative physical address of the S3 Performance Table. 1140*f334afcfSToomas Soome /// 1141*f334afcfSToomas Soome UINT64 S3PerformanceTablePointer; 1142*f334afcfSToomas Soome } EFI_ACPI_6_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD; 1143*f334afcfSToomas Soome 1144*f334afcfSToomas Soome /// 1145*f334afcfSToomas Soome /// FPDT Firmware Basic Boot Performance Record Structure 1146*f334afcfSToomas Soome /// 1147*f334afcfSToomas Soome typedef struct { 1148*f334afcfSToomas Soome EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; 1149*f334afcfSToomas Soome UINT32 Reserved; 1150*f334afcfSToomas Soome /// 1151*f334afcfSToomas Soome /// Timer value logged at the beginning of firmware image execution. 1152*f334afcfSToomas Soome /// This may not always be zero or near zero. 1153*f334afcfSToomas Soome /// 1154*f334afcfSToomas Soome UINT64 ResetEnd; 1155*f334afcfSToomas Soome /// 1156*f334afcfSToomas Soome /// Timer value logged just prior to loading the OS boot loader into memory. 1157*f334afcfSToomas Soome /// For non-UEFI compatible boots, this field must be zero. 1158*f334afcfSToomas Soome /// 1159*f334afcfSToomas Soome UINT64 OsLoaderLoadImageStart; 1160*f334afcfSToomas Soome /// 1161*f334afcfSToomas Soome /// Timer value logged just prior to launching the previously loaded OS boot loader image. 1162*f334afcfSToomas Soome /// For non-UEFI compatible boots, the timer value logged will be just prior 1163*f334afcfSToomas Soome /// to the INT 19h handler invocation. 1164*f334afcfSToomas Soome /// 1165*f334afcfSToomas Soome UINT64 OsLoaderStartImageStart; 1166*f334afcfSToomas Soome /// 1167*f334afcfSToomas Soome /// Timer value logged at the point when the OS loader calls the 1168*f334afcfSToomas Soome /// ExitBootServices function for UEFI compatible firmware. 1169*f334afcfSToomas Soome /// For non-UEFI compatible boots, this field must be zero. 1170*f334afcfSToomas Soome /// 1171*f334afcfSToomas Soome UINT64 ExitBootServicesEntry; 1172*f334afcfSToomas Soome /// 1173*f334afcfSToomas Soome /// Timer value logged at the point just prior to when the OS loader gaining 1174*f334afcfSToomas Soome /// control back from calls the ExitBootServices function for UEFI compatible firmware. 1175*f334afcfSToomas Soome /// For non-UEFI compatible boots, this field must be zero. 1176*f334afcfSToomas Soome /// 1177*f334afcfSToomas Soome UINT64 ExitBootServicesExit; 1178*f334afcfSToomas Soome } EFI_ACPI_6_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD; 1179*f334afcfSToomas Soome 1180*f334afcfSToomas Soome /// 1181*f334afcfSToomas Soome /// FPDT Firmware Basic Boot Performance Table signature 1182*f334afcfSToomas Soome /// 1183*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T') 1184*f334afcfSToomas Soome 1185*f334afcfSToomas Soome // 1186*f334afcfSToomas Soome // FPDT Firmware Basic Boot Performance Table 1187*f334afcfSToomas Soome // 1188*f334afcfSToomas Soome typedef struct { 1189*f334afcfSToomas Soome EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER Header; 1190*f334afcfSToomas Soome // 1191*f334afcfSToomas Soome // one or more Performance Records. 1192*f334afcfSToomas Soome // 1193*f334afcfSToomas Soome } EFI_ACPI_6_0_FPDT_FIRMWARE_BASIC_BOOT_TABLE; 1194*f334afcfSToomas Soome 1195*f334afcfSToomas Soome /// 1196*f334afcfSToomas Soome /// FPDT "S3PT" S3 Performance Table 1197*f334afcfSToomas Soome /// 1198*f334afcfSToomas Soome #define EFI_ACPI_6_0_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T') 1199*f334afcfSToomas Soome 1200*f334afcfSToomas Soome // 1201*f334afcfSToomas Soome // FPDT Firmware S3 Boot Performance Table 1202*f334afcfSToomas Soome // 1203*f334afcfSToomas Soome typedef struct { 1204*f334afcfSToomas Soome EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER Header; 1205*f334afcfSToomas Soome // 1206*f334afcfSToomas Soome // one or more Performance Records. 1207*f334afcfSToomas Soome // 1208*f334afcfSToomas Soome } EFI_ACPI_6_0_FPDT_FIRMWARE_S3_BOOT_TABLE; 1209*f334afcfSToomas Soome 1210*f334afcfSToomas Soome /// 1211*f334afcfSToomas Soome /// FPDT Basic S3 Resume Performance Record 1212*f334afcfSToomas Soome /// 1213*f334afcfSToomas Soome typedef struct { 1214*f334afcfSToomas Soome EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; 1215*f334afcfSToomas Soome /// 1216*f334afcfSToomas Soome /// A count of the number of S3 resume cycles since the last full boot sequence. 1217*f334afcfSToomas Soome /// 1218*f334afcfSToomas Soome UINT32 ResumeCount; 1219*f334afcfSToomas Soome /// 1220*f334afcfSToomas Soome /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the 1221*f334afcfSToomas Soome /// OS waking vector. Only the most recent resume cycle's time is retained. 1222*f334afcfSToomas Soome /// 1223*f334afcfSToomas Soome UINT64 FullResume; 1224*f334afcfSToomas Soome /// 1225*f334afcfSToomas Soome /// Average timer value of all resume cycles logged since the last full boot 1226*f334afcfSToomas Soome /// sequence, including the most recent resume. Note that the entire log of 1227*f334afcfSToomas Soome /// timer values does not need to be retained in order to calculate this average. 1228*f334afcfSToomas Soome /// 1229*f334afcfSToomas Soome UINT64 AverageResume; 1230*f334afcfSToomas Soome } EFI_ACPI_6_0_FPDT_S3_RESUME_RECORD; 1231*f334afcfSToomas Soome 1232*f334afcfSToomas Soome /// 1233*f334afcfSToomas Soome /// FPDT Basic S3 Suspend Performance Record 1234*f334afcfSToomas Soome /// 1235*f334afcfSToomas Soome typedef struct { 1236*f334afcfSToomas Soome EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; 1237*f334afcfSToomas Soome /// 1238*f334afcfSToomas Soome /// Timer value recorded at the OS write to SLP_TYP upon entry to S3. 1239*f334afcfSToomas Soome /// Only the most recent suspend cycle's timer value is retained. 1240*f334afcfSToomas Soome /// 1241*f334afcfSToomas Soome UINT64 SuspendStart; 1242*f334afcfSToomas Soome /// 1243*f334afcfSToomas Soome /// Timer value recorded at the final firmware write to SLP_TYP (or other 1244*f334afcfSToomas Soome /// mechanism) used to trigger hardware entry to S3. 1245*f334afcfSToomas Soome /// Only the most recent suspend cycle's timer value is retained. 1246*f334afcfSToomas Soome /// 1247*f334afcfSToomas Soome UINT64 SuspendEnd; 1248*f334afcfSToomas Soome } EFI_ACPI_6_0_FPDT_S3_SUSPEND_RECORD; 1249*f334afcfSToomas Soome 1250*f334afcfSToomas Soome /// 1251*f334afcfSToomas Soome /// Firmware Performance Record Table definition. 1252*f334afcfSToomas Soome /// 1253*f334afcfSToomas Soome typedef struct { 1254*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1255*f334afcfSToomas Soome } EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_RECORD_TABLE; 1256*f334afcfSToomas Soome 1257*f334afcfSToomas Soome /// 1258*f334afcfSToomas Soome /// Generic Timer Description Table definition. 1259*f334afcfSToomas Soome /// 1260*f334afcfSToomas Soome typedef struct { 1261*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1262*f334afcfSToomas Soome UINT64 CntControlBasePhysicalAddress; 1263*f334afcfSToomas Soome UINT32 Reserved; 1264*f334afcfSToomas Soome UINT32 SecurePL1TimerGSIV; 1265*f334afcfSToomas Soome UINT32 SecurePL1TimerFlags; 1266*f334afcfSToomas Soome UINT32 NonSecurePL1TimerGSIV; 1267*f334afcfSToomas Soome UINT32 NonSecurePL1TimerFlags; 1268*f334afcfSToomas Soome UINT32 VirtualTimerGSIV; 1269*f334afcfSToomas Soome UINT32 VirtualTimerFlags; 1270*f334afcfSToomas Soome UINT32 NonSecurePL2TimerGSIV; 1271*f334afcfSToomas Soome UINT32 NonSecurePL2TimerFlags; 1272*f334afcfSToomas Soome UINT64 CntReadBasePhysicalAddress; 1273*f334afcfSToomas Soome UINT32 PlatformTimerCount; 1274*f334afcfSToomas Soome UINT32 PlatformTimerOffset; 1275*f334afcfSToomas Soome } EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE; 1276*f334afcfSToomas Soome 1277*f334afcfSToomas Soome /// 1278*f334afcfSToomas Soome /// GTDT Version (as defined in ACPI 6.0 spec.) 1279*f334afcfSToomas Soome /// 1280*f334afcfSToomas Soome #define EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x02 1281*f334afcfSToomas Soome 1282*f334afcfSToomas Soome /// 1283*f334afcfSToomas Soome /// Timer Flags. All other bits are reserved and must be 0. 1284*f334afcfSToomas Soome /// 1285*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 1286*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 1287*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY BIT2 1288*f334afcfSToomas Soome 1289*f334afcfSToomas Soome /// 1290*f334afcfSToomas Soome /// Platform Timer Type 1291*f334afcfSToomas Soome /// 1292*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_GT_BLOCK 0 1293*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG 1 1294*f334afcfSToomas Soome 1295*f334afcfSToomas Soome /// 1296*f334afcfSToomas Soome /// GT Block Structure 1297*f334afcfSToomas Soome /// 1298*f334afcfSToomas Soome typedef struct { 1299*f334afcfSToomas Soome UINT8 Type; 1300*f334afcfSToomas Soome UINT16 Length; 1301*f334afcfSToomas Soome UINT8 Reserved; 1302*f334afcfSToomas Soome UINT64 CntCtlBase; 1303*f334afcfSToomas Soome UINT32 GTBlockTimerCount; 1304*f334afcfSToomas Soome UINT32 GTBlockTimerOffset; 1305*f334afcfSToomas Soome } EFI_ACPI_6_0_GTDT_GT_BLOCK_STRUCTURE; 1306*f334afcfSToomas Soome 1307*f334afcfSToomas Soome /// 1308*f334afcfSToomas Soome /// GT Block Timer Structure 1309*f334afcfSToomas Soome /// 1310*f334afcfSToomas Soome typedef struct { 1311*f334afcfSToomas Soome UINT8 GTFrameNumber; 1312*f334afcfSToomas Soome UINT8 Reserved[3]; 1313*f334afcfSToomas Soome UINT64 CntBaseX; 1314*f334afcfSToomas Soome UINT64 CntEL0BaseX; 1315*f334afcfSToomas Soome UINT32 GTxPhysicalTimerGSIV; 1316*f334afcfSToomas Soome UINT32 GTxPhysicalTimerFlags; 1317*f334afcfSToomas Soome UINT32 GTxVirtualTimerGSIV; 1318*f334afcfSToomas Soome UINT32 GTxVirtualTimerFlags; 1319*f334afcfSToomas Soome UINT32 GTxCommonFlags; 1320*f334afcfSToomas Soome } EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_STRUCTURE; 1321*f334afcfSToomas Soome 1322*f334afcfSToomas Soome /// 1323*f334afcfSToomas Soome /// GT Block Physical Timers and Virtual Timers Flags. All other bits are reserved and must be 0. 1324*f334afcfSToomas Soome /// 1325*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 1326*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 1327*f334afcfSToomas Soome 1328*f334afcfSToomas Soome /// 1329*f334afcfSToomas Soome /// Common Flags Flags. All other bits are reserved and must be 0. 1330*f334afcfSToomas Soome /// 1331*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER BIT0 1332*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY BIT1 1333*f334afcfSToomas Soome 1334*f334afcfSToomas Soome /// 1335*f334afcfSToomas Soome /// SBSA Generic Watchdog Structure 1336*f334afcfSToomas Soome /// 1337*f334afcfSToomas Soome typedef struct { 1338*f334afcfSToomas Soome UINT8 Type; 1339*f334afcfSToomas Soome UINT16 Length; 1340*f334afcfSToomas Soome UINT8 Reserved; 1341*f334afcfSToomas Soome UINT64 RefreshFramePhysicalAddress; 1342*f334afcfSToomas Soome UINT64 WatchdogControlFramePhysicalAddress; 1343*f334afcfSToomas Soome UINT32 WatchdogTimerGSIV; 1344*f334afcfSToomas Soome UINT32 WatchdogTimerFlags; 1345*f334afcfSToomas Soome } EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE; 1346*f334afcfSToomas Soome 1347*f334afcfSToomas Soome /// 1348*f334afcfSToomas Soome /// SBSA Generic Watchdog Timer Flags. All other bits are reserved and must be 0. 1349*f334afcfSToomas Soome /// 1350*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE BIT0 1351*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY BIT1 1352*f334afcfSToomas Soome #define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER BIT2 1353*f334afcfSToomas Soome 1354*f334afcfSToomas Soome // 1355*f334afcfSToomas Soome // NVDIMM Firmware Interface Table definition. 1356*f334afcfSToomas Soome // 1357*f334afcfSToomas Soome typedef struct { 1358*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1359*f334afcfSToomas Soome UINT32 Reserved; 1360*f334afcfSToomas Soome } EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE; 1361*f334afcfSToomas Soome 1362*f334afcfSToomas Soome // 1363*f334afcfSToomas Soome // NFIT Version (as defined in ACPI 6.0 spec.) 1364*f334afcfSToomas Soome // 1365*f334afcfSToomas Soome #define EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_REVISION 0x1 1366*f334afcfSToomas Soome 1367*f334afcfSToomas Soome // 1368*f334afcfSToomas Soome // Definition for NFIT Table Structure Types 1369*f334afcfSToomas Soome // 1370*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE_TYPE 0 1371*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_TO_SYSTEM_ADDRESS_RANGE_MAP_STRUCTURE_TYPE 1 1372*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_INTERLEAVE_STRUCTURE_TYPE 2 1373*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE_TYPE 3 1374*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE_TYPE 4 1375*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE_TYPE 5 1376*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE_TYPE 6 1377*f334afcfSToomas Soome 1378*f334afcfSToomas Soome // 1379*f334afcfSToomas Soome // Definition for NFIT Structure Header 1380*f334afcfSToomas Soome // 1381*f334afcfSToomas Soome typedef struct { 1382*f334afcfSToomas Soome UINT16 Type; 1383*f334afcfSToomas Soome UINT16 Length; 1384*f334afcfSToomas Soome } EFI_ACPI_6_0_NFIT_STRUCTURE_HEADER; 1385*f334afcfSToomas Soome 1386*f334afcfSToomas Soome // 1387*f334afcfSToomas Soome // Definition for System Physical Address Range Structure 1388*f334afcfSToomas Soome // 1389*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT BIT0 1390*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID BIT1 1391*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_GUID_VOLATILE_MEMORY_REGION { 0x7305944F, 0xFDDA, 0x44E3, { 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0 }} 1392*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_GUID_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_REGION { 0x66F0D379, 0xB4F3, 0x4074, { 0xAC, 0x43, 0x0D, 0x33, 0x18, 0xB7, 0x8C, 0xDB }} 1393*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_CONTROL_REGION { 0x92F701F6, 0x13B4, 0x405D, { 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C }} 1394*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_BLOCK_DATA_WINDOW_REGION { 0x91AF0530, 0x5D86, 0x470E, { 0xA6, 0xB0, 0x0A, 0x2D, 0xB9, 0x40, 0x82, 0x49 }} 1395*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE { 0x77AB535A, 0x45FC, 0x624B, { 0x55, 0x60, 0xF7, 0xB2, 0x81, 0xD1, 0xF9, 0x6E }} 1396*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE { 0x3D5ABD30, 0x4175, 0x87CE, { 0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB }} 1397*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT { 0x5CEA02C9, 0x4D07, 0x69D3, { 0x26, 0x9F ,0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9 }} 1398*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT { 0x08018188, 0x42CD, 0xBB48, { 0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D }} 1399*f334afcfSToomas Soome typedef struct { 1400*f334afcfSToomas Soome UINT16 Type; 1401*f334afcfSToomas Soome UINT16 Length; 1402*f334afcfSToomas Soome UINT16 SPARangeStructureIndex; 1403*f334afcfSToomas Soome UINT16 Flags; 1404*f334afcfSToomas Soome UINT32 Reserved_8; 1405*f334afcfSToomas Soome UINT32 ProximityDomain; 1406*f334afcfSToomas Soome GUID AddressRangeTypeGUID; 1407*f334afcfSToomas Soome UINT64 SystemPhysicalAddressRangeBase; 1408*f334afcfSToomas Soome UINT64 SystemPhysicalAddressRangeLength; 1409*f334afcfSToomas Soome UINT64 AddressRangeMemoryMappingAttribute; 1410*f334afcfSToomas Soome } EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE; 1411*f334afcfSToomas Soome 1412*f334afcfSToomas Soome // 1413*f334afcfSToomas Soome // Definition for Memory Device to System Physical Address Range Mapping Structure 1414*f334afcfSToomas Soome // 1415*f334afcfSToomas Soome typedef struct { 1416*f334afcfSToomas Soome UINT32 DIMMNumber : 4; 1417*f334afcfSToomas Soome UINT32 MemoryChannelNumber : 4; 1418*f334afcfSToomas Soome UINT32 MemoryControllerID : 4; 1419*f334afcfSToomas Soome UINT32 SocketID : 4; 1420*f334afcfSToomas Soome UINT32 NodeControllerID : 12; 1421*f334afcfSToomas Soome UINT32 Reserved_28 : 4; 1422*f334afcfSToomas Soome } EFI_ACPI_6_0_NFIT_DEVICE_HANDLE; 1423*f334afcfSToomas Soome 1424*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_PREVIOUS_SAVE_FAIL BIT0 1425*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_LAST_RESTORE_FAIL BIT1 1426*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_PLATFORM_FLUSH_FAIL BIT2 1427*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_NOT_ARMED_PRIOR_TO_OSPM_HAND_OFF BIT3 1428*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_SMART_HEALTH_EVENTS_PRIOR_OSPM_HAND_OFF BIT4 1429*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_ENABLED_TO_NOTIFY_OSPM_ON_SMART_HEALTH_EVENTS BIT5 1430*f334afcfSToomas Soome typedef struct { 1431*f334afcfSToomas Soome UINT16 Type; 1432*f334afcfSToomas Soome UINT16 Length; 1433*f334afcfSToomas Soome EFI_ACPI_6_0_NFIT_DEVICE_HANDLE NFITDeviceHandle; 1434*f334afcfSToomas Soome UINT16 MemoryDevicePhysicalID; 1435*f334afcfSToomas Soome UINT16 MemoryDeviceRegionID; 1436*f334afcfSToomas Soome UINT16 SPARangeStructureIndex; 1437*f334afcfSToomas Soome UINT16 NVDIMMControlRegionStructureIndex; 1438*f334afcfSToomas Soome UINT64 MemoryDeviceRegionSize; 1439*f334afcfSToomas Soome UINT64 RegionOffset; 1440*f334afcfSToomas Soome UINT64 MemoryDevicePhysicalAddressRegionBase; 1441*f334afcfSToomas Soome UINT16 InterleaveStructureIndex; 1442*f334afcfSToomas Soome UINT16 InterleaveWays; 1443*f334afcfSToomas Soome UINT16 MemoryDeviceStateFlags; 1444*f334afcfSToomas Soome UINT16 Reserved_46; 1445*f334afcfSToomas Soome } EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_TO_SYSTEM_ADDRESS_RANGE_MAP_STRUCTURE; 1446*f334afcfSToomas Soome 1447*f334afcfSToomas Soome // 1448*f334afcfSToomas Soome // Definition for Interleave Structure 1449*f334afcfSToomas Soome // 1450*f334afcfSToomas Soome typedef struct { 1451*f334afcfSToomas Soome UINT16 Type; 1452*f334afcfSToomas Soome UINT16 Length; 1453*f334afcfSToomas Soome UINT16 InterleaveStructureIndex; 1454*f334afcfSToomas Soome UINT16 Reserved_6; 1455*f334afcfSToomas Soome UINT32 NumberOfLines; 1456*f334afcfSToomas Soome UINT32 LineSize; 1457*f334afcfSToomas Soome // UINT32 LineOffset[NumberOfLines]; 1458*f334afcfSToomas Soome } EFI_ACPI_6_0_NFIT_INTERLEAVE_STRUCTURE; 1459*f334afcfSToomas Soome 1460*f334afcfSToomas Soome // 1461*f334afcfSToomas Soome // Definition for SMBIOS Management Information Structure 1462*f334afcfSToomas Soome // 1463*f334afcfSToomas Soome typedef struct { 1464*f334afcfSToomas Soome UINT16 Type; 1465*f334afcfSToomas Soome UINT16 Length; 1466*f334afcfSToomas Soome UINT32 Reserved_4; 1467*f334afcfSToomas Soome // UINT8 Data[]; 1468*f334afcfSToomas Soome } EFI_ACPI_6_0_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE; 1469*f334afcfSToomas Soome 1470*f334afcfSToomas Soome // 1471*f334afcfSToomas Soome // Definition for NVDIMM Control Region Structure 1472*f334afcfSToomas Soome // 1473*f334afcfSToomas Soome #define EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED BIT0 1474*f334afcfSToomas Soome typedef struct { 1475*f334afcfSToomas Soome UINT16 Type; 1476*f334afcfSToomas Soome UINT16 Length; 1477*f334afcfSToomas Soome UINT16 NVDIMMControlRegionStructureIndex; 1478*f334afcfSToomas Soome UINT16 VendorID; 1479*f334afcfSToomas Soome UINT16 DeviceID; 1480*f334afcfSToomas Soome UINT16 RevisionID; 1481*f334afcfSToomas Soome UINT16 SubsystemVendorID; 1482*f334afcfSToomas Soome UINT16 SubsystemDeviceID; 1483*f334afcfSToomas Soome UINT16 SubsystemRevisionID; 1484*f334afcfSToomas Soome UINT8 Reserved_18[6]; 1485*f334afcfSToomas Soome UINT32 SerialNumber; 1486*f334afcfSToomas Soome UINT16 RegionFormatInterfaceCode; 1487*f334afcfSToomas Soome UINT16 NumberOfBlockControlWindows; 1488*f334afcfSToomas Soome UINT64 SizeOfBlockControlWindow; 1489*f334afcfSToomas Soome UINT64 CommandRegisterOffsetInBlockControlWindow; 1490*f334afcfSToomas Soome UINT64 SizeOfCommandRegisterInBlockControlWindows; 1491*f334afcfSToomas Soome UINT64 StatusRegisterOffsetInBlockControlWindow; 1492*f334afcfSToomas Soome UINT64 SizeOfStatusRegisterInBlockControlWindows; 1493*f334afcfSToomas Soome UINT16 NVDIMMControlRegionFlag; 1494*f334afcfSToomas Soome UINT8 Reserved_74[6]; 1495*f334afcfSToomas Soome } EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE; 1496*f334afcfSToomas Soome 1497*f334afcfSToomas Soome // 1498*f334afcfSToomas Soome // Definition for NVDIMM Block Data Window Region Structure 1499*f334afcfSToomas Soome // 1500*f334afcfSToomas Soome typedef struct { 1501*f334afcfSToomas Soome UINT16 Type; 1502*f334afcfSToomas Soome UINT16 Length; 1503*f334afcfSToomas Soome UINT16 NVDIMMControlRegionStructureIndex; 1504*f334afcfSToomas Soome UINT16 NumberOfBlockDataWindows; 1505*f334afcfSToomas Soome UINT64 BlockDataWindowStartOffset; 1506*f334afcfSToomas Soome UINT64 SizeOfBlockDataWindow; 1507*f334afcfSToomas Soome UINT64 BlockAccessibleMemoryCapacity; 1508*f334afcfSToomas Soome UINT64 BeginningAddressOfFirstBlockInBlockAccessibleMemory; 1509*f334afcfSToomas Soome } EFI_ACPI_6_0_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE; 1510*f334afcfSToomas Soome 1511*f334afcfSToomas Soome // 1512*f334afcfSToomas Soome // Definition for Flush Hint Address Structure 1513*f334afcfSToomas Soome // 1514*f334afcfSToomas Soome typedef struct { 1515*f334afcfSToomas Soome UINT16 Type; 1516*f334afcfSToomas Soome UINT16 Length; 1517*f334afcfSToomas Soome EFI_ACPI_6_0_NFIT_DEVICE_HANDLE NFITDeviceHandle; 1518*f334afcfSToomas Soome UINT16 NumberOfFlushHintAddresses; 1519*f334afcfSToomas Soome UINT8 Reserved_10[6]; 1520*f334afcfSToomas Soome // UINT64 FlushHintAddress[NumberOfFlushHintAddresses]; 1521*f334afcfSToomas Soome } EFI_ACPI_6_0_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE; 1522*f334afcfSToomas Soome 1523*f334afcfSToomas Soome /// 1524*f334afcfSToomas Soome /// Boot Error Record Table (BERT) 1525*f334afcfSToomas Soome /// 1526*f334afcfSToomas Soome typedef struct { 1527*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1528*f334afcfSToomas Soome UINT32 BootErrorRegionLength; 1529*f334afcfSToomas Soome UINT64 BootErrorRegion; 1530*f334afcfSToomas Soome } EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER; 1531*f334afcfSToomas Soome 1532*f334afcfSToomas Soome /// 1533*f334afcfSToomas Soome /// BERT Version (as defined in ACPI 6.0 spec.) 1534*f334afcfSToomas Soome /// 1535*f334afcfSToomas Soome #define EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01 1536*f334afcfSToomas Soome 1537*f334afcfSToomas Soome /// 1538*f334afcfSToomas Soome /// Boot Error Region Block Status Definition 1539*f334afcfSToomas Soome /// 1540*f334afcfSToomas Soome typedef struct { 1541*f334afcfSToomas Soome UINT32 UncorrectableErrorValid : 1; 1542*f334afcfSToomas Soome UINT32 CorrectableErrorValid : 1; 1543*f334afcfSToomas Soome UINT32 MultipleUncorrectableErrors : 1; 1544*f334afcfSToomas Soome UINT32 MultipleCorrectableErrors : 1; 1545*f334afcfSToomas Soome UINT32 ErrorDataEntryCount : 10; 1546*f334afcfSToomas Soome UINT32 Reserved : 18; 1547*f334afcfSToomas Soome } EFI_ACPI_6_0_ERROR_BLOCK_STATUS; 1548*f334afcfSToomas Soome 1549*f334afcfSToomas Soome /// 1550*f334afcfSToomas Soome /// Boot Error Region Definition 1551*f334afcfSToomas Soome /// 1552*f334afcfSToomas Soome typedef struct { 1553*f334afcfSToomas Soome EFI_ACPI_6_0_ERROR_BLOCK_STATUS BlockStatus; 1554*f334afcfSToomas Soome UINT32 RawDataOffset; 1555*f334afcfSToomas Soome UINT32 RawDataLength; 1556*f334afcfSToomas Soome UINT32 DataLength; 1557*f334afcfSToomas Soome UINT32 ErrorSeverity; 1558*f334afcfSToomas Soome } EFI_ACPI_6_0_BOOT_ERROR_REGION_STRUCTURE; 1559*f334afcfSToomas Soome 1560*f334afcfSToomas Soome // 1561*f334afcfSToomas Soome // Boot Error Severity types 1562*f334afcfSToomas Soome // 1563*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERROR_SEVERITY_RECOVERABLE 0x00 1564*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERROR_SEVERITY_FATAL 0x01 1565*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTED 0x02 1566*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERROR_SEVERITY_NONE 0x03 1567*f334afcfSToomas Soome // 1568*f334afcfSToomas Soome // The term 'Correctable' is no longer being used as an error severity of the 1569*f334afcfSToomas Soome // reported error since ACPI Specification Version 5.1 Errata B. 1570*f334afcfSToomas Soome // The below macro is considered as deprecated and should no longer be used. 1571*f334afcfSToomas Soome // 1572*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTABLE 0x00 1573*f334afcfSToomas Soome 1574*f334afcfSToomas Soome /// 1575*f334afcfSToomas Soome /// Generic Error Data Entry Definition 1576*f334afcfSToomas Soome /// 1577*f334afcfSToomas Soome typedef struct { 1578*f334afcfSToomas Soome UINT8 SectionType[16]; 1579*f334afcfSToomas Soome UINT32 ErrorSeverity; 1580*f334afcfSToomas Soome UINT16 Revision; 1581*f334afcfSToomas Soome UINT8 ValidationBits; 1582*f334afcfSToomas Soome UINT8 Flags; 1583*f334afcfSToomas Soome UINT32 ErrorDataLength; 1584*f334afcfSToomas Soome UINT8 FruId[16]; 1585*f334afcfSToomas Soome UINT8 FruText[20]; 1586*f334afcfSToomas Soome } EFI_ACPI_6_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE; 1587*f334afcfSToomas Soome 1588*f334afcfSToomas Soome /// 1589*f334afcfSToomas Soome /// Generic Error Data Entry Version (as defined in ACPI 6.0 spec.) 1590*f334afcfSToomas Soome /// 1591*f334afcfSToomas Soome #define EFI_ACPI_6_0_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201 1592*f334afcfSToomas Soome 1593*f334afcfSToomas Soome /// 1594*f334afcfSToomas Soome /// HEST - Hardware Error Source Table 1595*f334afcfSToomas Soome /// 1596*f334afcfSToomas Soome typedef struct { 1597*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1598*f334afcfSToomas Soome UINT32 ErrorSourceCount; 1599*f334afcfSToomas Soome } EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER; 1600*f334afcfSToomas Soome 1601*f334afcfSToomas Soome /// 1602*f334afcfSToomas Soome /// HEST Version (as defined in ACPI 6.0 spec.) 1603*f334afcfSToomas Soome /// 1604*f334afcfSToomas Soome #define EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01 1605*f334afcfSToomas Soome 1606*f334afcfSToomas Soome // 1607*f334afcfSToomas Soome // Error Source structure types. 1608*f334afcfSToomas Soome // 1609*f334afcfSToomas Soome #define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00 1610*f334afcfSToomas Soome #define EFI_ACPI_6_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01 1611*f334afcfSToomas Soome #define EFI_ACPI_6_0_IA32_ARCHITECTURE_NMI_ERROR 0x02 1612*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCI_EXPRESS_ROOT_PORT_AER 0x06 1613*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCI_EXPRESS_DEVICE_AER 0x07 1614*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCI_EXPRESS_BRIDGE_AER 0x08 1615*f334afcfSToomas Soome #define EFI_ACPI_6_0_GENERIC_HARDWARE_ERROR 0x09 1616*f334afcfSToomas Soome 1617*f334afcfSToomas Soome // 1618*f334afcfSToomas Soome // Error Source structure flags. 1619*f334afcfSToomas Soome // 1620*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0) 1621*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_GLOBAL (1 << 1) 1622*f334afcfSToomas Soome 1623*f334afcfSToomas Soome /// 1624*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Exception Structure Definition 1625*f334afcfSToomas Soome /// 1626*f334afcfSToomas Soome typedef struct { 1627*f334afcfSToomas Soome UINT16 Type; 1628*f334afcfSToomas Soome UINT16 SourceId; 1629*f334afcfSToomas Soome UINT8 Reserved0[2]; 1630*f334afcfSToomas Soome UINT8 Flags; 1631*f334afcfSToomas Soome UINT8 Enabled; 1632*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1633*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1634*f334afcfSToomas Soome UINT64 GlobalCapabilityInitData; 1635*f334afcfSToomas Soome UINT64 GlobalControlInitData; 1636*f334afcfSToomas Soome UINT8 NumberOfHardwareBanks; 1637*f334afcfSToomas Soome UINT8 Reserved1[7]; 1638*f334afcfSToomas Soome } EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE; 1639*f334afcfSToomas Soome 1640*f334afcfSToomas Soome /// 1641*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Bank Structure Definition 1642*f334afcfSToomas Soome /// 1643*f334afcfSToomas Soome typedef struct { 1644*f334afcfSToomas Soome UINT8 BankNumber; 1645*f334afcfSToomas Soome UINT8 ClearStatusOnInitialization; 1646*f334afcfSToomas Soome UINT8 StatusDataFormat; 1647*f334afcfSToomas Soome UINT8 Reserved0; 1648*f334afcfSToomas Soome UINT32 ControlRegisterMsrAddress; 1649*f334afcfSToomas Soome UINT64 ControlInitData; 1650*f334afcfSToomas Soome UINT32 StatusRegisterMsrAddress; 1651*f334afcfSToomas Soome UINT32 AddressRegisterMsrAddress; 1652*f334afcfSToomas Soome UINT32 MiscRegisterMsrAddress; 1653*f334afcfSToomas Soome } EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE; 1654*f334afcfSToomas Soome 1655*f334afcfSToomas Soome /// 1656*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Bank Structure MCA data format 1657*f334afcfSToomas Soome /// 1658*f334afcfSToomas Soome #define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00 1659*f334afcfSToomas Soome #define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01 1660*f334afcfSToomas Soome #define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02 1661*f334afcfSToomas Soome 1662*f334afcfSToomas Soome // 1663*f334afcfSToomas Soome // Hardware Error Notification types. All other values are reserved 1664*f334afcfSToomas Soome // 1665*f334afcfSToomas Soome #define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00 1666*f334afcfSToomas Soome #define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01 1667*f334afcfSToomas Soome #define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02 1668*f334afcfSToomas Soome #define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_SCI 0x03 1669*f334afcfSToomas Soome #define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_NMI 0x04 1670*f334afcfSToomas Soome #define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CMCI 0x05 1671*f334afcfSToomas Soome #define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_MCE 0x06 1672*f334afcfSToomas Soome #define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_GPIO_SIGNAL 0x07 1673*f334afcfSToomas Soome 1674*f334afcfSToomas Soome /// 1675*f334afcfSToomas Soome /// Hardware Error Notification Configuration Write Enable Structure Definition 1676*f334afcfSToomas Soome /// 1677*f334afcfSToomas Soome typedef struct { 1678*f334afcfSToomas Soome UINT16 Type : 1; 1679*f334afcfSToomas Soome UINT16 PollInterval : 1; 1680*f334afcfSToomas Soome UINT16 SwitchToPollingThresholdValue : 1; 1681*f334afcfSToomas Soome UINT16 SwitchToPollingThresholdWindow : 1; 1682*f334afcfSToomas Soome UINT16 ErrorThresholdValue : 1; 1683*f334afcfSToomas Soome UINT16 ErrorThresholdWindow : 1; 1684*f334afcfSToomas Soome UINT16 Reserved : 10; 1685*f334afcfSToomas Soome } EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE; 1686*f334afcfSToomas Soome 1687*f334afcfSToomas Soome /// 1688*f334afcfSToomas Soome /// Hardware Error Notification Structure Definition 1689*f334afcfSToomas Soome /// 1690*f334afcfSToomas Soome typedef struct { 1691*f334afcfSToomas Soome UINT8 Type; 1692*f334afcfSToomas Soome UINT8 Length; 1693*f334afcfSToomas Soome EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable; 1694*f334afcfSToomas Soome UINT32 PollInterval; 1695*f334afcfSToomas Soome UINT32 Vector; 1696*f334afcfSToomas Soome UINT32 SwitchToPollingThresholdValue; 1697*f334afcfSToomas Soome UINT32 SwitchToPollingThresholdWindow; 1698*f334afcfSToomas Soome UINT32 ErrorThresholdValue; 1699*f334afcfSToomas Soome UINT32 ErrorThresholdWindow; 1700*f334afcfSToomas Soome } EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE; 1701*f334afcfSToomas Soome 1702*f334afcfSToomas Soome /// 1703*f334afcfSToomas Soome /// IA-32 Architecture Corrected Machine Check Structure Definition 1704*f334afcfSToomas Soome /// 1705*f334afcfSToomas Soome typedef struct { 1706*f334afcfSToomas Soome UINT16 Type; 1707*f334afcfSToomas Soome UINT16 SourceId; 1708*f334afcfSToomas Soome UINT8 Reserved0[2]; 1709*f334afcfSToomas Soome UINT8 Flags; 1710*f334afcfSToomas Soome UINT8 Enabled; 1711*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1712*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1713*f334afcfSToomas Soome EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 1714*f334afcfSToomas Soome UINT8 NumberOfHardwareBanks; 1715*f334afcfSToomas Soome UINT8 Reserved1[3]; 1716*f334afcfSToomas Soome } EFI_ACPI_6_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE; 1717*f334afcfSToomas Soome 1718*f334afcfSToomas Soome /// 1719*f334afcfSToomas Soome /// IA-32 Architecture NMI Error Structure Definition 1720*f334afcfSToomas Soome /// 1721*f334afcfSToomas Soome typedef struct { 1722*f334afcfSToomas Soome UINT16 Type; 1723*f334afcfSToomas Soome UINT16 SourceId; 1724*f334afcfSToomas Soome UINT8 Reserved0[2]; 1725*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1726*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1727*f334afcfSToomas Soome UINT32 MaxRawDataLength; 1728*f334afcfSToomas Soome } EFI_ACPI_6_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE; 1729*f334afcfSToomas Soome 1730*f334afcfSToomas Soome /// 1731*f334afcfSToomas Soome /// PCI Express Root Port AER Structure Definition 1732*f334afcfSToomas Soome /// 1733*f334afcfSToomas Soome typedef struct { 1734*f334afcfSToomas Soome UINT16 Type; 1735*f334afcfSToomas Soome UINT16 SourceId; 1736*f334afcfSToomas Soome UINT8 Reserved0[2]; 1737*f334afcfSToomas Soome UINT8 Flags; 1738*f334afcfSToomas Soome UINT8 Enabled; 1739*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1740*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1741*f334afcfSToomas Soome UINT32 Bus; 1742*f334afcfSToomas Soome UINT16 Device; 1743*f334afcfSToomas Soome UINT16 Function; 1744*f334afcfSToomas Soome UINT16 DeviceControl; 1745*f334afcfSToomas Soome UINT8 Reserved1[2]; 1746*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 1747*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 1748*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 1749*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 1750*f334afcfSToomas Soome UINT32 RootErrorCommand; 1751*f334afcfSToomas Soome } EFI_ACPI_6_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE; 1752*f334afcfSToomas Soome 1753*f334afcfSToomas Soome /// 1754*f334afcfSToomas Soome /// PCI Express Device AER Structure Definition 1755*f334afcfSToomas Soome /// 1756*f334afcfSToomas Soome typedef struct { 1757*f334afcfSToomas Soome UINT16 Type; 1758*f334afcfSToomas Soome UINT16 SourceId; 1759*f334afcfSToomas Soome UINT8 Reserved0[2]; 1760*f334afcfSToomas Soome UINT8 Flags; 1761*f334afcfSToomas Soome UINT8 Enabled; 1762*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1763*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1764*f334afcfSToomas Soome UINT32 Bus; 1765*f334afcfSToomas Soome UINT16 Device; 1766*f334afcfSToomas Soome UINT16 Function; 1767*f334afcfSToomas Soome UINT16 DeviceControl; 1768*f334afcfSToomas Soome UINT8 Reserved1[2]; 1769*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 1770*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 1771*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 1772*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 1773*f334afcfSToomas Soome } EFI_ACPI_6_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE; 1774*f334afcfSToomas Soome 1775*f334afcfSToomas Soome /// 1776*f334afcfSToomas Soome /// PCI Express Bridge AER Structure Definition 1777*f334afcfSToomas Soome /// 1778*f334afcfSToomas Soome typedef struct { 1779*f334afcfSToomas Soome UINT16 Type; 1780*f334afcfSToomas Soome UINT16 SourceId; 1781*f334afcfSToomas Soome UINT8 Reserved0[2]; 1782*f334afcfSToomas Soome UINT8 Flags; 1783*f334afcfSToomas Soome UINT8 Enabled; 1784*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1785*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1786*f334afcfSToomas Soome UINT32 Bus; 1787*f334afcfSToomas Soome UINT16 Device; 1788*f334afcfSToomas Soome UINT16 Function; 1789*f334afcfSToomas Soome UINT16 DeviceControl; 1790*f334afcfSToomas Soome UINT8 Reserved1[2]; 1791*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 1792*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 1793*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 1794*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 1795*f334afcfSToomas Soome UINT32 SecondaryUncorrectableErrorMask; 1796*f334afcfSToomas Soome UINT32 SecondaryUncorrectableErrorSeverity; 1797*f334afcfSToomas Soome UINT32 SecondaryAdvancedErrorCapabilitiesAndControl; 1798*f334afcfSToomas Soome } EFI_ACPI_6_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE; 1799*f334afcfSToomas Soome 1800*f334afcfSToomas Soome /// 1801*f334afcfSToomas Soome /// Generic Hardware Error Source Structure Definition 1802*f334afcfSToomas Soome /// 1803*f334afcfSToomas Soome typedef struct { 1804*f334afcfSToomas Soome UINT16 Type; 1805*f334afcfSToomas Soome UINT16 SourceId; 1806*f334afcfSToomas Soome UINT16 RelatedSourceId; 1807*f334afcfSToomas Soome UINT8 Flags; 1808*f334afcfSToomas Soome UINT8 Enabled; 1809*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1810*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1811*f334afcfSToomas Soome UINT32 MaxRawDataLength; 1812*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; 1813*f334afcfSToomas Soome EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 1814*f334afcfSToomas Soome UINT32 ErrorStatusBlockLength; 1815*f334afcfSToomas Soome } EFI_ACPI_6_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE; 1816*f334afcfSToomas Soome 1817*f334afcfSToomas Soome /// 1818*f334afcfSToomas Soome /// Generic Error Status Definition 1819*f334afcfSToomas Soome /// 1820*f334afcfSToomas Soome typedef struct { 1821*f334afcfSToomas Soome EFI_ACPI_6_0_ERROR_BLOCK_STATUS BlockStatus; 1822*f334afcfSToomas Soome UINT32 RawDataOffset; 1823*f334afcfSToomas Soome UINT32 RawDataLength; 1824*f334afcfSToomas Soome UINT32 DataLength; 1825*f334afcfSToomas Soome UINT32 ErrorSeverity; 1826*f334afcfSToomas Soome } EFI_ACPI_6_0_GENERIC_ERROR_STATUS_STRUCTURE; 1827*f334afcfSToomas Soome 1828*f334afcfSToomas Soome /// 1829*f334afcfSToomas Soome /// ERST - Error Record Serialization Table 1830*f334afcfSToomas Soome /// 1831*f334afcfSToomas Soome typedef struct { 1832*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1833*f334afcfSToomas Soome UINT32 SerializationHeaderSize; 1834*f334afcfSToomas Soome UINT8 Reserved0[4]; 1835*f334afcfSToomas Soome UINT32 InstructionEntryCount; 1836*f334afcfSToomas Soome } EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER; 1837*f334afcfSToomas Soome 1838*f334afcfSToomas Soome /// 1839*f334afcfSToomas Soome /// ERST Version (as defined in ACPI 6.0 spec.) 1840*f334afcfSToomas Soome /// 1841*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01 1842*f334afcfSToomas Soome 1843*f334afcfSToomas Soome /// 1844*f334afcfSToomas Soome /// ERST Serialization Actions 1845*f334afcfSToomas Soome /// 1846*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_BEGIN_WRITE_OPERATION 0x00 1847*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_BEGIN_READ_OPERATION 0x01 1848*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_BEGIN_CLEAR_OPERATION 0x02 1849*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_END_OPERATION 0x03 1850*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_SET_RECORD_OFFSET 0x04 1851*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_EXECUTE_OPERATION 0x05 1852*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_CHECK_BUSY_STATUS 0x06 1853*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_GET_COMMAND_STATUS 0x07 1854*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_GET_RECORD_IDENTIFIER 0x08 1855*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_SET_RECORD_IDENTIFIER 0x09 1856*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_GET_RECORD_COUNT 0x0A 1857*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B 1858*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D 1859*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E 1860*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F 1861*f334afcfSToomas Soome 1862*f334afcfSToomas Soome /// 1863*f334afcfSToomas Soome /// ERST Action Command Status 1864*f334afcfSToomas Soome /// 1865*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_STATUS_SUCCESS 0x00 1866*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_STATUS_NOT_ENOUGH_SPACE 0x01 1867*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02 1868*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_STATUS_FAILED 0x03 1869*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_STATUS_RECORD_STORE_EMPTY 0x04 1870*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_STATUS_RECORD_NOT_FOUND 0x05 1871*f334afcfSToomas Soome 1872*f334afcfSToomas Soome /// 1873*f334afcfSToomas Soome /// ERST Serialization Instructions 1874*f334afcfSToomas Soome /// 1875*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_READ_REGISTER 0x00 1876*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_READ_REGISTER_VALUE 0x01 1877*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_WRITE_REGISTER 0x02 1878*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE 0x03 1879*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_NOOP 0x04 1880*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_LOAD_VAR1 0x05 1881*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_LOAD_VAR2 0x06 1882*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_STORE_VAR1 0x07 1883*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_ADD 0x08 1884*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_SUBTRACT 0x09 1885*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_ADD_VALUE 0x0A 1886*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_SUBTRACT_VALUE 0x0B 1887*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_STALL 0x0C 1888*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_STALL_WHILE_TRUE 0x0D 1889*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E 1890*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_GOTO 0x0F 1891*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_SET_SRC_ADDRESS_BASE 0x10 1892*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_SET_DST_ADDRESS_BASE 0x11 1893*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_MOVE_DATA 0x12 1894*f334afcfSToomas Soome 1895*f334afcfSToomas Soome /// 1896*f334afcfSToomas Soome /// ERST Instruction Flags 1897*f334afcfSToomas Soome /// 1898*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERST_PRESERVE_REGISTER 0x01 1899*f334afcfSToomas Soome 1900*f334afcfSToomas Soome /// 1901*f334afcfSToomas Soome /// ERST Serialization Instruction Entry 1902*f334afcfSToomas Soome /// 1903*f334afcfSToomas Soome typedef struct { 1904*f334afcfSToomas Soome UINT8 SerializationAction; 1905*f334afcfSToomas Soome UINT8 Instruction; 1906*f334afcfSToomas Soome UINT8 Flags; 1907*f334afcfSToomas Soome UINT8 Reserved0; 1908*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 1909*f334afcfSToomas Soome UINT64 Value; 1910*f334afcfSToomas Soome UINT64 Mask; 1911*f334afcfSToomas Soome } EFI_ACPI_6_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY; 1912*f334afcfSToomas Soome 1913*f334afcfSToomas Soome /// 1914*f334afcfSToomas Soome /// EINJ - Error Injection Table 1915*f334afcfSToomas Soome /// 1916*f334afcfSToomas Soome typedef struct { 1917*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1918*f334afcfSToomas Soome UINT32 InjectionHeaderSize; 1919*f334afcfSToomas Soome UINT8 InjectionFlags; 1920*f334afcfSToomas Soome UINT8 Reserved0[3]; 1921*f334afcfSToomas Soome UINT32 InjectionEntryCount; 1922*f334afcfSToomas Soome } EFI_ACPI_6_0_ERROR_INJECTION_TABLE_HEADER; 1923*f334afcfSToomas Soome 1924*f334afcfSToomas Soome /// 1925*f334afcfSToomas Soome /// EINJ Version (as defined in ACPI 6.0 spec.) 1926*f334afcfSToomas Soome /// 1927*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERROR_INJECTION_TABLE_REVISION 0x01 1928*f334afcfSToomas Soome 1929*f334afcfSToomas Soome /// 1930*f334afcfSToomas Soome /// EINJ Error Injection Actions 1931*f334afcfSToomas Soome /// 1932*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_BEGIN_INJECTION_OPERATION 0x00 1933*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01 1934*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_SET_ERROR_TYPE 0x02 1935*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_GET_ERROR_TYPE 0x03 1936*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_END_OPERATION 0x04 1937*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_EXECUTE_OPERATION 0x05 1938*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_CHECK_BUSY_STATUS 0x06 1939*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_GET_COMMAND_STATUS 0x07 1940*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_TRIGGER_ERROR 0xFF 1941*f334afcfSToomas Soome 1942*f334afcfSToomas Soome /// 1943*f334afcfSToomas Soome /// EINJ Action Command Status 1944*f334afcfSToomas Soome /// 1945*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_STATUS_SUCCESS 0x00 1946*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_STATUS_UNKNOWN_FAILURE 0x01 1947*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_STATUS_INVALID_ACCESS 0x02 1948*f334afcfSToomas Soome 1949*f334afcfSToomas Soome /// 1950*f334afcfSToomas Soome /// EINJ Error Type Definition 1951*f334afcfSToomas Soome /// 1952*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0) 1953*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1) 1954*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2) 1955*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3) 1956*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4) 1957*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5) 1958*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6) 1959*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7) 1960*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8) 1961*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9) 1962*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10) 1963*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11) 1964*f334afcfSToomas Soome 1965*f334afcfSToomas Soome /// 1966*f334afcfSToomas Soome /// EINJ Injection Instructions 1967*f334afcfSToomas Soome /// 1968*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_READ_REGISTER 0x00 1969*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_READ_REGISTER_VALUE 0x01 1970*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_WRITE_REGISTER 0x02 1971*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_WRITE_REGISTER_VALUE 0x03 1972*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_NOOP 0x04 1973*f334afcfSToomas Soome 1974*f334afcfSToomas Soome /// 1975*f334afcfSToomas Soome /// EINJ Instruction Flags 1976*f334afcfSToomas Soome /// 1977*f334afcfSToomas Soome #define EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER 0x01 1978*f334afcfSToomas Soome 1979*f334afcfSToomas Soome /// 1980*f334afcfSToomas Soome /// EINJ Injection Instruction Entry 1981*f334afcfSToomas Soome /// 1982*f334afcfSToomas Soome typedef struct { 1983*f334afcfSToomas Soome UINT8 InjectionAction; 1984*f334afcfSToomas Soome UINT8 Instruction; 1985*f334afcfSToomas Soome UINT8 Flags; 1986*f334afcfSToomas Soome UINT8 Reserved0; 1987*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 1988*f334afcfSToomas Soome UINT64 Value; 1989*f334afcfSToomas Soome UINT64 Mask; 1990*f334afcfSToomas Soome } EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY; 1991*f334afcfSToomas Soome 1992*f334afcfSToomas Soome /// 1993*f334afcfSToomas Soome /// EINJ Trigger Action Table 1994*f334afcfSToomas Soome /// 1995*f334afcfSToomas Soome typedef struct { 1996*f334afcfSToomas Soome UINT32 HeaderSize; 1997*f334afcfSToomas Soome UINT32 Revision; 1998*f334afcfSToomas Soome UINT32 TableSize; 1999*f334afcfSToomas Soome UINT32 EntryCount; 2000*f334afcfSToomas Soome } EFI_ACPI_6_0_EINJ_TRIGGER_ACTION_TABLE; 2001*f334afcfSToomas Soome 2002*f334afcfSToomas Soome /// 2003*f334afcfSToomas Soome /// Platform Communications Channel Table (PCCT) 2004*f334afcfSToomas Soome /// 2005*f334afcfSToomas Soome typedef struct { 2006*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 2007*f334afcfSToomas Soome UINT32 Flags; 2008*f334afcfSToomas Soome UINT64 Reserved; 2009*f334afcfSToomas Soome } EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER; 2010*f334afcfSToomas Soome 2011*f334afcfSToomas Soome /// 2012*f334afcfSToomas Soome /// PCCT Version (as defined in ACPI 6.0 spec.) 2013*f334afcfSToomas Soome /// 2014*f334afcfSToomas Soome #define EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01 2015*f334afcfSToomas Soome 2016*f334afcfSToomas Soome /// 2017*f334afcfSToomas Soome /// PCCT Global Flags 2018*f334afcfSToomas Soome /// 2019*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCCT_FLAGS_SCI_DOORBELL BIT0 2020*f334afcfSToomas Soome 2021*f334afcfSToomas Soome // 2022*f334afcfSToomas Soome // PCCT Subspace type 2023*f334afcfSToomas Soome // 2024*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_GENERIC 0x00 2025*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_1_HW_REDUCED_COMMUNICATIONS 0x01 2026*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_2_HW_REDUCED_COMMUNICATIONS 0x02 2027*f334afcfSToomas Soome 2028*f334afcfSToomas Soome /// 2029*f334afcfSToomas Soome /// PCC Subspace Structure Header 2030*f334afcfSToomas Soome /// 2031*f334afcfSToomas Soome typedef struct { 2032*f334afcfSToomas Soome UINT8 Type; 2033*f334afcfSToomas Soome UINT8 Length; 2034*f334afcfSToomas Soome } EFI_ACPI_6_0_PCCT_SUBSPACE_HEADER; 2035*f334afcfSToomas Soome 2036*f334afcfSToomas Soome /// 2037*f334afcfSToomas Soome /// Generic Communications Subspace Structure 2038*f334afcfSToomas Soome /// 2039*f334afcfSToomas Soome typedef struct { 2040*f334afcfSToomas Soome UINT8 Type; 2041*f334afcfSToomas Soome UINT8 Length; 2042*f334afcfSToomas Soome UINT8 Reserved[6]; 2043*f334afcfSToomas Soome UINT64 BaseAddress; 2044*f334afcfSToomas Soome UINT64 AddressLength; 2045*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 2046*f334afcfSToomas Soome UINT64 DoorbellPreserve; 2047*f334afcfSToomas Soome UINT64 DoorbellWrite; 2048*f334afcfSToomas Soome UINT32 NominalLatency; 2049*f334afcfSToomas Soome UINT32 MaximumPeriodicAccessRate; 2050*f334afcfSToomas Soome UINT16 MinimumRequestTurnaroundTime; 2051*f334afcfSToomas Soome } EFI_ACPI_6_0_PCCT_SUBSPACE_GENERIC; 2052*f334afcfSToomas Soome 2053*f334afcfSToomas Soome /// 2054*f334afcfSToomas Soome /// Generic Communications Channel Shared Memory Region 2055*f334afcfSToomas Soome /// 2056*f334afcfSToomas Soome 2057*f334afcfSToomas Soome typedef struct { 2058*f334afcfSToomas Soome UINT8 Command; 2059*f334afcfSToomas Soome UINT8 Reserved : 7; 2060*f334afcfSToomas Soome UINT8 GenerateSci : 1; 2061*f334afcfSToomas Soome } EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND; 2062*f334afcfSToomas Soome 2063*f334afcfSToomas Soome typedef struct { 2064*f334afcfSToomas Soome UINT8 CommandComplete : 1; 2065*f334afcfSToomas Soome UINT8 SciDoorbell : 1; 2066*f334afcfSToomas Soome UINT8 Error : 1; 2067*f334afcfSToomas Soome UINT8 PlatformNotification : 1; 2068*f334afcfSToomas Soome UINT8 Reserved : 4; 2069*f334afcfSToomas Soome UINT8 Reserved1; 2070*f334afcfSToomas Soome } EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS; 2071*f334afcfSToomas Soome 2072*f334afcfSToomas Soome typedef struct { 2073*f334afcfSToomas Soome UINT32 Signature; 2074*f334afcfSToomas Soome EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command; 2075*f334afcfSToomas Soome EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status; 2076*f334afcfSToomas Soome } EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER; 2077*f334afcfSToomas Soome 2078*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCCT_SUBSPACE_DOORBELL_INTERRUPT_FLAGS_POLARITY BIT0 2079*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCCT_SUBSPACE_DOORBELL_INTERRUPT_FLAGS_MODE BIT1 2080*f334afcfSToomas Soome 2081*f334afcfSToomas Soome /// 2082*f334afcfSToomas Soome /// Type 1 HW-Reduced Communications Subspace Structure 2083*f334afcfSToomas Soome /// 2084*f334afcfSToomas Soome typedef struct { 2085*f334afcfSToomas Soome UINT8 Type; 2086*f334afcfSToomas Soome UINT8 Length; 2087*f334afcfSToomas Soome UINT32 DoorbellInterrupt; 2088*f334afcfSToomas Soome UINT8 DoorbellInterruptFlags; 2089*f334afcfSToomas Soome UINT8 Reserved; 2090*f334afcfSToomas Soome UINT64 BaseAddress; 2091*f334afcfSToomas Soome UINT64 AddressLength; 2092*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 2093*f334afcfSToomas Soome UINT64 DoorbellPreserve; 2094*f334afcfSToomas Soome UINT64 DoorbellWrite; 2095*f334afcfSToomas Soome UINT32 NominalLatency; 2096*f334afcfSToomas Soome UINT32 MaximumPeriodicAccessRate; 2097*f334afcfSToomas Soome UINT16 MinimumRequestTurnaroundTime; 2098*f334afcfSToomas Soome } EFI_ACPI_6_0_PCCT_SUBSPACE_1_HW_REDUCED_COMMUNICATIONS; 2099*f334afcfSToomas Soome 2100*f334afcfSToomas Soome /// 2101*f334afcfSToomas Soome /// Type 2 HW-Reduced Communications Subspace Structure 2102*f334afcfSToomas Soome /// 2103*f334afcfSToomas Soome typedef struct { 2104*f334afcfSToomas Soome UINT8 Type; 2105*f334afcfSToomas Soome UINT8 Length; 2106*f334afcfSToomas Soome UINT32 DoorbellInterrupt; 2107*f334afcfSToomas Soome UINT8 DoorbellInterruptFlags; 2108*f334afcfSToomas Soome UINT8 Reserved; 2109*f334afcfSToomas Soome UINT64 BaseAddress; 2110*f334afcfSToomas Soome UINT64 AddressLength; 2111*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 2112*f334afcfSToomas Soome UINT64 DoorbellPreserve; 2113*f334afcfSToomas Soome UINT64 DoorbellWrite; 2114*f334afcfSToomas Soome UINT32 NominalLatency; 2115*f334afcfSToomas Soome UINT32 MaximumPeriodicAccessRate; 2116*f334afcfSToomas Soome UINT16 MinimumRequestTurnaroundTime; 2117*f334afcfSToomas Soome EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE DoorbellAckRegister; 2118*f334afcfSToomas Soome UINT64 DoorbellAckPreserve; 2119*f334afcfSToomas Soome UINT64 DoorbellAckWrite; 2120*f334afcfSToomas Soome } EFI_ACPI_6_0_PCCT_SUBSPACE_2_HW_REDUCED_COMMUNICATIONS; 2121*f334afcfSToomas Soome 2122*f334afcfSToomas Soome // 2123*f334afcfSToomas Soome // Known table signatures 2124*f334afcfSToomas Soome // 2125*f334afcfSToomas Soome 2126*f334afcfSToomas Soome /// 2127*f334afcfSToomas Soome /// "RSD PTR " Root System Description Pointer 2128*f334afcfSToomas Soome /// 2129*f334afcfSToomas Soome #define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') 2130*f334afcfSToomas Soome 2131*f334afcfSToomas Soome /// 2132*f334afcfSToomas Soome /// "APIC" Multiple APIC Description Table 2133*f334afcfSToomas Soome /// 2134*f334afcfSToomas Soome #define EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') 2135*f334afcfSToomas Soome 2136*f334afcfSToomas Soome /// 2137*f334afcfSToomas Soome /// "BERT" Boot Error Record Table 2138*f334afcfSToomas Soome /// 2139*f334afcfSToomas Soome #define EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T') 2140*f334afcfSToomas Soome 2141*f334afcfSToomas Soome /// 2142*f334afcfSToomas Soome /// "BGRT" Boot Graphics Resource Table 2143*f334afcfSToomas Soome /// 2144*f334afcfSToomas Soome #define EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T') 2145*f334afcfSToomas Soome 2146*f334afcfSToomas Soome /// 2147*f334afcfSToomas Soome /// "CPEP" Corrected Platform Error Polling Table 2148*f334afcfSToomas Soome /// 2149*f334afcfSToomas Soome #define EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P') 2150*f334afcfSToomas Soome 2151*f334afcfSToomas Soome /// 2152*f334afcfSToomas Soome /// "DSDT" Differentiated System Description Table 2153*f334afcfSToomas Soome /// 2154*f334afcfSToomas Soome #define EFI_ACPI_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') 2155*f334afcfSToomas Soome 2156*f334afcfSToomas Soome /// 2157*f334afcfSToomas Soome /// "ECDT" Embedded Controller Boot Resources Table 2158*f334afcfSToomas Soome /// 2159*f334afcfSToomas Soome #define EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') 2160*f334afcfSToomas Soome 2161*f334afcfSToomas Soome /// 2162*f334afcfSToomas Soome /// "EINJ" Error Injection Table 2163*f334afcfSToomas Soome /// 2164*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J') 2165*f334afcfSToomas Soome 2166*f334afcfSToomas Soome /// 2167*f334afcfSToomas Soome /// "ERST" Error Record Serialization Table 2168*f334afcfSToomas Soome /// 2169*f334afcfSToomas Soome #define EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T') 2170*f334afcfSToomas Soome 2171*f334afcfSToomas Soome /// 2172*f334afcfSToomas Soome /// "FACP" Fixed ACPI Description Table 2173*f334afcfSToomas Soome /// 2174*f334afcfSToomas Soome #define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') 2175*f334afcfSToomas Soome 2176*f334afcfSToomas Soome /// 2177*f334afcfSToomas Soome /// "FACS" Firmware ACPI Control Structure 2178*f334afcfSToomas Soome /// 2179*f334afcfSToomas Soome #define EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') 2180*f334afcfSToomas Soome 2181*f334afcfSToomas Soome /// 2182*f334afcfSToomas Soome /// "FPDT" Firmware Performance Data Table 2183*f334afcfSToomas Soome /// 2184*f334afcfSToomas Soome #define EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T') 2185*f334afcfSToomas Soome 2186*f334afcfSToomas Soome /// 2187*f334afcfSToomas Soome /// "GTDT" Generic Timer Description Table 2188*f334afcfSToomas Soome /// 2189*f334afcfSToomas Soome #define EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T') 2190*f334afcfSToomas Soome 2191*f334afcfSToomas Soome /// 2192*f334afcfSToomas Soome /// "HEST" Hardware Error Source Table 2193*f334afcfSToomas Soome /// 2194*f334afcfSToomas Soome #define EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T') 2195*f334afcfSToomas Soome 2196*f334afcfSToomas Soome /// 2197*f334afcfSToomas Soome /// "MPST" Memory Power State Table 2198*f334afcfSToomas Soome /// 2199*f334afcfSToomas Soome #define EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T') 2200*f334afcfSToomas Soome 2201*f334afcfSToomas Soome /// 2202*f334afcfSToomas Soome /// "MSCT" Maximum System Characteristics Table 2203*f334afcfSToomas Soome /// 2204*f334afcfSToomas Soome #define EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T') 2205*f334afcfSToomas Soome 2206*f334afcfSToomas Soome /// 2207*f334afcfSToomas Soome /// "NFIT" NVDIMM Firmware Interface Table 2208*f334afcfSToomas Soome /// 2209*f334afcfSToomas Soome #define EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('N', 'F', 'I', 'T') 2210*f334afcfSToomas Soome 2211*f334afcfSToomas Soome /// 2212*f334afcfSToomas Soome /// "PMTT" Platform Memory Topology Table 2213*f334afcfSToomas Soome /// 2214*f334afcfSToomas Soome #define EFI_ACPI_6_0_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T') 2215*f334afcfSToomas Soome 2216*f334afcfSToomas Soome /// 2217*f334afcfSToomas Soome /// "PSDT" Persistent System Description Table 2218*f334afcfSToomas Soome /// 2219*f334afcfSToomas Soome #define EFI_ACPI_6_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') 2220*f334afcfSToomas Soome 2221*f334afcfSToomas Soome /// 2222*f334afcfSToomas Soome /// "RASF" ACPI RAS Feature Table 2223*f334afcfSToomas Soome /// 2224*f334afcfSToomas Soome #define EFI_ACPI_6_0_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F') 2225*f334afcfSToomas Soome 2226*f334afcfSToomas Soome /// 2227*f334afcfSToomas Soome /// "RSDT" Root System Description Table 2228*f334afcfSToomas Soome /// 2229*f334afcfSToomas Soome #define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') 2230*f334afcfSToomas Soome 2231*f334afcfSToomas Soome /// 2232*f334afcfSToomas Soome /// "SBST" Smart Battery Specification Table 2233*f334afcfSToomas Soome /// 2234*f334afcfSToomas Soome #define EFI_ACPI_6_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') 2235*f334afcfSToomas Soome 2236*f334afcfSToomas Soome /// 2237*f334afcfSToomas Soome /// "SLIT" System Locality Information Table 2238*f334afcfSToomas Soome /// 2239*f334afcfSToomas Soome #define EFI_ACPI_6_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') 2240*f334afcfSToomas Soome 2241*f334afcfSToomas Soome /// 2242*f334afcfSToomas Soome /// "SRAT" System Resource Affinity Table 2243*f334afcfSToomas Soome /// 2244*f334afcfSToomas Soome #define EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') 2245*f334afcfSToomas Soome 2246*f334afcfSToomas Soome /// 2247*f334afcfSToomas Soome /// "SSDT" Secondary System Description Table 2248*f334afcfSToomas Soome /// 2249*f334afcfSToomas Soome #define EFI_ACPI_6_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') 2250*f334afcfSToomas Soome 2251*f334afcfSToomas Soome /// 2252*f334afcfSToomas Soome /// "XSDT" Extended System Description Table 2253*f334afcfSToomas Soome /// 2254*f334afcfSToomas Soome #define EFI_ACPI_6_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') 2255*f334afcfSToomas Soome 2256*f334afcfSToomas Soome /// 2257*f334afcfSToomas Soome /// "BOOT" MS Simple Boot Spec 2258*f334afcfSToomas Soome /// 2259*f334afcfSToomas Soome #define EFI_ACPI_6_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') 2260*f334afcfSToomas Soome 2261*f334afcfSToomas Soome /// 2262*f334afcfSToomas Soome /// "CSRT" MS Core System Resource Table 2263*f334afcfSToomas Soome /// 2264*f334afcfSToomas Soome #define EFI_ACPI_6_0_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T') 2265*f334afcfSToomas Soome 2266*f334afcfSToomas Soome /// 2267*f334afcfSToomas Soome /// "DBG2" MS Debug Port 2 Spec 2268*f334afcfSToomas Soome /// 2269*f334afcfSToomas Soome #define EFI_ACPI_6_0_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2') 2270*f334afcfSToomas Soome 2271*f334afcfSToomas Soome /// 2272*f334afcfSToomas Soome /// "DBGP" MS Debug Port Spec 2273*f334afcfSToomas Soome /// 2274*f334afcfSToomas Soome #define EFI_ACPI_6_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') 2275*f334afcfSToomas Soome 2276*f334afcfSToomas Soome /// 2277*f334afcfSToomas Soome /// "DMAR" DMA Remapping Table 2278*f334afcfSToomas Soome /// 2279*f334afcfSToomas Soome #define EFI_ACPI_6_0_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R') 2280*f334afcfSToomas Soome 2281*f334afcfSToomas Soome /// 2282*f334afcfSToomas Soome /// "DRTM" Dynamic Root of Trust for Measurement Table 2283*f334afcfSToomas Soome /// 2284*f334afcfSToomas Soome #define EFI_ACPI_6_0_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M') 2285*f334afcfSToomas Soome 2286*f334afcfSToomas Soome /// 2287*f334afcfSToomas Soome /// "ETDT" Event Timer Description Table 2288*f334afcfSToomas Soome /// 2289*f334afcfSToomas Soome #define EFI_ACPI_6_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') 2290*f334afcfSToomas Soome 2291*f334afcfSToomas Soome /// 2292*f334afcfSToomas Soome /// "HPET" IA-PC High Precision Event Timer Table 2293*f334afcfSToomas Soome /// 2294*f334afcfSToomas Soome #define EFI_ACPI_6_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T') 2295*f334afcfSToomas Soome 2296*f334afcfSToomas Soome /// 2297*f334afcfSToomas Soome /// "iBFT" iSCSI Boot Firmware Table 2298*f334afcfSToomas Soome /// 2299*f334afcfSToomas Soome #define EFI_ACPI_6_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T') 2300*f334afcfSToomas Soome 2301*f334afcfSToomas Soome /// 2302*f334afcfSToomas Soome /// "IORT" I/O Remapping Table 2303*f334afcfSToomas Soome /// 2304*f334afcfSToomas Soome #define EFI_ACPI_6_0_IO_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('I', 'O', 'R', 'T') 2305*f334afcfSToomas Soome 2306*f334afcfSToomas Soome /// 2307*f334afcfSToomas Soome /// "IVRS" I/O Virtualization Reporting Structure 2308*f334afcfSToomas Soome /// 2309*f334afcfSToomas Soome #define EFI_ACPI_6_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S') 2310*f334afcfSToomas Soome 2311*f334afcfSToomas Soome /// 2312*f334afcfSToomas Soome /// "LPIT" Low Power Idle Table 2313*f334afcfSToomas Soome /// 2314*f334afcfSToomas Soome #define EFI_ACPI_6_0_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('L', 'P', 'I', 'T') 2315*f334afcfSToomas Soome 2316*f334afcfSToomas Soome /// 2317*f334afcfSToomas Soome /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table 2318*f334afcfSToomas Soome /// 2319*f334afcfSToomas Soome #define EFI_ACPI_6_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') 2320*f334afcfSToomas Soome 2321*f334afcfSToomas Soome /// 2322*f334afcfSToomas Soome /// "MCHI" Management Controller Host Interface Table 2323*f334afcfSToomas Soome /// 2324*f334afcfSToomas Soome #define EFI_ACPI_6_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I') 2325*f334afcfSToomas Soome 2326*f334afcfSToomas Soome /// 2327*f334afcfSToomas Soome /// "MSDM" MS Data Management Table 2328*f334afcfSToomas Soome /// 2329*f334afcfSToomas Soome #define EFI_ACPI_6_0_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M') 2330*f334afcfSToomas Soome 2331*f334afcfSToomas Soome /// 2332*f334afcfSToomas Soome /// "PCCT" Platform Communications Channel Table 2333*f334afcfSToomas Soome /// 2334*f334afcfSToomas Soome #define EFI_ACPI_6_0_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE SIGNATURE_32('P', 'C', 'C', 'T') 2335*f334afcfSToomas Soome 2336*f334afcfSToomas Soome /// 2337*f334afcfSToomas Soome /// "SLIC" MS Software Licensing Table Specification 2338*f334afcfSToomas Soome /// 2339*f334afcfSToomas Soome #define EFI_ACPI_6_0_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C') 2340*f334afcfSToomas Soome 2341*f334afcfSToomas Soome /// 2342*f334afcfSToomas Soome /// "SPCR" Serial Port Console Redirection Table 2343*f334afcfSToomas Soome /// 2344*f334afcfSToomas Soome #define EFI_ACPI_6_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') 2345*f334afcfSToomas Soome 2346*f334afcfSToomas Soome /// 2347*f334afcfSToomas Soome /// "SPMI" Server Platform Management Interface Table 2348*f334afcfSToomas Soome /// 2349*f334afcfSToomas Soome #define EFI_ACPI_6_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') 2350*f334afcfSToomas Soome 2351*f334afcfSToomas Soome /// 2352*f334afcfSToomas Soome /// "STAO" _STA Override Table 2353*f334afcfSToomas Soome /// 2354*f334afcfSToomas Soome #define EFI_ACPI_6_0_STA_OVERRIDE_TABLE_SIGNATURE SIGNATURE_32('S', 'T', 'A', 'O') 2355*f334afcfSToomas Soome 2356*f334afcfSToomas Soome /// 2357*f334afcfSToomas Soome /// "TCPA" Trusted Computing Platform Alliance Capabilities Table 2358*f334afcfSToomas Soome /// 2359*f334afcfSToomas Soome #define EFI_ACPI_6_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A') 2360*f334afcfSToomas Soome 2361*f334afcfSToomas Soome /// 2362*f334afcfSToomas Soome /// "TPM2" Trusted Computing Platform 1 Table 2363*f334afcfSToomas Soome /// 2364*f334afcfSToomas Soome #define EFI_ACPI_6_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2') 2365*f334afcfSToomas Soome 2366*f334afcfSToomas Soome /// 2367*f334afcfSToomas Soome /// "UEFI" UEFI ACPI Data Table 2368*f334afcfSToomas Soome /// 2369*f334afcfSToomas Soome #define EFI_ACPI_6_0_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I') 2370*f334afcfSToomas Soome 2371*f334afcfSToomas Soome /// 2372*f334afcfSToomas Soome /// "WAET" Windows ACPI Emulated Devices Table 2373*f334afcfSToomas Soome /// 2374*f334afcfSToomas Soome #define EFI_ACPI_6_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T') 2375*f334afcfSToomas Soome 2376*f334afcfSToomas Soome /// 2377*f334afcfSToomas Soome /// "WDAT" Watchdog Action Table 2378*f334afcfSToomas Soome /// 2379*f334afcfSToomas Soome #define EFI_ACPI_6_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T') 2380*f334afcfSToomas Soome 2381*f334afcfSToomas Soome /// 2382*f334afcfSToomas Soome /// "WDRT" Watchdog Resource Table 2383*f334afcfSToomas Soome /// 2384*f334afcfSToomas Soome #define EFI_ACPI_6_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T') 2385*f334afcfSToomas Soome 2386*f334afcfSToomas Soome /// 2387*f334afcfSToomas Soome /// "WPBT" MS Platform Binary Table 2388*f334afcfSToomas Soome /// 2389*f334afcfSToomas Soome #define EFI_ACPI_6_0_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T') 2390*f334afcfSToomas Soome 2391*f334afcfSToomas Soome /// 2392*f334afcfSToomas Soome /// "XENV" Xen Project Table 2393*f334afcfSToomas Soome /// 2394*f334afcfSToomas Soome #define EFI_ACPI_6_0_XEN_PROJECT_TABLE_SIGNATURE SIGNATURE_32('X', 'E', 'N', 'V') 2395*f334afcfSToomas Soome 2396*f334afcfSToomas Soome #pragma pack() 2397*f334afcfSToomas Soome 2398*f334afcfSToomas Soome #endif 2399