xref: /linux/Documentation/driver-api/cxl/maturity-map.rst (revision 46e6acfe3501fa938af9c5bd730f0020235b08a2)
1.. SPDX-License-Identifier: GPL-2.0
2.. include:: <isonum.txt>
3
4===========================================
5Compute Express Link Subsystem Maturity Map
6===========================================
7
8The Linux CXL subsystem tracks the dynamic `CXL specification
9<https://computeexpresslink.org/cxl-specification-landing-page>`_ that
10continues to respond to new use cases with new features, capability
11updates and fixes. At any given point some aspects of the subsystem are
12more 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>`_,
15those do not always convey progress relative to a starting point and a
16future end goal.
17
18What follows is a coarse breakdown of the subsystem's major
19responsibilities along with a maturity score. The expectation is that
20the change-history of this document provides an overview summary of the
21subsystem maturation over time.
22
23The maturity scores are:
24
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.
28
29- [2] Stabilizing: Major functionality operational, common cases are
30  mature, but known corner cases are still a work in progress.
31
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
34  world testing occurs.
35
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.
40
41- X: Out of scope for kernel enabling, or kernel enabling not required
42
43Feature and Capabilities
44========================
45
46Enumeration / Provisioning
47--------------------------
48All of the fundamental enumeration an object model of the subsystem is
49in place, but there are several corner cases that are pending closure.
50
51
52* [2] CXL Window Enumeration
53
54  * [0] :ref:`Extended-linear memory-side cache <extended-linear>`
55  * [0] Low Memory-hole
56  * [0] Hetero-interleave
57
58* [2] Switch Enumeration
59
60  * [0] CXL register enumeration link-up dependency
61
62* [2] HDM Decoder Configuration
63
64  * [0] Decoder target and granularity constraints
65
66* [2] Performance enumeration
67
68  * [3] Endpoint CDAT
69  * [3] Switch CDAT
70  * [1] CDAT to Core-mm integration
71
72    * [1] x86
73    * [0] Arm64
74    * [0] All other arch.
75
76  * [0] Shared link
77
78* [2] Hotplug
79  (see CXL Window Enumeration)
80
81  * [0] Handle Soft Reserved conflicts
82
83* [0] :ref:`RCH link status <rch-link-status>`
84* [0] Fabrics / G-FAM (chapter 7)
85* [0] Global Access Endpoint
86
87
88RAS
89---
90In many ways CXL can be seen as a standardization of what would normally
91be handled by custom EDAC drivers. The open development here is
92mainly caused by the enumeration corner cases above.
93
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
101
102    * [1] XOR Interleave translation
103      (see CXL Window Enumeration)
104
105* [1] Memory Failure coordination
106* [0] Scrub control
107* [2] ACPI error injection EINJ
108
109  * [0] EINJ v2
110  * [X] Compliance DOE
111
112* [2] Native error injection
113* [3] RCH error handling
114* [1] VH error handling
115* [0] PPR
116* [0] Sparing
117* [0] Device built in test
118
119
120Mailbox commands
121----------------
122
123* [3] Firmware update
124* [3] Health / Alerts
125* [1] :ref:`Background commands <background-commands>`
126* [3] Sanitization
127* [3] Security commands
128* [3] RAW Command Debug Passthrough
129* [0] CEL-only-validation Passthrough
130* [0] Switch CCI
131* [3] Timestamp
132* [1] PMEM labels
133* [0] PMEM GPF / Dirty Shutdown
134* [0] Scan Media
135
136PMU
137---
138* [1] Type 3 PMU
139* [0] Switch USP/ DSP, Root Port
140
141Security
142--------
143
144* [X] CXL Trusted Execution Environment Security Protocol (TSP)
145* [X] CXL IDE (subsumed by TSP)
146
147Memory-pooling
148--------------
149
150* [1] Hotplug of LDs (via PCI hotplug)
151* [0] Dynamic Capacity Device (DCD) Support
152
153Multi-host sharing
154------------------
155
156* [0] Hardware coherent shared memory
157* [0] Software managed coherency shared memory
158
159Multi-host memory
160-----------------
161
162* [0] Dynamic Capacity Device Support
163* [0] Sharing
164
165Accelerator
166-----------
167
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)
172
173User Flow Support
174-----------------
175
176* [0] HPA->DPA Address translation (need xormaps export solution)
177
178Details
179=======
180
181.. _extended-linear:
182
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/>`_
187  for more details:
188
189.. _rch-link-status:
190
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).
194
195.. _background-commands:
196
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.
203