.. SPDX-License-Identifier: GPL-2.0 =========== ACPI Tables =========== ACPI is the "Advanced Configuration and Power Interface", which is a standard that defines how platforms and OS manage power and configure computer hardware. For the purpose of this theory of operation, when referring to "ACPI" we will usually refer to "ACPI Tables" - which are the way a platform (BIOS/EFI) communicates static configuration information to the operation system. The Following ACPI tables contain *static* configuration and performance data about CXL devices. .. toctree:: :maxdepth: 1 acpi/cedt.rst acpi/srat.rst acpi/hmat.rst acpi/slit.rst acpi/dsdt.rst The SRAT table may also contain generic port/initiator content that is intended to describe the generic port, but not information about the rest of the path to the endpoint. Linux uses these tables to configure kernel resources for statically configured (by BIOS/EFI) CXL devices, such as: - NUMA nodes - Memory Tiers - NUMA Abstract Distances - SystemRAM Memory Regions - Weighted Interleave Node Weights ACPI Debugging ============== The :code:`acpidump -b` command dumps the ACPI tables into binary format. The :code:`iasl -d` command disassembles the files into human readable format. Example :code:`acpidump -b && iasl -d cedt.dat` :: [000h 0000 4] Signature : "CEDT" [CXL Early Discovery Table] Common Issues ------------- Most failures described here result in a failure of the driver to surface memory as a DAX device and/or kmem. * CEDT CFMWS targets list UIDs do not match CEDT CHBS UIDs. * CEDT CFMWS targets list UIDs do not match DSDT CXL Host Bridge UIDs. * CEDT CFMWS Restriction Bits are not correct. * CEDT CFMWS Memory regions are poorly aligned. * CEDT CFMWS Memory regions spans a platform memory hole. * CEDT CHBS UIDs do not match DSDT CXL Host Bridge UIDs. * CEDT CHBS Specification version is incorrect. * SRAT is missing regions described in CEDT CFMWS. * Result: failure to create a NUMA node for the region, or region is placed in wrong node. * HMAT is missing data for regions described in CEDT CFMWS. * Result: NUMA node being placed in the wrong memory tier. * SLIT has bad data. * Result: Lots of performance mechanisms in the kernel will be very unhappy. All of these issues will appear to users as if the driver is failing to support CXL - when in reality they are all the failure of a platform to configure the ACPI tables correctly.