maturity-map.rst 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. .. SPDX-License-Identifier: GPL-2.0
  2. .. include:: <isonum.txt>
  3. ===========================================
  4. Compute Express Link Subsystem Maturity Map
  5. ===========================================
  6. The Linux CXL subsystem tracks the dynamic `CXL specification
  7. <https://computeexpresslink.org/cxl-specification-landing-page>`_ that
  8. continues to respond to new use cases with new features, capability
  9. updates and fixes. At any given point some aspects of the subsystem are
  10. more mature than others. While the periodic pull requests summarize the
  11. `work being incorporated each merge window
  12. <https://lore.kernel.org/linux-cxl/?q=s%3APULL+s%3ACXL+tc%3Atorvalds+NOT+s%3ARe>`_,
  13. those do not always convey progress relative to a starting point and a
  14. future end goal.
  15. What follows is a coarse breakdown of the subsystem's major
  16. responsibilities along with a maturity score. The expectation is that
  17. the change-history of this document provides an overview summary of the
  18. subsystem maturation over time.
  19. The maturity scores are:
  20. - [3] Mature: Work in this area is complete and no changes on the horizon.
  21. Note that this score can regress from one kernel release to the next
  22. based on new test results or end user reports.
  23. - [2] Stabilizing: Major functionality operational, common cases are
  24. mature, but known corner cases are still a work in progress.
  25. - [1] Initial: Capability that has exited the Proof of Concept phase, but
  26. may still have significant gaps to close and fixes to apply as real
  27. world testing occurs.
  28. - [0] Known gap: Feature is on a medium to long term horizon to
  29. implement. If the specification has a feature that does not even have
  30. a '0' score in this document, there is a good chance that no one in
  31. the linux-cxl@vger.kernel.org community has started to look at it.
  32. - X: Out of scope for kernel enabling, or kernel enabling not required
  33. Feature and Capabilities
  34. ========================
  35. Enumeration / Provisioning
  36. --------------------------
  37. All of the fundamental enumeration an object model of the subsystem is
  38. in place, but there are several corner cases that are pending closure.
  39. * [2] CXL Window Enumeration
  40. * [2] :ref:`Extended-linear memory-side cache <extended-linear>`
  41. * [0] Low Memory-hole
  42. * [X] Hetero-interleave
  43. * [2] Switch Enumeration
  44. * [0] CXL register enumeration link-up dependency
  45. * [2] HDM Decoder Configuration
  46. * [0] Decoder target and granularity constraints
  47. * [2] Performance enumeration
  48. * [3] Endpoint CDAT
  49. * [3] Switch CDAT
  50. * [1] CDAT to Core-mm integration
  51. * [1] x86
  52. * [0] Arm64
  53. * [0] All other arch.
  54. * [0] Shared link
  55. * [2] Hotplug
  56. (see CXL Window Enumeration)
  57. * [0] Handle Soft Reserved conflicts
  58. * [0] :ref:`RCH link status <rch-link-status>`
  59. * [0] Fabrics / G-FAM (chapter 7)
  60. * [0] Global Access Endpoint
  61. RAS
  62. ---
  63. In many ways CXL can be seen as a standardization of what would normally
  64. be handled by custom EDAC drivers. The open development here is
  65. mainly caused by the enumeration corner cases above.
  66. * [3] Component events (OS)
  67. * [2] Component events (FFM)
  68. * [1] Endpoint protocol errors (OS)
  69. * [1] Endpoint protocol errors (FFM)
  70. * [0] Switch protocol errors (OS)
  71. * [1] Switch protocol errors (FFM)
  72. * [2] DPA->HPA Address translation
  73. * [1] XOR Interleave translation
  74. (see CXL Window Enumeration)
  75. * [1] Memory Failure coordination
  76. * [0] Scrub control
  77. * [2] ACPI error injection EINJ
  78. * [0] EINJ v2
  79. * [X] Compliance DOE
  80. * [2] Native error injection
  81. * [3] RCH error handling
  82. * [1] VH error handling
  83. * [0] PPR
  84. * [0] Sparing
  85. * [0] Device built in test
  86. Mailbox commands
  87. ----------------
  88. * [3] Firmware update
  89. * [3] Health / Alerts
  90. * [1] :ref:`Background commands <background-commands>`
  91. * [3] Sanitization
  92. * [3] Security commands
  93. * [3] RAW Command Debug Passthrough
  94. * [0] CEL-only-validation Passthrough
  95. * [0] Switch CCI
  96. * [3] Timestamp
  97. * [1] PMEM labels
  98. * [3] PMEM GPF / Dirty Shutdown
  99. * [0] Scan Media
  100. PMU
  101. ---
  102. * [1] Type 3 PMU
  103. * [0] Switch USP/ DSP, Root Port
  104. Security
  105. --------
  106. * [X] CXL Trusted Execution Environment Security Protocol (TSP)
  107. * [X] CXL IDE (subsumed by TSP)
  108. Memory-pooling
  109. --------------
  110. * [1] Hotplug of LDs (via PCI hotplug)
  111. * [0] Dynamic Capacity Device (DCD) Support
  112. Multi-host sharing
  113. ------------------
  114. * [0] Hardware coherent shared memory
  115. * [0] Software managed coherency shared memory
  116. Multi-host memory
  117. -----------------
  118. * [0] Dynamic Capacity Device Support
  119. * [0] Sharing
  120. Accelerator
  121. -----------
  122. * [0] Accelerator memory enumeration HDM-D (CXL 1.1/2.0 Type-2)
  123. * [0] Accelerator memory enumeration HDM-DB (CXL 3.0 Type-2)
  124. * [0] CXL.cache 68b (CXL 2.0)
  125. * [0] CXL.cache 256b Cache IDs (CXL 3.0)
  126. User Flow Support
  127. -----------------
  128. * [2] Inject & clear poison by region offset
  129. Details
  130. =======
  131. .. _extended-linear:
  132. * **Extended-linear memory-side cache**: An HMAT proposal to enumerate the presence of a
  133. memory-side cache where the cache capacity extends the SRAT address
  134. range capacity. `See the ECN
  135. <https://lore.kernel.org/linux-cxl/6650e4f835a0e_195e294a8@dwillia2-mobl3.amr.corp.intel.com.notmuch/>`_
  136. for more details:
  137. .. _rch-link-status:
  138. * **RCH Link Status**: RCH (Restricted CXL Host) topologies, end up
  139. hiding some standard registers like PCIe Link Status / Capabilities in
  140. the CXL RCRB (Root Complex Register Block).
  141. .. _background-commands:
  142. * **Background commands**: The CXL background command mechanism is
  143. awkward as the single slot is monopolized potentially indefinitely by
  144. various commands. A `cancel on conflict
  145. <http://lore.kernel.org/r/66035c2e8ba17_770232948b@dwillia2-xfh.jf.intel.com.notmuch>`_
  146. facility is needed to make sure the kernel can ensure forward progress
  147. of priority commands.