1*f334afcfSToomas Soome /** @file 2*f334afcfSToomas Soome ACPI 6.1 definitions from the ACPI Specification Revision 6.1 January, 2016. 3*f334afcfSToomas Soome 4*f334afcfSToomas Soome Copyright (c) 2016 - 2022, Intel Corporation. All rights reserved.<BR> 5*f334afcfSToomas Soome (C) Copyright 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_1_H_ 11*f334afcfSToomas Soome #define _ACPI_6_1_H_ 12*f334afcfSToomas Soome 13*f334afcfSToomas Soome #include <IndustryStandard/Acpi60.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.1 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_1_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_1_SYSTEM_MEMORY 0 35*f334afcfSToomas Soome #define EFI_ACPI_6_1_SYSTEM_IO 1 36*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCI_CONFIGURATION_SPACE 2 37*f334afcfSToomas Soome #define EFI_ACPI_6_1_EMBEDDED_CONTROLLER 3 38*f334afcfSToomas Soome #define EFI_ACPI_6_1_SMBUS 4 39*f334afcfSToomas Soome #define EFI_ACPI_6_1_PLATFORM_COMMUNICATION_CHANNEL 0x0A 40*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_UNDEFINED 0 46*f334afcfSToomas Soome #define EFI_ACPI_6_1_BYTE 1 47*f334afcfSToomas Soome #define EFI_ACPI_6_1_WORD 2 48*f334afcfSToomas Soome #define EFI_ACPI_6_1_DWORD 3 49*f334afcfSToomas Soome #define EFI_ACPI_6_1_QWORD 4 50*f334afcfSToomas Soome 51*f334afcfSToomas Soome // 52*f334afcfSToomas Soome // ACPI 6.1 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_1_ROOT_SYSTEM_DESCRIPTION_POINTER; 69*f334afcfSToomas Soome 70*f334afcfSToomas Soome /// 71*f334afcfSToomas Soome /// RSD_PTR Revision (as defined in ACPI 6.1 spec.) 72*f334afcfSToomas Soome /// 73*f334afcfSToomas Soome #define EFI_ACPI_6_1_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 6.1) 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_1_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.1 spec.) 92*f334afcfSToomas Soome /// 93*f334afcfSToomas Soome #define EFI_ACPI_6_1_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.1 spec.) 103*f334afcfSToomas Soome /// 104*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; 156*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; 157*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; 158*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; 159*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; 160*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; 161*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; 162*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; 163*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE SleepControlReg; 164*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE SleepStatusReg; 165*f334afcfSToomas Soome UINT64 HypervisorVendorIdentity; 166*f334afcfSToomas Soome } EFI_ACPI_6_1_FIXED_ACPI_DESCRIPTION_TABLE; 167*f334afcfSToomas Soome 168*f334afcfSToomas Soome /// 169*f334afcfSToomas Soome /// FADT Version (as defined in ACPI 6.1 spec.) 170*f334afcfSToomas Soome /// 171*f334afcfSToomas Soome #define EFI_ACPI_6_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x06 172*f334afcfSToomas Soome #define EFI_ACPI_6_1_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x01 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_1_PM_PROFILE_UNSPECIFIED 0 178*f334afcfSToomas Soome #define EFI_ACPI_6_1_PM_PROFILE_DESKTOP 1 179*f334afcfSToomas Soome #define EFI_ACPI_6_1_PM_PROFILE_MOBILE 2 180*f334afcfSToomas Soome #define EFI_ACPI_6_1_PM_PROFILE_WORKSTATION 3 181*f334afcfSToomas Soome #define EFI_ACPI_6_1_PM_PROFILE_ENTERPRISE_SERVER 4 182*f334afcfSToomas Soome #define EFI_ACPI_6_1_PM_PROFILE_SOHO_SERVER 5 183*f334afcfSToomas Soome #define EFI_ACPI_6_1_PM_PROFILE_APPLIANCE_PC 6 184*f334afcfSToomas Soome #define EFI_ACPI_6_1_PM_PROFILE_PERFORMANCE_SERVER 7 185*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_LEGACY_DEVICES BIT0 192*f334afcfSToomas Soome #define EFI_ACPI_6_1_8042 BIT1 193*f334afcfSToomas Soome #define EFI_ACPI_6_1_VGA_NOT_PRESENT BIT2 194*f334afcfSToomas Soome #define EFI_ACPI_6_1_MSI_NOT_SUPPORTED BIT3 195*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCIE_ASPM_CONTROLS BIT4 196*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_ARM_PSCI_COMPLIANT BIT0 203*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_WBINVD BIT0 210*f334afcfSToomas Soome #define EFI_ACPI_6_1_WBINVD_FLUSH BIT1 211*f334afcfSToomas Soome #define EFI_ACPI_6_1_PROC_C1 BIT2 212*f334afcfSToomas Soome #define EFI_ACPI_6_1_P_LVL2_UP BIT3 213*f334afcfSToomas Soome #define EFI_ACPI_6_1_PWR_BUTTON BIT4 214*f334afcfSToomas Soome #define EFI_ACPI_6_1_SLP_BUTTON BIT5 215*f334afcfSToomas Soome #define EFI_ACPI_6_1_FIX_RTC BIT6 216*f334afcfSToomas Soome #define EFI_ACPI_6_1_RTC_S4 BIT7 217*f334afcfSToomas Soome #define EFI_ACPI_6_1_TMR_VAL_EXT BIT8 218*f334afcfSToomas Soome #define EFI_ACPI_6_1_DCK_CAP BIT9 219*f334afcfSToomas Soome #define EFI_ACPI_6_1_RESET_REG_SUP BIT10 220*f334afcfSToomas Soome #define EFI_ACPI_6_1_SEALED_CASE BIT11 221*f334afcfSToomas Soome #define EFI_ACPI_6_1_HEADLESS BIT12 222*f334afcfSToomas Soome #define EFI_ACPI_6_1_CPU_SW_SLP BIT13 223*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCI_EXP_WAK BIT14 224*f334afcfSToomas Soome #define EFI_ACPI_6_1_USE_PLATFORM_CLOCK BIT15 225*f334afcfSToomas Soome #define EFI_ACPI_6_1_S4_RTC_STS_VALID BIT16 226*f334afcfSToomas Soome #define EFI_ACPI_6_1_REMOTE_POWER_ON_CAPABLE BIT17 227*f334afcfSToomas Soome #define EFI_ACPI_6_1_FORCE_APIC_CLUSTER_MODEL BIT18 228*f334afcfSToomas Soome #define EFI_ACPI_6_1_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19 229*f334afcfSToomas Soome #define EFI_ACPI_6_1_HW_REDUCED_ACPI BIT20 230*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_FIRMWARE_ACPI_CONTROL_STRUCTURE; 248*f334afcfSToomas Soome 249*f334afcfSToomas Soome /// 250*f334afcfSToomas Soome /// FACS Version (as defined in ACPI 6.1 spec.) 251*f334afcfSToomas Soome /// 252*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_S4BIOS_F BIT0 259*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 275*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; 286*f334afcfSToomas Soome 287*f334afcfSToomas Soome /// 288*f334afcfSToomas Soome /// MADT Revision (as defined in ACPI 6.1 spec.) 289*f334afcfSToomas Soome /// 290*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_PROCESSOR_LOCAL_APIC 0x00 304*f334afcfSToomas Soome #define EFI_ACPI_6_1_IO_APIC 0x01 305*f334afcfSToomas Soome #define EFI_ACPI_6_1_INTERRUPT_SOURCE_OVERRIDE 0x02 306*f334afcfSToomas Soome #define EFI_ACPI_6_1_NON_MASKABLE_INTERRUPT_SOURCE 0x03 307*f334afcfSToomas Soome #define EFI_ACPI_6_1_LOCAL_APIC_NMI 0x04 308*f334afcfSToomas Soome #define EFI_ACPI_6_1_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 309*f334afcfSToomas Soome #define EFI_ACPI_6_1_IO_SAPIC 0x06 310*f334afcfSToomas Soome #define EFI_ACPI_6_1_LOCAL_SAPIC 0x07 311*f334afcfSToomas Soome #define EFI_ACPI_6_1_PLATFORM_INTERRUPT_SOURCES 0x08 312*f334afcfSToomas Soome #define EFI_ACPI_6_1_PROCESSOR_LOCAL_X2APIC 0x09 313*f334afcfSToomas Soome #define EFI_ACPI_6_1_LOCAL_X2APIC_NMI 0x0A 314*f334afcfSToomas Soome #define EFI_ACPI_6_1_GIC 0x0B 315*f334afcfSToomas Soome #define EFI_ACPI_6_1_GICD 0x0C 316*f334afcfSToomas Soome #define EFI_ACPI_6_1_GIC_MSI_FRAME 0x0D 317*f334afcfSToomas Soome #define EFI_ACPI_6_1_GICR 0x0E 318*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_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_1_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_1_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_1_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_1_POLARITY (3 << 0) 386*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_GIC_ENABLED BIT0 518*f334afcfSToomas Soome #define EFI_ACPI_6_1_PERFORMANCE_INTERRUPT_MODEL BIT1 519*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_GIC_DISTRIBUTOR_STRUCTURE; 534*f334afcfSToomas Soome 535*f334afcfSToomas Soome /// 536*f334afcfSToomas Soome /// GIC Version 537*f334afcfSToomas Soome /// 538*f334afcfSToomas Soome #define EFI_ACPI_6_1_GIC_V1 0x01 539*f334afcfSToomas Soome #define EFI_ACPI_6_1_GIC_V2 0x02 540*f334afcfSToomas Soome #define EFI_ACPI_6_1_GIC_V3 0x03 541*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_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_1_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_1_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_1_SMART_BATTERY_DESCRIPTION_TABLE; 594*f334afcfSToomas Soome 595*f334afcfSToomas Soome /// 596*f334afcfSToomas Soome /// SBST Version (as defined in ACPI 6.1 spec.) 597*f334afcfSToomas Soome /// 598*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_GENERIC_ADDRESS_STRUCTURE EcControl; 608*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE EcData; 609*f334afcfSToomas Soome UINT32 Uid; 610*f334afcfSToomas Soome UINT8 GpeBit; 611*f334afcfSToomas Soome } EFI_ACPI_6_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; 612*f334afcfSToomas Soome 613*f334afcfSToomas Soome /// 614*f334afcfSToomas Soome /// ECDT Version (as defined in ACPI 6.1 spec.) 615*f334afcfSToomas Soome /// 616*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER; 627*f334afcfSToomas Soome 628*f334afcfSToomas Soome /// 629*f334afcfSToomas Soome /// SRAT Version (as defined in ACPI 6.1 spec.) 630*f334afcfSToomas Soome /// 631*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00 639*f334afcfSToomas Soome #define EFI_ACPI_6_1_MEMORY_AFFINITY 0x01 640*f334afcfSToomas Soome #define EFI_ACPI_6_1_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02 641*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_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_1_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_1_MEMORY_ENABLED (1 << 0) 683*f334afcfSToomas Soome #define EFI_ACPI_6_1_MEMORY_HOT_PLUGGABLE (1 << 1) 684*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_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_1_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_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER; 725*f334afcfSToomas Soome 726*f334afcfSToomas Soome /// 727*f334afcfSToomas Soome /// SLIT Version (as defined in ACPI 6.1 spec.) 728*f334afcfSToomas Soome /// 729*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER; 738*f334afcfSToomas Soome 739*f334afcfSToomas Soome /// 740*f334afcfSToomas Soome /// CPEP Version (as defined in ACPI 6.1 spec.) 741*f334afcfSToomas Soome /// 742*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_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_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER; 770*f334afcfSToomas Soome 771*f334afcfSToomas Soome /// 772*f334afcfSToomas Soome /// MSCT Version (as defined in ACPI 6.1 spec.) 773*f334afcfSToomas Soome /// 774*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_RAS_FEATURE_TABLE; 795*f334afcfSToomas Soome 796*f334afcfSToomas Soome /// 797*f334afcfSToomas Soome /// RASF Version (as defined in ACPI 6.1 spec.) 798*f334afcfSToomas Soome /// 799*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_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_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01 824*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01 844*f334afcfSToomas Soome #define EFI_ACPI_6_1_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02 845*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_MEMORY_POWER_STATUS_TABLE; 857*f334afcfSToomas Soome 858*f334afcfSToomas Soome /// 859*f334afcfSToomas Soome /// MPST Version (as defined in ACPI 6.1 spec.) 860*f334afcfSToomas Soome /// 861*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_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_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01 887*f334afcfSToomas Soome #define EFI_ACPI_6_1_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02 888*f334afcfSToomas Soome #define EFI_ACPI_6_1_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03 889*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates]; 909*f334afcfSToomas Soome // UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents]; 910*f334afcfSToomas Soome } EFI_ACPI_6_1_MPST_MEMORY_POWER_STRUCTURE; 911*f334afcfSToomas Soome 912*f334afcfSToomas Soome #define EFI_ACPI_6_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01 913*f334afcfSToomas Soome #define EFI_ACPI_6_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02 914*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE; 932*f334afcfSToomas Soome 933*f334afcfSToomas Soome #define EFI_ACPI_6_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01 934*f334afcfSToomas Soome #define EFI_ACPI_6_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02 935*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_MEMORY_TOPOLOGY_TABLE; 949*f334afcfSToomas Soome 950*f334afcfSToomas Soome /// 951*f334afcfSToomas Soome /// PMTT Version (as defined in ACPI 6.1 spec.) 952*f334afcfSToomas Soome /// 953*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x0 970*f334afcfSToomas Soome #define EFI_ACPI_6_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x1 971*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; 978*f334afcfSToomas Soome UINT16 SocketIdentifier; 979*f334afcfSToomas Soome UINT16 Reserved; 980*f334afcfSToomas Soome // EFI_ACPI_6_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[]; 981*f334afcfSToomas Soome } EFI_ACPI_6_1_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_1_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_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[]; 998*f334afcfSToomas Soome } EFI_ACPI_6_1_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_1_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_1_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_1_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_1_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_1_BGRT_VERSION 0x01 1060*f334afcfSToomas Soome 1061*f334afcfSToomas Soome /// 1062*f334afcfSToomas Soome /// BGRT Status 1063*f334afcfSToomas Soome /// 1064*f334afcfSToomas Soome #define EFI_ACPI_6_1_BGRT_STATUS_NOT_DISPLAYED 0x00 1065*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_BGRT_IMAGE_TYPE_BMP 0x00 1071*f334afcfSToomas Soome 1072*f334afcfSToomas Soome /// 1073*f334afcfSToomas Soome /// FPDT Version (as defined in ACPI 6.1 spec.) 1074*f334afcfSToomas Soome /// 1075*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000 1081*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01 1087*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000 1093*f334afcfSToomas Soome #define EFI_ACPI_6_1_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001 1094*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01 1100*f334afcfSToomas Soome #define EFI_ACPI_6_1_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01 1101*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_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_1_GENERIC_TIMER_DESCRIPTION_TABLE; 1276*f334afcfSToomas Soome 1277*f334afcfSToomas Soome /// 1278*f334afcfSToomas Soome /// GTDT Version (as defined in ACPI 6.1 spec.) 1279*f334afcfSToomas Soome /// 1280*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 1286*f334afcfSToomas Soome #define EFI_ACPI_6_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 1287*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_GTDT_GT_BLOCK 0 1293*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_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_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 1326*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER BIT0 1332*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE BIT0 1351*f334afcfSToomas Soome #define EFI_ACPI_6_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY BIT1 1352*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_NVDIMM_FIRMWARE_INTERFACE_TABLE; 1361*f334afcfSToomas Soome 1362*f334afcfSToomas Soome // 1363*f334afcfSToomas Soome // NFIT Version (as defined in ACPI 6.1 spec.) 1364*f334afcfSToomas Soome // 1365*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE_TYPE 0 1371*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_NVDIMM_REGION_MAPPING_STRUCTURE_TYPE 1 1372*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_INTERLEAVE_STRUCTURE_TYPE 2 1373*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE_TYPE 3 1374*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE_TYPE 4 1375*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE_TYPE 5 1376*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT BIT0 1390*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID BIT1 1391*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_GUID_VOLATILE_MEMORY_REGION { 0x7305944F, 0xFDDA, 0x44E3, { 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0 }} 1392*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_NFIT_GUID_NVDIMM_CONTROL_REGION { 0x92F701F6, 0x13B4, 0x405D, { 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C }} 1394*f334afcfSToomas Soome #define EFI_ACPI_6_1_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_1_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_1_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_1_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_1_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_1_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_1_NFIT_DEVICE_HANDLE; 1423*f334afcfSToomas Soome 1424*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_MEMORY_DEVICE_STATE_FLAGS_PREVIOUS_SAVE_FAIL BIT0 1425*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_MEMORY_DEVICE_STATE_FLAGS_LAST_RESTORE_FAIL BIT1 1426*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_MEMORY_DEVICE_STATE_FLAGS_PLATFORM_FLUSH_FAIL BIT2 1427*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_MEMORY_DEVICE_STATE_FLAGS_NOT_ARMED_PRIOR_TO_OSPM_HAND_OFF BIT3 1428*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_MEMORY_DEVICE_STATE_FLAGS_SMART_HEALTH_EVENTS_PRIOR_OSPM_HAND_OFF BIT4 1429*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_ENABLED_TO_NOTIFY_OSPM_ON_SMART_HEALTH_EVENTS BIT5 1430*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_NOT_MAP_NVDIMM_TO_SPA BIT6 1431*f334afcfSToomas Soome typedef struct { 1432*f334afcfSToomas Soome UINT16 Type; 1433*f334afcfSToomas Soome UINT16 Length; 1434*f334afcfSToomas Soome EFI_ACPI_6_1_NFIT_DEVICE_HANDLE NFITDeviceHandle; 1435*f334afcfSToomas Soome UINT16 NVDIMMPhysicalID; 1436*f334afcfSToomas Soome UINT16 NVDIMMRegionID; 1437*f334afcfSToomas Soome UINT16 SPARangeStructureIndex; 1438*f334afcfSToomas Soome UINT16 NVDIMMControlRegionStructureIndex; 1439*f334afcfSToomas Soome UINT64 NVDIMMRegionSize; 1440*f334afcfSToomas Soome UINT64 RegionOffset; 1441*f334afcfSToomas Soome UINT64 NVDIMMPhysicalAddressRegionBase; 1442*f334afcfSToomas Soome UINT16 InterleaveStructureIndex; 1443*f334afcfSToomas Soome UINT16 InterleaveWays; 1444*f334afcfSToomas Soome UINT16 NVDIMMStateFlags; 1445*f334afcfSToomas Soome UINT16 Reserved_46; 1446*f334afcfSToomas Soome } EFI_ACPI_6_1_NFIT_NVDIMM_REGION_MAPPING_STRUCTURE; 1447*f334afcfSToomas Soome 1448*f334afcfSToomas Soome // 1449*f334afcfSToomas Soome // Definition for Interleave Structure 1450*f334afcfSToomas Soome // 1451*f334afcfSToomas Soome typedef struct { 1452*f334afcfSToomas Soome UINT16 Type; 1453*f334afcfSToomas Soome UINT16 Length; 1454*f334afcfSToomas Soome UINT16 InterleaveStructureIndex; 1455*f334afcfSToomas Soome UINT16 Reserved_6; 1456*f334afcfSToomas Soome UINT32 NumberOfLines; 1457*f334afcfSToomas Soome UINT32 LineSize; 1458*f334afcfSToomas Soome // UINT32 LineOffset[NumberOfLines]; 1459*f334afcfSToomas Soome } EFI_ACPI_6_1_NFIT_INTERLEAVE_STRUCTURE; 1460*f334afcfSToomas Soome 1461*f334afcfSToomas Soome // 1462*f334afcfSToomas Soome // Definition for SMBIOS Management Information Structure 1463*f334afcfSToomas Soome // 1464*f334afcfSToomas Soome typedef struct { 1465*f334afcfSToomas Soome UINT16 Type; 1466*f334afcfSToomas Soome UINT16 Length; 1467*f334afcfSToomas Soome UINT32 Reserved_4; 1468*f334afcfSToomas Soome // UINT8 Data[]; 1469*f334afcfSToomas Soome } EFI_ACPI_6_1_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE; 1470*f334afcfSToomas Soome 1471*f334afcfSToomas Soome // 1472*f334afcfSToomas Soome // Definition for NVDIMM Control Region Structure 1473*f334afcfSToomas Soome // 1474*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_NVDIMM_CONTROL_REGION_VALID_FIELDS_MANUFACTURING BIT0 1475*f334afcfSToomas Soome 1476*f334afcfSToomas Soome #define EFI_ACPI_6_1_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED BIT0 1477*f334afcfSToomas Soome typedef struct { 1478*f334afcfSToomas Soome UINT16 Type; 1479*f334afcfSToomas Soome UINT16 Length; 1480*f334afcfSToomas Soome UINT16 NVDIMMControlRegionStructureIndex; 1481*f334afcfSToomas Soome UINT16 VendorID; 1482*f334afcfSToomas Soome UINT16 DeviceID; 1483*f334afcfSToomas Soome UINT16 RevisionID; 1484*f334afcfSToomas Soome UINT16 SubsystemVendorID; 1485*f334afcfSToomas Soome UINT16 SubsystemDeviceID; 1486*f334afcfSToomas Soome UINT16 SubsystemRevisionID; 1487*f334afcfSToomas Soome UINT8 ValidFields; 1488*f334afcfSToomas Soome UINT8 ManufacturingLocation; 1489*f334afcfSToomas Soome UINT16 ManufacturingDate; 1490*f334afcfSToomas Soome UINT8 Reserved_22[2]; 1491*f334afcfSToomas Soome UINT32 SerialNumber; 1492*f334afcfSToomas Soome UINT16 RegionFormatInterfaceCode; 1493*f334afcfSToomas Soome UINT16 NumberOfBlockControlWindows; 1494*f334afcfSToomas Soome UINT64 SizeOfBlockControlWindow; 1495*f334afcfSToomas Soome UINT64 CommandRegisterOffsetInBlockControlWindow; 1496*f334afcfSToomas Soome UINT64 SizeOfCommandRegisterInBlockControlWindows; 1497*f334afcfSToomas Soome UINT64 StatusRegisterOffsetInBlockControlWindow; 1498*f334afcfSToomas Soome UINT64 SizeOfStatusRegisterInBlockControlWindows; 1499*f334afcfSToomas Soome UINT16 NVDIMMControlRegionFlag; 1500*f334afcfSToomas Soome UINT8 Reserved_74[6]; 1501*f334afcfSToomas Soome } EFI_ACPI_6_1_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE; 1502*f334afcfSToomas Soome 1503*f334afcfSToomas Soome // 1504*f334afcfSToomas Soome // Definition for NVDIMM Block Data Window Region Structure 1505*f334afcfSToomas Soome // 1506*f334afcfSToomas Soome typedef struct { 1507*f334afcfSToomas Soome UINT16 Type; 1508*f334afcfSToomas Soome UINT16 Length; 1509*f334afcfSToomas Soome UINT16 NVDIMMControlRegionStructureIndex; 1510*f334afcfSToomas Soome UINT16 NumberOfBlockDataWindows; 1511*f334afcfSToomas Soome UINT64 BlockDataWindowStartOffset; 1512*f334afcfSToomas Soome UINT64 SizeOfBlockDataWindow; 1513*f334afcfSToomas Soome UINT64 BlockAccessibleMemoryCapacity; 1514*f334afcfSToomas Soome UINT64 BeginningAddressOfFirstBlockInBlockAccessibleMemory; 1515*f334afcfSToomas Soome } EFI_ACPI_6_1_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE; 1516*f334afcfSToomas Soome 1517*f334afcfSToomas Soome // 1518*f334afcfSToomas Soome // Definition for Flush Hint Address Structure 1519*f334afcfSToomas Soome // 1520*f334afcfSToomas Soome typedef struct { 1521*f334afcfSToomas Soome UINT16 Type; 1522*f334afcfSToomas Soome UINT16 Length; 1523*f334afcfSToomas Soome EFI_ACPI_6_1_NFIT_DEVICE_HANDLE NFITDeviceHandle; 1524*f334afcfSToomas Soome UINT16 NumberOfFlushHintAddresses; 1525*f334afcfSToomas Soome UINT8 Reserved_10[6]; 1526*f334afcfSToomas Soome // UINT64 FlushHintAddress[NumberOfFlushHintAddresses]; 1527*f334afcfSToomas Soome } EFI_ACPI_6_1_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE; 1528*f334afcfSToomas Soome 1529*f334afcfSToomas Soome /// 1530*f334afcfSToomas Soome /// Boot Error Record Table (BERT) 1531*f334afcfSToomas Soome /// 1532*f334afcfSToomas Soome typedef struct { 1533*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1534*f334afcfSToomas Soome UINT32 BootErrorRegionLength; 1535*f334afcfSToomas Soome UINT64 BootErrorRegion; 1536*f334afcfSToomas Soome } EFI_ACPI_6_1_BOOT_ERROR_RECORD_TABLE_HEADER; 1537*f334afcfSToomas Soome 1538*f334afcfSToomas Soome /// 1539*f334afcfSToomas Soome /// BERT Version (as defined in ACPI 6.1 spec.) 1540*f334afcfSToomas Soome /// 1541*f334afcfSToomas Soome #define EFI_ACPI_6_1_BOOT_ERROR_RECORD_TABLE_REVISION 0x01 1542*f334afcfSToomas Soome 1543*f334afcfSToomas Soome /// 1544*f334afcfSToomas Soome /// Boot Error Region Block Status Definition 1545*f334afcfSToomas Soome /// 1546*f334afcfSToomas Soome typedef struct { 1547*f334afcfSToomas Soome UINT32 UncorrectableErrorValid : 1; 1548*f334afcfSToomas Soome UINT32 CorrectableErrorValid : 1; 1549*f334afcfSToomas Soome UINT32 MultipleUncorrectableErrors : 1; 1550*f334afcfSToomas Soome UINT32 MultipleCorrectableErrors : 1; 1551*f334afcfSToomas Soome UINT32 ErrorDataEntryCount : 10; 1552*f334afcfSToomas Soome UINT32 Reserved : 18; 1553*f334afcfSToomas Soome } EFI_ACPI_6_1_ERROR_BLOCK_STATUS; 1554*f334afcfSToomas Soome 1555*f334afcfSToomas Soome /// 1556*f334afcfSToomas Soome /// Boot Error Region Definition 1557*f334afcfSToomas Soome /// 1558*f334afcfSToomas Soome typedef struct { 1559*f334afcfSToomas Soome EFI_ACPI_6_1_ERROR_BLOCK_STATUS BlockStatus; 1560*f334afcfSToomas Soome UINT32 RawDataOffset; 1561*f334afcfSToomas Soome UINT32 RawDataLength; 1562*f334afcfSToomas Soome UINT32 DataLength; 1563*f334afcfSToomas Soome UINT32 ErrorSeverity; 1564*f334afcfSToomas Soome } EFI_ACPI_6_1_BOOT_ERROR_REGION_STRUCTURE; 1565*f334afcfSToomas Soome 1566*f334afcfSToomas Soome // 1567*f334afcfSToomas Soome // Boot Error Severity types 1568*f334afcfSToomas Soome // 1569*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERROR_SEVERITY_RECOVERABLE 0x00 1570*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERROR_SEVERITY_FATAL 0x01 1571*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERROR_SEVERITY_CORRECTED 0x02 1572*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERROR_SEVERITY_NONE 0x03 1573*f334afcfSToomas Soome // 1574*f334afcfSToomas Soome // The term 'Correctable' is no longer being used as an error severity of the 1575*f334afcfSToomas Soome // reported error since ACPI Specification Version 5.1 Errata B. 1576*f334afcfSToomas Soome // The below macro is considered as deprecated and should no longer be used. 1577*f334afcfSToomas Soome // 1578*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERROR_SEVERITY_CORRECTABLE 0x00 1579*f334afcfSToomas Soome 1580*f334afcfSToomas Soome /// 1581*f334afcfSToomas Soome /// Generic Error Data Entry Definition 1582*f334afcfSToomas Soome /// 1583*f334afcfSToomas Soome typedef struct { 1584*f334afcfSToomas Soome UINT8 SectionType[16]; 1585*f334afcfSToomas Soome UINT32 ErrorSeverity; 1586*f334afcfSToomas Soome UINT16 Revision; 1587*f334afcfSToomas Soome UINT8 ValidationBits; 1588*f334afcfSToomas Soome UINT8 Flags; 1589*f334afcfSToomas Soome UINT32 ErrorDataLength; 1590*f334afcfSToomas Soome UINT8 FruId[16]; 1591*f334afcfSToomas Soome UINT8 FruText[20]; 1592*f334afcfSToomas Soome UINT8 Timestamp[8]; 1593*f334afcfSToomas Soome } EFI_ACPI_6_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE; 1594*f334afcfSToomas Soome 1595*f334afcfSToomas Soome /// 1596*f334afcfSToomas Soome /// Generic Error Data Entry Version (as defined in ACPI 6.1 spec.) 1597*f334afcfSToomas Soome /// 1598*f334afcfSToomas Soome #define EFI_ACPI_6_1_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0300 1599*f334afcfSToomas Soome 1600*f334afcfSToomas Soome /// 1601*f334afcfSToomas Soome /// HEST - Hardware Error Source Table 1602*f334afcfSToomas Soome /// 1603*f334afcfSToomas Soome typedef struct { 1604*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1605*f334afcfSToomas Soome UINT32 ErrorSourceCount; 1606*f334afcfSToomas Soome } EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER; 1607*f334afcfSToomas Soome 1608*f334afcfSToomas Soome /// 1609*f334afcfSToomas Soome /// HEST Version (as defined in ACPI 6.1 spec.) 1610*f334afcfSToomas Soome /// 1611*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01 1612*f334afcfSToomas Soome 1613*f334afcfSToomas Soome // 1614*f334afcfSToomas Soome // Error Source structure types. 1615*f334afcfSToomas Soome // 1616*f334afcfSToomas Soome #define EFI_ACPI_6_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00 1617*f334afcfSToomas Soome #define EFI_ACPI_6_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01 1618*f334afcfSToomas Soome #define EFI_ACPI_6_1_IA32_ARCHITECTURE_NMI_ERROR 0x02 1619*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCI_EXPRESS_ROOT_PORT_AER 0x06 1620*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCI_EXPRESS_DEVICE_AER 0x07 1621*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCI_EXPRESS_BRIDGE_AER 0x08 1622*f334afcfSToomas Soome #define EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR 0x09 1623*f334afcfSToomas Soome #define EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_VERSION_2 0x0A 1624*f334afcfSToomas Soome 1625*f334afcfSToomas Soome // 1626*f334afcfSToomas Soome // Error Source structure flags. 1627*f334afcfSToomas Soome // 1628*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0) 1629*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERROR_SOURCE_FLAG_GLOBAL (1 << 1) 1630*f334afcfSToomas Soome 1631*f334afcfSToomas Soome /// 1632*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Exception Structure Definition 1633*f334afcfSToomas Soome /// 1634*f334afcfSToomas Soome typedef struct { 1635*f334afcfSToomas Soome UINT16 Type; 1636*f334afcfSToomas Soome UINT16 SourceId; 1637*f334afcfSToomas Soome UINT8 Reserved0[2]; 1638*f334afcfSToomas Soome UINT8 Flags; 1639*f334afcfSToomas Soome UINT8 Enabled; 1640*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1641*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1642*f334afcfSToomas Soome UINT64 GlobalCapabilityInitData; 1643*f334afcfSToomas Soome UINT64 GlobalControlInitData; 1644*f334afcfSToomas Soome UINT8 NumberOfHardwareBanks; 1645*f334afcfSToomas Soome UINT8 Reserved1[7]; 1646*f334afcfSToomas Soome } EFI_ACPI_6_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE; 1647*f334afcfSToomas Soome 1648*f334afcfSToomas Soome /// 1649*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Bank Structure Definition 1650*f334afcfSToomas Soome /// 1651*f334afcfSToomas Soome typedef struct { 1652*f334afcfSToomas Soome UINT8 BankNumber; 1653*f334afcfSToomas Soome UINT8 ClearStatusOnInitialization; 1654*f334afcfSToomas Soome UINT8 StatusDataFormat; 1655*f334afcfSToomas Soome UINT8 Reserved0; 1656*f334afcfSToomas Soome UINT32 ControlRegisterMsrAddress; 1657*f334afcfSToomas Soome UINT64 ControlInitData; 1658*f334afcfSToomas Soome UINT32 StatusRegisterMsrAddress; 1659*f334afcfSToomas Soome UINT32 AddressRegisterMsrAddress; 1660*f334afcfSToomas Soome UINT32 MiscRegisterMsrAddress; 1661*f334afcfSToomas Soome } EFI_ACPI_6_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE; 1662*f334afcfSToomas Soome 1663*f334afcfSToomas Soome /// 1664*f334afcfSToomas Soome /// IA-32 Architecture Machine Check Bank Structure MCA data format 1665*f334afcfSToomas Soome /// 1666*f334afcfSToomas Soome #define EFI_ACPI_6_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00 1667*f334afcfSToomas Soome #define EFI_ACPI_6_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01 1668*f334afcfSToomas Soome #define EFI_ACPI_6_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02 1669*f334afcfSToomas Soome 1670*f334afcfSToomas Soome // 1671*f334afcfSToomas Soome // Hardware Error Notification types. All other values are reserved 1672*f334afcfSToomas Soome // 1673*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00 1674*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01 1675*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02 1676*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_SCI 0x03 1677*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_NMI 0x04 1678*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_CMCI 0x05 1679*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_MCE 0x06 1680*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_GPIO_SIGNAL 0x07 1681*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_ARMV8_SEA 0x08 1682*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_ARMV8_SEI 0x09 1683*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_GSIV 0x0A 1684*f334afcfSToomas Soome 1685*f334afcfSToomas Soome /// 1686*f334afcfSToomas Soome /// Hardware Error Notification Configuration Write Enable Structure Definition 1687*f334afcfSToomas Soome /// 1688*f334afcfSToomas Soome typedef struct { 1689*f334afcfSToomas Soome UINT16 Type : 1; 1690*f334afcfSToomas Soome UINT16 PollInterval : 1; 1691*f334afcfSToomas Soome UINT16 SwitchToPollingThresholdValue : 1; 1692*f334afcfSToomas Soome UINT16 SwitchToPollingThresholdWindow : 1; 1693*f334afcfSToomas Soome UINT16 ErrorThresholdValue : 1; 1694*f334afcfSToomas Soome UINT16 ErrorThresholdWindow : 1; 1695*f334afcfSToomas Soome UINT16 Reserved : 10; 1696*f334afcfSToomas Soome } EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE; 1697*f334afcfSToomas Soome 1698*f334afcfSToomas Soome /// 1699*f334afcfSToomas Soome /// Hardware Error Notification Structure Definition 1700*f334afcfSToomas Soome /// 1701*f334afcfSToomas Soome typedef struct { 1702*f334afcfSToomas Soome UINT8 Type; 1703*f334afcfSToomas Soome UINT8 Length; 1704*f334afcfSToomas Soome EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable; 1705*f334afcfSToomas Soome UINT32 PollInterval; 1706*f334afcfSToomas Soome UINT32 Vector; 1707*f334afcfSToomas Soome UINT32 SwitchToPollingThresholdValue; 1708*f334afcfSToomas Soome UINT32 SwitchToPollingThresholdWindow; 1709*f334afcfSToomas Soome UINT32 ErrorThresholdValue; 1710*f334afcfSToomas Soome UINT32 ErrorThresholdWindow; 1711*f334afcfSToomas Soome } EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE; 1712*f334afcfSToomas Soome 1713*f334afcfSToomas Soome /// 1714*f334afcfSToomas Soome /// IA-32 Architecture Corrected Machine Check Structure Definition 1715*f334afcfSToomas Soome /// 1716*f334afcfSToomas Soome typedef struct { 1717*f334afcfSToomas Soome UINT16 Type; 1718*f334afcfSToomas Soome UINT16 SourceId; 1719*f334afcfSToomas Soome UINT8 Reserved0[2]; 1720*f334afcfSToomas Soome UINT8 Flags; 1721*f334afcfSToomas Soome UINT8 Enabled; 1722*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1723*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1724*f334afcfSToomas Soome EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 1725*f334afcfSToomas Soome UINT8 NumberOfHardwareBanks; 1726*f334afcfSToomas Soome UINT8 Reserved1[3]; 1727*f334afcfSToomas Soome } EFI_ACPI_6_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE; 1728*f334afcfSToomas Soome 1729*f334afcfSToomas Soome /// 1730*f334afcfSToomas Soome /// IA-32 Architecture NMI Error Structure Definition 1731*f334afcfSToomas Soome /// 1732*f334afcfSToomas Soome typedef struct { 1733*f334afcfSToomas Soome UINT16 Type; 1734*f334afcfSToomas Soome UINT16 SourceId; 1735*f334afcfSToomas Soome UINT8 Reserved0[2]; 1736*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1737*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1738*f334afcfSToomas Soome UINT32 MaxRawDataLength; 1739*f334afcfSToomas Soome } EFI_ACPI_6_1_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE; 1740*f334afcfSToomas Soome 1741*f334afcfSToomas Soome /// 1742*f334afcfSToomas Soome /// PCI Express Root Port AER Structure Definition 1743*f334afcfSToomas Soome /// 1744*f334afcfSToomas Soome typedef struct { 1745*f334afcfSToomas Soome UINT16 Type; 1746*f334afcfSToomas Soome UINT16 SourceId; 1747*f334afcfSToomas Soome UINT8 Reserved0[2]; 1748*f334afcfSToomas Soome UINT8 Flags; 1749*f334afcfSToomas Soome UINT8 Enabled; 1750*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1751*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1752*f334afcfSToomas Soome UINT32 Bus; 1753*f334afcfSToomas Soome UINT16 Device; 1754*f334afcfSToomas Soome UINT16 Function; 1755*f334afcfSToomas Soome UINT16 DeviceControl; 1756*f334afcfSToomas Soome UINT8 Reserved1[2]; 1757*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 1758*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 1759*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 1760*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 1761*f334afcfSToomas Soome UINT32 RootErrorCommand; 1762*f334afcfSToomas Soome } EFI_ACPI_6_1_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE; 1763*f334afcfSToomas Soome 1764*f334afcfSToomas Soome /// 1765*f334afcfSToomas Soome /// PCI Express Device AER Structure Definition 1766*f334afcfSToomas Soome /// 1767*f334afcfSToomas Soome typedef struct { 1768*f334afcfSToomas Soome UINT16 Type; 1769*f334afcfSToomas Soome UINT16 SourceId; 1770*f334afcfSToomas Soome UINT8 Reserved0[2]; 1771*f334afcfSToomas Soome UINT8 Flags; 1772*f334afcfSToomas Soome UINT8 Enabled; 1773*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1774*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1775*f334afcfSToomas Soome UINT32 Bus; 1776*f334afcfSToomas Soome UINT16 Device; 1777*f334afcfSToomas Soome UINT16 Function; 1778*f334afcfSToomas Soome UINT16 DeviceControl; 1779*f334afcfSToomas Soome UINT8 Reserved1[2]; 1780*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 1781*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 1782*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 1783*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 1784*f334afcfSToomas Soome } EFI_ACPI_6_1_PCI_EXPRESS_DEVICE_AER_STRUCTURE; 1785*f334afcfSToomas Soome 1786*f334afcfSToomas Soome /// 1787*f334afcfSToomas Soome /// PCI Express Bridge AER Structure Definition 1788*f334afcfSToomas Soome /// 1789*f334afcfSToomas Soome typedef struct { 1790*f334afcfSToomas Soome UINT16 Type; 1791*f334afcfSToomas Soome UINT16 SourceId; 1792*f334afcfSToomas Soome UINT8 Reserved0[2]; 1793*f334afcfSToomas Soome UINT8 Flags; 1794*f334afcfSToomas Soome UINT8 Enabled; 1795*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1796*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1797*f334afcfSToomas Soome UINT32 Bus; 1798*f334afcfSToomas Soome UINT16 Device; 1799*f334afcfSToomas Soome UINT16 Function; 1800*f334afcfSToomas Soome UINT16 DeviceControl; 1801*f334afcfSToomas Soome UINT8 Reserved1[2]; 1802*f334afcfSToomas Soome UINT32 UncorrectableErrorMask; 1803*f334afcfSToomas Soome UINT32 UncorrectableErrorSeverity; 1804*f334afcfSToomas Soome UINT32 CorrectableErrorMask; 1805*f334afcfSToomas Soome UINT32 AdvancedErrorCapabilitiesAndControl; 1806*f334afcfSToomas Soome UINT32 SecondaryUncorrectableErrorMask; 1807*f334afcfSToomas Soome UINT32 SecondaryUncorrectableErrorSeverity; 1808*f334afcfSToomas Soome UINT32 SecondaryAdvancedErrorCapabilitiesAndControl; 1809*f334afcfSToomas Soome } EFI_ACPI_6_1_PCI_EXPRESS_BRIDGE_AER_STRUCTURE; 1810*f334afcfSToomas Soome 1811*f334afcfSToomas Soome /// 1812*f334afcfSToomas Soome /// Generic Hardware Error Source Structure Definition 1813*f334afcfSToomas Soome /// 1814*f334afcfSToomas Soome typedef struct { 1815*f334afcfSToomas Soome UINT16 Type; 1816*f334afcfSToomas Soome UINT16 SourceId; 1817*f334afcfSToomas Soome UINT16 RelatedSourceId; 1818*f334afcfSToomas Soome UINT8 Flags; 1819*f334afcfSToomas Soome UINT8 Enabled; 1820*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1821*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1822*f334afcfSToomas Soome UINT32 MaxRawDataLength; 1823*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; 1824*f334afcfSToomas Soome EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 1825*f334afcfSToomas Soome UINT32 ErrorStatusBlockLength; 1826*f334afcfSToomas Soome } EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE; 1827*f334afcfSToomas Soome 1828*f334afcfSToomas Soome /// 1829*f334afcfSToomas Soome /// Generic Hardware Error Source Version 2 Structure Definition 1830*f334afcfSToomas Soome /// 1831*f334afcfSToomas Soome typedef struct { 1832*f334afcfSToomas Soome UINT16 Type; 1833*f334afcfSToomas Soome UINT16 SourceId; 1834*f334afcfSToomas Soome UINT16 RelatedSourceId; 1835*f334afcfSToomas Soome UINT8 Flags; 1836*f334afcfSToomas Soome UINT8 Enabled; 1837*f334afcfSToomas Soome UINT32 NumberOfRecordsToPreAllocate; 1838*f334afcfSToomas Soome UINT32 MaxSectionsPerRecord; 1839*f334afcfSToomas Soome UINT32 MaxRawDataLength; 1840*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; 1841*f334afcfSToomas Soome EFI_ACPI_6_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; 1842*f334afcfSToomas Soome UINT32 ErrorStatusBlockLength; 1843*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE ReadAckRegister; 1844*f334afcfSToomas Soome UINT64 ReadAckPreserve; 1845*f334afcfSToomas Soome UINT64 ReadAckWrite; 1846*f334afcfSToomas Soome } EFI_ACPI_6_1_GENERIC_HARDWARE_ERROR_SOURCE_VERSION_2_STRUCTURE; 1847*f334afcfSToomas Soome 1848*f334afcfSToomas Soome /// 1849*f334afcfSToomas Soome /// Generic Error Status Definition 1850*f334afcfSToomas Soome /// 1851*f334afcfSToomas Soome typedef struct { 1852*f334afcfSToomas Soome EFI_ACPI_6_1_ERROR_BLOCK_STATUS BlockStatus; 1853*f334afcfSToomas Soome UINT32 RawDataOffset; 1854*f334afcfSToomas Soome UINT32 RawDataLength; 1855*f334afcfSToomas Soome UINT32 DataLength; 1856*f334afcfSToomas Soome UINT32 ErrorSeverity; 1857*f334afcfSToomas Soome } EFI_ACPI_6_1_GENERIC_ERROR_STATUS_STRUCTURE; 1858*f334afcfSToomas Soome 1859*f334afcfSToomas Soome /// 1860*f334afcfSToomas Soome /// ERST - Error Record Serialization Table 1861*f334afcfSToomas Soome /// 1862*f334afcfSToomas Soome typedef struct { 1863*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1864*f334afcfSToomas Soome UINT32 SerializationHeaderSize; 1865*f334afcfSToomas Soome UINT8 Reserved0[4]; 1866*f334afcfSToomas Soome UINT32 InstructionEntryCount; 1867*f334afcfSToomas Soome } EFI_ACPI_6_1_ERROR_RECORD_SERIALIZATION_TABLE_HEADER; 1868*f334afcfSToomas Soome 1869*f334afcfSToomas Soome /// 1870*f334afcfSToomas Soome /// ERST Version (as defined in ACPI 6.1 spec.) 1871*f334afcfSToomas Soome /// 1872*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01 1873*f334afcfSToomas Soome 1874*f334afcfSToomas Soome /// 1875*f334afcfSToomas Soome /// ERST Serialization Actions 1876*f334afcfSToomas Soome /// 1877*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_BEGIN_WRITE_OPERATION 0x00 1878*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_BEGIN_READ_OPERATION 0x01 1879*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_BEGIN_CLEAR_OPERATION 0x02 1880*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_END_OPERATION 0x03 1881*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_SET_RECORD_OFFSET 0x04 1882*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_EXECUTE_OPERATION 0x05 1883*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_CHECK_BUSY_STATUS 0x06 1884*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_GET_COMMAND_STATUS 0x07 1885*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_GET_RECORD_IDENTIFIER 0x08 1886*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_SET_RECORD_IDENTIFIER 0x09 1887*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_GET_RECORD_COUNT 0x0A 1888*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B 1889*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D 1890*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E 1891*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F 1892*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_GET_EXECUTE_OPERATION_TIMINGS 0x10 1893*f334afcfSToomas Soome 1894*f334afcfSToomas Soome /// 1895*f334afcfSToomas Soome /// ERST Action Command Status 1896*f334afcfSToomas Soome /// 1897*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_STATUS_SUCCESS 0x00 1898*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_STATUS_NOT_ENOUGH_SPACE 0x01 1899*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02 1900*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_STATUS_FAILED 0x03 1901*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_STATUS_RECORD_STORE_EMPTY 0x04 1902*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_STATUS_RECORD_NOT_FOUND 0x05 1903*f334afcfSToomas Soome 1904*f334afcfSToomas Soome /// 1905*f334afcfSToomas Soome /// ERST Serialization Instructions 1906*f334afcfSToomas Soome /// 1907*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_READ_REGISTER 0x00 1908*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_READ_REGISTER_VALUE 0x01 1909*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_WRITE_REGISTER 0x02 1910*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_WRITE_REGISTER_VALUE 0x03 1911*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_NOOP 0x04 1912*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_LOAD_VAR1 0x05 1913*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_LOAD_VAR2 0x06 1914*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_STORE_VAR1 0x07 1915*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_ADD 0x08 1916*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_SUBTRACT 0x09 1917*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_ADD_VALUE 0x0A 1918*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_SUBTRACT_VALUE 0x0B 1919*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_STALL 0x0C 1920*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_STALL_WHILE_TRUE 0x0D 1921*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E 1922*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_GOTO 0x0F 1923*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_SET_SRC_ADDRESS_BASE 0x10 1924*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_SET_DST_ADDRESS_BASE 0x11 1925*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_MOVE_DATA 0x12 1926*f334afcfSToomas Soome 1927*f334afcfSToomas Soome /// 1928*f334afcfSToomas Soome /// ERST Instruction Flags 1929*f334afcfSToomas Soome /// 1930*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERST_PRESERVE_REGISTER 0x01 1931*f334afcfSToomas Soome 1932*f334afcfSToomas Soome /// 1933*f334afcfSToomas Soome /// ERST Serialization Instruction Entry 1934*f334afcfSToomas Soome /// 1935*f334afcfSToomas Soome typedef struct { 1936*f334afcfSToomas Soome UINT8 SerializationAction; 1937*f334afcfSToomas Soome UINT8 Instruction; 1938*f334afcfSToomas Soome UINT8 Flags; 1939*f334afcfSToomas Soome UINT8 Reserved0; 1940*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 1941*f334afcfSToomas Soome UINT64 Value; 1942*f334afcfSToomas Soome UINT64 Mask; 1943*f334afcfSToomas Soome } EFI_ACPI_6_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY; 1944*f334afcfSToomas Soome 1945*f334afcfSToomas Soome /// 1946*f334afcfSToomas Soome /// EINJ - Error Injection Table 1947*f334afcfSToomas Soome /// 1948*f334afcfSToomas Soome typedef struct { 1949*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 1950*f334afcfSToomas Soome UINT32 InjectionHeaderSize; 1951*f334afcfSToomas Soome UINT8 InjectionFlags; 1952*f334afcfSToomas Soome UINT8 Reserved0[3]; 1953*f334afcfSToomas Soome UINT32 InjectionEntryCount; 1954*f334afcfSToomas Soome } EFI_ACPI_6_1_ERROR_INJECTION_TABLE_HEADER; 1955*f334afcfSToomas Soome 1956*f334afcfSToomas Soome /// 1957*f334afcfSToomas Soome /// EINJ Version (as defined in ACPI 6.1 spec.) 1958*f334afcfSToomas Soome /// 1959*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERROR_INJECTION_TABLE_REVISION 0x01 1960*f334afcfSToomas Soome 1961*f334afcfSToomas Soome /// 1962*f334afcfSToomas Soome /// EINJ Error Injection Actions 1963*f334afcfSToomas Soome /// 1964*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_BEGIN_INJECTION_OPERATION 0x00 1965*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01 1966*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_SET_ERROR_TYPE 0x02 1967*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_GET_ERROR_TYPE 0x03 1968*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_END_OPERATION 0x04 1969*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_EXECUTE_OPERATION 0x05 1970*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_CHECK_BUSY_STATUS 0x06 1971*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_GET_COMMAND_STATUS 0x07 1972*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_TRIGGER_ERROR 0xFF 1973*f334afcfSToomas Soome 1974*f334afcfSToomas Soome /// 1975*f334afcfSToomas Soome /// EINJ Action Command Status 1976*f334afcfSToomas Soome /// 1977*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_STATUS_SUCCESS 0x00 1978*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_STATUS_UNKNOWN_FAILURE 0x01 1979*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_STATUS_INVALID_ACCESS 0x02 1980*f334afcfSToomas Soome 1981*f334afcfSToomas Soome /// 1982*f334afcfSToomas Soome /// EINJ Error Type Definition 1983*f334afcfSToomas Soome /// 1984*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0) 1985*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1) 1986*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2) 1987*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3) 1988*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4) 1989*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5) 1990*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6) 1991*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7) 1992*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8) 1993*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9) 1994*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10) 1995*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11) 1996*f334afcfSToomas Soome 1997*f334afcfSToomas Soome /// 1998*f334afcfSToomas Soome /// EINJ Injection Instructions 1999*f334afcfSToomas Soome /// 2000*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_READ_REGISTER 0x00 2001*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_READ_REGISTER_VALUE 0x01 2002*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_WRITE_REGISTER 0x02 2003*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_WRITE_REGISTER_VALUE 0x03 2004*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_NOOP 0x04 2005*f334afcfSToomas Soome 2006*f334afcfSToomas Soome /// 2007*f334afcfSToomas Soome /// EINJ Instruction Flags 2008*f334afcfSToomas Soome /// 2009*f334afcfSToomas Soome #define EFI_ACPI_6_1_EINJ_PRESERVE_REGISTER 0x01 2010*f334afcfSToomas Soome 2011*f334afcfSToomas Soome /// 2012*f334afcfSToomas Soome /// EINJ Injection Instruction Entry 2013*f334afcfSToomas Soome /// 2014*f334afcfSToomas Soome typedef struct { 2015*f334afcfSToomas Soome UINT8 InjectionAction; 2016*f334afcfSToomas Soome UINT8 Instruction; 2017*f334afcfSToomas Soome UINT8 Flags; 2018*f334afcfSToomas Soome UINT8 Reserved0; 2019*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE RegisterRegion; 2020*f334afcfSToomas Soome UINT64 Value; 2021*f334afcfSToomas Soome UINT64 Mask; 2022*f334afcfSToomas Soome } EFI_ACPI_6_1_EINJ_INJECTION_INSTRUCTION_ENTRY; 2023*f334afcfSToomas Soome 2024*f334afcfSToomas Soome /// 2025*f334afcfSToomas Soome /// EINJ Trigger Action Table 2026*f334afcfSToomas Soome /// 2027*f334afcfSToomas Soome typedef struct { 2028*f334afcfSToomas Soome UINT32 HeaderSize; 2029*f334afcfSToomas Soome UINT32 Revision; 2030*f334afcfSToomas Soome UINT32 TableSize; 2031*f334afcfSToomas Soome UINT32 EntryCount; 2032*f334afcfSToomas Soome } EFI_ACPI_6_1_EINJ_TRIGGER_ACTION_TABLE; 2033*f334afcfSToomas Soome 2034*f334afcfSToomas Soome /// 2035*f334afcfSToomas Soome /// Platform Communications Channel Table (PCCT) 2036*f334afcfSToomas Soome /// 2037*f334afcfSToomas Soome typedef struct { 2038*f334afcfSToomas Soome EFI_ACPI_DESCRIPTION_HEADER Header; 2039*f334afcfSToomas Soome UINT32 Flags; 2040*f334afcfSToomas Soome UINT64 Reserved; 2041*f334afcfSToomas Soome } EFI_ACPI_6_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER; 2042*f334afcfSToomas Soome 2043*f334afcfSToomas Soome /// 2044*f334afcfSToomas Soome /// PCCT Version (as defined in ACPI 6.1 spec.) 2045*f334afcfSToomas Soome /// 2046*f334afcfSToomas Soome #define EFI_ACPI_6_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01 2047*f334afcfSToomas Soome 2048*f334afcfSToomas Soome /// 2049*f334afcfSToomas Soome /// PCCT Global Flags 2050*f334afcfSToomas Soome /// 2051*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCCT_FLAGS_SCI_DOORBELL BIT0 2052*f334afcfSToomas Soome 2053*f334afcfSToomas Soome // 2054*f334afcfSToomas Soome // PCCT Subspace type 2055*f334afcfSToomas Soome // 2056*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCCT_SUBSPACE_TYPE_GENERIC 0x00 2057*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCCT_SUBSPACE_TYPE_1_HW_REDUCED_COMMUNICATIONS 0x01 2058*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCCT_SUBSPACE_TYPE_2_HW_REDUCED_COMMUNICATIONS 0x02 2059*f334afcfSToomas Soome 2060*f334afcfSToomas Soome /// 2061*f334afcfSToomas Soome /// PCC Subspace Structure Header 2062*f334afcfSToomas Soome /// 2063*f334afcfSToomas Soome typedef struct { 2064*f334afcfSToomas Soome UINT8 Type; 2065*f334afcfSToomas Soome UINT8 Length; 2066*f334afcfSToomas Soome } EFI_ACPI_6_1_PCCT_SUBSPACE_HEADER; 2067*f334afcfSToomas Soome 2068*f334afcfSToomas Soome /// 2069*f334afcfSToomas Soome /// Generic Communications Subspace Structure 2070*f334afcfSToomas Soome /// 2071*f334afcfSToomas Soome typedef struct { 2072*f334afcfSToomas Soome UINT8 Type; 2073*f334afcfSToomas Soome UINT8 Length; 2074*f334afcfSToomas Soome UINT8 Reserved[6]; 2075*f334afcfSToomas Soome UINT64 BaseAddress; 2076*f334afcfSToomas Soome UINT64 AddressLength; 2077*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 2078*f334afcfSToomas Soome UINT64 DoorbellPreserve; 2079*f334afcfSToomas Soome UINT64 DoorbellWrite; 2080*f334afcfSToomas Soome UINT32 NominalLatency; 2081*f334afcfSToomas Soome UINT32 MaximumPeriodicAccessRate; 2082*f334afcfSToomas Soome UINT16 MinimumRequestTurnaroundTime; 2083*f334afcfSToomas Soome } EFI_ACPI_6_1_PCCT_SUBSPACE_GENERIC; 2084*f334afcfSToomas Soome 2085*f334afcfSToomas Soome /// 2086*f334afcfSToomas Soome /// Generic Communications Channel Shared Memory Region 2087*f334afcfSToomas Soome /// 2088*f334afcfSToomas Soome 2089*f334afcfSToomas Soome typedef struct { 2090*f334afcfSToomas Soome UINT8 Command; 2091*f334afcfSToomas Soome UINT8 Reserved : 7; 2092*f334afcfSToomas Soome UINT8 GenerateSci : 1; 2093*f334afcfSToomas Soome } EFI_ACPI_6_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND; 2094*f334afcfSToomas Soome 2095*f334afcfSToomas Soome typedef struct { 2096*f334afcfSToomas Soome UINT8 CommandComplete : 1; 2097*f334afcfSToomas Soome UINT8 SciDoorbell : 1; 2098*f334afcfSToomas Soome UINT8 Error : 1; 2099*f334afcfSToomas Soome UINT8 PlatformNotification : 1; 2100*f334afcfSToomas Soome UINT8 Reserved : 4; 2101*f334afcfSToomas Soome UINT8 Reserved1; 2102*f334afcfSToomas Soome } EFI_ACPI_6_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS; 2103*f334afcfSToomas Soome 2104*f334afcfSToomas Soome typedef struct { 2105*f334afcfSToomas Soome UINT32 Signature; 2106*f334afcfSToomas Soome EFI_ACPI_6_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command; 2107*f334afcfSToomas Soome EFI_ACPI_6_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status; 2108*f334afcfSToomas Soome } EFI_ACPI_6_1_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER; 2109*f334afcfSToomas Soome 2110*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCCT_SUBSPACE_DOORBELL_INTERRUPT_FLAGS_POLARITY BIT0 2111*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCCT_SUBSPACE_DOORBELL_INTERRUPT_FLAGS_MODE BIT1 2112*f334afcfSToomas Soome 2113*f334afcfSToomas Soome /// 2114*f334afcfSToomas Soome /// Type 1 HW-Reduced Communications Subspace Structure 2115*f334afcfSToomas Soome /// 2116*f334afcfSToomas Soome typedef struct { 2117*f334afcfSToomas Soome UINT8 Type; 2118*f334afcfSToomas Soome UINT8 Length; 2119*f334afcfSToomas Soome UINT32 DoorbellInterrupt; 2120*f334afcfSToomas Soome UINT8 DoorbellInterruptFlags; 2121*f334afcfSToomas Soome UINT8 Reserved; 2122*f334afcfSToomas Soome UINT64 BaseAddress; 2123*f334afcfSToomas Soome UINT64 AddressLength; 2124*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 2125*f334afcfSToomas Soome UINT64 DoorbellPreserve; 2126*f334afcfSToomas Soome UINT64 DoorbellWrite; 2127*f334afcfSToomas Soome UINT32 NominalLatency; 2128*f334afcfSToomas Soome UINT32 MaximumPeriodicAccessRate; 2129*f334afcfSToomas Soome UINT16 MinimumRequestTurnaroundTime; 2130*f334afcfSToomas Soome } EFI_ACPI_6_1_PCCT_SUBSPACE_1_HW_REDUCED_COMMUNICATIONS; 2131*f334afcfSToomas Soome 2132*f334afcfSToomas Soome /// 2133*f334afcfSToomas Soome /// Type 2 HW-Reduced Communications Subspace Structure 2134*f334afcfSToomas Soome /// 2135*f334afcfSToomas Soome typedef struct { 2136*f334afcfSToomas Soome UINT8 Type; 2137*f334afcfSToomas Soome UINT8 Length; 2138*f334afcfSToomas Soome UINT32 DoorbellInterrupt; 2139*f334afcfSToomas Soome UINT8 DoorbellInterruptFlags; 2140*f334afcfSToomas Soome UINT8 Reserved; 2141*f334afcfSToomas Soome UINT64 BaseAddress; 2142*f334afcfSToomas Soome UINT64 AddressLength; 2143*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; 2144*f334afcfSToomas Soome UINT64 DoorbellPreserve; 2145*f334afcfSToomas Soome UINT64 DoorbellWrite; 2146*f334afcfSToomas Soome UINT32 NominalLatency; 2147*f334afcfSToomas Soome UINT32 MaximumPeriodicAccessRate; 2148*f334afcfSToomas Soome UINT16 MinimumRequestTurnaroundTime; 2149*f334afcfSToomas Soome EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE DoorbellAckRegister; 2150*f334afcfSToomas Soome UINT64 DoorbellAckPreserve; 2151*f334afcfSToomas Soome UINT64 DoorbellAckWrite; 2152*f334afcfSToomas Soome } EFI_ACPI_6_1_PCCT_SUBSPACE_2_HW_REDUCED_COMMUNICATIONS; 2153*f334afcfSToomas Soome 2154*f334afcfSToomas Soome // 2155*f334afcfSToomas Soome // Known table signatures 2156*f334afcfSToomas Soome // 2157*f334afcfSToomas Soome 2158*f334afcfSToomas Soome /// 2159*f334afcfSToomas Soome /// "RSD PTR " Root System Description Pointer 2160*f334afcfSToomas Soome /// 2161*f334afcfSToomas Soome #define EFI_ACPI_6_1_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') 2162*f334afcfSToomas Soome 2163*f334afcfSToomas Soome /// 2164*f334afcfSToomas Soome /// "APIC" Multiple APIC Description Table 2165*f334afcfSToomas Soome /// 2166*f334afcfSToomas Soome #define EFI_ACPI_6_1_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') 2167*f334afcfSToomas Soome 2168*f334afcfSToomas Soome /// 2169*f334afcfSToomas Soome /// "BERT" Boot Error Record Table 2170*f334afcfSToomas Soome /// 2171*f334afcfSToomas Soome #define EFI_ACPI_6_1_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T') 2172*f334afcfSToomas Soome 2173*f334afcfSToomas Soome /// 2174*f334afcfSToomas Soome /// "BGRT" Boot Graphics Resource Table 2175*f334afcfSToomas Soome /// 2176*f334afcfSToomas Soome #define EFI_ACPI_6_1_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T') 2177*f334afcfSToomas Soome 2178*f334afcfSToomas Soome /// 2179*f334afcfSToomas Soome /// "CPEP" Corrected Platform Error Polling Table 2180*f334afcfSToomas Soome /// 2181*f334afcfSToomas Soome #define EFI_ACPI_6_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P') 2182*f334afcfSToomas Soome 2183*f334afcfSToomas Soome /// 2184*f334afcfSToomas Soome /// "DSDT" Differentiated System Description Table 2185*f334afcfSToomas Soome /// 2186*f334afcfSToomas Soome #define EFI_ACPI_6_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') 2187*f334afcfSToomas Soome 2188*f334afcfSToomas Soome /// 2189*f334afcfSToomas Soome /// "ECDT" Embedded Controller Boot Resources Table 2190*f334afcfSToomas Soome /// 2191*f334afcfSToomas Soome #define EFI_ACPI_6_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') 2192*f334afcfSToomas Soome 2193*f334afcfSToomas Soome /// 2194*f334afcfSToomas Soome /// "EINJ" Error Injection Table 2195*f334afcfSToomas Soome /// 2196*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J') 2197*f334afcfSToomas Soome 2198*f334afcfSToomas Soome /// 2199*f334afcfSToomas Soome /// "ERST" Error Record Serialization Table 2200*f334afcfSToomas Soome /// 2201*f334afcfSToomas Soome #define EFI_ACPI_6_1_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T') 2202*f334afcfSToomas Soome 2203*f334afcfSToomas Soome /// 2204*f334afcfSToomas Soome /// "FACP" Fixed ACPI Description Table 2205*f334afcfSToomas Soome /// 2206*f334afcfSToomas Soome #define EFI_ACPI_6_1_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') 2207*f334afcfSToomas Soome 2208*f334afcfSToomas Soome /// 2209*f334afcfSToomas Soome /// "FACS" Firmware ACPI Control Structure 2210*f334afcfSToomas Soome /// 2211*f334afcfSToomas Soome #define EFI_ACPI_6_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') 2212*f334afcfSToomas Soome 2213*f334afcfSToomas Soome /// 2214*f334afcfSToomas Soome /// "FPDT" Firmware Performance Data Table 2215*f334afcfSToomas Soome /// 2216*f334afcfSToomas Soome #define EFI_ACPI_6_1_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T') 2217*f334afcfSToomas Soome 2218*f334afcfSToomas Soome /// 2219*f334afcfSToomas Soome /// "GTDT" Generic Timer Description Table 2220*f334afcfSToomas Soome /// 2221*f334afcfSToomas Soome #define EFI_ACPI_6_1_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T') 2222*f334afcfSToomas Soome 2223*f334afcfSToomas Soome /// 2224*f334afcfSToomas Soome /// "HEST" Hardware Error Source Table 2225*f334afcfSToomas Soome /// 2226*f334afcfSToomas Soome #define EFI_ACPI_6_1_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T') 2227*f334afcfSToomas Soome 2228*f334afcfSToomas Soome /// 2229*f334afcfSToomas Soome /// "MPST" Memory Power State Table 2230*f334afcfSToomas Soome /// 2231*f334afcfSToomas Soome #define EFI_ACPI_6_1_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T') 2232*f334afcfSToomas Soome 2233*f334afcfSToomas Soome /// 2234*f334afcfSToomas Soome /// "MSCT" Maximum System Characteristics Table 2235*f334afcfSToomas Soome /// 2236*f334afcfSToomas Soome #define EFI_ACPI_6_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T') 2237*f334afcfSToomas Soome 2238*f334afcfSToomas Soome /// 2239*f334afcfSToomas Soome /// "NFIT" NVDIMM Firmware Interface Table 2240*f334afcfSToomas Soome /// 2241*f334afcfSToomas Soome #define EFI_ACPI_6_1_NVDIMM_FIRMWARE_INTERFACE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('N', 'F', 'I', 'T') 2242*f334afcfSToomas Soome 2243*f334afcfSToomas Soome /// 2244*f334afcfSToomas Soome /// "PMTT" Platform Memory Topology Table 2245*f334afcfSToomas Soome /// 2246*f334afcfSToomas Soome #define EFI_ACPI_6_1_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T') 2247*f334afcfSToomas Soome 2248*f334afcfSToomas Soome /// 2249*f334afcfSToomas Soome /// "PSDT" Persistent System Description Table 2250*f334afcfSToomas Soome /// 2251*f334afcfSToomas Soome #define EFI_ACPI_6_1_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') 2252*f334afcfSToomas Soome 2253*f334afcfSToomas Soome /// 2254*f334afcfSToomas Soome /// "RASF" ACPI RAS Feature Table 2255*f334afcfSToomas Soome /// 2256*f334afcfSToomas Soome #define EFI_ACPI_6_1_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F') 2257*f334afcfSToomas Soome 2258*f334afcfSToomas Soome /// 2259*f334afcfSToomas Soome /// "RSDT" Root System Description Table 2260*f334afcfSToomas Soome /// 2261*f334afcfSToomas Soome #define EFI_ACPI_6_1_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') 2262*f334afcfSToomas Soome 2263*f334afcfSToomas Soome /// 2264*f334afcfSToomas Soome /// "SBST" Smart Battery Specification Table 2265*f334afcfSToomas Soome /// 2266*f334afcfSToomas Soome #define EFI_ACPI_6_1_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') 2267*f334afcfSToomas Soome 2268*f334afcfSToomas Soome /// 2269*f334afcfSToomas Soome /// "SLIT" System Locality Information Table 2270*f334afcfSToomas Soome /// 2271*f334afcfSToomas Soome #define EFI_ACPI_6_1_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') 2272*f334afcfSToomas Soome 2273*f334afcfSToomas Soome /// 2274*f334afcfSToomas Soome /// "SRAT" System Resource Affinity Table 2275*f334afcfSToomas Soome /// 2276*f334afcfSToomas Soome #define EFI_ACPI_6_1_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') 2277*f334afcfSToomas Soome 2278*f334afcfSToomas Soome /// 2279*f334afcfSToomas Soome /// "SSDT" Secondary System Description Table 2280*f334afcfSToomas Soome /// 2281*f334afcfSToomas Soome #define EFI_ACPI_6_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') 2282*f334afcfSToomas Soome 2283*f334afcfSToomas Soome /// 2284*f334afcfSToomas Soome /// "XSDT" Extended System Description Table 2285*f334afcfSToomas Soome /// 2286*f334afcfSToomas Soome #define EFI_ACPI_6_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') 2287*f334afcfSToomas Soome 2288*f334afcfSToomas Soome /// 2289*f334afcfSToomas Soome /// "BOOT" MS Simple Boot Spec 2290*f334afcfSToomas Soome /// 2291*f334afcfSToomas Soome #define EFI_ACPI_6_1_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') 2292*f334afcfSToomas Soome 2293*f334afcfSToomas Soome /// 2294*f334afcfSToomas Soome /// "CSRT" MS Core System Resource Table 2295*f334afcfSToomas Soome /// 2296*f334afcfSToomas Soome #define EFI_ACPI_6_1_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T') 2297*f334afcfSToomas Soome 2298*f334afcfSToomas Soome /// 2299*f334afcfSToomas Soome /// "DBG2" MS Debug Port 2 Spec 2300*f334afcfSToomas Soome /// 2301*f334afcfSToomas Soome #define EFI_ACPI_6_1_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2') 2302*f334afcfSToomas Soome 2303*f334afcfSToomas Soome /// 2304*f334afcfSToomas Soome /// "DBGP" MS Debug Port Spec 2305*f334afcfSToomas Soome /// 2306*f334afcfSToomas Soome #define EFI_ACPI_6_1_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') 2307*f334afcfSToomas Soome 2308*f334afcfSToomas Soome /// 2309*f334afcfSToomas Soome /// "DMAR" DMA Remapping Table 2310*f334afcfSToomas Soome /// 2311*f334afcfSToomas Soome #define EFI_ACPI_6_1_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R') 2312*f334afcfSToomas Soome 2313*f334afcfSToomas Soome /// 2314*f334afcfSToomas Soome /// "DRTM" Dynamic Root of Trust for Measurement Table 2315*f334afcfSToomas Soome /// 2316*f334afcfSToomas Soome #define EFI_ACPI_6_1_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M') 2317*f334afcfSToomas Soome 2318*f334afcfSToomas Soome /// 2319*f334afcfSToomas Soome /// "ETDT" Event Timer Description Table 2320*f334afcfSToomas Soome /// 2321*f334afcfSToomas Soome #define EFI_ACPI_6_1_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') 2322*f334afcfSToomas Soome 2323*f334afcfSToomas Soome /// 2324*f334afcfSToomas Soome /// "HPET" IA-PC High Precision Event Timer Table 2325*f334afcfSToomas Soome /// 2326*f334afcfSToomas Soome #define EFI_ACPI_6_1_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T') 2327*f334afcfSToomas Soome 2328*f334afcfSToomas Soome /// 2329*f334afcfSToomas Soome /// "iBFT" iSCSI Boot Firmware Table 2330*f334afcfSToomas Soome /// 2331*f334afcfSToomas Soome #define EFI_ACPI_6_1_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T') 2332*f334afcfSToomas Soome 2333*f334afcfSToomas Soome /// 2334*f334afcfSToomas Soome /// "IORT" I/O Remapping Table 2335*f334afcfSToomas Soome /// 2336*f334afcfSToomas Soome #define EFI_ACPI_6_1_IO_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('I', 'O', 'R', 'T') 2337*f334afcfSToomas Soome 2338*f334afcfSToomas Soome /// 2339*f334afcfSToomas Soome /// "IVRS" I/O Virtualization Reporting Structure 2340*f334afcfSToomas Soome /// 2341*f334afcfSToomas Soome #define EFI_ACPI_6_1_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S') 2342*f334afcfSToomas Soome 2343*f334afcfSToomas Soome /// 2344*f334afcfSToomas Soome /// "LPIT" Low Power Idle Table 2345*f334afcfSToomas Soome /// 2346*f334afcfSToomas Soome #define EFI_ACPI_6_1_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('L', 'P', 'I', 'T') 2347*f334afcfSToomas Soome 2348*f334afcfSToomas Soome /// 2349*f334afcfSToomas Soome /// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table 2350*f334afcfSToomas Soome /// 2351*f334afcfSToomas Soome #define EFI_ACPI_6_1_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') 2352*f334afcfSToomas Soome 2353*f334afcfSToomas Soome /// 2354*f334afcfSToomas Soome /// "MCHI" Management Controller Host Interface Table 2355*f334afcfSToomas Soome /// 2356*f334afcfSToomas Soome #define EFI_ACPI_6_1_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I') 2357*f334afcfSToomas Soome 2358*f334afcfSToomas Soome /// 2359*f334afcfSToomas Soome /// "MSDM" MS Data Management Table 2360*f334afcfSToomas Soome /// 2361*f334afcfSToomas Soome #define EFI_ACPI_6_1_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M') 2362*f334afcfSToomas Soome 2363*f334afcfSToomas Soome /// 2364*f334afcfSToomas Soome /// "PCCT" Platform Communications Channel Table 2365*f334afcfSToomas Soome /// 2366*f334afcfSToomas Soome #define EFI_ACPI_6_1_PLATFORM_COMMUNICATIONS_CHANNEL_TABLE_SIGNATURE SIGNATURE_32('P', 'C', 'C', 'T') 2367*f334afcfSToomas Soome 2368*f334afcfSToomas Soome /// 2369*f334afcfSToomas Soome /// "SLIC" MS Software Licensing Table Specification 2370*f334afcfSToomas Soome /// 2371*f334afcfSToomas Soome #define EFI_ACPI_6_1_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C') 2372*f334afcfSToomas Soome 2373*f334afcfSToomas Soome /// 2374*f334afcfSToomas Soome /// "SPCR" Serial Port Console Redirection Table 2375*f334afcfSToomas Soome /// 2376*f334afcfSToomas Soome #define EFI_ACPI_6_1_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') 2377*f334afcfSToomas Soome 2378*f334afcfSToomas Soome /// 2379*f334afcfSToomas Soome /// "SPMI" Server Platform Management Interface Table 2380*f334afcfSToomas Soome /// 2381*f334afcfSToomas Soome #define EFI_ACPI_6_1_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') 2382*f334afcfSToomas Soome 2383*f334afcfSToomas Soome /// 2384*f334afcfSToomas Soome /// "STAO" _STA Override Table 2385*f334afcfSToomas Soome /// 2386*f334afcfSToomas Soome #define EFI_ACPI_6_1_STA_OVERRIDE_TABLE_SIGNATURE SIGNATURE_32('S', 'T', 'A', 'O') 2387*f334afcfSToomas Soome 2388*f334afcfSToomas Soome /// 2389*f334afcfSToomas Soome /// "TCPA" Trusted Computing Platform Alliance Capabilities Table 2390*f334afcfSToomas Soome /// 2391*f334afcfSToomas Soome #define EFI_ACPI_6_1_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A') 2392*f334afcfSToomas Soome 2393*f334afcfSToomas Soome /// 2394*f334afcfSToomas Soome /// "TPM2" Trusted Computing Platform 1 Table 2395*f334afcfSToomas Soome /// 2396*f334afcfSToomas Soome #define EFI_ACPI_6_1_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2') 2397*f334afcfSToomas Soome 2398*f334afcfSToomas Soome /// 2399*f334afcfSToomas Soome /// "UEFI" UEFI ACPI Data Table 2400*f334afcfSToomas Soome /// 2401*f334afcfSToomas Soome #define EFI_ACPI_6_1_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I') 2402*f334afcfSToomas Soome 2403*f334afcfSToomas Soome /// 2404*f334afcfSToomas Soome /// "WAET" Windows ACPI Emulated Devices Table 2405*f334afcfSToomas Soome /// 2406*f334afcfSToomas Soome #define EFI_ACPI_6_1_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T') 2407*f334afcfSToomas Soome 2408*f334afcfSToomas Soome /// 2409*f334afcfSToomas Soome /// "WDAT" Watchdog Action Table 2410*f334afcfSToomas Soome /// 2411*f334afcfSToomas Soome #define EFI_ACPI_6_1_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T') 2412*f334afcfSToomas Soome 2413*f334afcfSToomas Soome /// 2414*f334afcfSToomas Soome /// "WDRT" Watchdog Resource Table 2415*f334afcfSToomas Soome /// 2416*f334afcfSToomas Soome #define EFI_ACPI_6_1_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T') 2417*f334afcfSToomas Soome 2418*f334afcfSToomas Soome /// 2419*f334afcfSToomas Soome /// "WPBT" MS Platform Binary Table 2420*f334afcfSToomas Soome /// 2421*f334afcfSToomas Soome #define EFI_ACPI_6_1_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T') 2422*f334afcfSToomas Soome 2423*f334afcfSToomas Soome /// 2424*f334afcfSToomas Soome /// "XENV" Xen Project Table 2425*f334afcfSToomas Soome /// 2426*f334afcfSToomas Soome #define EFI_ACPI_6_1_XEN_PROJECT_TABLE_SIGNATURE SIGNATURE_32('X', 'E', 'N', 'V') 2427*f334afcfSToomas Soome 2428*f334afcfSToomas Soome #pragma pack() 2429*f334afcfSToomas Soome 2430*f334afcfSToomas Soome #endif 2431