mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 12:14:10 +08:00
203 lines
5.6 KiB
ReStructuredText
203 lines
5.6 KiB
ReStructuredText
|
.. 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
|
||
|
|
||
|
* [0] :ref:`Extended-linear memory-side cache <extended-linear>`
|
||
|
* [0] Low Memory-hole
|
||
|
* [0] 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
|
||
|
* [0] 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
|
||
|
-----------------
|
||
|
|
||
|
* [0] HPA->DPA Address translation (need xormaps export solution)
|
||
|
|
||
|
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.
|