mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
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.
|