[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <bb979120-cb57-4429-8438-a5713473403e@infradead.org>
Date: Sat, 10 May 2025 19:54:14 -0700
From: Randy Dunlap <rdunlap@...radead.org>
To: Gregory Price <gourry@...rry.net>, linux-cxl@...r.kernel.org
Cc: linux-doc@...r.kernel.org, linux-kernel@...r.kernel.org,
kernel-team@...a.com, dave@...olabs.net, jonathan.cameron@...wei.com,
dave.jiang@...el.com, alison.schofield@...el.com, vishal.l.verma@...el.com,
ira.weiny@...el.com, dan.j.williams@...el.com, corbet@....net
Subject: Re: [RFC PATCH v2 18/18] cxl: docs - add self-referencing cross-links
On 4/30/25 11:10 AM, Gregory Price wrote:
> Add some crosslinks between pages in the CXL docs - mostly to the
> ACPI tables.
>
> Signed-off-by: Gregory Price <gourry@...rry.net>
> ---
> .../driver-api/cxl/devices/device-types.rst | 2 +-
> .../cxl/linux/access-coordinates.rst | 8 +++--
> .../driver-api/cxl/linux/cxl-driver.rst | 36 ++++++++++---------
> .../driver-api/cxl/linux/early-boot.rst | 30 +++++++++-------
> .../driver-api/cxl/platform/bios-and-efi.rst | 13 +++----
> .../example-configurations/flexible.rst | 10 +++---
> .../example-configurations/hb-interleave.rst | 10 +++---
> .../multi-dev-per-hb.rst | 10 +++---
> .../example-configurations/one-dev-per-hb.rst | 10 +++---
> 9 files changed, 71 insertions(+), 58 deletions(-)
>
> diff --git a/Documentation/driver-api/cxl/linux/access-coordinates.rst b/Documentation/driver-api/cxl/linux/access-coordinates.rst
> index b07950ea30c9..24db5b41716a 100644
> --- a/Documentation/driver-api/cxl/linux/access-coordinates.rst
> +++ b/Documentation/driver-api/cxl/linux/access-coordinates.rst
> @@ -24,7 +24,8 @@ asymmetry in properties does not happen and all paths to EPs are equal.
>
> There can be multiple switches under an RP. There can be multiple RPs under
> a CXL Host Bridge (HB). There can be multiple HBs under a CXL Fixed Memory
> -Window Structure (CFMWS).
> +Window Structure (CFMWS) in the
> +Documentation/driver-api/cxl/platform/acpi/acpi/cedt.rst.
>
> An example hierarchy:
>
> @@ -83,8 +84,9 @@ also the index for the resulting xarray.
>
> The next step is to take the min() of the per host bridge bandwidth and the
> bandwidth from the Generic Port (GP). The bandwidths for the GP is retrieved
are
> -via ACPI tables SRAT/HMAT. The min bandwidth are aggregated under the same
s/min/minimum/ preferably.
> -ACPI0017 device to form a new xarray.
> +via ACPI tables Documentation/driver-api/cxl/platform/acpi/srat.rst and
> +Documentation/driver-api/cxl/platform/acpi/hmat.rst. The min bandwidth are
> +aggregated under the same ACPI0017 device to form a new xarray.
>
> Finally, the cxl_region_update_bandwidth() is called and the aggregated
> bandwidth from all the members of the last xarray is updated for the
> diff --git a/Documentation/driver-api/cxl/linux/early-boot.rst b/Documentation/driver-api/cxl/linux/early-boot.rst
> index 275174d5b0bb..309cc6999c6b 100644
> --- a/Documentation/driver-api/cxl/linux/early-boot.rst
> +++ b/Documentation/driver-api/cxl/linux/early-boot.rst
> @@ -12,7 +12,8 @@ read EFI and ACPI information throughout this process to configure logical
> representations of the devices.
>
> During Linux Early Boot stage (functions in the kernel that have the __init
> -decorator), the system takes the resources created by EFI/BIOS (ACPI tables)
> +decorator), the system takes the resources created by EFI/BIOS
> +(Documentation/driver-api/cxl/platform/acpi.rst)
> and turns them into resources that the kernel can consume.
>
>
> @@ -69,13 +70,15 @@ significant impact performance depending on the memory capacity of the system.
> NUMA Node Reservation
> =====================
>
> -Linux refers to the proximity domains (:code:`PXM`) defined in the SRAT to
> -create NUMA nodes in :code:`acpi_numa_init`. Typically, there is a 1:1 relation
> -between :code:`PXM` and NUMA node IDs.
> +Linux refers to the proximity domains (:code:`PXM`) defined in the
> +Documentation/driver-api/cxl/platform/acpi/srat.rst to create NUMA nodes in
> +:code:`acpi_numa_init`. Typically, there is a 1:1 relation between
> +:code:`PXM` and NUMA node IDs.
>
> -SRAT is the only ACPI defined way of defining Proximity Domains. Linux chooses
> -to, at most, map those 1:1 with NUMA nodes. CEDT adds a description of SPA
> -ranges which Linux may wish to map to one or more NUMA nodes
> +The SRAT is the only ACPI defined way of defining Proximity Domains. Linux
> +chooses to, at most, map those 1:1 with NUMA nodes.
> +Documentation/driver-api/cxl/platform/acpi/cedt.rst
> +adds a description of SPA ranges which Linux may map to one or more NUMA nodes
Add ending period ('.') above.
>
> If there are CXL ranges in the CFMWS but not in SRAT, then a fake :code:`PXM`
> is created (as of v6.15). In the future, Linux may reject CFMWS not described
> @@ -88,7 +91,7 @@ data for Linux to identify NUMA nodes their associated memory regions.
>
> The relevant code exists in: :code:`linux/drivers/acpi/numa/srat.c`.
>
> -See the Example Platform Configurations section for more information.
> +See Documentation/driver-api/cxl/platform/example-configs.rst for more info.
>
> Memory Tiers Creation
> =====================
> @@ -107,10 +110,13 @@ Tier membership can be inspected in ::
> /sys/devices/virtual/memory_tiering/memory_tierN/nodelist
> 0-1
>
> -If nodes are grouped which have clear difference in performance, check the HMAT
> -and CDAT information for the CXL nodes. All nodes default to the DRAM tier,
> -unless HMAT/CDAT information is reported to the memory_tier component via
> -`access_coordinates`.
> +If nodes are grouped which have clear difference in performance, check the
> +Documentation/driver-api/cxl/platform/acpi/hmat.rst and CDAT
> +(Documentation/driver-api/cxl/devices/uefi.rst) information for the CXL nodes.
> +All nodes default to the DRAM tier, unless HMAT/CDAT information is reported
> +to the memory_tier component via `access_coordinates`.
> +
> +For more, see Documentation/driver-api/cxl/linux/access-coordinates.rst.
>
> Contiguous Memory Allocation
> ============================
> diff --git a/Documentation/driver-api/cxl/platform/example-configurations/flexible.rst b/Documentation/driver-api/cxl/platform/example-configurations/flexible.rst
> index 13a97c03e25a..b2559d2de225 100644
> --- a/Documentation/driver-api/cxl/platform/example-configurations/flexible.rst
> +++ b/Documentation/driver-api/cxl/platform/example-configurations/flexible.rst
> @@ -18,7 +18,7 @@ Things to note:
> * This SRAT describes one-node for each of the above CFMWS.
one node
> * The HMAT describes performance for each node in the SRAT.
>
> -CEDT ::
> +Documentation/driver-api/cxl/platform/acpi/cedt.rst ::
>
> Subtable Type : 00 [CXL Host Bridge Structure]
> Reserved : 00
> @@ -137,7 +137,7 @@ CEDT ::
> QtgId : 0001
> First Target : 00000006
>
> -SRAT ::
> +Documentation/driver-api/cxl/platform/acpi/srat.rst ::
>
> Subtable Type : 01 [Memory Affinity]
> Length : 28
> @@ -223,7 +223,7 @@ SRAT ::
> Hot Pluggable : 1
> Non-Volatile : 0
>
> -HMAT ::
> +Documentation/driver-api/cxl/platform/acpi/hmat.rst ::
>
> Structure Type : 0001 [SLLBI]
> Data Type : 00 [Latency]
> @@ -263,7 +263,7 @@ HMAT ::
> Entry : 0100
> Entry : 0100
>
> -SLIT ::
> +Documentation/driver-api/cxl/platform/acpi/slit.rst ::
>
> Signature : "SLIT" [System Locality Information Table]
> Localities : 0000000000000003
> @@ -276,7 +276,7 @@ SLIT ::
> Locality 6 : FF FF FF FF FF FF 0A FF
> Locality 7 : FF FF FF FF FF FF FF 0A
>
> -DSDT ::
> +Documentation/driver-api/cxl/platform/acpi/dsdt.rst ::
>
> Scope (_SB)
> {
> diff --git a/Documentation/driver-api/cxl/platform/example-configurations/hb-interleave.rst b/Documentation/driver-api/cxl/platform/example-configurations/hb-interleave.rst
> index fa0885d82deb..9cbf3dd44b0f 100644
> --- a/Documentation/driver-api/cxl/platform/example-configurations/hb-interleave.rst
> +++ b/Documentation/driver-api/cxl/platform/example-configurations/hb-interleave.rst
> @@ -13,7 +13,7 @@ Things to note:
> * This SRAT describes one-node for both host bridges.
one node
> * The HMAT describes a single node's performance.
>
> -CEDT ::
> +Documentation/driver-api/cxl/platform/acpi/cedt.rst ::
>
> Subtable Type : 00 [CXL Host Bridge Structure]
> Reserved : 00
> @@ -48,7 +48,7 @@ CEDT ::
> First Target : 00000007
> Second Target : 00000006
>
> -SRAT ::
> +Documentation/driver-api/cxl/platform/acpi/srat.rst ::
>
> Subtable Type : 01 [Memory Affinity]
> Length : 28
> @@ -62,7 +62,7 @@ SRAT ::
> Hot Pluggable : 1
> Non-Volatile : 0
>
> -HMAT ::
> +Documentation/driver-api/cxl/platform/acpi/hmat.rst ::
>
> Structure Type : 0001 [SLLBI]
> Data Type : 00 [Latency]
> @@ -80,14 +80,14 @@ HMAT ::
> Entry : 1200
> Entry : 0400
>
> -SLIT ::
> +Documentation/driver-api/cxl/platform/acpi/slit.rst ::
>
> Signature : "SLIT" [System Locality Information Table]
> Localities : 0000000000000003
> Locality 0 : 10 20
> Locality 1 : FF 0A
>
> -DSDT ::
> +Documentation/driver-api/cxl/platform/acpi/dsdt.rst ::
>
> Scope (_SB)
> {
> diff --git a/Documentation/driver-api/cxl/platform/example-configurations/multi-dev-per-hb.rst b/Documentation/driver-api/cxl/platform/example-configurations/multi-dev-per-hb.rst
> index 6adf7c639490..fa24243968ac 100644
> --- a/Documentation/driver-api/cxl/platform/example-configurations/multi-dev-per-hb.rst
> +++ b/Documentation/driver-api/cxl/platform/example-configurations/multi-dev-per-hb.rst
> @@ -14,7 +14,7 @@ Things to note:
> * This CEDT/SRAT describes one node for both devices.
> * There is only one proximity domain the HMAT for both devices.
>
> -CEDT ::
> +Documentation/driver-api/cxl/platform/acpi/cedt.rst ::
>
> Subtable Type : 00 [CXL Host Bridge Structure]
> Reserved : 00
> @@ -39,7 +39,7 @@ CEDT ::
> QtgId : 0001
> First Target : 00000007
>
> -SRAT ::
> +Documentation/driver-api/cxl/platform/acpi/srat.rst ::
>
> Subtable Type : 01 [Memory Affinity]
> Length : 28
> @@ -53,7 +53,7 @@ SRAT ::
> Hot Pluggable : 1
> Non-Volatile : 0
>
> -HMAT ::
> +Documentation/driver-api/cxl/platform/acpi/hmat.rst ::
>
> Structure Type : 0001 [SLLBI]
> Data Type : 00 [Latency]
> @@ -69,14 +69,14 @@ HMAT ::
> Entry : 1200
> Entry : 0200
>
> -SLIT ::
> +Documentation/driver-api/cxl/platform/acpi/slit.rst ::
>
> Signature : "SLIT" [System Locality Information Table]
> Localities : 0000000000000003
> Locality 0 : 10 20
> Locality 1 : FF 0A
>
> -DSDT ::
> +Documentation/driver-api/cxl/platform/acpi/dsdt.rst ::
>
> Scope (_SB)
> {
> diff --git a/Documentation/driver-api/cxl/platform/example-configurations/one-dev-per-hb.rst b/Documentation/driver-api/cxl/platform/example-configurations/one-dev-per-hb.rst
> index 8b732dc8c5b6..ee65b3364c5b 100644
> --- a/Documentation/driver-api/cxl/platform/example-configurations/one-dev-per-hb.rst
> +++ b/Documentation/driver-api/cxl/platform/example-configurations/one-dev-per-hb.rst
> @@ -14,7 +14,7 @@ Things to note:
> * This CEDT/SRAT describes one-node per device
one node
> * The expanders have the same performance and will be in the same memory tier.
>
> -CEDT ::
> +Documentation/driver-api/cxl/platform/acpi/cedt.rst ::
>
> Subtable Type : 00 [CXL Host Bridge Structure]
> Reserved : 00
> @@ -62,7 +62,7 @@ CEDT ::
> QtgId : 0001
> First Target : 00000006
>
> -SRAT ::
> +Documentation/driver-api/cxl/platform/acpi/srat.rst ::
>
> Subtable Type : 01 [Memory Affinity]
> Length : 28
> @@ -88,7 +88,7 @@ SRAT ::
> Hot Pluggable : 1
> Non-Volatile : 0
>
> -HMAT ::
> +Documentation/driver-api/cxl/platform/acpi/hmat.rst ::
>
> Structure Type : 0001 [SLLBI]
> Data Type : 00 [Latency]
> @@ -108,7 +108,7 @@ HMAT ::
> Entry : 0200
> Entry : 0200
>
> -SLIT ::
> +Documentation/driver-api/cxl/platform/acpi/slit.rst ::
>
> Signature : "SLIT" [System Locality Information Table]
> Localities : 0000000000000003
> @@ -116,7 +116,7 @@ SLIT ::
> Locality 1 : FF 0A FF
> Locality 2 : FF FF 0A
>
> -DSDT ::
> +Documentation/driver-api/cxl/platform/acpi/dsdt.rst ::
>
> Scope (_SB)
> {
--
~Randy
Powered by blists - more mailing lists