| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- .. SPDX-License-Identifier: GPL-2.0
- .. include:: <isonum.txt>
- ===========================================
- Compute Express Link Subsystem Maturity Map
- ===========================================
- The Linux CXL subsystem tracks the dynamic `CXL specification
- <https://computeexpresslink.org/cxl-specification-landing-page>`_ that
- continues to respond to new use cases with new features, capability
- updates and fixes. At any given point some aspects of the subsystem are
- more mature than others. While the periodic pull requests summarize the
- `work being incorporated each merge window
- <https://lore.kernel.org/linux-cxl/?q=s%3APULL+s%3ACXL+tc%3Atorvalds+NOT+s%3ARe>`_,
- those do not always convey progress relative to a starting point and a
- future end goal.
- What follows is a coarse breakdown of the subsystem's major
- responsibilities along with a maturity score. The expectation is that
- the change-history of this document provides an overview summary of the
- subsystem maturation over time.
- The maturity scores are:
- - [3] Mature: Work in this area is complete and no changes on the horizon.
- Note that this score can regress from one kernel release to the next
- based on new test results or end user reports.
- - [2] Stabilizing: Major functionality operational, common cases are
- mature, but known corner cases are still a work in progress.
- - [1] Initial: Capability that has exited the Proof of Concept phase, but
- may still have significant gaps to close and fixes to apply as real
- world testing occurs.
- - [0] Known gap: Feature is on a medium to long term horizon to
- implement. If the specification has a feature that does not even have
- a '0' score in this document, there is a good chance that no one in
- the linux-cxl@vger.kernel.org community has started to look at it.
- - X: Out of scope for kernel enabling, or kernel enabling not required
- Feature and Capabilities
- ========================
- Enumeration / Provisioning
- --------------------------
- All of the fundamental enumeration an object model of the subsystem is
- in place, but there are several corner cases that are pending closure.
- * [2] CXL Window Enumeration
- * [2] :ref:`Extended-linear memory-side cache <extended-linear>`
- * [0] Low Memory-hole
- * [X] Hetero-interleave
- * [2] Switch Enumeration
- * [0] CXL register enumeration link-up dependency
- * [2] HDM Decoder Configuration
- * [0] Decoder target and granularity constraints
- * [2] Performance enumeration
- * [3] Endpoint CDAT
- * [3] Switch CDAT
- * [1] CDAT to Core-mm integration
- * [1] x86
- * [0] Arm64
- * [0] All other arch.
- * [0] Shared link
- * [2] Hotplug
- (see CXL Window Enumeration)
- * [0] Handle Soft Reserved conflicts
- * [0] :ref:`RCH link status <rch-link-status>`
- * [0] Fabrics / G-FAM (chapter 7)
- * [0] Global Access Endpoint
- RAS
- ---
- In many ways CXL can be seen as a standardization of what would normally
- be handled by custom EDAC drivers. The open development here is
- mainly caused by the enumeration corner cases above.
- * [3] Component events (OS)
- * [2] Component events (FFM)
- * [1] Endpoint protocol errors (OS)
- * [1] Endpoint protocol errors (FFM)
- * [0] Switch protocol errors (OS)
- * [1] Switch protocol errors (FFM)
- * [2] DPA->HPA Address translation
- * [1] XOR Interleave translation
- (see CXL Window Enumeration)
- * [1] Memory Failure coordination
- * [0] Scrub control
- * [2] ACPI error injection EINJ
- * [0] EINJ v2
- * [X] Compliance DOE
- * [2] Native error injection
- * [3] RCH error handling
- * [1] VH error handling
- * [0] PPR
- * [0] Sparing
- * [0] Device built in test
- Mailbox commands
- ----------------
- * [3] Firmware update
- * [3] Health / Alerts
- * [1] :ref:`Background commands <background-commands>`
- * [3] Sanitization
- * [3] Security commands
- * [3] RAW Command Debug Passthrough
- * [0] CEL-only-validation Passthrough
- * [0] Switch CCI
- * [3] Timestamp
- * [1] PMEM labels
- * [3] PMEM GPF / Dirty Shutdown
- * [0] Scan Media
- PMU
- ---
- * [1] Type 3 PMU
- * [0] Switch USP/ DSP, Root Port
- Security
- --------
- * [X] CXL Trusted Execution Environment Security Protocol (TSP)
- * [X] CXL IDE (subsumed by TSP)
- Memory-pooling
- --------------
- * [1] Hotplug of LDs (via PCI hotplug)
- * [0] Dynamic Capacity Device (DCD) Support
- Multi-host sharing
- ------------------
- * [0] Hardware coherent shared memory
- * [0] Software managed coherency shared memory
- Multi-host memory
- -----------------
- * [0] Dynamic Capacity Device Support
- * [0] Sharing
- Accelerator
- -----------
- * [0] Accelerator memory enumeration HDM-D (CXL 1.1/2.0 Type-2)
- * [0] Accelerator memory enumeration HDM-DB (CXL 3.0 Type-2)
- * [0] CXL.cache 68b (CXL 2.0)
- * [0] CXL.cache 256b Cache IDs (CXL 3.0)
- User Flow Support
- -----------------
- * [2] Inject & clear poison by region offset
- Details
- =======
- .. _extended-linear:
- * **Extended-linear memory-side cache**: An HMAT proposal to enumerate the presence of a
- memory-side cache where the cache capacity extends the SRAT address
- range capacity. `See the ECN
- <https://lore.kernel.org/linux-cxl/6650e4f835a0e_195e294a8@dwillia2-mobl3.amr.corp.intel.com.notmuch/>`_
- for more details:
- .. _rch-link-status:
- * **RCH Link Status**: RCH (Restricted CXL Host) topologies, end up
- hiding some standard registers like PCIe Link Status / Capabilities in
- the CXL RCRB (Root Complex Register Block).
- .. _background-commands:
- * **Background commands**: The CXL background command mechanism is
- awkward as the single slot is monopolized potentially indefinitely by
- various commands. A `cancel on conflict
- <http://lore.kernel.org/r/66035c2e8ba17_770232948b@dwillia2-xfh.jf.intel.com.notmuch>`_
- facility is needed to make sure the kernel can ensure forward progress
- of priority commands.
|