Skip to content

Commit dba600d

Browse files
Gregory Pricedavejiang
authored andcommitted
cxl: docs - add self-referencing cross-links
Add some crosslinks between pages in the CXL docs - mostly to the ACPI tables. Suggested-by: Bagas Sanjaya <bagasdotme@gmail.com> Signed-off-by: Gregory Price <gourry@gourry.net> Link: https://patch.msgid.link/20250512162134.3596150-18-gourry@gourry.net Signed-off-by: Dave Jiang <dave.jiang@intel.com>
1 parent df63e01 commit dba600d

File tree

9 files changed

+69
-59
lines changed

9 files changed

+69
-59
lines changed

Documentation/driver-api/cxl/devices/device-types.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ A Multi-Headed Single-Logical Device (MHSLD) exposes a single logical
115115
device to multiple heads which may be connected to one or more discrete
116116
hosts. An example of this would be a simple memory-pool which may be
117117
statically configured (prior to boot) to expose portions of its memory
118-
to Linux via the CEDT ACPI table.
118+
to Linux via :doc:`CEDT <../platform/acpi/cedt>`.
119119

120120
MHMLD
121121
~~~~~

Documentation/driver-api/cxl/linux/access-coordinates.rst

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ asymmetry in properties does not happen and all paths to EPs are equal.
2424

2525
There can be multiple switches under an RP. There can be multiple RPs under
2626
a CXL Host Bridge (HB). There can be multiple HBs under a CXL Fixed Memory
27-
Window Structure (CFMWS).
27+
Window Structure (CFMWS) in the :doc:`CEDT <../platform/acpi/cedt>`.
2828

2929
An example hierarchy::
3030

@@ -83,8 +83,9 @@ also the index for the resulting xarray.
8383

8484
The next step is to take the min() of the per host bridge bandwidth and the
8585
bandwidth from the Generic Port (GP). The bandwidths for the GP are retrieved
86-
via ACPI tables SRAT/HMAT. The minimum bandwidth are aggregated under the same
87-
ACPI0017 device to form a new xarray.
86+
via ACPI tables (:doc:`SRAT <../platform/acpi/srat>` and
87+
:doc:`HMAT <../platform/acpi/hmat>`). The minimum bandwidth are aggregated
88+
under the same ACPI0017 device to form a new xarray.
8889

8990
Finally, the cxl_region_update_bandwidth() is called and the aggregated
9091
bandwidth from all the members of the last xarray is updated for the

Documentation/driver-api/cxl/linux/cxl-driver.rst

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,11 @@ Root Object` Device Class is found.
7777

7878
The Root contains links to:
7979

80-
* `Host Bridge Ports` defined by ACPI CEDT CHBS.
80+
* `Host Bridge Ports` defined by CHBS in the :doc:`CEDT<../platform/acpi/cedt>`
8181

8282
* `Downstream Ports` typically connected to `Host Bridge Ports`.
8383

84-
* `Root Decoders` defined by ACPI CEDT CFMWS.
84+
* `Root Decoders` defined by CFMWS the :doc:`CEDT<../platform/acpi/cedt>`
8585

8686
::
8787

@@ -150,9 +150,8 @@ An `endpoint` is a terminal port in the fabric. This is a `logical device`,
150150
and may be one of many `logical devices` presented by a memory device. It
151151
is still considered a type of `port` in the fabric.
152152

153-
An `endpoint` contains `endpoint decoders` available for use and the
154-
*Coherent Device Attribute Table* (CDAT) used to describe the capabilities
155-
of the device. ::
153+
An `endpoint` contains `endpoint decoders` and the device's Coherent Device
154+
Attribute Table (which describes the device's capabilities). ::
156155

157156
# ls /sys/bus/cxl/devices/endpoint5
158157
CDAT decoders_committed modalias uevent
@@ -247,17 +246,18 @@ parameter.
247246
Root Decoder
248247
~~~~~~~~~~~~
249248
A `Root Decoder` is logical construct of the physical address and interleave
250-
configurations present in the ACPI CEDT CFMWS. Linux presents this information
251-
as a decoder present in the `CXL Root`. We consider this a `Root Decoder`,
252-
though technically it exists on the boundary of the CXL specification and
253-
platform-specific CXL root implementations.
249+
configurations present in the CFMWS field of the :doc:`CEDT
250+
<../platform/acpi/cedt>`.
251+
Linux presents this information as a decoder present in the `CXL Root`. We
252+
consider this a `Root Decoder`, though technically it exists on the boundary
253+
of the CXL specification and platform-specific CXL root implementations.
254254

255255
Linux considers these logical decoders a type of `Routing Decoder`, and is the
256256
first decoder in the CXL fabric to receive a memory access from the platform's
257257
memory controllers.
258258

259259
`Root Decoders` are created during :code:`cxl_acpi_probe`. One root decoder
260-
is created per CFMWS entry in the ACPI CEDT.
260+
is created per CFMWS entry in the :doc:`CEDT <../platform/acpi/cedt>`.
261261

262262
The :code:`target_list` parameter is filled by the CFMWS target fields. Targets
263263
of a root decoder are `Host Bridges`, which means interleave done at the root
@@ -267,9 +267,11 @@ Only root decoders are capable of `Inter-Host-Bridge Interleave`.
267267

268268
Such interleaves must be configured by the platform and described in the ACPI
269269
CEDT CFMWS, as the target CXL host bridge UIDs in the CFMWS must match the CXL
270-
host bridge UIDs in the ACPI CEDT CHBS and ACPI DSDT.
270+
host bridge UIDs in the CHBS field of the :doc:`CEDT
271+
<../platform/acpi/cedt>` and the UID field of CXL Host Bridges defined in
272+
the :doc:`DSDT <../platform/acpi/dsdt>`.
271273

272-
Interleave settings in a rootdecoder describe how to interleave accesses among
274+
Interleave settings in a root decoder describe how to interleave accesses among
273275
the *immediate downstream targets*, not the entire interleave set.
274276

275277
The memory range described in the root decoder is used to
@@ -531,10 +533,11 @@ granularity configuration.
531533

532534
At Root
533535
~~~~~~~
534-
Root decoder interleave is defined by the ACPI CEDT CFMWS. The CEDT
535-
may actually define multiple CFMWS configurations to describe the same
536-
physical capacity - with the intent to allow users to decide at runtime
537-
whether to online memory as interleaved or non-interleaved. ::
536+
Root decoder interleave is defined by CFMWS field of the :doc:`CEDT
537+
<../platform/acpi/cedt>`. The CEDT may actually define multiple CFMWS
538+
configurations to describe the same physical capacity, with the intent to allow
539+
users to decide at runtime whether to online memory as interleaved or
540+
non-interleaved. ::
538541

539542
Subtable Type : 01 [CXL Fixed Memory Window Structure]
540543
Window base address : 0000000100000000

Documentation/driver-api/cxl/linux/early-boot.rst

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ read EFI and ACPI information throughout this process to configure logical
1212
representations of the devices.
1313

1414
During Linux Early Boot stage (functions in the kernel that have the __init
15-
decorator), the system takes the resources created by EFI/BIOS (ACPI tables)
16-
and turns them into resources that the kernel can consume.
15+
decorator), the system takes the resources created by EFI/BIOS
16+
(:doc:`ACPI tables <../platform/acpi>`) and turns them into resources that the
17+
kernel can consume.
1718

1819

1920
BIOS, Build and Boot Options
@@ -70,13 +71,14 @@ significant impact performance depending on the memory capacity of the system.
7071
NUMA Node Reservation
7172
=====================
7273

73-
Linux refers to the proximity domains (:code:`PXM`) defined in the SRAT to
74-
create NUMA nodes in :code:`acpi_numa_init`. Typically, there is a 1:1 relation
75-
between :code:`PXM` and NUMA node IDs.
74+
Linux refers to the proximity domains (:code:`PXM`) defined in the :doc:`SRAT
75+
<../platform/acpi/srat>` to create NUMA nodes in :code:`acpi_numa_init`.
76+
Typically, there is a 1:1 relation between :code:`PXM` and NUMA node IDs.
7677

77-
SRAT is the only ACPI defined way of defining Proximity Domains. Linux chooses
78-
to, at most, map those 1:1 with NUMA nodes. CEDT adds a description of SPA
79-
ranges which Linux may wish to map to one or more NUMA nodes.
78+
The SRAT is the only ACPI defined way of defining Proximity Domains. Linux
79+
chooses to, at most, map those 1:1 with NUMA nodes.
80+
:doc:`CEDT <../platform/acpi/cedt>` adds a description of SPA ranges which
81+
Linux may map to one or more NUMA nodes.
8082

8183
If there are CXL ranges in the CFMWS but not in SRAT, then a fake :code:`PXM`
8284
is created (as of v6.15). In the future, Linux may reject CFMWS not described
@@ -89,7 +91,8 @@ data for Linux to identify NUMA nodes their associated memory regions.
8991

9092
The relevant code exists in: :code:`linux/drivers/acpi/numa/srat.c`.
9193

92-
See the Example Platform Configurations section for more information.
94+
See :doc:`Example Platform Configurations <../platform/example-configs>`
95+
for more info.
9396

9497
Memory Tiers Creation
9598
=====================
@@ -108,10 +111,13 @@ Tier membership can be inspected in ::
108111
/sys/devices/virtual/memory_tiering/memory_tierN/nodelist
109112
0-1
110113

111-
If nodes are grouped which have clear difference in performance, check the HMAT
112-
and CDAT information for the CXL nodes. All nodes default to the DRAM tier,
113-
unless HMAT/CDAT information is reported to the memory_tier component via
114-
`access_coordinates`.
114+
If nodes are grouped which have clear difference in performance, check the
115+
:doc:`HMAT <../platform/acpi/hmat>` and CDAT information for the CXL nodes. All
116+
nodes default to the DRAM tier, unless HMAT/CDAT information is reported to the
117+
memory_tier component via `access_coordinates`.
118+
119+
For more, see :doc:`CXL access coordinates documentation
120+
<../linux/access-coordinates>`.
115121

116122
Contiguous Memory Allocation
117123
============================

Documentation/driver-api/cxl/platform/bios-and-efi.rst

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ At a high level, this is what occurs during this phase of configuration.
2222

2323
Much of what this section is concerned with is ACPI Table production and
2424
static memory map configuration. More detail on these tables can be found
25-
under Platform Configuration -> ACPI Table Reference.
25+
at :doc:`ACPI Tables <acpi>`.
2626

2727
.. note::
2828
Platform Vendors should read carefully, as this sections has recommendations
@@ -175,9 +175,9 @@ to implement driver support for your platform.
175175

176176
Interleave and Configuration Flexibility
177177
----------------------------------------
178-
If providing cross-host-bridge interleave, a CFMWS entry in the CEDT must be
179-
presented with target host-bridges for the interleaved device sets (there may
180-
be multiple behind each host bridge).
178+
If providing cross-host-bridge interleave, a CFMWS entry in the :doc:`CEDT
179+
<acpi/cedt>` must be presented with target host-bridges for the interleaved
180+
device sets (there may be multiple behind each host bridge).
181181

182182
If providing intra-host-bridge interleaving, only 1 CFMWS entry in the CEDT is
183183
required for that host bridge - if it covers the entire capacity of the devices
@@ -193,8 +193,8 @@ different purposes. For example, you may want to consider adding:
193193

194194
A platform may choose to add all of these, or change the mode based on a BIOS
195195
setting. For each CFMWS entry, Linux expects descriptions of the described
196-
memory regions in the SRAT to determine the number of NUMA nodes it should
197-
reserve during early boot / init.
196+
memory regions in the :doc:`SRAT <acpi/srat>` to determine the number of
197+
NUMA nodes it should reserve during early boot / init.
198198

199199
As of v6.14, Linux will create a NUMA node for each CEDT CFMWS entry, even if
200200
a matching SRAT entry does not exist; however, this is not guaranteed in the

Documentation/driver-api/cxl/platform/example-configurations/flexible.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Things to note:
1818
* This SRAT describes one node for each of the above CFMWS.
1919
* The HMAT describes performance for each node in the SRAT.
2020

21-
CEDT ::
21+
:doc:`CEDT <../acpi/cedt>`::
2222

2323
Subtable Type : 00 [CXL Host Bridge Structure]
2424
Reserved : 00
@@ -137,7 +137,7 @@ CEDT ::
137137
QtgId : 0001
138138
First Target : 00000006
139139

140-
SRAT ::
140+
:doc:`SRAT <../acpi/srat>`::
141141

142142
Subtable Type : 01 [Memory Affinity]
143143
Length : 28
@@ -223,7 +223,7 @@ SRAT ::
223223
Hot Pluggable : 1
224224
Non-Volatile : 0
225225

226-
HMAT ::
226+
:doc:`HMAT <../acpi/hmat>`::
227227

228228
Structure Type : 0001 [SLLBI]
229229
Data Type : 00 [Latency]
@@ -263,7 +263,7 @@ HMAT ::
263263
Entry : 0100
264264
Entry : 0100
265265

266-
SLIT ::
266+
:doc:`SLIT <../acpi/slit>`::
267267

268268
Signature : "SLIT" [System Locality Information Table]
269269
Localities : 0000000000000003
@@ -276,7 +276,7 @@ SLIT ::
276276
Locality 6 : FF FF FF FF FF FF 0A FF
277277
Locality 7 : FF FF FF FF FF FF FF 0A
278278

279-
DSDT ::
279+
:doc:`DSDT <../acpi/dsdt>`::
280280

281281
Scope (_SB)
282282
{

Documentation/driver-api/cxl/platform/example-configurations/hb-interleave.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Things to note:
1313
* This SRAT describes one node for both host bridges.
1414
* The HMAT describes a single node's performance.
1515

16-
CEDT ::
16+
:doc:`CEDT <../acpi/cedt>`::
1717

1818
Subtable Type : 00 [CXL Host Bridge Structure]
1919
Reserved : 00
@@ -48,7 +48,7 @@ CEDT ::
4848
First Target : 00000007
4949
Second Target : 00000006
5050

51-
SRAT ::
51+
:doc:`SRAT <../acpi/srat>`::
5252

5353
Subtable Type : 01 [Memory Affinity]
5454
Length : 28
@@ -62,7 +62,7 @@ SRAT ::
6262
Hot Pluggable : 1
6363
Non-Volatile : 0
6464

65-
HMAT ::
65+
:doc:`HMAT <../acpi/hmat>`::
6666

6767
Structure Type : 0001 [SLLBI]
6868
Data Type : 00 [Latency]
@@ -80,14 +80,14 @@ HMAT ::
8080
Entry : 1200
8181
Entry : 0400
8282

83-
SLIT ::
83+
:doc:`SLIT <../acpi/slit>`::
8484

8585
Signature : "SLIT" [System Locality Information Table]
8686
Localities : 0000000000000003
8787
Locality 0 : 10 20
8888
Locality 1 : FF 0A
8989

90-
DSDT ::
90+
:doc:`DSDT <../acpi/dsdt>`::
9191

9292
Scope (_SB)
9393
{

Documentation/driver-api/cxl/platform/example-configurations/multi-dev-per-hb.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Things to note:
1414
* This CEDT/SRAT describes one node for both devices.
1515
* There is only one proximity domain the HMAT for both devices.
1616

17-
CEDT ::
17+
:doc:`CEDT <../acpi/cedt>`::
1818

1919
Subtable Type : 00 [CXL Host Bridge Structure]
2020
Reserved : 00
@@ -39,7 +39,7 @@ CEDT ::
3939
QtgId : 0001
4040
First Target : 00000007
4141

42-
SRAT ::
42+
:doc:`SRAT <../acpi/srat>`::
4343

4444
Subtable Type : 01 [Memory Affinity]
4545
Length : 28
@@ -53,7 +53,7 @@ SRAT ::
5353
Hot Pluggable : 1
5454
Non-Volatile : 0
5555

56-
HMAT ::
56+
:doc:`HMAT <../acpi/hmat>`::
5757

5858
Structure Type : 0001 [SLLBI]
5959
Data Type : 00 [Latency]
@@ -69,14 +69,14 @@ HMAT ::
6969
Entry : 1200
7070
Entry : 0200
7171

72-
SLIT ::
72+
:doc:`SLIT <../acpi/slit>`::
7373

7474
Signature : "SLIT" [System Locality Information Table]
7575
Localities : 0000000000000003
7676
Locality 0 : 10 20
7777
Locality 1 : FF 0A
7878

79-
DSDT ::
79+
:doc:`DSDT <../acpi/dsdt>`::
8080

8181
Scope (_SB)
8282
{

Documentation/driver-api/cxl/platform/example-configurations/one-dev-per-hb.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Things to note:
1414
* This CEDT/SRAT describes one node per device
1515
* The expanders have the same performance and will be in the same memory tier.
1616

17-
CEDT ::
17+
:doc:`CEDT <../acpi/cedt>`::
1818

1919
Subtable Type : 00 [CXL Host Bridge Structure]
2020
Reserved : 00
@@ -62,7 +62,7 @@ CEDT ::
6262
QtgId : 0001
6363
First Target : 00000006
6464

65-
SRAT ::
65+
:doc:`SRAT <../acpi/srat>`::
6666

6767
Subtable Type : 01 [Memory Affinity]
6868
Length : 28
@@ -88,7 +88,7 @@ SRAT ::
8888
Hot Pluggable : 1
8989
Non-Volatile : 0
9090

91-
HMAT ::
91+
:doc:`HMAT <../acpi/hmat>`::
9292

9393
Structure Type : 0001 [SLLBI]
9494
Data Type : 00 [Latency]
@@ -108,15 +108,15 @@ HMAT ::
108108
Entry : 0200
109109
Entry : 0200
110110

111-
SLIT ::
111+
:doc:`SLIT <../acpi/slit>`::
112112

113113
Signature : "SLIT" [System Locality Information Table]
114114
Localities : 0000000000000003
115115
Locality 0 : 10 20 20
116116
Locality 1 : FF 0A FF
117117
Locality 2 : FF FF 0A
118118

119-
DSDT ::
119+
:doc:`DSDT <../acpi/dsdt>`::
120120

121121
Scope (_SB)
122122
{

0 commit comments

Comments
 (0)