mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-17 20:18:38 +00:00

Add basic ACPI table information needed to understand the CXL driver probe process. Signed-off-by: Gregory Price <gourry@gourry.net> Reviewed-by: Dave Jiang <dave.jiang@intel.com> Link: https://patch.msgid.link/20250512162134.3596150-6-gourry@gourry.net Signed-off-by: Dave Jiang <dave.jiang@intel.com>
77 lines
2.4 KiB
ReStructuredText
77 lines
2.4 KiB
ReStructuredText
.. 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.
|