Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cxl: docs/platform/example-configs documentation

Add example ACPI Table configurations for different sample platforms.

Signed-off-by: Gregory Price <gourry@gourry.net>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://patch.msgid.link/20250512162134.3596150-7-gourry@gourry.net
Signed-off-by: Dave Jiang <dave.jiang@intel.com>

authored by

Gregory Price and committed by
Dave Jiang
8545940b d1ba3646

+643
+1
Documentation/driver-api/cxl/index.rst
··· 27 27 28 28 platform/bios-and-efi 29 29 platform/acpi 30 + platform/example-configs 30 31 31 32 .. toctree:: 32 33 :maxdepth: 1
+13
Documentation/driver-api/cxl/platform/example-configs.rst
··· 1 + .. SPDX-License-Identifier: GPL-2.0 2 + 3 + Example Platform Configurations 4 + ############################### 5 + 6 + .. toctree:: 7 + :maxdepth: 1 8 + :caption: Contents 9 + 10 + example-configurations/one-dev-per-hb.rst 11 + example-configurations/multi-dev-per-hb.rst 12 + example-configurations/hb-interleave.rst 13 + example-configurations/flexible.rst
+296
Documentation/driver-api/cxl/platform/example-configurations/flexible.rst
··· 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 + 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 + 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 + 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 + 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 + 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 + }
+107
Documentation/driver-api/cxl/platform/example-configurations/hb-interleave.rst
··· 1 + .. SPDX-License-Identifier: GPL-2.0 2 + 3 + ============================ 4 + Cross-Host-Bridge Interleave 5 + ============================ 6 + This system has a single socket with two CXL host bridges. Each host bridge 7 + has a single CXL memory expander with a 4GB of memory. 8 + 9 + Things to note: 10 + 11 + * Cross-Bridge interleave is described. 12 + * The expanders are described by a single CFMWS. 13 + * This SRAT describes one node for both host bridges. 14 + * The HMAT describes a single node's performance. 15 + 16 + CEDT :: 17 + 18 + Subtable Type : 00 [CXL Host Bridge Structure] 19 + Reserved : 00 20 + Length : 0020 21 + Associated host bridge : 00000007 22 + Specification version : 00000001 23 + Reserved : 00000000 24 + Register base : 0000010370400000 25 + Register length : 0000000000010000 26 + 27 + Subtable Type : 00 [CXL Host Bridge Structure] 28 + Reserved : 00 29 + Length : 0020 30 + Associated host bridge : 00000006 31 + Specification version : 00000001 32 + Reserved : 00000000 33 + Register base : 0000010380800000 34 + Register length : 0000000000010000 35 + 36 + Subtable Type : 01 [CXL Fixed Memory Window Structure] 37 + Reserved : 00 38 + Length : 002C 39 + Reserved : 00000000 40 + Window base address : 0000001000000000 41 + Window size : 0000000200000000 42 + Interleave Members (2^n) : 01 43 + Interleave Arithmetic : 00 44 + Reserved : 0000 45 + Granularity : 00000000 46 + Restrictions : 0006 47 + QtgId : 0001 48 + First Target : 00000007 49 + Second Target : 00000006 50 + 51 + SRAT :: 52 + 53 + Subtable Type : 01 [Memory Affinity] 54 + Length : 28 55 + Proximity Domain : 00000001 56 + Reserved1 : 0000 57 + Base Address : 0000001000000000 58 + Address Length : 0000000200000000 59 + Reserved2 : 00000000 60 + Flags (decoded below) : 0000000B 61 + Enabled : 1 62 + Hot Pluggable : 1 63 + Non-Volatile : 0 64 + 65 + HMAT :: 66 + 67 + Structure Type : 0001 [SLLBI] 68 + Data Type : 00 [Latency] 69 + Target Proximity Domain List : 00000000 70 + Target Proximity Domain List : 00000001 71 + Target Proximity Domain List : 00000002 72 + Entry : 0080 73 + Entry : 0100 74 + 75 + Structure Type : 0001 [SLLBI] 76 + Data Type : 03 [Bandwidth] 77 + Target Proximity Domain List : 00000000 78 + Target Proximity Domain List : 00000001 79 + Target Proximity Domain List : 00000002 80 + Entry : 1200 81 + Entry : 0400 82 + 83 + SLIT :: 84 + 85 + Signature : "SLIT" [System Locality Information Table] 86 + Localities : 0000000000000003 87 + Locality 0 : 10 20 88 + Locality 1 : FF 0A 89 + 90 + DSDT :: 91 + 92 + Scope (_SB) 93 + { 94 + Device (S0D0) 95 + { 96 + Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID 97 + ... 98 + Name (_UID, 0x07) // _UID: Unique ID 99 + } 100 + ... 101 + Device (S0D5) 102 + { 103 + Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID 104 + ... 105 + Name (_UID, 0x06) // _UID: Unique ID 106 + } 107 + }
+90
Documentation/driver-api/cxl/platform/example-configurations/multi-dev-per-hb.rst
··· 1 + .. SPDX-License-Identifier: GPL-2.0 2 + 3 + ================================ 4 + Multiple Devices per Host Bridge 5 + ================================ 6 + 7 + In this example system we will have a single socket and one CXL host bridge. 8 + There are two CXL memory expanders with 4GB attached to the host bridge. 9 + 10 + Things to note: 11 + 12 + * Intra-Bridge interleave is not described here. 13 + * The expanders are described by a single CEDT/CFMWS. 14 + * This CEDT/SRAT describes one node for both devices. 15 + * There is only one proximity domain the HMAT for both devices. 16 + 17 + CEDT :: 18 + 19 + Subtable Type : 00 [CXL Host Bridge Structure] 20 + Reserved : 00 21 + Length : 0020 22 + Associated host bridge : 00000007 23 + Specification version : 00000001 24 + Reserved : 00000000 25 + Register base : 0000010370400000 26 + Register length : 0000000000010000 27 + 28 + Subtable Type : 01 [CXL Fixed Memory Window Structure] 29 + Reserved : 00 30 + Length : 002C 31 + Reserved : 00000000 32 + Window base address : 0000001000000000 33 + Window size : 0000000200000000 34 + Interleave Members (2^n) : 00 35 + Interleave Arithmetic : 00 36 + Reserved : 0000 37 + Granularity : 00000000 38 + Restrictions : 0006 39 + QtgId : 0001 40 + First Target : 00000007 41 + 42 + SRAT :: 43 + 44 + Subtable Type : 01 [Memory Affinity] 45 + Length : 28 46 + Proximity Domain : 00000001 47 + Reserved1 : 0000 48 + Base Address : 0000001000000000 49 + Address Length : 0000000200000000 50 + Reserved2 : 00000000 51 + Flags (decoded below) : 0000000B 52 + Enabled : 1 53 + Hot Pluggable : 1 54 + Non-Volatile : 0 55 + 56 + HMAT :: 57 + 58 + Structure Type : 0001 [SLLBI] 59 + Data Type : 00 [Latency] 60 + Target Proximity Domain List : 00000000 61 + Target Proximity Domain List : 00000001 62 + Entry : 0080 63 + Entry : 0100 64 + 65 + Structure Type : 0001 [SLLBI] 66 + Data Type : 03 [Bandwidth] 67 + Target Proximity Domain List : 00000000 68 + Target Proximity Domain List : 00000001 69 + Entry : 1200 70 + Entry : 0200 71 + 72 + SLIT :: 73 + 74 + Signature : "SLIT" [System Locality Information Table] 75 + Localities : 0000000000000003 76 + Locality 0 : 10 20 77 + Locality 1 : FF 0A 78 + 79 + DSDT :: 80 + 81 + Scope (_SB) 82 + { 83 + Device (S0D0) 84 + { 85 + Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID 86 + ... 87 + Name (_UID, 0x07) // _UID: Unique ID 88 + } 89 + ... 90 + }
+136
Documentation/driver-api/cxl/platform/example-configurations/one-dev-per-hb.rst
··· 1 + .. SPDX-License-Identifier: GPL-2.0 2 + 3 + ========================== 4 + One Device per Host Bridge 5 + ========================== 6 + 7 + This system has a single socket with two CXL host bridges. Each host bridge 8 + has a single CXL memory expander with a 4GB of memory. 9 + 10 + Things to note: 11 + 12 + * Cross-Bridge interleave is not being used. 13 + * The expanders are in two separate but adjascent memory regions. 14 + * This CEDT/SRAT describes one node per device 15 + * The expanders have the same performance and will be in the same memory tier. 16 + 17 + CEDT :: 18 + 19 + Subtable Type : 00 [CXL Host Bridge Structure] 20 + Reserved : 00 21 + Length : 0020 22 + Associated host bridge : 00000007 23 + Specification version : 00000001 24 + Reserved : 00000000 25 + Register base : 0000010370400000 26 + Register length : 0000000000010000 27 + 28 + Subtable Type : 00 [CXL Host Bridge Structure] 29 + Reserved : 00 30 + Length : 0020 31 + Associated host bridge : 00000006 32 + Specification version : 00000001 33 + Reserved : 00000000 34 + Register base : 0000010380800000 35 + Register length : 0000000000010000 36 + 37 + Subtable Type : 01 [CXL Fixed Memory Window Structure] 38 + Reserved : 00 39 + Length : 002C 40 + Reserved : 00000000 41 + Window base address : 0000001000000000 42 + Window size : 0000000100000000 43 + Interleave Members (2^n) : 00 44 + Interleave Arithmetic : 00 45 + Reserved : 0000 46 + Granularity : 00000000 47 + Restrictions : 0006 48 + QtgId : 0001 49 + First Target : 00000007 50 + 51 + Subtable Type : 01 [CXL Fixed Memory Window Structure] 52 + Reserved : 00 53 + Length : 002C 54 + Reserved : 00000000 55 + Window base address : 0000001100000000 56 + Window size : 0000000100000000 57 + Interleave Members (2^n) : 00 58 + Interleave Arithmetic : 00 59 + Reserved : 0000 60 + Granularity : 00000000 61 + Restrictions : 0006 62 + QtgId : 0001 63 + First Target : 00000006 64 + 65 + SRAT :: 66 + 67 + Subtable Type : 01 [Memory Affinity] 68 + Length : 28 69 + Proximity Domain : 00000001 70 + Reserved1 : 0000 71 + Base Address : 0000001000000000 72 + Address Length : 0000000100000000 73 + Reserved2 : 00000000 74 + Flags (decoded below) : 0000000B 75 + Enabled : 1 76 + Hot Pluggable : 1 77 + Non-Volatile : 0 78 + 79 + Subtable Type : 01 [Memory Affinity] 80 + Length : 28 81 + Proximity Domain : 00000002 82 + Reserved1 : 0000 83 + Base Address : 0000001100000000 84 + Address Length : 0000000100000000 85 + Reserved2 : 00000000 86 + Flags (decoded below) : 0000000B 87 + Enabled : 1 88 + Hot Pluggable : 1 89 + Non-Volatile : 0 90 + 91 + HMAT :: 92 + 93 + Structure Type : 0001 [SLLBI] 94 + Data Type : 00 [Latency] 95 + Target Proximity Domain List : 00000000 96 + Target Proximity Domain List : 00000001 97 + Target Proximity Domain List : 00000002 98 + Entry : 0080 99 + Entry : 0100 100 + Entry : 0100 101 + 102 + Structure Type : 0001 [SLLBI] 103 + Data Type : 03 [Bandwidth] 104 + Target Proximity Domain List : 00000000 105 + Target Proximity Domain List : 00000001 106 + Target Proximity Domain List : 00000002 107 + Entry : 1200 108 + Entry : 0200 109 + Entry : 0200 110 + 111 + SLIT :: 112 + 113 + Signature : "SLIT" [System Locality Information Table] 114 + Localities : 0000000000000003 115 + Locality 0 : 10 20 20 116 + Locality 1 : FF 0A FF 117 + Locality 2 : FF FF 0A 118 + 119 + DSDT :: 120 + 121 + Scope (_SB) 122 + { 123 + Device (S0D0) 124 + { 125 + Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID 126 + ... 127 + Name (_UID, 0x07) // _UID: Unique ID 128 + } 129 + ... 130 + Device (S0D5) 131 + { 132 + Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID 133 + ... 134 + Name (_UID, 0x06) // _UID: Unique ID 135 + } 136 + }