Documentation/driver-api/cxl/maturity-map.rst GitHub 원문 ↗

Linux 6.18.37 · Driver API / CXL

Compute Express Link Subsystem Maturity Map

Linux CXL 하위 시스템의 기능별 구현 성숙도를 [3]부터 [0], X까지의 점수로 정리하고 남은 공백과 세부 용어를 설명합니다.

Source pathDocumentation/driver-api/cxl/maturity-map.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

maturity-map.rst:1-202

이 문서는 CXL 기능이 존재하는지만 나열하지 않고 안정성 수준과 남은 구현 공백을 함께 보여 주는 release별 현황표입니다. [3]은 성숙, [2]는 안정화 중, [1]은 초기 구현, [0]은 알려진 공백이며 X는 kernel 활성화 범위 밖을 뜻합니다. 현재 mailbox의 firmware update와 RCH error handling 등은 성숙한 반면, fabric, 공유 memory, accelerator memory와 여러 switch 기능은 아직 알려진 공백으로 분류됩니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2 .. include:: <isonum.txt>
3
4 ===========================================
5 Compute Express Link Subsystem Maturity Map
6 ===========================================
7
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
16 future end goal.
17
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.
22
23 The 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 [email protected] community has started to look at it.
40
41 - X: Out of scope for kernel enabling, or kernel enabling not required
42
43 Feature and Capabilities
44 ========================
45
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.
50
51
52 * [2] CXL Window Enumeration
53
54 * [2] :ref:`Extended-linear memory-side cache <extended-linear>`
55 * [0] Low Memory-hole
56 * [X] 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
88 RAS
89 ---
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.
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
120 Mailbox 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 * [3] PMEM GPF / Dirty Shutdown
134 * [0] Scan Media
135
136 PMU
137 ---
138 * [1] Type 3 PMU
139 * [0] Switch USP/ DSP, Root Port
140
141 Security
142 --------
143
144 * [X] CXL Trusted Execution Environment Security Protocol (TSP)
145 * [X] CXL IDE (subsumed by TSP)
146
147 Memory-pooling
148 --------------
149
150 * [1] Hotplug of LDs (via PCI hotplug)
151 * [0] Dynamic Capacity Device (DCD) Support
152
153 Multi-host sharing
154 ------------------
155
156 * [0] Hardware coherent shared memory
157 * [0] Software managed coherency shared memory
158
159 Multi-host memory
160 -----------------
161
162 * [0] Dynamic Capacity Device Support
163 * [0] Sharing
164
165 Accelerator
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
173 User Flow Support
174 -----------------
175
176 * [2] Inject & clear poison by region offset
177
178 Details
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/[email protected]>`_
201 facility is needed to make sure the kernel can ensure forward progress
202 of priority commands.
203

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

CXL 하위 시스템 성숙도 지도의 목적

1-22
.. SPDX-License-Identifier: GPL-2.0

Linux CXL 하위 시스템은 새로운 사용 사례에 맞추어 기능, 역량 업데이트, 수정 사항을 계속 반영하는 동적인 `CXL specification`(https://computeexpresslink.org/cxl-specification-landing-page)을 추적합니다. 따라서 어느 시점에서든 하위 시스템의 일부 영역은 다른 영역보다 더 성숙할 수 있습니다.

정기 pull request는 각 merge window에 `통합되는 작업`(https://lore.kernel.org/linux-cxl/?q=s%3APULL+s%3ACXL+tc%3Atorvalds+NOT+s%3ARe)을 요약하지만, 출발점과 향후 최종 목표를 기준으로 한 진척도를 항상 보여 주지는 않습니다.

아래 내용은 하위 시스템의 주요 책임을 성숙도 점수와 함께 대략적으로 구분한 것입니다. 이 문서의 변경 이력을 통해 시간에 따른 하위 시스템의 성숙 과정을 개괄적으로 파악할 수 있을 것으로 기대합니다.

성숙도 점수

23-42

성숙도 점수의 의미는 다음과 같습니다.

  • [3] Mature(성숙): 이 영역의 작업이 완료되었고 예정된 변경 사항이 없습니다. 다만 새로운 테스트 결과나 최종 사용자 보고에 따라 이 점수는 한 kernel release에서 다음 release로 넘어갈 때 낮아질 수 있습니다.
  • [2] Stabilizing(안정화 중): 주요 기능이 동작하고 일반적인 사례는 성숙했지만, 알려진 corner case는 아직 작업 중입니다.
  • [1] Initial(초기): Proof of Concept 단계를 벗어난 역량이지만, 실제 환경 테스트가 진행되면서 메워야 할 큰 공백이나 적용해야 할 수정 사항이 남아 있을 수 있습니다.
  • [0] Known gap(알려진 공백): 중장기적으로 구현할 기능입니다. specification의 어떤 기능에 이 문서의 '0' 점수조차 없다면 [email protected] 커뮤니티에서 아직 아무도 검토를 시작하지 않았을 가능성이 큽니다.
  • X: kernel 활성화 범위 밖이거나 kernel 활성화가 필요하지 않습니다.

기능과 역량: 열거 및 프로비저닝

43-87

하위 시스템의 기본적인 열거 기능과 object model은 모두 마련되어 있지만, 아직 마무리해야 할 몇 가지 corner case가 있습니다.

[2] CXL Window Enumeration(CXL 창 열거)

  • [2] Extended-linear memory-side cache
  • [0] Low Memory-hole
  • [X] Hetero-interleave

[2] Switch Enumeration(스위치 열거)

  • [0] CXL register enumeration의 link-up 의존성

[2] HDM Decoder Configuration

  • [0] Decoder target 및 granularity 제약

[2] Performance enumeration(성능 열거)

  • [3] Endpoint CDAT
  • [3] Switch CDAT
  • [1] CDAT to Core-mm integration
  • [1] x86
  • [0] Arm64
  • [0] 그 밖의 모든 architecture
  • [0] Shared link

[2] Hotplug(CXL Window Enumeration 참조)

  • [0] Soft Reserved 충돌 처리
  • [0] RCH link status
  • [0] Fabrics / G-FAM(chapter 7)
  • [0] Global Access Endpoint

RAS

88-119

여러 측면에서 CXL은 일반적으로 사용자 정의 EDAC driver가 처리하던 기능을 표준화한 것으로 볼 수 있습니다. 이 영역에서 개발이 계속 열려 있는 주된 이유는 앞서 설명한 열거 corner case입니다.

  • [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(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 명령

120-135
  • [3] Firmware update(펌웨어 업데이트)
  • [3] Health / Alerts(상태 및 경고)
  • [1] Background commands(백그라운드 명령)
  • [3] Sanitization(데이터 정화)
  • [3] Security commands(보안 명령)
  • [3] RAW Command Debug Passthrough(RAW 명령 디버그 패스스루)
  • [0] CEL-only-validation Passthrough(CEL 전용 검증 패스스루)
  • [0] Switch CCI(스위치 CCI)
  • [3] Timestamp(타임스탬프)
  • [1] PMEM labels(PMEM 레이블)
  • [3] PMEM GPF / Dirty Shutdown(PMEM GPF 및 비정상 종료)
  • [0] Scan Media(미디어 스캔)

PMU와 보안

136-146

PMU의 성숙도는 다음과 같습니다.

  • [1] Type 3 PMU
  • [0] Switch USP/DSP, Root Port

Security 항목은 kernel 활성화 범위 밖이거나 별도 활성화가 필요하지 않습니다.

  • [X] CXL Trusted Execution Environment Security Protocol (TSP)
  • [X] CXL IDE(TSP에 포함됨)

Memory pooling과 multi-host

147-164

Memory-pooling

  • [1] LD hotplug(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와 사용자 흐름

165-177

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] region offset을 기준으로 poison 주입 및 제거

세부 항목

178-202

`Extended-linear memory-side cache`: cache capacity가 SRAT address range capacity를 넘어 확장되는 memory-side cache의 존재를 열거하기 위한 HMAT 제안입니다. 자세한 내용은 ECN(https://lore.kernel.org/linux-cxl/6650e4f835a0e_195e294a8@dwillia2-mobl3.amr.corp.intel.com.notmuch/)을 참조하십시오.

`RCH Link Status`: RCH(Restricted CXL Host) topology에서는 PCIe Link Status/Capabilities 같은 일부 표준 register가 CXL RCRB(Root Complex Register Block) 안에 숨겨지게 됩니다.

`Background commands`: CXL background command mechanism은 여러 command가 단 하나의 slot을 잠재적으로 무기한 독점할 수 있어 다루기 까다롭습니다. kernel이 우선순위 command의 forward progress를 보장할 수 있도록 `cancel on conflict` 기능(http://lore.kernel.org/r/[email protected])이 필요합니다.