1*4882a593Smuzhiyun=========== 2*4882a593SmuzhiyunACPI Tables 3*4882a593Smuzhiyun=========== 4*4882a593Smuzhiyun 5*4882a593SmuzhiyunThe expectations of individual ACPI tables are discussed in the list that 6*4882a593Smuzhiyunfollows. 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunIf a section number is used, it refers to a section number in the ACPI 9*4882a593Smuzhiyunspecification where the object is defined. If "Signature Reserved" is used, 10*4882a593Smuzhiyunthe table signature (the first four bytes of the table) is the only portion 11*4882a593Smuzhiyunof the table recognized by the specification, and the actual table is defined 12*4882a593Smuzhiyunoutside of the UEFI Forum (see Section 5.2.6 of the specification). 13*4882a593Smuzhiyun 14*4882a593SmuzhiyunFor ACPI on arm64, tables also fall into the following categories: 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun - Required: DSDT, FADT, GTDT, MADT, MCFG, RSDP, SPCR, XSDT 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun - Recommended: BERT, EINJ, ERST, HEST, PCCT, SSDT 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun - Optional: BGRT, CPEP, CSRT, DBG2, DRTM, ECDT, FACS, FPDT, IORT, 21*4882a593Smuzhiyun MCHI, MPST, MSCT, NFIT, PMTT, RASF, SBST, SLIT, SPMI, SRAT, STAO, 22*4882a593Smuzhiyun TCPA, TPM2, UEFI, XENV 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun - Not supported: BOOT, DBGP, DMAR, ETDT, HPET, IBFT, IVRS, LPIT, 25*4882a593Smuzhiyun MSDM, OEMx, PSDT, RSDT, SLIC, WAET, WDAT, WDRT, WPBT 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun====== ======================================================================== 28*4882a593SmuzhiyunTable Usage for ARMv8 Linux 29*4882a593Smuzhiyun====== ======================================================================== 30*4882a593SmuzhiyunBERT Section 18.3 (signature == "BERT") 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun **Boot Error Record Table** 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun Must be supplied if RAS support is provided by the platform. It 35*4882a593Smuzhiyun is recommended this table be supplied. 36*4882a593Smuzhiyun 37*4882a593SmuzhiyunBOOT Signature Reserved (signature == "BOOT") 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun **simple BOOT flag table** 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun Microsoft only table, will not be supported. 42*4882a593Smuzhiyun 43*4882a593SmuzhiyunBGRT Section 5.2.22 (signature == "BGRT") 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun **Boot Graphics Resource Table** 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun Optional, not currently supported, with no real use-case for an 48*4882a593Smuzhiyun ARM server. 49*4882a593Smuzhiyun 50*4882a593SmuzhiyunCPEP Section 5.2.18 (signature == "CPEP") 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun **Corrected Platform Error Polling table** 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun Optional, not currently supported, and not recommended until such 55*4882a593Smuzhiyun time as ARM-compatible hardware is available, and the specification 56*4882a593Smuzhiyun suitably modified. 57*4882a593Smuzhiyun 58*4882a593SmuzhiyunCSRT Signature Reserved (signature == "CSRT") 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun **Core System Resources Table** 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun Optional, not currently supported. 63*4882a593Smuzhiyun 64*4882a593SmuzhiyunDBG2 Signature Reserved (signature == "DBG2") 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun **DeBuG port table 2** 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun License has changed and should be usable. Optional if used instead 69*4882a593Smuzhiyun of earlycon=<device> on the command line. 70*4882a593Smuzhiyun 71*4882a593SmuzhiyunDBGP Signature Reserved (signature == "DBGP") 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun **DeBuG Port table** 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun Microsoft only table, will not be supported. 76*4882a593Smuzhiyun 77*4882a593SmuzhiyunDSDT Section 5.2.11.1 (signature == "DSDT") 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun **Differentiated System Description Table** 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun A DSDT is required; see also SSDT. 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun ACPI tables contain only one DSDT but can contain one or more SSDTs, 84*4882a593Smuzhiyun which are optional. Each SSDT can only add to the ACPI namespace, 85*4882a593Smuzhiyun but cannot modify or replace anything in the DSDT. 86*4882a593Smuzhiyun 87*4882a593SmuzhiyunDMAR Signature Reserved (signature == "DMAR") 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun **DMA Remapping table** 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun x86 only table, will not be supported. 92*4882a593Smuzhiyun 93*4882a593SmuzhiyunDRTM Signature Reserved (signature == "DRTM") 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun **Dynamic Root of Trust for Measurement table** 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun Optional, not currently supported. 98*4882a593Smuzhiyun 99*4882a593SmuzhiyunECDT Section 5.2.16 (signature == "ECDT") 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun **Embedded Controller Description Table** 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun Optional, not currently supported, but could be used on ARM if and 104*4882a593Smuzhiyun only if one uses the GPE_BIT field to represent an IRQ number, since 105*4882a593Smuzhiyun there are no GPE blocks defined in hardware reduced mode. This would 106*4882a593Smuzhiyun need to be modified in the ACPI specification. 107*4882a593Smuzhiyun 108*4882a593SmuzhiyunEINJ Section 18.6 (signature == "EINJ") 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun **Error Injection table** 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun This table is very useful for testing platform response to error 113*4882a593Smuzhiyun conditions; it allows one to inject an error into the system as 114*4882a593Smuzhiyun if it had actually occurred. However, this table should not be 115*4882a593Smuzhiyun shipped with a production system; it should be dynamically loaded 116*4882a593Smuzhiyun and executed with the ACPICA tools only during testing. 117*4882a593Smuzhiyun 118*4882a593SmuzhiyunERST Section 18.5 (signature == "ERST") 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun **Error Record Serialization Table** 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun On a platform supports RAS, this table must be supplied if it is not 123*4882a593Smuzhiyun UEFI-based; if it is UEFI-based, this table may be supplied. When this 124*4882a593Smuzhiyun table is not present, UEFI run time service will be utilized to save 125*4882a593Smuzhiyun and retrieve hardware error information to and from a persistent store. 126*4882a593Smuzhiyun 127*4882a593SmuzhiyunETDT Signature Reserved (signature == "ETDT") 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun **Event Timer Description Table** 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun Obsolete table, will not be supported. 132*4882a593Smuzhiyun 133*4882a593SmuzhiyunFACS Section 5.2.10 (signature == "FACS") 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun **Firmware ACPI Control Structure** 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun It is unlikely that this table will be terribly useful. If it is 138*4882a593Smuzhiyun provided, the Global Lock will NOT be used since it is not part of 139*4882a593Smuzhiyun the hardware reduced profile, and only 64-bit address fields will 140*4882a593Smuzhiyun be considered valid. 141*4882a593Smuzhiyun 142*4882a593SmuzhiyunFADT Section 5.2.9 (signature == "FACP") 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun **Fixed ACPI Description Table** 145*4882a593Smuzhiyun Required for arm64. 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun The HW_REDUCED_ACPI flag must be set. All of the fields that are 149*4882a593Smuzhiyun to be ignored when HW_REDUCED_ACPI is set are expected to be set to 150*4882a593Smuzhiyun zero. 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun If an FACS table is provided, the X_FIRMWARE_CTRL field is to be 153*4882a593Smuzhiyun used, not FIRMWARE_CTRL. 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun If PSCI is used (as is recommended), make sure that ARM_BOOT_ARCH is 156*4882a593Smuzhiyun filled in properly - that the PSCI_COMPLIANT flag is set and that 157*4882a593Smuzhiyun PSCI_USE_HVC is set or unset as needed (see table 5-37). 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun For the DSDT that is also required, the X_DSDT field is to be used, 160*4882a593Smuzhiyun not the DSDT field. 161*4882a593Smuzhiyun 162*4882a593SmuzhiyunFPDT Section 5.2.23 (signature == "FPDT") 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun **Firmware Performance Data Table** 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun Optional, not currently supported. 167*4882a593Smuzhiyun 168*4882a593SmuzhiyunGTDT Section 5.2.24 (signature == "GTDT") 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun **Generic Timer Description Table** 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun Required for arm64. 173*4882a593Smuzhiyun 174*4882a593SmuzhiyunHEST Section 18.3.2 (signature == "HEST") 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun **Hardware Error Source Table** 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun ARM-specific error sources have been defined; please use those or the 179*4882a593Smuzhiyun PCI types such as type 6 (AER Root Port), 7 (AER Endpoint), or 8 (AER 180*4882a593Smuzhiyun Bridge), or use type 9 (Generic Hardware Error Source). Firmware first 181*4882a593Smuzhiyun error handling is possible if and only if Trusted Firmware is being 182*4882a593Smuzhiyun used on arm64. 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun Must be supplied if RAS support is provided by the platform. It 185*4882a593Smuzhiyun is recommended this table be supplied. 186*4882a593Smuzhiyun 187*4882a593SmuzhiyunHPET Signature Reserved (signature == "HPET") 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun **High Precision Event timer Table** 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun x86 only table, will not be supported. 192*4882a593Smuzhiyun 193*4882a593SmuzhiyunIBFT Signature Reserved (signature == "IBFT") 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun **iSCSI Boot Firmware Table** 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun Microsoft defined table, support TBD. 198*4882a593Smuzhiyun 199*4882a593SmuzhiyunIORT Signature Reserved (signature == "IORT") 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun **Input Output Remapping Table** 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun arm64 only table, required in order to describe IO topology, SMMUs, 204*4882a593Smuzhiyun and GIC ITSs, and how those various components are connected together, 205*4882a593Smuzhiyun such as identifying which components are behind which SMMUs/ITSs. 206*4882a593Smuzhiyun This table will only be required on certain SBSA platforms (e.g., 207*4882a593Smuzhiyun when using GICv3-ITS and an SMMU); on SBSA Level 0 platforms, it 208*4882a593Smuzhiyun remains optional. 209*4882a593Smuzhiyun 210*4882a593SmuzhiyunIVRS Signature Reserved (signature == "IVRS") 211*4882a593Smuzhiyun 212*4882a593Smuzhiyun **I/O Virtualization Reporting Structure** 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun x86_64 (AMD) only table, will not be supported. 215*4882a593Smuzhiyun 216*4882a593SmuzhiyunLPIT Signature Reserved (signature == "LPIT") 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun **Low Power Idle Table** 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun x86 only table as of ACPI 5.1; starting with ACPI 6.0, processor 221*4882a593Smuzhiyun descriptions and power states on ARM platforms should use the DSDT 222*4882a593Smuzhiyun and define processor container devices (_HID ACPI0010, Section 8.4, 223*4882a593Smuzhiyun and more specifically 8.4.3 and 8.4.4). 224*4882a593Smuzhiyun 225*4882a593SmuzhiyunMADT Section 5.2.12 (signature == "APIC") 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun **Multiple APIC Description Table** 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun Required for arm64. Only the GIC interrupt controller structures 230*4882a593Smuzhiyun should be used (types 0xA - 0xF). 231*4882a593Smuzhiyun 232*4882a593SmuzhiyunMCFG Signature Reserved (signature == "MCFG") 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun **Memory-mapped ConFiGuration space** 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun If the platform supports PCI/PCIe, an MCFG table is required. 237*4882a593Smuzhiyun 238*4882a593SmuzhiyunMCHI Signature Reserved (signature == "MCHI") 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun **Management Controller Host Interface table** 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun Optional, not currently supported. 243*4882a593Smuzhiyun 244*4882a593SmuzhiyunMPST Section 5.2.21 (signature == "MPST") 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun **Memory Power State Table** 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun Optional, not currently supported. 249*4882a593Smuzhiyun 250*4882a593SmuzhiyunMSCT Section 5.2.19 (signature == "MSCT") 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun **Maximum System Characteristic Table** 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun Optional, not currently supported. 255*4882a593Smuzhiyun 256*4882a593SmuzhiyunMSDM Signature Reserved (signature == "MSDM") 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun **Microsoft Data Management table** 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun Microsoft only table, will not be supported. 261*4882a593Smuzhiyun 262*4882a593SmuzhiyunNFIT Section 5.2.25 (signature == "NFIT") 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun **NVDIMM Firmware Interface Table** 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun Optional, not currently supported. 267*4882a593Smuzhiyun 268*4882a593SmuzhiyunOEMx Signature of "OEMx" only 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun **OEM Specific Tables** 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun All tables starting with a signature of "OEM" are reserved for OEM 273*4882a593Smuzhiyun use. Since these are not meant to be of general use but are limited 274*4882a593Smuzhiyun to very specific end users, they are not recommended for use and are 275*4882a593Smuzhiyun not supported by the kernel for arm64. 276*4882a593Smuzhiyun 277*4882a593SmuzhiyunPCCT Section 14.1 (signature == "PCCT) 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun **Platform Communications Channel Table** 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun Recommend for use on arm64; use of PCC is recommended when using CPPC 282*4882a593Smuzhiyun to control performance and power for platform processors. 283*4882a593Smuzhiyun 284*4882a593SmuzhiyunPMTT Section 5.2.21.12 (signature == "PMTT") 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun **Platform Memory Topology Table** 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun Optional, not currently supported. 289*4882a593Smuzhiyun 290*4882a593SmuzhiyunPSDT Section 5.2.11.3 (signature == "PSDT") 291*4882a593Smuzhiyun 292*4882a593Smuzhiyun **Persistent System Description Table** 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun Obsolete table, will not be supported. 295*4882a593Smuzhiyun 296*4882a593SmuzhiyunRASF Section 5.2.20 (signature == "RASF") 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun **RAS Feature table** 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun Optional, not currently supported. 301*4882a593Smuzhiyun 302*4882a593SmuzhiyunRSDP Section 5.2.5 (signature == "RSD PTR") 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun **Root System Description PoinTeR** 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun Required for arm64. 307*4882a593Smuzhiyun 308*4882a593SmuzhiyunRSDT Section 5.2.7 (signature == "RSDT") 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun **Root System Description Table** 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun Since this table can only provide 32-bit addresses, it is deprecated 313*4882a593Smuzhiyun on arm64, and will not be used. If provided, it will be ignored. 314*4882a593Smuzhiyun 315*4882a593SmuzhiyunSBST Section 5.2.14 (signature == "SBST") 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun **Smart Battery Subsystem Table** 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun Optional, not currently supported. 320*4882a593Smuzhiyun 321*4882a593SmuzhiyunSLIC Signature Reserved (signature == "SLIC") 322*4882a593Smuzhiyun 323*4882a593Smuzhiyun **Software LIcensing table** 324*4882a593Smuzhiyun 325*4882a593Smuzhiyun Microsoft only table, will not be supported. 326*4882a593Smuzhiyun 327*4882a593SmuzhiyunSLIT Section 5.2.17 (signature == "SLIT") 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun **System Locality distance Information Table** 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun Optional in general, but required for NUMA systems. 332*4882a593Smuzhiyun 333*4882a593SmuzhiyunSPCR Signature Reserved (signature == "SPCR") 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun **Serial Port Console Redirection table** 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun Required for arm64. 338*4882a593Smuzhiyun 339*4882a593SmuzhiyunSPMI Signature Reserved (signature == "SPMI") 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun **Server Platform Management Interface table** 342*4882a593Smuzhiyun 343*4882a593Smuzhiyun Optional, not currently supported. 344*4882a593Smuzhiyun 345*4882a593SmuzhiyunSRAT Section 5.2.16 (signature == "SRAT") 346*4882a593Smuzhiyun 347*4882a593Smuzhiyun **System Resource Affinity Table** 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun Optional, but if used, only the GICC Affinity structures are read. 350*4882a593Smuzhiyun To support arm64 NUMA, this table is required. 351*4882a593Smuzhiyun 352*4882a593SmuzhiyunSSDT Section 5.2.11.2 (signature == "SSDT") 353*4882a593Smuzhiyun 354*4882a593Smuzhiyun **Secondary System Description Table** 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun These tables are a continuation of the DSDT; these are recommended 357*4882a593Smuzhiyun for use with devices that can be added to a running system, but can 358*4882a593Smuzhiyun also serve the purpose of dividing up device descriptions into more 359*4882a593Smuzhiyun manageable pieces. 360*4882a593Smuzhiyun 361*4882a593Smuzhiyun An SSDT can only ADD to the ACPI namespace. It cannot modify or 362*4882a593Smuzhiyun replace existing device descriptions already in the namespace. 363*4882a593Smuzhiyun 364*4882a593Smuzhiyun These tables are optional, however. ACPI tables should contain only 365*4882a593Smuzhiyun one DSDT but can contain many SSDTs. 366*4882a593Smuzhiyun 367*4882a593SmuzhiyunSTAO Signature Reserved (signature == "STAO") 368*4882a593Smuzhiyun 369*4882a593Smuzhiyun **_STA Override table** 370*4882a593Smuzhiyun 371*4882a593Smuzhiyun Optional, but only necessary in virtualized environments in order to 372*4882a593Smuzhiyun hide devices from guest OSs. 373*4882a593Smuzhiyun 374*4882a593SmuzhiyunTCPA Signature Reserved (signature == "TCPA") 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun **Trusted Computing Platform Alliance table** 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun Optional, not currently supported, and may need changes to fully 379*4882a593Smuzhiyun interoperate with arm64. 380*4882a593Smuzhiyun 381*4882a593SmuzhiyunTPM2 Signature Reserved (signature == "TPM2") 382*4882a593Smuzhiyun 383*4882a593Smuzhiyun **Trusted Platform Module 2 table** 384*4882a593Smuzhiyun 385*4882a593Smuzhiyun Optional, not currently supported, and may need changes to fully 386*4882a593Smuzhiyun interoperate with arm64. 387*4882a593Smuzhiyun 388*4882a593SmuzhiyunUEFI Signature Reserved (signature == "UEFI") 389*4882a593Smuzhiyun 390*4882a593Smuzhiyun **UEFI ACPI data table** 391*4882a593Smuzhiyun 392*4882a593Smuzhiyun Optional, not currently supported. No known use case for arm64, 393*4882a593Smuzhiyun at present. 394*4882a593Smuzhiyun 395*4882a593SmuzhiyunWAET Signature Reserved (signature == "WAET") 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun **Windows ACPI Emulated devices Table** 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun Microsoft only table, will not be supported. 400*4882a593Smuzhiyun 401*4882a593SmuzhiyunWDAT Signature Reserved (signature == "WDAT") 402*4882a593Smuzhiyun 403*4882a593Smuzhiyun **Watch Dog Action Table** 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun Microsoft only table, will not be supported. 406*4882a593Smuzhiyun 407*4882a593SmuzhiyunWDRT Signature Reserved (signature == "WDRT") 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun **Watch Dog Resource Table** 410*4882a593Smuzhiyun 411*4882a593Smuzhiyun Microsoft only table, will not be supported. 412*4882a593Smuzhiyun 413*4882a593SmuzhiyunWPBT Signature Reserved (signature == "WPBT") 414*4882a593Smuzhiyun 415*4882a593Smuzhiyun **Windows Platform Binary Table** 416*4882a593Smuzhiyun 417*4882a593Smuzhiyun Microsoft only table, will not be supported. 418*4882a593Smuzhiyun 419*4882a593SmuzhiyunXENV Signature Reserved (signature == "XENV") 420*4882a593Smuzhiyun 421*4882a593Smuzhiyun **Xen project table** 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun Optional, used only by Xen at present. 424*4882a593Smuzhiyun 425*4882a593SmuzhiyunXSDT Section 5.2.8 (signature == "XSDT") 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun **eXtended System Description Table** 428*4882a593Smuzhiyun 429*4882a593Smuzhiyun Required for arm64. 430*4882a593Smuzhiyun====== ======================================================================== 431*4882a593Smuzhiyun 432*4882a593SmuzhiyunACPI Objects 433*4882a593Smuzhiyun------------ 434*4882a593SmuzhiyunThe expectations on individual ACPI objects that are likely to be used are 435*4882a593Smuzhiyunshown in the list that follows; any object not explicitly mentioned below 436*4882a593Smuzhiyunshould be used as needed for a particular platform or particular subsystem, 437*4882a593Smuzhiyunsuch as power management or PCI. 438*4882a593Smuzhiyun 439*4882a593Smuzhiyun===== ================ ======================================================== 440*4882a593SmuzhiyunName Section Usage for ARMv8 Linux 441*4882a593Smuzhiyun===== ================ ======================================================== 442*4882a593Smuzhiyun_CCA 6.2.17 This method must be defined for all bus masters 443*4882a593Smuzhiyun on arm64 - there are no assumptions made about 444*4882a593Smuzhiyun whether such devices are cache coherent or not. 445*4882a593Smuzhiyun The _CCA value is inherited by all descendants of 446*4882a593Smuzhiyun these devices so it does not need to be repeated. 447*4882a593Smuzhiyun Without _CCA on arm64, the kernel does not know what 448*4882a593Smuzhiyun to do about setting up DMA for the device. 449*4882a593Smuzhiyun 450*4882a593Smuzhiyun NB: this method provides default cache coherency 451*4882a593Smuzhiyun attributes; the presence of an SMMU can be used to 452*4882a593Smuzhiyun modify that, however. For example, a master could 453*4882a593Smuzhiyun default to non-coherent, but be made coherent with 454*4882a593Smuzhiyun the appropriate SMMU configuration (see Table 17 of 455*4882a593Smuzhiyun the IORT specification, ARM Document DEN 0049B). 456*4882a593Smuzhiyun 457*4882a593Smuzhiyun_CID 6.1.2 Use as needed, see also _HID. 458*4882a593Smuzhiyun 459*4882a593Smuzhiyun_CLS 6.1.3 Use as needed, see also _HID. 460*4882a593Smuzhiyun 461*4882a593Smuzhiyun_CPC 8.4.7.1 Use as needed, power management specific. CPPC is 462*4882a593Smuzhiyun recommended on arm64. 463*4882a593Smuzhiyun 464*4882a593Smuzhiyun_CRS 6.2.2 Required on arm64. 465*4882a593Smuzhiyun 466*4882a593Smuzhiyun_CSD 8.4.2.2 Use as needed, used only in conjunction with _CST. 467*4882a593Smuzhiyun 468*4882a593Smuzhiyun_CST 8.4.2.1 Low power idle states (8.4.4) are recommended instead 469*4882a593Smuzhiyun of C-states. 470*4882a593Smuzhiyun 471*4882a593Smuzhiyun_DDN 6.1.4 This field can be used for a device name. However, 472*4882a593Smuzhiyun it is meant for DOS device names (e.g., COM1), so be 473*4882a593Smuzhiyun careful of its use across OSes. 474*4882a593Smuzhiyun 475*4882a593Smuzhiyun_DSD 6.2.5 To be used with caution. If this object is used, try 476*4882a593Smuzhiyun to use it within the constraints already defined by the 477*4882a593Smuzhiyun Device Properties UUID. Only in rare circumstances 478*4882a593Smuzhiyun should it be necessary to create a new _DSD UUID. 479*4882a593Smuzhiyun 480*4882a593Smuzhiyun In either case, submit the _DSD definition along with 481*4882a593Smuzhiyun any driver patches for discussion, especially when 482*4882a593Smuzhiyun device properties are used. A driver will not be 483*4882a593Smuzhiyun considered complete without a corresponding _DSD 484*4882a593Smuzhiyun description. Once approved by kernel maintainers, 485*4882a593Smuzhiyun the UUID or device properties must then be registered 486*4882a593Smuzhiyun with the UEFI Forum; this may cause some iteration as 487*4882a593Smuzhiyun more than one OS will be registering entries. 488*4882a593Smuzhiyun 489*4882a593Smuzhiyun_DSM 9.1.1 Do not use this method. It is not standardized, the 490*4882a593Smuzhiyun return values are not well documented, and it is 491*4882a593Smuzhiyun currently a frequent source of error. 492*4882a593Smuzhiyun 493*4882a593Smuzhiyun\_GL 5.7.1 This object is not to be used in hardware reduced 494*4882a593Smuzhiyun mode, and therefore should not be used on arm64. 495*4882a593Smuzhiyun 496*4882a593Smuzhiyun_GLK 6.5.7 This object requires a global lock be defined; there 497*4882a593Smuzhiyun is no global lock on arm64 since it runs in hardware 498*4882a593Smuzhiyun reduced mode. Hence, do not use this object on arm64. 499*4882a593Smuzhiyun 500*4882a593Smuzhiyun\_GPE 5.3.1 This namespace is for x86 use only. Do not use it 501*4882a593Smuzhiyun on arm64. 502*4882a593Smuzhiyun 503*4882a593Smuzhiyun_HID 6.1.5 This is the primary object to use in device probing, 504*4882a593Smuzhiyun though _CID and _CLS may also be used. 505*4882a593Smuzhiyun 506*4882a593Smuzhiyun_INI 6.5.1 Not required, but can be useful in setting up devices 507*4882a593Smuzhiyun when UEFI leaves them in a state that may not be what 508*4882a593Smuzhiyun the driver expects before it starts probing. 509*4882a593Smuzhiyun 510*4882a593Smuzhiyun_LPI 8.4.4.3 Recommended for use with processor definitions (_HID 511*4882a593Smuzhiyun ACPI0010) on arm64. See also _RDI. 512*4882a593Smuzhiyun 513*4882a593Smuzhiyun_MLS 6.1.7 Highly recommended for use in internationalization. 514*4882a593Smuzhiyun 515*4882a593Smuzhiyun_OFF 7.2.2 It is recommended to define this method for any device 516*4882a593Smuzhiyun that can be turned on or off. 517*4882a593Smuzhiyun 518*4882a593Smuzhiyun_ON 7.2.3 It is recommended to define this method for any device 519*4882a593Smuzhiyun that can be turned on or off. 520*4882a593Smuzhiyun 521*4882a593Smuzhiyun\_OS 5.7.3 This method will return "Linux" by default (this is 522*4882a593Smuzhiyun the value of the macro ACPI_OS_NAME on Linux). The 523*4882a593Smuzhiyun command line parameter acpi_os=<string> can be used 524*4882a593Smuzhiyun to set it to some other value. 525*4882a593Smuzhiyun 526*4882a593Smuzhiyun_OSC 6.2.11 This method can be a global method in ACPI (i.e., 527*4882a593Smuzhiyun \_SB._OSC), or it may be associated with a specific 528*4882a593Smuzhiyun device (e.g., \_SB.DEV0._OSC), or both. When used 529*4882a593Smuzhiyun as a global method, only capabilities published in 530*4882a593Smuzhiyun the ACPI specification are allowed. When used as 531*4882a593Smuzhiyun a device-specific method, the process described for 532*4882a593Smuzhiyun using _DSD MUST be used to create an _OSC definition; 533*4882a593Smuzhiyun out-of-process use of _OSC is not allowed. That is, 534*4882a593Smuzhiyun submit the device-specific _OSC usage description as 535*4882a593Smuzhiyun part of the kernel driver submission, get it approved 536*4882a593Smuzhiyun by the kernel community, then register it with the 537*4882a593Smuzhiyun UEFI Forum. 538*4882a593Smuzhiyun 539*4882a593Smuzhiyun\_OSI 5.7.2 Deprecated on ARM64. As far as ACPI firmware is 540*4882a593Smuzhiyun concerned, _OSI is not to be used to determine what 541*4882a593Smuzhiyun sort of system is being used or what functionality 542*4882a593Smuzhiyun is provided. The _OSC method is to be used instead. 543*4882a593Smuzhiyun 544*4882a593Smuzhiyun_PDC 8.4.1 Deprecated, do not use on arm64. 545*4882a593Smuzhiyun 546*4882a593Smuzhiyun\_PIC 5.8.1 The method should not be used. On arm64, the only 547*4882a593Smuzhiyun interrupt model available is GIC. 548*4882a593Smuzhiyun 549*4882a593Smuzhiyun\_PR 5.3.1 This namespace is for x86 use only on legacy systems. 550*4882a593Smuzhiyun Do not use it on arm64. 551*4882a593Smuzhiyun 552*4882a593Smuzhiyun_PRT 6.2.13 Required as part of the definition of all PCI root 553*4882a593Smuzhiyun devices. 554*4882a593Smuzhiyun 555*4882a593Smuzhiyun_PRx 7.3.8-11 Use as needed; power management specific. If _PR0 is 556*4882a593Smuzhiyun defined, _PR3 must also be defined. 557*4882a593Smuzhiyun 558*4882a593Smuzhiyun_PSx 7.3.2-5 Use as needed; power management specific. If _PS0 is 559*4882a593Smuzhiyun defined, _PS3 must also be defined. If clocks or 560*4882a593Smuzhiyun regulators need adjusting to be consistent with power 561*4882a593Smuzhiyun usage, change them in these methods. 562*4882a593Smuzhiyun 563*4882a593Smuzhiyun_RDI 8.4.4.4 Recommended for use with processor definitions (_HID 564*4882a593Smuzhiyun ACPI0010) on arm64. This should only be used in 565*4882a593Smuzhiyun conjunction with _LPI. 566*4882a593Smuzhiyun 567*4882a593Smuzhiyun\_REV 5.7.4 Always returns the latest version of ACPI supported. 568*4882a593Smuzhiyun 569*4882a593Smuzhiyun\_SB 5.3.1 Required on arm64; all devices must be defined in this 570*4882a593Smuzhiyun namespace. 571*4882a593Smuzhiyun 572*4882a593Smuzhiyun_SLI 6.2.15 Use is recommended when SLIT table is in use. 573*4882a593Smuzhiyun 574*4882a593Smuzhiyun_STA 6.3.7, It is recommended to define this method for any device 575*4882a593Smuzhiyun 7.2.4 that can be turned on or off. See also the STAO table 576*4882a593Smuzhiyun that provides overrides to hide devices in virtualized 577*4882a593Smuzhiyun environments. 578*4882a593Smuzhiyun 579*4882a593Smuzhiyun_SRS 6.2.16 Use as needed; see also _PRS. 580*4882a593Smuzhiyun 581*4882a593Smuzhiyun_STR 6.1.10 Recommended for conveying device names to end users; 582*4882a593Smuzhiyun this is preferred over using _DDN. 583*4882a593Smuzhiyun 584*4882a593Smuzhiyun_SUB 6.1.9 Use as needed; _HID or _CID are preferred. 585*4882a593Smuzhiyun 586*4882a593Smuzhiyun_SUN 6.1.11 Use as needed, but recommended. 587*4882a593Smuzhiyun 588*4882a593Smuzhiyun_SWS 7.4.3 Use as needed; power management specific; this may 589*4882a593Smuzhiyun require specification changes for use on arm64. 590*4882a593Smuzhiyun 591*4882a593Smuzhiyun_UID 6.1.12 Recommended for distinguishing devices of the same 592*4882a593Smuzhiyun class; define it if at all possible. 593*4882a593Smuzhiyun===== ================ ======================================================== 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun 596*4882a593Smuzhiyun 597*4882a593Smuzhiyun 598*4882a593SmuzhiyunACPI Event Model 599*4882a593Smuzhiyun---------------- 600*4882a593SmuzhiyunDo not use GPE block devices; these are not supported in the hardware reduced 601*4882a593Smuzhiyunprofile used by arm64. Since there are no GPE blocks defined for use on ARM 602*4882a593Smuzhiyunplatforms, ACPI events must be signaled differently. 603*4882a593Smuzhiyun 604*4882a593SmuzhiyunThere are two options: GPIO-signaled interrupts (Section 5.6.5), and 605*4882a593Smuzhiyuninterrupt-signaled events (Section 5.6.9). Interrupt-signaled events are a 606*4882a593Smuzhiyunnew feature in the ACPI 6.1 specification. Either - or both - can be used 607*4882a593Smuzhiyunon a given platform, and which to use may be dependent of limitations in any 608*4882a593Smuzhiyungiven SoC. If possible, interrupt-signaled events are recommended. 609*4882a593Smuzhiyun 610*4882a593Smuzhiyun 611*4882a593SmuzhiyunACPI Processor Control 612*4882a593Smuzhiyun---------------------- 613*4882a593SmuzhiyunSection 8 of the ACPI specification changed significantly in version 6.0. 614*4882a593SmuzhiyunProcessors should now be defined as Device objects with _HID ACPI0007; do 615*4882a593Smuzhiyunnot use the deprecated Processor statement in ASL. All multiprocessor systems 616*4882a593Smuzhiyunshould also define a hierarchy of processors, done with Processor Container 617*4882a593SmuzhiyunDevices (see Section 8.4.3.1, _HID ACPI0010); do not use processor aggregator 618*4882a593Smuzhiyundevices (Section 8.5) to describe processor topology. Section 8.4 of the 619*4882a593Smuzhiyunspecification describes the semantics of these object definitions and how 620*4882a593Smuzhiyunthey interrelate. 621*4882a593Smuzhiyun 622*4882a593SmuzhiyunMost importantly, the processor hierarchy defined also defines the low power 623*4882a593Smuzhiyunidle states that are available to the platform, along with the rules for 624*4882a593Smuzhiyundetermining which processors can be turned on or off and the circumstances 625*4882a593Smuzhiyunthat control that. Without this information, the processors will run in 626*4882a593Smuzhiyunwhatever power state they were left in by UEFI. 627*4882a593Smuzhiyun 628*4882a593SmuzhiyunNote too, that the processor Device objects defined and the entries in the 629*4882a593SmuzhiyunMADT for GICs are expected to be in synchronization. The _UID of the Device 630*4882a593Smuzhiyunobject must correspond to processor IDs used in the MADT. 631*4882a593Smuzhiyun 632*4882a593SmuzhiyunIt is recommended that CPPC (8.4.5) be used as the primary model for processor 633*4882a593Smuzhiyunperformance control on arm64. C-states and P-states may become available at 634*4882a593Smuzhiyunsome point in the future, but most current design work appears to favor CPPC. 635*4882a593Smuzhiyun 636*4882a593SmuzhiyunFurther, it is essential that the ARMv8 SoC provide a fully functional 637*4882a593Smuzhiyunimplementation of PSCI; this will be the only mechanism supported by ACPI 638*4882a593Smuzhiyunto control CPU power state. Booting of secondary CPUs using the ACPI 639*4882a593Smuzhiyunparking protocol is possible, but discouraged, since only PSCI is supported 640*4882a593Smuzhiyunfor ARM servers. 641*4882a593Smuzhiyun 642*4882a593Smuzhiyun 643*4882a593SmuzhiyunACPI System Address Map Interfaces 644*4882a593Smuzhiyun---------------------------------- 645*4882a593SmuzhiyunIn Section 15 of the ACPI specification, several methods are mentioned as 646*4882a593Smuzhiyunpossible mechanisms for conveying memory resource information to the kernel. 647*4882a593SmuzhiyunFor arm64, we will only support UEFI for booting with ACPI, hence the UEFI 648*4882a593SmuzhiyunGetMemoryMap() boot service is the only mechanism that will be used. 649*4882a593Smuzhiyun 650*4882a593Smuzhiyun 651*4882a593SmuzhiyunACPI Platform Error Interfaces (APEI) 652*4882a593Smuzhiyun------------------------------------- 653*4882a593SmuzhiyunThe APEI tables supported are described above. 654*4882a593Smuzhiyun 655*4882a593SmuzhiyunAPEI requires the equivalent of an SCI and an NMI on ARMv8. The SCI is used 656*4882a593Smuzhiyunto notify the OSPM of errors that have occurred but can be corrected and the 657*4882a593Smuzhiyunsystem can continue correct operation, even if possibly degraded. The NMI is 658*4882a593Smuzhiyunused to indicate fatal errors that cannot be corrected, and require immediate 659*4882a593Smuzhiyunattention. 660*4882a593Smuzhiyun 661*4882a593SmuzhiyunSince there is no direct equivalent of the x86 SCI or NMI, arm64 handles 662*4882a593Smuzhiyunthese slightly differently. The SCI is handled as a high priority interrupt; 663*4882a593Smuzhiyungiven that these are corrected (or correctable) errors being reported, this 664*4882a593Smuzhiyunis sufficient. The NMI is emulated as the highest priority interrupt 665*4882a593Smuzhiyunpossible. This implies some caution must be used since there could be 666*4882a593Smuzhiyuninterrupts at higher privilege levels or even interrupts at the same priority 667*4882a593Smuzhiyunas the emulated NMI. In Linux, this should not be the case but one should 668*4882a593Smuzhiyunbe aware it could happen. 669*4882a593Smuzhiyun 670*4882a593Smuzhiyun 671*4882a593SmuzhiyunACPI Objects Not Supported on ARM64 672*4882a593Smuzhiyun----------------------------------- 673*4882a593SmuzhiyunWhile this may change in the future, there are several classes of objects 674*4882a593Smuzhiyunthat can be defined, but are not currently of general interest to ARM servers. 675*4882a593SmuzhiyunSome of these objects have x86 equivalents, and may actually make sense in ARM 676*4882a593Smuzhiyunservers. However, there is either no hardware available at present, or there 677*4882a593Smuzhiyunmay not even be a non-ARM implementation yet. Hence, they are not currently 678*4882a593Smuzhiyunsupported. 679*4882a593Smuzhiyun 680*4882a593SmuzhiyunThe following classes of objects are not supported: 681*4882a593Smuzhiyun 682*4882a593Smuzhiyun - Section 9.2: ambient light sensor devices 683*4882a593Smuzhiyun 684*4882a593Smuzhiyun - Section 9.3: battery devices 685*4882a593Smuzhiyun 686*4882a593Smuzhiyun - Section 9.4: lids (e.g., laptop lids) 687*4882a593Smuzhiyun 688*4882a593Smuzhiyun - Section 9.8.2: IDE controllers 689*4882a593Smuzhiyun 690*4882a593Smuzhiyun - Section 9.9: floppy controllers 691*4882a593Smuzhiyun 692*4882a593Smuzhiyun - Section 9.10: GPE block devices 693*4882a593Smuzhiyun 694*4882a593Smuzhiyun - Section 9.15: PC/AT RTC/CMOS devices 695*4882a593Smuzhiyun 696*4882a593Smuzhiyun - Section 9.16: user presence detection devices 697*4882a593Smuzhiyun 698*4882a593Smuzhiyun - Section 9.17: I/O APIC devices; all GICs must be enumerable via MADT 699*4882a593Smuzhiyun 700*4882a593Smuzhiyun - Section 9.18: time and alarm devices (see 9.15) 701*4882a593Smuzhiyun 702*4882a593Smuzhiyun - Section 10: power source and power meter devices 703*4882a593Smuzhiyun 704*4882a593Smuzhiyun - Section 11: thermal management 705*4882a593Smuzhiyun 706*4882a593Smuzhiyun - Section 12: embedded controllers interface 707*4882a593Smuzhiyun 708*4882a593Smuzhiyun - Section 13: SMBus interfaces 709*4882a593Smuzhiyun 710*4882a593Smuzhiyun 711*4882a593SmuzhiyunThis also means that there is no support for the following objects: 712*4882a593Smuzhiyun 713*4882a593Smuzhiyun==== =========================== ==== ========== 714*4882a593SmuzhiyunName Section Name Section 715*4882a593Smuzhiyun==== =========================== ==== ========== 716*4882a593Smuzhiyun_ALC 9.3.4 _FDM 9.10.3 717*4882a593Smuzhiyun_ALI 9.3.2 _FIX 6.2.7 718*4882a593Smuzhiyun_ALP 9.3.6 _GAI 10.4.5 719*4882a593Smuzhiyun_ALR 9.3.5 _GHL 10.4.7 720*4882a593Smuzhiyun_ALT 9.3.3 _GTM 9.9.2.1.1 721*4882a593Smuzhiyun_BCT 10.2.2.10 _LID 9.5.1 722*4882a593Smuzhiyun_BDN 6.5.3 _PAI 10.4.4 723*4882a593Smuzhiyun_BIF 10.2.2.1 _PCL 10.3.2 724*4882a593Smuzhiyun_BIX 10.2.2.1 _PIF 10.3.3 725*4882a593Smuzhiyun_BLT 9.2.3 _PMC 10.4.1 726*4882a593Smuzhiyun_BMA 10.2.2.4 _PMD 10.4.8 727*4882a593Smuzhiyun_BMC 10.2.2.12 _PMM 10.4.3 728*4882a593Smuzhiyun_BMD 10.2.2.11 _PRL 10.3.4 729*4882a593Smuzhiyun_BMS 10.2.2.5 _PSR 10.3.1 730*4882a593Smuzhiyun_BST 10.2.2.6 _PTP 10.4.2 731*4882a593Smuzhiyun_BTH 10.2.2.7 _SBS 10.1.3 732*4882a593Smuzhiyun_BTM 10.2.2.9 _SHL 10.4.6 733*4882a593Smuzhiyun_BTP 10.2.2.8 _STM 9.9.2.1.1 734*4882a593Smuzhiyun_DCK 6.5.2 _UPD 9.16.1 735*4882a593Smuzhiyun_EC 12.12 _UPP 9.16.2 736*4882a593Smuzhiyun_FDE 9.10.1 _WPC 10.5.2 737*4882a593Smuzhiyun_FDI 9.10.2 _WPP 10.5.3 738*4882a593Smuzhiyun==== =========================== ==== ========== 739