xref: /linux/Documentation/driver-api/cxl/platform/acpi.rst (revision e78f70bad29c5ae1e1076698b690b15794e9b81e)
1.. SPDX-License-Identifier: GPL-2.0
2
3===========
4ACPI Tables
5===========
6
7ACPI is the "Advanced Configuration and Power Interface", which is a standard
8that defines how platforms and OS manage power and configure computer hardware.
9For the purpose of this theory of operation, when referring to "ACPI" we will
10usually refer to "ACPI Tables" - which are the way a platform (BIOS/EFI)
11communicates static configuration information to the operation system.
12
13The Following ACPI tables contain *static* configuration and performance data
14about CXL devices.
15
16.. toctree::
17   :maxdepth: 1
18
19   acpi/cedt.rst
20   acpi/srat.rst
21   acpi/hmat.rst
22   acpi/slit.rst
23   acpi/dsdt.rst
24
25The SRAT table may also contain generic port/initiator content that is intended
26to describe the generic port, but not information about the rest of the path to
27the endpoint.
28
29Linux uses these tables to configure kernel resources for statically configured
30(by BIOS/EFI) CXL devices, such as:
31
32- NUMA nodes
33- Memory Tiers
34- NUMA Abstract Distances
35- SystemRAM Memory Regions
36- Weighted Interleave Node Weights
37
38ACPI Debugging
39==============
40
41The :code:`acpidump -b` command dumps the ACPI tables into binary format.
42
43The :code:`iasl -d` command disassembles the files into human readable format.
44
45Example :code:`acpidump -b && iasl -d cedt.dat` ::
46
47   [000h 0000   4]   Signature : "CEDT"    [CXL Early Discovery Table]
48
49Common Issues
50-------------
51Most failures described here result in a failure of the driver to surface
52memory as a DAX device and/or kmem.
53
54* CEDT CFMWS targets list UIDs do not match CEDT CHBS UIDs.
55* CEDT CFMWS targets list UIDs do not match DSDT CXL Host Bridge UIDs.
56* CEDT CFMWS Restriction Bits are not correct.
57* CEDT CFMWS Memory regions are poorly aligned.
58* CEDT CFMWS Memory regions spans a platform memory hole.
59* CEDT CHBS UIDs do not match DSDT CXL Host Bridge UIDs.
60* CEDT CHBS Specification version is incorrect.
61* SRAT is missing regions described in CEDT CFMWS.
62
63  * Result: failure to create a NUMA node for the region, or
64    region is placed in wrong node.
65
66* HMAT is missing data for regions described in CEDT CFMWS.
67
68  * Result: NUMA node being placed in the wrong memory tier.
69
70* SLIT has bad data.
71
72  * Result: Lots of performance mechanisms in the kernel will be very unhappy.
73
74All of these issues will appear to users as if the driver is failing to
75support CXL - when in reality they are all the failure of a platform to
76configure the ACPI tables correctly.
77