1 .. SPDX-License-Identifier: GPL-2.0
2 .. include:: <isonum.txt>
4 ===========================================
5 Compute Express Link Subsystem Maturity Map
6 ===========================================
8 The Linux CXL subsystem tracks the dynamic `CXL specification
9 <https://computeexpresslink.org/cxl-specification-landing-page>`_ that
10 continues to respond to new use cases with new features, capability
11 updates and fixes. At any given point some aspects of the subsystem are
12 more mature than others. While the periodic pull requests summarize the
13 `work being incorporated each merge window
14 <https://lore.kernel.org/linux-cxl/?q=s%3APULL+s%3ACXL+tc%3Atorvalds+NOT+s%3ARe>`_,
15 those do not always convey progress relative to a starting point and a
18 What follows is a coarse breakdown of the subsystem's major
19 responsibilities along with a maturity score. The expectation is that
20 the change-history of this document provides an overview summary of the
21 subsystem maturation over time.
23 The maturity scores are:
25 - [3] Mature: Work in this area is complete and no changes on the horizon.
26 Note that this score can regress from one kernel release to the next
27 based on new test results or end user reports.
29 - [2] Stabilizing: Major functionality operational, common cases are
30 mature, but known corner cases are still a work in progress.
32 - [1] Initial: Capability that has exited the Proof of Concept phase, but
33 may still have significant gaps to close and fixes to apply as real
36 - [0] Known gap: Feature is on a medium to long term horizon to
37 implement. If the specification has a feature that does not even have
38 a '0' score in this document, there is a good chance that no one in
39 the linux-cxl@vger.kernel.org community has started to look at it.
41 - X: Out of scope for kernel enabling, or kernel enabling not required
43 Feature and Capabilities
44 ========================
46 Enumeration / Provisioning
47 --------------------------
48 All of the fundamental enumeration an object model of the subsystem is
49 in place, but there are several corner cases that are pending closure.
52 * [2] CXL Window Enumeration
54 * [0] :ref:`Extended-linear memory-side cache <extended-linear>`
56 * [0] Hetero-interleave
58 * [2] Switch Enumeration
60 * [0] CXL register enumeration link-up dependency
62 * [2] HDM Decoder Configuration
64 * [0] Decoder target and granularity constraints
66 * [2] Performance enumeration
70 * [1] CDAT to Core-mm integration
79 (see CXL Window Enumeration)
81 * [0] Handle Soft Reserved conflicts
83 * [0] :ref:`RCH link status <rch-link-status>`
84 * [0] Fabrics / G-FAM (chapter 7)
85 * [0] Global Access Endpoint
90 In many ways CXL can be seen as a standardization of what would normally
91 be handled by custom EDAC drivers. The open development here is
92 mainly caused by the enumeration corner cases above.
94 * [3] Component events (OS)
95 * [2] Component events (FFM)
96 * [1] Endpoint protocol errors (OS)
97 * [1] Endpoint protocol errors (FFM)
98 * [0] Switch protocol errors (OS)
99 * [1] Switch protocol errors (FFM)
100 * [2] DPA->HPA Address translation
102 * [1] XOR Interleave translation
103 (see CXL Window Enumeration)
105 * [1] Memory Failure coordination
107 * [2] ACPI error injection EINJ
112 * [2] Native error injection
113 * [3] RCH error handling
114 * [1] VH error handling
117 * [0] Device built in test
123 * [3] Firmware update
124 * [3] Health / Alerts
125 * [1] :ref:`Background commands <background-commands>`
127 * [3] Security commands
128 * [3] RAW Command Debug Passthrough
129 * [0] CEL-only-validation Passthrough
133 * [0] PMEM GPF / Dirty Shutdown
139 * [0] Switch USP/ DSP, Root Port
144 * [X] CXL Trusted Execution Environment Security Protocol (TSP)
145 * [X] CXL IDE (subsumed by TSP)
150 * [1] Hotplug of LDs (via PCI hotplug)
151 * [0] Dynamic Capacity Device (DCD) Support
156 * [0] Hardware coherent shared memory
157 * [0] Software managed coherency shared memory
162 * [0] Dynamic Capacity Device Support
168 * [0] Accelerator memory enumeration HDM-D (CXL 1.1/2.0 Type-2)
169 * [0] Accelerator memory enumeration HDM-DB (CXL 3.0 Type-2)
170 * [0] CXL.cache 68b (CXL 2.0)
171 * [0] CXL.cache 256b Cache IDs (CXL 3.0)
176 * [0] HPA->DPA Address translation (need xormaps export solution)
183 * **Extended-linear memory-side cache**: An HMAT proposal to enumerate the presence of a
184 memory-side cache where the cache capacity extends the SRAT address
185 range capacity. `See the ECN
186 <https://lore.kernel.org/linux-cxl/6650e4f835a0e_195e294a8@dwillia2-mobl3.amr.corp.intel.com.notmuch/>`_
191 * **RCH Link Status**: RCH (Restricted CXL Host) topologies, end up
192 hiding some standard registers like PCIe Link Status / Capabilities in
193 the CXL RCRB (Root Complex Register Block).
195 .. _background-commands:
197 * **Background commands**: The CXL background command mechanism is
198 awkward as the single slot is monopolized potentially indefinitely by
199 various commands. A `cancel on conflict
200 <http://lore.kernel.org/r/66035c2e8ba17_770232948b@dwillia2-xfh.jf.intel.com.notmuch>`_
201 facility is needed to make sure the kernel can ensure forward progress
202 of priority commands.