Back to home page

OSCL-LXR

 
 

    


0001 ===========
0002 ACPI Tables
0003 ===========
0004 
0005 The expectations of individual ACPI tables are discussed in the list that
0006 follows.
0007 
0008 If a section number is used, it refers to a section number in the ACPI
0009 specification where the object is defined.  If "Signature Reserved" is used,
0010 the table signature (the first four bytes of the table) is the only portion
0011 of the table recognized by the specification, and the actual table is defined
0012 outside of the UEFI Forum (see Section 5.2.6 of the specification).
0013 
0014 For ACPI on arm64, tables also fall into the following categories:
0015 
0016        -  Required: DSDT, FADT, GTDT, MADT, MCFG, RSDP, SPCR, XSDT
0017 
0018        -  Recommended: BERT, EINJ, ERST, HEST, PCCT, SSDT
0019 
0020        -  Optional: BGRT, CPEP, CSRT, DBG2, DRTM, ECDT, FACS, FPDT, IBFT,
0021           IORT, MCHI, MPST, MSCT, NFIT, PMTT, RASF, SBST, SLIT, SPMI, SRAT,
0022           STAO, TCPA, TPM2, UEFI, XENV
0023 
0024        -  Not supported: BOOT, DBGP, DMAR, ETDT, HPET, IVRS, LPIT, MSDM, OEMx,
0025           PSDT, RSDT, SLIC, WAET, WDAT, WDRT, WPBT
0026 
0027 ====== ========================================================================
0028 Table  Usage for ARMv8 Linux
0029 ====== ========================================================================
0030 BERT   Section 18.3 (signature == "BERT")
0031 
0032        **Boot Error Record Table**
0033 
0034        Must be supplied if RAS support is provided by the platform.  It
0035        is recommended this table be supplied.
0036 
0037 BOOT   Signature Reserved (signature == "BOOT")
0038 
0039        **simple BOOT flag table**
0040 
0041        Microsoft only table, will not be supported.
0042 
0043 BGRT   Section 5.2.22 (signature == "BGRT")
0044 
0045        **Boot Graphics Resource Table**
0046 
0047        Optional, not currently supported, with no real use-case for an
0048        ARM server.
0049 
0050 CPEP   Section 5.2.18 (signature == "CPEP")
0051 
0052        **Corrected Platform Error Polling table**
0053 
0054        Optional, not currently supported, and not recommended until such
0055        time as ARM-compatible hardware is available, and the specification
0056        suitably modified.
0057 
0058 CSRT   Signature Reserved (signature == "CSRT")
0059 
0060        **Core System Resources Table**
0061 
0062        Optional, not currently supported.
0063 
0064 DBG2   Signature Reserved (signature == "DBG2")
0065 
0066        **DeBuG port table 2**
0067 
0068        License has changed and should be usable.  Optional if used instead
0069        of earlycon=<device> on the command line.
0070 
0071 DBGP   Signature Reserved (signature == "DBGP")
0072 
0073        **DeBuG Port table**
0074 
0075        Microsoft only table, will not be supported.
0076 
0077 DSDT   Section 5.2.11.1 (signature == "DSDT")
0078 
0079        **Differentiated System Description Table**
0080 
0081        A DSDT is required; see also SSDT.
0082 
0083        ACPI tables contain only one DSDT but can contain one or more SSDTs,
0084        which are optional.  Each SSDT can only add to the ACPI namespace,
0085        but cannot modify or replace anything in the DSDT.
0086 
0087 DMAR   Signature Reserved (signature == "DMAR")
0088 
0089        **DMA Remapping table**
0090 
0091        x86 only table, will not be supported.
0092 
0093 DRTM   Signature Reserved (signature == "DRTM")
0094 
0095        **Dynamic Root of Trust for Measurement table**
0096 
0097        Optional, not currently supported.
0098 
0099 ECDT   Section 5.2.16 (signature == "ECDT")
0100 
0101        **Embedded Controller Description Table**
0102 
0103        Optional, not currently supported, but could be used on ARM if and
0104        only if one uses the GPE_BIT field to represent an IRQ number, since
0105        there are no GPE blocks defined in hardware reduced mode.  This would
0106        need to be modified in the ACPI specification.
0107 
0108 EINJ   Section 18.6 (signature == "EINJ")
0109 
0110        **Error Injection table**
0111 
0112        This table is very useful for testing platform response to error
0113        conditions; it allows one to inject an error into the system as
0114        if it had actually occurred.  However, this table should not be
0115        shipped with a production system; it should be dynamically loaded
0116        and executed with the ACPICA tools only during testing.
0117 
0118 ERST   Section 18.5 (signature == "ERST")
0119 
0120        **Error Record Serialization Table**
0121 
0122        On a platform supports RAS, this table must be supplied if it is not
0123        UEFI-based; if it is UEFI-based, this table may be supplied. When this
0124        table is not present, UEFI run time service will be utilized to save
0125        and retrieve hardware error information to and from a persistent store.
0126 
0127 ETDT   Signature Reserved (signature == "ETDT")
0128 
0129        **Event Timer Description Table**
0130 
0131        Obsolete table, will not be supported.
0132 
0133 FACS   Section 5.2.10 (signature == "FACS")
0134 
0135        **Firmware ACPI Control Structure**
0136 
0137        It is unlikely that this table will be terribly useful.  If it is
0138        provided, the Global Lock will NOT be used since it is not part of
0139        the hardware reduced profile, and only 64-bit address fields will
0140        be considered valid.
0141 
0142 FADT   Section 5.2.9 (signature == "FACP")
0143 
0144        **Fixed ACPI Description Table**
0145        Required for arm64.
0146 
0147 
0148        The HW_REDUCED_ACPI flag must be set.  All of the fields that are
0149        to be ignored when HW_REDUCED_ACPI is set are expected to be set to
0150        zero.
0151 
0152        If an FACS table is provided, the X_FIRMWARE_CTRL field is to be
0153        used, not FIRMWARE_CTRL.
0154 
0155        If PSCI is used (as is recommended), make sure that ARM_BOOT_ARCH is
0156        filled in properly - that the PSCI_COMPLIANT flag is set and that
0157        PSCI_USE_HVC is set or unset as needed (see table 5-37).
0158 
0159        For the DSDT that is also required, the X_DSDT field is to be used,
0160        not the DSDT field.
0161 
0162 FPDT   Section 5.2.23 (signature == "FPDT")
0163 
0164        **Firmware Performance Data Table**
0165 
0166        Optional, not currently supported.
0167 
0168 GTDT   Section 5.2.24 (signature == "GTDT")
0169 
0170        **Generic Timer Description Table**
0171 
0172        Required for arm64.
0173 
0174 HEST   Section 18.3.2 (signature == "HEST")
0175 
0176        **Hardware Error Source Table**
0177 
0178        ARM-specific error sources have been defined; please use those or the
0179        PCI types such as type 6 (AER Root Port), 7 (AER Endpoint), or 8 (AER
0180        Bridge), or use type 9 (Generic Hardware Error Source).  Firmware first
0181        error handling is possible if and only if Trusted Firmware is being
0182        used on arm64.
0183 
0184        Must be supplied if RAS support is provided by the platform.  It
0185        is recommended this table be supplied.
0186 
0187 HPET   Signature Reserved (signature == "HPET")
0188 
0189        **High Precision Event timer Table**
0190 
0191        x86 only table, will not be supported.
0192 
0193 IBFT   Signature Reserved (signature == "IBFT")
0194 
0195        **iSCSI Boot Firmware Table**
0196 
0197        Microsoft defined table, support TBD.
0198 
0199 IORT   Signature Reserved (signature == "IORT")
0200 
0201        **Input Output Remapping Table**
0202 
0203        arm64 only table, required in order to describe IO topology, SMMUs,
0204        and GIC ITSs, and how those various components are connected together,
0205        such as identifying which components are behind which SMMUs/ITSs.
0206        This table will only be required on certain SBSA platforms (e.g.,
0207        when using GICv3-ITS and an SMMU); on SBSA Level 0 platforms, it
0208        remains optional.
0209 
0210 IVRS   Signature Reserved (signature == "IVRS")
0211 
0212        **I/O Virtualization Reporting Structure**
0213 
0214        x86_64 (AMD) only table, will not be supported.
0215 
0216 LPIT   Signature Reserved (signature == "LPIT")
0217 
0218        **Low Power Idle Table**
0219 
0220        x86 only table as of ACPI 5.1; starting with ACPI 6.0, processor
0221        descriptions and power states on ARM platforms should use the DSDT
0222        and define processor container devices (_HID ACPI0010, Section 8.4,
0223        and more specifically 8.4.3 and 8.4.4).
0224 
0225 MADT   Section 5.2.12 (signature == "APIC")
0226 
0227        **Multiple APIC Description Table**
0228 
0229        Required for arm64.  Only the GIC interrupt controller structures
0230        should be used (types 0xA - 0xF).
0231 
0232 MCFG   Signature Reserved (signature == "MCFG")
0233 
0234        **Memory-mapped ConFiGuration space**
0235 
0236        If the platform supports PCI/PCIe, an MCFG table is required.
0237 
0238 MCHI   Signature Reserved (signature == "MCHI")
0239 
0240        **Management Controller Host Interface table**
0241 
0242        Optional, not currently supported.
0243 
0244 MPST   Section 5.2.21 (signature == "MPST")
0245 
0246        **Memory Power State Table**
0247 
0248        Optional, not currently supported.
0249 
0250 MSCT   Section 5.2.19 (signature == "MSCT")
0251 
0252        **Maximum System Characteristic Table**
0253 
0254        Optional, not currently supported.
0255 
0256 MSDM   Signature Reserved (signature == "MSDM")
0257 
0258        **Microsoft Data Management table**
0259 
0260        Microsoft only table, will not be supported.
0261 
0262 NFIT   Section 5.2.25 (signature == "NFIT")
0263 
0264        **NVDIMM Firmware Interface Table**
0265 
0266        Optional, not currently supported.
0267 
0268 OEMx   Signature of "OEMx" only
0269 
0270        **OEM Specific Tables**
0271 
0272        All tables starting with a signature of "OEM" are reserved for OEM
0273        use.  Since these are not meant to be of general use but are limited
0274        to very specific end users, they are not recommended for use and are
0275        not supported by the kernel for arm64.
0276 
0277 PCCT   Section 14.1 (signature == "PCCT)
0278 
0279        **Platform Communications Channel Table**
0280 
0281        Recommend for use on arm64; use of PCC is recommended when using CPPC
0282        to control performance and power for platform processors.
0283 
0284 PMTT   Section 5.2.21.12 (signature == "PMTT")
0285 
0286        **Platform Memory Topology Table**
0287 
0288        Optional, not currently supported.
0289 
0290 PSDT   Section 5.2.11.3 (signature == "PSDT")
0291 
0292        **Persistent System Description Table**
0293 
0294        Obsolete table, will not be supported.
0295 
0296 RASF   Section 5.2.20 (signature == "RASF")
0297 
0298        **RAS Feature table**
0299 
0300        Optional, not currently supported.
0301 
0302 RSDP   Section 5.2.5 (signature == "RSD PTR")
0303 
0304        **Root System Description PoinTeR**
0305 
0306        Required for arm64.
0307 
0308 RSDT   Section 5.2.7 (signature == "RSDT")
0309 
0310        **Root System Description Table**
0311 
0312        Since this table can only provide 32-bit addresses, it is deprecated
0313        on arm64, and will not be used.  If provided, it will be ignored.
0314 
0315 SBST   Section 5.2.14 (signature == "SBST")
0316 
0317        **Smart Battery Subsystem Table**
0318 
0319        Optional, not currently supported.
0320 
0321 SLIC   Signature Reserved (signature == "SLIC")
0322 
0323        **Software LIcensing table**
0324 
0325        Microsoft only table, will not be supported.
0326 
0327 SLIT   Section 5.2.17 (signature == "SLIT")
0328 
0329        **System Locality distance Information Table**
0330 
0331        Optional in general, but required for NUMA systems.
0332 
0333 SPCR   Signature Reserved (signature == "SPCR")
0334 
0335        **Serial Port Console Redirection table**
0336 
0337        Required for arm64.
0338 
0339 SPMI   Signature Reserved (signature == "SPMI")
0340 
0341        **Server Platform Management Interface table**
0342 
0343        Optional, not currently supported.
0344 
0345 SRAT   Section 5.2.16 (signature == "SRAT")
0346 
0347        **System Resource Affinity Table**
0348 
0349        Optional, but if used, only the GICC Affinity structures are read.
0350        To support arm64 NUMA, this table is required.
0351 
0352 SSDT   Section 5.2.11.2 (signature == "SSDT")
0353 
0354        **Secondary System Description Table**
0355 
0356        These tables are a continuation of the DSDT; these are recommended
0357        for use with devices that can be added to a running system, but can
0358        also serve the purpose of dividing up device descriptions into more
0359        manageable pieces.
0360 
0361        An SSDT can only ADD to the ACPI namespace.  It cannot modify or
0362        replace existing device descriptions already in the namespace.
0363 
0364        These tables are optional, however.  ACPI tables should contain only
0365        one DSDT but can contain many SSDTs.
0366 
0367 STAO   Signature Reserved (signature == "STAO")
0368 
0369        **_STA Override table**
0370 
0371        Optional, but only necessary in virtualized environments in order to
0372        hide devices from guest OSs.
0373 
0374 TCPA   Signature Reserved (signature == "TCPA")
0375 
0376        **Trusted Computing Platform Alliance table**
0377 
0378        Optional, not currently supported, and may need changes to fully
0379        interoperate with arm64.
0380 
0381 TPM2   Signature Reserved (signature == "TPM2")
0382 
0383        **Trusted Platform Module 2 table**
0384 
0385        Optional, not currently supported, and may need changes to fully
0386        interoperate with arm64.
0387 
0388 UEFI   Signature Reserved (signature == "UEFI")
0389 
0390        **UEFI ACPI data table**
0391 
0392        Optional, not currently supported.  No known use case for arm64,
0393        at present.
0394 
0395 WAET   Signature Reserved (signature == "WAET")
0396 
0397        **Windows ACPI Emulated devices Table**
0398 
0399        Microsoft only table, will not be supported.
0400 
0401 WDAT   Signature Reserved (signature == "WDAT")
0402 
0403        **Watch Dog Action Table**
0404 
0405        Microsoft only table, will not be supported.
0406 
0407 WDRT   Signature Reserved (signature == "WDRT")
0408 
0409        **Watch Dog Resource Table**
0410 
0411        Microsoft only table, will not be supported.
0412 
0413 WPBT   Signature Reserved (signature == "WPBT")
0414 
0415        **Windows Platform Binary Table**
0416 
0417        Microsoft only table, will not be supported.
0418 
0419 XENV   Signature Reserved (signature == "XENV")
0420 
0421        **Xen project table**
0422 
0423        Optional, used only by Xen at present.
0424 
0425 XSDT   Section 5.2.8 (signature == "XSDT")
0426 
0427        **eXtended System Description Table**
0428 
0429        Required for arm64.
0430 ====== ========================================================================
0431 
0432 ACPI Objects
0433 ------------
0434 The expectations on individual ACPI objects that are likely to be used are
0435 shown in the list that follows; any object not explicitly mentioned below
0436 should be used as needed for a particular platform or particular subsystem,
0437 such as power management or PCI.
0438 
0439 ===== ================ ========================================================
0440 Name   Section         Usage for ARMv8 Linux
0441 ===== ================ ========================================================
0442 _CCA   6.2.17          This method must be defined for all bus masters
0443                        on arm64 - there are no assumptions made about
0444                        whether such devices are cache coherent or not.
0445                        The _CCA value is inherited by all descendants of
0446                        these devices so it does not need to be repeated.
0447                        Without _CCA on arm64, the kernel does not know what
0448                        to do about setting up DMA for the device.
0449 
0450                        NB: this method provides default cache coherency
0451                        attributes; the presence of an SMMU can be used to
0452                        modify that, however.  For example, a master could
0453                        default to non-coherent, but be made coherent with
0454                        the appropriate SMMU configuration (see Table 17 of
0455                        the IORT specification, ARM Document DEN 0049B).
0456 
0457 _CID   6.1.2           Use as needed, see also _HID.
0458 
0459 _CLS   6.1.3           Use as needed, see also _HID.
0460 
0461 _CPC   8.4.7.1         Use as needed, power management specific.  CPPC is
0462                        recommended on arm64.
0463 
0464 _CRS   6.2.2           Required on arm64.
0465 
0466 _CSD   8.4.2.2         Use as needed, used only in conjunction with _CST.
0467 
0468 _CST   8.4.2.1         Low power idle states (8.4.4) are recommended instead
0469                        of C-states.
0470 
0471 _DDN   6.1.4           This field can be used for a device name.  However,
0472                        it is meant for DOS device names (e.g., COM1), so be
0473                        careful of its use across OSes.
0474 
0475 _DSD   6.2.5           To be used with caution.  If this object is used, try
0476                        to use it within the constraints already defined by the
0477                        Device Properties UUID.  Only in rare circumstances
0478                        should it be necessary to create a new _DSD UUID.
0479 
0480                        In either case, submit the _DSD definition along with
0481                        any driver patches for discussion, especially when
0482                        device properties are used.  A driver will not be
0483                        considered complete without a corresponding _DSD
0484                        description.  Once approved by kernel maintainers,
0485                        the UUID or device properties must then be registered
0486                        with the UEFI Forum; this may cause some iteration as
0487                        more than one OS will be registering entries.
0488 
0489 _DSM   9.1.1           Do not use this method.  It is not standardized, the
0490                        return values are not well documented, and it is
0491                        currently a frequent source of error.
0492 
0493 \_GL   5.7.1           This object is not to be used in hardware reduced
0494                        mode, and therefore should not be used on arm64.
0495 
0496 _GLK   6.5.7           This object requires a global lock be defined; there
0497                        is no global lock on arm64 since it runs in hardware
0498                        reduced mode.  Hence, do not use this object on arm64.
0499 
0500 \_GPE  5.3.1           This namespace is for x86 use only.  Do not use it
0501                        on arm64.
0502 
0503 _HID   6.1.5           This is the primary object to use in device probing,
0504                        though _CID and _CLS may also be used.
0505 
0506 _INI   6.5.1           Not required, but can be useful in setting up devices
0507                        when UEFI leaves them in a state that may not be what
0508                        the driver expects before it starts probing.
0509 
0510 _LPI   8.4.4.3         Recommended for use with processor definitions (_HID
0511                        ACPI0010) on arm64.  See also _RDI.
0512 
0513 _MLS   6.1.7           Highly recommended for use in internationalization.
0514 
0515 _OFF   7.2.2           It is recommended to define this method for any device
0516                        that can be turned on or off.
0517 
0518 _ON    7.2.3           It is recommended to define this method for any device
0519                        that can be turned on or off.
0520 
0521 \_OS   5.7.3           This method will return "Linux" by default (this is
0522                        the value of the macro ACPI_OS_NAME on Linux).  The
0523                        command line parameter acpi_os=<string> can be used
0524                        to set it to some other value.
0525 
0526 _OSC   6.2.11          This method can be a global method in ACPI (i.e.,
0527                        \_SB._OSC), or it may be associated with a specific
0528                        device (e.g., \_SB.DEV0._OSC), or both.  When used
0529                        as a global method, only capabilities published in
0530                        the ACPI specification are allowed.  When used as
0531                        a device-specific method, the process described for
0532                        using _DSD MUST be used to create an _OSC definition;
0533                        out-of-process use of _OSC is not allowed.  That is,
0534                        submit the device-specific _OSC usage description as
0535                        part of the kernel driver submission, get it approved
0536                        by the kernel community, then register it with the
0537                        UEFI Forum.
0538 
0539 \_OSI  5.7.2           Deprecated on ARM64.  As far as ACPI firmware is
0540                        concerned, _OSI is not to be used to determine what
0541                        sort of system is being used or what functionality
0542                        is provided.  The _OSC method is to be used instead.
0543 
0544 _PDC   8.4.1           Deprecated, do not use on arm64.
0545 
0546 \_PIC  5.8.1           The method should not be used.  On arm64, the only
0547                        interrupt model available is GIC.
0548 
0549 \_PR   5.3.1           This namespace is for x86 use only on legacy systems.
0550                        Do not use it on arm64.
0551 
0552 _PRT   6.2.13          Required as part of the definition of all PCI root
0553                        devices.
0554 
0555 _PRx   7.3.8-11        Use as needed; power management specific.  If _PR0 is
0556                        defined, _PR3 must also be defined.
0557 
0558 _PSx   7.3.2-5         Use as needed; power management specific.  If _PS0 is
0559                        defined, _PS3 must also be defined.  If clocks or
0560                        regulators need adjusting to be consistent with power
0561                        usage, change them in these methods.
0562 
0563 _RDI   8.4.4.4         Recommended for use with processor definitions (_HID
0564                        ACPI0010) on arm64.  This should only be used in
0565                        conjunction with _LPI.
0566 
0567 \_REV  5.7.4           Always returns the latest version of ACPI supported.
0568 
0569 \_SB   5.3.1           Required on arm64; all devices must be defined in this
0570                        namespace.
0571 
0572 _SLI   6.2.15          Use is recommended when SLIT table is in use.
0573 
0574 _STA   6.3.7,          It is recommended to define this method for any device
0575        7.2.4           that can be turned on or off.  See also the STAO table
0576                        that provides overrides to hide devices in virtualized
0577                        environments.
0578 
0579 _SRS   6.2.16          Use as needed; see also _PRS.
0580 
0581 _STR   6.1.10          Recommended for conveying device names to end users;
0582                        this is preferred over using _DDN.
0583 
0584 _SUB   6.1.9           Use as needed; _HID or _CID are preferred.
0585 
0586 _SUN   6.1.11          Use as needed, but recommended.
0587 
0588 _SWS   7.4.3           Use as needed; power management specific; this may
0589                        require specification changes for use on arm64.
0590 
0591 _UID   6.1.12          Recommended for distinguishing devices of the same
0592                        class; define it if at all possible.
0593 ===== ================ ========================================================
0594 
0595 
0596 
0597 
0598 ACPI Event Model
0599 ----------------
0600 Do not use GPE block devices; these are not supported in the hardware reduced
0601 profile used by arm64.  Since there are no GPE blocks defined for use on ARM
0602 platforms, ACPI events must be signaled differently.
0603 
0604 There are two options: GPIO-signaled interrupts (Section 5.6.5), and
0605 interrupt-signaled events (Section 5.6.9).  Interrupt-signaled events are a
0606 new feature in the ACPI 6.1 specification.  Either - or both - can be used
0607 on a given platform, and which to use may be dependent of limitations in any
0608 given SoC.  If possible, interrupt-signaled events are recommended.
0609 
0610 
0611 ACPI Processor Control
0612 ----------------------
0613 Section 8 of the ACPI specification changed significantly in version 6.0.
0614 Processors should now be defined as Device objects with _HID ACPI0007; do
0615 not use the deprecated Processor statement in ASL.  All multiprocessor systems
0616 should also define a hierarchy of processors, done with Processor Container
0617 Devices (see Section 8.4.3.1, _HID ACPI0010); do not use processor aggregator
0618 devices (Section 8.5) to describe processor topology.  Section 8.4 of the
0619 specification describes the semantics of these object definitions and how
0620 they interrelate.
0621 
0622 Most importantly, the processor hierarchy defined also defines the low power
0623 idle states that are available to the platform, along with the rules for
0624 determining which processors can be turned on or off and the circumstances
0625 that control that.  Without this information, the processors will run in
0626 whatever power state they were left in by UEFI.
0627 
0628 Note too, that the processor Device objects defined and the entries in the
0629 MADT for GICs are expected to be in synchronization.  The _UID of the Device
0630 object must correspond to processor IDs used in the MADT.
0631 
0632 It is recommended that CPPC (8.4.5) be used as the primary model for processor
0633 performance control on arm64.  C-states and P-states may become available at
0634 some point in the future, but most current design work appears to favor CPPC.
0635 
0636 Further, it is essential that the ARMv8 SoC provide a fully functional
0637 implementation of PSCI; this will be the only mechanism supported by ACPI
0638 to control CPU power state.  Booting of secondary CPUs using the ACPI
0639 parking protocol is possible, but discouraged, since only PSCI is supported
0640 for ARM servers.
0641 
0642 
0643 ACPI System Address Map Interfaces
0644 ----------------------------------
0645 In Section 15 of the ACPI specification, several methods are mentioned as
0646 possible mechanisms for conveying memory resource information to the kernel.
0647 For arm64, we will only support UEFI for booting with ACPI, hence the UEFI
0648 GetMemoryMap() boot service is the only mechanism that will be used.
0649 
0650 
0651 ACPI Platform Error Interfaces (APEI)
0652 -------------------------------------
0653 The APEI tables supported are described above.
0654 
0655 APEI requires the equivalent of an SCI and an NMI on ARMv8.  The SCI is used
0656 to notify the OSPM of errors that have occurred but can be corrected and the
0657 system can continue correct operation, even if possibly degraded.  The NMI is
0658 used to indicate fatal errors that cannot be corrected, and require immediate
0659 attention.
0660 
0661 Since there is no direct equivalent of the x86 SCI or NMI, arm64 handles
0662 these slightly differently.  The SCI is handled as a high priority interrupt;
0663 given that these are corrected (or correctable) errors being reported, this
0664 is sufficient.  The NMI is emulated as the highest priority interrupt
0665 possible.  This implies some caution must be used since there could be
0666 interrupts at higher privilege levels or even interrupts at the same priority
0667 as the emulated NMI.  In Linux, this should not be the case but one should
0668 be aware it could happen.
0669 
0670 
0671 ACPI Objects Not Supported on ARM64
0672 -----------------------------------
0673 While this may change in the future, there are several classes of objects
0674 that can be defined, but are not currently of general interest to ARM servers.
0675 Some of these objects have x86 equivalents, and may actually make sense in ARM
0676 servers.  However, there is either no hardware available at present, or there
0677 may not even be a non-ARM implementation yet.  Hence, they are not currently
0678 supported.
0679 
0680 The following classes of objects are not supported:
0681 
0682        -  Section 9.2: ambient light sensor devices
0683 
0684        -  Section 9.3: battery devices
0685 
0686        -  Section 9.4: lids (e.g., laptop lids)
0687 
0688        -  Section 9.8.2: IDE controllers
0689 
0690        -  Section 9.9: floppy controllers
0691 
0692        -  Section 9.10: GPE block devices
0693 
0694        -  Section 9.15: PC/AT RTC/CMOS devices
0695 
0696        -  Section 9.16: user presence detection devices
0697 
0698        -  Section 9.17: I/O APIC devices; all GICs must be enumerable via MADT
0699 
0700        -  Section 9.18: time and alarm devices (see 9.15)
0701 
0702        -  Section 10: power source and power meter devices
0703 
0704        -  Section 11: thermal management
0705 
0706        -  Section 12: embedded controllers interface
0707 
0708        -  Section 13: SMBus interfaces
0709 
0710 
0711 This also means that there is no support for the following objects:
0712 
0713 ====   =========================== ====   ==========
0714 Name   Section                     Name   Section
0715 ====   =========================== ====   ==========
0716 _ALC   9.3.4                       _FDM   9.10.3
0717 _ALI   9.3.2                       _FIX   6.2.7
0718 _ALP   9.3.6                       _GAI   10.4.5
0719 _ALR   9.3.5                       _GHL   10.4.7
0720 _ALT   9.3.3                       _GTM   9.9.2.1.1
0721 _BCT   10.2.2.10                   _LID   9.5.1
0722 _BDN   6.5.3                       _PAI   10.4.4
0723 _BIF   10.2.2.1                    _PCL   10.3.2
0724 _BIX   10.2.2.1                    _PIF   10.3.3
0725 _BLT   9.2.3                       _PMC   10.4.1
0726 _BMA   10.2.2.4                    _PMD   10.4.8
0727 _BMC   10.2.2.12                   _PMM   10.4.3
0728 _BMD   10.2.2.11                   _PRL   10.3.4
0729 _BMS   10.2.2.5                    _PSR   10.3.1
0730 _BST   10.2.2.6                    _PTP   10.4.2
0731 _BTH   10.2.2.7                    _SBS   10.1.3
0732 _BTM   10.2.2.9                    _SHL   10.4.6
0733 _BTP   10.2.2.8                    _STM   9.9.2.1.1
0734 _DCK   6.5.2                       _UPD   9.16.1
0735 _EC    12.12                       _UPP   9.16.2
0736 _FDE   9.10.1                      _WPC   10.5.2
0737 _FDI   9.10.2                      _WPP   10.5.3
0738 ====   =========================== ====   ==========