Documentation/driver-api/cxl/platform/example-configurations/flexible.rst GitHub 원문 ↗

Linux 6.18.37 · Driver API / CXL / Platform / Example Configurations

Flexible Presentation

동일한 CXL capacity를 cross-bridge, host bridge별, device별 CFMWS와 NUMA node로 유연하게 제시하는 firmware table 구성을 설명합니다.

Source pathDocumentation/driver-api/cxl/platform/example-configurations/flexible.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

요약과 해설

flexible.rst:1-296

이 예시는 두 host bridge와 네 memory expander를 하나의 cross-bridge interleave, 두 개의 host bridge 범위, 네 개의 개별 device 범위로 모두 제시합니다. CEDT의 일곱 CFMWS는 SRAT의 일곱 proximity domain, HMAT의 성능 entry, SLIT의 locality, DSDT의 host bridge UID와 일관되게 연결되어야 사용자가 원하는 decoder·NUMA 구성을 선택할 수 있습니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 =====================
4 Flexible Presentation
5 =====================
6 This system has a single socket with two CXL host bridges. Each host bridge
7 has two CXL memory expanders with a 4GB of memory (32GB total).
8
9 On this system, the platform designer wanted to provide the user flexibility
10 to configure the memory devices in various interleave or NUMA node
11 configurations. So they provided every combination.
12
13 Things to note:
14
15 * Cross-Bridge interleave is described in one CFMWS that covers all capacity.
16 * One CFMWS is also described per-host bridge.
17 * One CFMWS is also described per-device.
18 * This SRAT describes one node for each of the above CFMWS.
19 * The HMAT describes performance for each node in the SRAT.
20
21 :doc:`CEDT <../acpi/cedt>`::
22
23 Subtable Type : 00 [CXL Host Bridge Structure]
24 Reserved : 00
25 Length : 0020
26 Associated host bridge : 00000007
27 Specification version : 00000001
28 Reserved : 00000000
29 Register base : 0000010370400000
30 Register length : 0000000000010000
31
32 Subtable Type : 00 [CXL Host Bridge Structure]
33 Reserved : 00
34 Length : 0020
35 Associated host bridge : 00000006
36 Specification version : 00000001
37 Reserved : 00000000
38 Register base : 0000010380800000
39 Register length : 0000000000010000
40
41 Subtable Type : 01 [CXL Fixed Memory Window Structure]
42 Reserved : 00
43 Length : 002C
44 Reserved : 00000000
45 Window base address : 0000001000000000
46 Window size : 0000000400000000
47 Interleave Members (2^n) : 01
48 Interleave Arithmetic : 00
49 Reserved : 0000
50 Granularity : 00000000
51 Restrictions : 0006
52 QtgId : 0001
53 First Target : 00000007
54 Second Target : 00000006
55
56 Subtable Type : 01 [CXL Fixed Memory Window Structure]
57 Reserved : 00
58 Length : 002C
59 Reserved : 00000000
60 Window base address : 0000002000000000
61 Window size : 0000000200000000
62 Interleave Members (2^n) : 00
63 Interleave Arithmetic : 00
64 Reserved : 0000
65 Granularity : 00000000
66 Restrictions : 0006
67 QtgId : 0001
68 First Target : 00000007
69
70 Subtable Type : 01 [CXL Fixed Memory Window Structure]
71 Reserved : 00
72 Length : 002C
73 Reserved : 00000000
74 Window base address : 0000002200000000
75 Window size : 0000000200000000
76 Interleave Members (2^n) : 00
77 Interleave Arithmetic : 00
78 Reserved : 0000
79 Granularity : 00000000
80 Restrictions : 0006
81 QtgId : 0001
82 First Target : 00000006
83
84 Subtable Type : 01 [CXL Fixed Memory Window Structure]
85 Reserved : 00
86 Length : 002C
87 Reserved : 00000000
88 Window base address : 0000003000000000
89 Window size : 0000000100000000
90 Interleave Members (2^n) : 00
91 Interleave Arithmetic : 00
92 Reserved : 0000
93 Granularity : 00000000
94 Restrictions : 0006
95 QtgId : 0001
96 First Target : 00000007
97
98 Subtable Type : 01 [CXL Fixed Memory Window Structure]
99 Reserved : 00
100 Length : 002C
101 Reserved : 00000000
102 Window base address : 0000003100000000
103 Window size : 0000000100000000
104 Interleave Members (2^n) : 00
105 Interleave Arithmetic : 00
106 Reserved : 0000
107 Granularity : 00000000
108 Restrictions : 0006
109 QtgId : 0001
110 First Target : 00000007
111
112 Subtable Type : 01 [CXL Fixed Memory Window Structure]
113 Reserved : 00
114 Length : 002C
115 Reserved : 00000000
116 Window base address : 0000003200000000
117 Window size : 0000000100000000
118 Interleave Members (2^n) : 00
119 Interleave Arithmetic : 00
120 Reserved : 0000
121 Granularity : 00000000
122 Restrictions : 0006
123 QtgId : 0001
124 First Target : 00000006
125
126 Subtable Type : 01 [CXL Fixed Memory Window Structure]
127 Reserved : 00
128 Length : 002C
129 Reserved : 00000000
130 Window base address : 0000003300000000
131 Window size : 0000000100000000
132 Interleave Members (2^n) : 00
133 Interleave Arithmetic : 00
134 Reserved : 0000
135 Granularity : 00000000
136 Restrictions : 0006
137 QtgId : 0001
138 First Target : 00000006
139
140 :doc:`SRAT <../acpi/srat>`::
141
142 Subtable Type : 01 [Memory Affinity]
143 Length : 28
144 Proximity Domain : 00000001
145 Reserved1 : 0000
146 Base Address : 0000001000000000
147 Address Length : 0000000400000000
148 Reserved2 : 00000000
149 Flags (decoded below) : 0000000B
150 Enabled : 1
151 Hot Pluggable : 1
152 Non-Volatile : 0
153
154 Subtable Type : 01 [Memory Affinity]
155 Length : 28
156 Proximity Domain : 00000002
157 Reserved1 : 0000
158 Base Address : 0000002000000000
159 Address Length : 0000000200000000
160 Reserved2 : 00000000
161 Flags (decoded below) : 0000000B
162 Enabled : 1
163 Hot Pluggable : 1
164 Non-Volatile : 0
165
166 Subtable Type : 01 [Memory Affinity]
167 Length : 28
168 Proximity Domain : 00000003
169 Reserved1 : 0000
170 Base Address : 0000002200000000
171 Address Length : 0000000200000000
172 Reserved2 : 00000000
173 Flags (decoded below) : 0000000B
174 Enabled : 1
175 Hot Pluggable : 1
176 Non-Volatile : 0
177
178 Subtable Type : 01 [Memory Affinity]
179 Length : 28
180 Proximity Domain : 00000004
181 Reserved1 : 0000
182 Base Address : 0000003000000000
183 Address Length : 0000000100000000
184 Reserved2 : 00000000
185 Flags (decoded below) : 0000000B
186 Enabled : 1
187 Hot Pluggable : 1
188 Non-Volatile : 0
189
190 Subtable Type : 01 [Memory Affinity]
191 Length : 28
192 Proximity Domain : 00000005
193 Reserved1 : 0000
194 Base Address : 0000003100000000
195 Address Length : 0000000100000000
196 Reserved2 : 00000000
197 Flags (decoded below) : 0000000B
198 Enabled : 1
199 Hot Pluggable : 1
200 Non-Volatile : 0
201
202 Subtable Type : 01 [Memory Affinity]
203 Length : 28
204 Proximity Domain : 00000006
205 Reserved1 : 0000
206 Base Address : 0000003200000000
207 Address Length : 0000000100000000
208 Reserved2 : 00000000
209 Flags (decoded below) : 0000000B
210 Enabled : 1
211 Hot Pluggable : 1
212 Non-Volatile : 0
213
214 Subtable Type : 01 [Memory Affinity]
215 Length : 28
216 Proximity Domain : 00000007
217 Reserved1 : 0000
218 Base Address : 0000003300000000
219 Address Length : 0000000100000000
220 Reserved2 : 00000000
221 Flags (decoded below) : 0000000B
222 Enabled : 1
223 Hot Pluggable : 1
224 Non-Volatile : 0
225
226 :doc:`HMAT <../acpi/hmat>`::
227
228 Structure Type : 0001 [SLLBI]
229 Data Type : 00 [Latency]
230 Target Proximity Domain List : 00000000
231 Target Proximity Domain List : 00000001
232 Target Proximity Domain List : 00000002
233 Target Proximity Domain List : 00000003
234 Target Proximity Domain List : 00000004
235 Target Proximity Domain List : 00000005
236 Target Proximity Domain List : 00000006
237 Target Proximity Domain List : 00000007
238 Entry : 0080
239 Entry : 0100
240 Entry : 0100
241 Entry : 0100
242 Entry : 0100
243 Entry : 0100
244 Entry : 0100
245 Entry : 0100
246
247 Structure Type : 0001 [SLLBI]
248 Data Type : 03 [Bandwidth]
249 Target Proximity Domain List : 00000000
250 Target Proximity Domain List : 00000001
251 Target Proximity Domain List : 00000002
252 Target Proximity Domain List : 00000003
253 Target Proximity Domain List : 00000004
254 Target Proximity Domain List : 00000005
255 Target Proximity Domain List : 00000006
256 Target Proximity Domain List : 00000007
257 Entry : 1200
258 Entry : 0400
259 Entry : 0200
260 Entry : 0200
261 Entry : 0100
262 Entry : 0100
263 Entry : 0100
264 Entry : 0100
265
266 :doc:`SLIT <../acpi/slit>`::
267
268 Signature : "SLIT" [System Locality Information Table]
269 Localities : 0000000000000003
270 Locality 0 : 10 20 20 20 20 20 20 20
271 Locality 1 : FF 0A FF FF FF FF FF FF
272 Locality 2 : FF FF 0A FF FF FF FF FF
273 Locality 3 : FF FF FF 0A FF FF FF FF
274 Locality 4 : FF FF FF FF 0A FF FF FF
275 Locality 5 : FF FF FF FF FF 0A FF FF
276 Locality 6 : FF FF FF FF FF FF 0A FF
277 Locality 7 : FF FF FF FF FF FF FF 0A
278
279 :doc:`DSDT <../acpi/dsdt>`::
280
281 Scope (_SB)
282 {
283 Device (S0D0)
284 {
285 Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID
286 ...
287 Name (_UID, 0x07) // _UID: Unique ID
288 }
289 ...
290 Device (S0D5)
291 {
292 Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID
293 ...
294 Name (_UID, 0x06) // _UID: Unique ID
295 }
296 }
297

3. 한국어 전문 번역

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

유연한 CXL 구성 개요

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

이 system은 socket 하나와 CXL host bridge 두 개를 갖습니다. 각 host bridge에는 4GB memory를 가진 CXL memory expander 두 개가 있습니다. 원문은 total capacity를 32GB로 표기합니다.

platform designer는 사용자가 memory device를 다양한 interleave 또는 NUMA node 구성으로 설정할 수 있도록 모든 조합을 제공했습니다.

주요 특징은 다음과 같습니다.

  • Cross-Bridge interleave는 전체 capacity를 덮는 CFMWS 하나로 설명합니다.
  • host bridge마다 CFMWS 하나를 추가로 설명합니다.
  • device마다 CFMWS 하나를 추가로 설명합니다.
  • SRAT는 위의 각 CFMWS에 node 하나를 설명합니다.
  • HMAT은 SRAT의 각 node에 대한 성능을 설명합니다.

CEDT: host bridge와 CFMWS 조합

21-139

CEDT는 UID 7과 UID 6인 host bridge 두 개를 선언한 뒤, 전체 cross-bridge window, host bridge별 window 두 개, device별 window 네 개를 중첩된 선택지로 제공합니다.

           Subtable Type : 00 [CXL Host Bridge Structure]
                Reserved : 00
                  Length : 0020
  Associated host bridge : 00000007
   Specification version : 00000001
                Reserved : 00000000
           Register base : 0000010370400000
         Register length : 0000000000010000

           Subtable Type : 00 [CXL Host Bridge Structure]
                Reserved : 00
                  Length : 0020
  Associated host bridge : 00000006
   Specification version : 00000001
                Reserved : 00000000
           Register base : 0000010380800000
         Register length : 0000000000010000

           Subtable Type : 01 [CXL Fixed Memory Window Structure]
                Reserved : 00
                  Length : 002C
                Reserved : 00000000
     Window base address : 0000001000000000
             Window size : 0000000400000000
Interleave Members (2^n) : 01
   Interleave Arithmetic : 00
                Reserved : 0000
             Granularity : 00000000
            Restrictions : 0006
                   QtgId : 0001
            First Target : 00000007
           Second Target : 00000006

           Subtable Type : 01 [CXL Fixed Memory Window Structure]
                Reserved : 00
                  Length : 002C
                Reserved : 00000000
     Window base address : 0000002000000000
             Window size : 0000000200000000
Interleave Members (2^n) : 00
   Interleave Arithmetic : 00
                Reserved : 0000
             Granularity : 00000000
            Restrictions : 0006
                   QtgId : 0001
            First Target : 00000007

           Subtable Type : 01 [CXL Fixed Memory Window Structure]
                Reserved : 00
                  Length : 002C
                Reserved : 00000000
     Window base address : 0000002200000000
             Window size : 0000000200000000
Interleave Members (2^n) : 00
   Interleave Arithmetic : 00
                Reserved : 0000
             Granularity : 00000000
            Restrictions : 0006
                   QtgId : 0001
            First Target : 00000006

           Subtable Type : 01 [CXL Fixed Memory Window Structure]
                Reserved : 00
                  Length : 002C
                Reserved : 00000000
     Window base address : 0000003000000000
             Window size : 0000000100000000
Interleave Members (2^n) : 00
   Interleave Arithmetic : 00
                Reserved : 0000
             Granularity : 00000000
            Restrictions : 0006
                   QtgId : 0001
            First Target : 00000007

           Subtable Type : 01 [CXL Fixed Memory Window Structure]
                Reserved : 00
                  Length : 002C
                Reserved : 00000000
     Window base address : 0000003100000000
             Window size : 0000000100000000
Interleave Members (2^n) : 00
   Interleave Arithmetic : 00
                Reserved : 0000
             Granularity : 00000000
            Restrictions : 0006
                   QtgId : 0001
            First Target : 00000007

           Subtable Type : 01 [CXL Fixed Memory Window Structure]
                Reserved : 00
                  Length : 002C
                Reserved : 00000000
     Window base address : 0000003200000000
             Window size : 0000000100000000
Interleave Members (2^n) : 00
   Interleave Arithmetic : 00
                Reserved : 0000
             Granularity : 00000000
            Restrictions : 0006
                   QtgId : 0001
            First Target : 00000006

           Subtable Type : 01 [CXL Fixed Memory Window Structure]
                Reserved : 00
                  Length : 002C
                Reserved : 00000000
     Window base address : 0000003300000000
             Window size : 0000000100000000
Interleave Members (2^n) : 00
   Interleave Arithmetic : 00
                Reserved : 0000
             Granularity : 00000000
            Restrictions : 0006
                   QtgId : 0001
            First Target : 00000006
유연한 CFMWS presentation
ScopeWindow BaseWindow SizeInterleaveTarget UID
Cross-Bridge000000100000000000000004000000002 members07, 06
Host Bridge 07000000200000000000000002000000001 member07
Host Bridge 06000000220000000000000002000000001 member06
Device 07-A000000300000000000000001000000001 member07
Device 07-B000000310000000000000001000000001 member07
Device 06-A000000320000000000000001000000001 member06
Device 06-B000000330000000000000001000000001 member06

같은 device capacity를 interleave 범위에 따라 전체, host bridge, 개별 device 단위로 선택할 수 있습니다.

모든 CFMWS의 `Restrictions`는 0006이고 `QtgId`는 0001입니다. cross-bridge entry만 `Interleave Members (2^n)`가 01이며 나머지는 00입니다.

SRAT: CFMWS별 proximity domain

140-225

SRAT는 일곱 CFMWS presentation 각각을 별도의 proximity domain과 NUMA node 후보로 연결합니다. 모든 range는 enabled·hot-pluggable이며 non-volatile은 아닙니다.

        Subtable Type : 01 [Memory Affinity]
               Length : 28
     Proximity Domain : 00000001
            Reserved1 : 0000
         Base Address : 0000001000000000
       Address Length : 0000000400000000
            Reserved2 : 00000000
Flags (decoded below) : 0000000B
            Enabled : 1
      Hot Pluggable : 1
       Non-Volatile : 0

        Subtable Type : 01 [Memory Affinity]
               Length : 28
     Proximity Domain : 00000002
            Reserved1 : 0000
         Base Address : 0000002000000000
       Address Length : 0000000200000000
            Reserved2 : 00000000
Flags (decoded below) : 0000000B
            Enabled : 1
      Hot Pluggable : 1
       Non-Volatile : 0

        Subtable Type : 01 [Memory Affinity]
               Length : 28
     Proximity Domain : 00000003
            Reserved1 : 0000
         Base Address : 0000002200000000
       Address Length : 0000000200000000
            Reserved2 : 00000000
Flags (decoded below) : 0000000B
            Enabled : 1
      Hot Pluggable : 1
       Non-Volatile : 0

        Subtable Type : 01 [Memory Affinity]
               Length : 28
     Proximity Domain : 00000004
            Reserved1 : 0000
         Base Address : 0000003000000000
       Address Length : 0000000100000000
            Reserved2 : 00000000
Flags (decoded below) : 0000000B
            Enabled : 1
      Hot Pluggable : 1
       Non-Volatile : 0

        Subtable Type : 01 [Memory Affinity]
               Length : 28
     Proximity Domain : 00000005
            Reserved1 : 0000
         Base Address : 0000003100000000
       Address Length : 0000000100000000
            Reserved2 : 00000000
Flags (decoded below) : 0000000B
            Enabled : 1
      Hot Pluggable : 1
       Non-Volatile : 0

        Subtable Type : 01 [Memory Affinity]
               Length : 28
     Proximity Domain : 00000006
            Reserved1 : 0000
         Base Address : 0000003200000000
       Address Length : 0000000100000000
            Reserved2 : 00000000
Flags (decoded below) : 0000000B
            Enabled : 1
      Hot Pluggable : 1
       Non-Volatile : 0

        Subtable Type : 01 [Memory Affinity]
               Length : 28
     Proximity Domain : 00000007
            Reserved1 : 0000
         Base Address : 0000003300000000
       Address Length : 0000000100000000
            Reserved2 : 00000000
Flags (decoded below) : 0000000B
            Enabled : 1
      Hot Pluggable : 1
       Non-Volatile : 0
SRAT Memory Affinity mapping
DomainBase AddressAddress LengthPresentation
100000010000000000000000400000000Cross-Bridge
200000020000000000000000200000000Host Bridge 07
300000022000000000000000200000000Host Bridge 06
400000030000000000000000100000000Device 07-A
500000031000000000000000100000000Device 07-B
600000032000000000000000100000000Device 06-A
700000033000000000000000100000000Device 06-B

각 CFMWS base와 size가 proximity domain 1부터 7까지 일대일로 대응됩니다.

HMAT: node별 latency와 bandwidth

226-265

HMAT SLLBI는 target proximity domain 0부터 7까지의 latency와 bandwidth entry를 제공합니다. domain 0은 DRAM 성능, domain 1부터 7은 CXL presentation의 성능을 나타냅니다.

              Structure Type : 0001 [SLLBI]
                   Data Type : 00   [Latency]
Target Proximity Domain List : 00000000
Target Proximity Domain List : 00000001
Target Proximity Domain List : 00000002
Target Proximity Domain List : 00000003
Target Proximity Domain List : 00000004
Target Proximity Domain List : 00000005
Target Proximity Domain List : 00000006
Target Proximity Domain List : 00000007
                       Entry : 0080
                       Entry : 0100
                       Entry : 0100
                       Entry : 0100
                       Entry : 0100
                       Entry : 0100
                       Entry : 0100
                       Entry : 0100

              Structure Type : 0001 [SLLBI]
                   Data Type : 03   [Bandwidth]
Target Proximity Domain List : 00000000
Target Proximity Domain List : 00000001
Target Proximity Domain List : 00000002
Target Proximity Domain List : 00000003
Target Proximity Domain List : 00000004
Target Proximity Domain List : 00000005
Target Proximity Domain List : 00000006
Target Proximity Domain List : 00000007
                       Entry : 1200
                       Entry : 0400
                       Entry : 0200
                       Entry : 0200
                       Entry : 0100
                       Entry : 0100
                       Entry : 0100
                       Entry : 0100
HMAT target 성능
Target DomainLatencyBandwidthRole
000801200DRAM
101000400Cross-Bridge CXL
201000200Host Bridge 07
301000200Host Bridge 06
401000100Device 07-A
501000100Device 07-B
601000100Device 06-A
701000100Device 06-B

각 target proximity domain의 latency와 bandwidth entry를 같은 행에 맞췄습니다.

SLIT: locality distance matrix

266-278

SLIT는 locality 0부터 7까지의 abstract distance를 제공합니다. locality 0은 다른 node에 거리 20을 가지며, initiator가 없는 CXL node는 자신의 local distance 0A를 제외하고 FF로 표시됩니다.

   Signature : "SLIT"    [System Locality Information Table]
  Localities : 0000000000000003
Locality   0 : 10 20 20 20 20 20 20 20
Locality   1 : FF 0A FF FF FF FF FF FF
Locality   2 : FF FF 0A FF FF FF FF FF
Locality   3 : FF FF FF 0A FF FF FF FF
Locality   4 : FF FF FF FF 0A FF FF FF
Locality   5 : FF FF FF FF FF 0A FF FF
Locality   6 : FF FF FF FF FF FF 0A FF
Locality   7 : FF FF FF FF FF FF FF 0A
SLIT abstract distance 요약
AccessorSelfTo Locality 0To Other CXL Nodes
Locality 0101020
Locality 1-70AFFFF

CPU locality 0에서 모든 CXL locality까지의 거리는 20이며 CXL locality 사이에는 initiator 경로가 없어 FF입니다.

DSDT: CEDT와 host bridge UID 연결

279-296

DSDT는 `_HID`가 `ACPI0016`인 CXL host bridge 두 개를 선언하고 `_UID` 0x07과 0x06을 부여합니다. 이 UID는 CEDT CHBS와 각 CFMWS target의 UID에 대응합니다.

Scope (_SB)
{
  Device (S0D0)
  {
      Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */)  // _HID: Hardware ID
      ...
      Name (_UID, 0x07)  // _UID: Unique ID
  }
  ...
  Device (S0D5)
  {
      Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */)  // _HID: Hardware ID
      ...
      Name (_UID, 0x06)  // _UID: Unique ID
  }
}
DSDT와 CEDT host bridge identity
DSDT Device_HID_UIDCEDT Role
S0D0ACPI00160x07CHBS/CFMWS target 00000007
S0D5ACPI00160x06CHBS/CFMWS target 00000006

DSDT device name과 `_UID`를 CEDT가 사용하는 host bridge identifier에 연결했습니다.