| .. 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. |