[PATCH v3 00/17] CXL Boot to Bash Documentation

Gregory Price
2025-05-12T16:21:53Z

v3:
- Cross-links (Bagas)
- Grammar and spelling (Randy)
- added fixups to access-coordinates (Bagas)
- Drop TODO sections (use-case, memory-tiering, CDAT/UEFI, SRAT Genport)
I unfortunately won't be able to come back around to this for
a while, so I'd rather not let this rot.

---

This series converts CXL Boot to Bash Docs from LSFMM '25 to Linux
Kernel Docs. In brief, this document covers (almost) everything Linux
expects from platforms to successfully bring volatile CXL memory
capacity online as a DAX device and/or SystemRAM.

It covers:

- Platform configuration data (ACPI Tables, EFI Memory Map, EFI Configs)
- Linux Build and Boot Parameters
- Linux consumption of Platform, Build, and Boot params
- Linux creation of base resources (NUMA nodes, memory tiers, etc)
- CXL Driver probe process and sysfs structure
- DAX Driver interactions between the CXL driver and memory hotplug
- Memory hotplug interactions
- Page allocator interactions (NUMA nodes, Memory Zones, Reclaim, etc).

Included are example platform configurations (ACPI tables) and cxl
decoder configurations to guide platform developers on expected
configurations (which may be more strict than the CXL spec).

Co-developed-by: Joshua Hahn <joshua.hahnjy@gmail.com>
Signed-off-by: Joshua Hahn <joshua.hahnjy@gmail.com>
Signed-off-by: Gregory Price <gourry@gourry.net>

Gregory Price (17):
cxl: update documentation structure in prep for new docs
cxl: docs - access-coordinates doc fixups
cxl: docs/devices - add cxl device and protocol reference
cxl: docs/platform/bios-and-efi documentation
cxl: docs/platform/acpi reference documentation
cxl: docs/platform/example-configs documentation
cxl: docs/linux - overview
cxl: docs/linux - early boot configuration
cxl: docs/linux - add cxl-driver theory of operation
cxl: docs/linux/cxl-driver - add example configurations
cxl: docs/linux/dax-driver documentation
cxl: docs/linux/memory-hotplug
cxl: docs/allocation/dax
cxl: docs/allocation/page-allocator
cxl: docs/allocation/reclaim
cxl: docs/allocation/hugepages
cxl: docs - add self-referencing cross-links

.../driver-api/cxl/allocation/dax.rst | 60 ++
.../driver-api/cxl/allocation/hugepages.rst | 32 +
.../cxl/allocation/page-allocator.rst | 85 +++
.../driver-api/cxl/allocation/reclaim.rst | 51 ++
.../driver-api/cxl/devices/device-types.rst | 165 +++++
Documentation/driver-api/cxl/index.rst | 45 +-
.../cxl/{ => linux}/access-coordinates.rst | 35 +-
.../driver-api/cxl/linux/cxl-driver.rst | 630 ++++++++++++++++++
.../driver-api/cxl/linux/dax-driver.rst | 43 ++
.../driver-api/cxl/linux/early-boot.rst | 137 ++++
.../example-configurations/hb-interleave.rst | 314 +++++++++
.../intra-hb-interleave.rst | 291 ++++++++
.../multi-interleave.rst | 401 +++++++++++
.../example-configurations/single-device.rst | 246 +++++++
.../driver-api/cxl/linux/memory-hotplug.rst | 78 +++
.../driver-api/cxl/linux/overview.rst | 103 +++
.../driver-api/cxl/platform/acpi.rst | 76 +++
.../driver-api/cxl/platform/acpi/cedt.rst | 62 ++
.../driver-api/cxl/platform/acpi/dsdt.rst | 28 +
.../driver-api/cxl/platform/acpi/hmat.rst | 32 +
.../driver-api/cxl/platform/acpi/slit.rst | 21 +
.../driver-api/cxl/platform/acpi/srat.rst | 44 ++
.../driver-api/cxl/platform/bios-and-efi.rst | 262 ++++++++
.../cxl/platform/example-configs.rst | 13 +
.../example-configurations/flexible.rst | 296 ++++++++
.../example-configurations/hb-interleave.rst | 107 +++
.../multi-dev-per-hb.rst | 90 +++
.../example-configurations/one-dev-per-hb.rst | 136 ++++
...ry-devices.rst => theory-of-operation.rst} | 10 +-
29 files changed, 3867 insertions(+), 26 deletions(-)
create mode 100644 Documentation/driver-api/cxl/allocation/dax.rst
create mode 100644 Documentation/driver-api/cxl/allocation/hugepages.rst
create mode 100644 Documentation/driver-api/cxl/allocation/page-allocator.rst
create mode 100644 Documentation/driver-api/cxl/allocation/reclaim.rst
create mode 100644 Documentation/driver-api/cxl/devices/device-types.rst
rename Documentation/driver-api/cxl/{ => linux}/access-coordinates.rst (84%)
create mode 100644 Documentation/driver-api/cxl/linux/cxl-driver.rst
create mode 100644 Documentation/driver-api/cxl/linux/dax-driver.rst
create mode 100644 Documentation/driver-api/cxl/linux/early-boot.rst
create mode 100644 Documentation/driver-api/cxl/linux/example-configurations/hb-interleave.rst
create mode 100644 Documentation/driver-api/cxl/linux/example-configurations/intra-hb-interleave.rst
create mode 100644 Documentation/driver-api/cxl/linux/example-configurations/multi-interleave.rst
create mode 100644 Documentation/driver-api/cxl/linux/example-configurations/single-device.rst
create mode 100644 Documentation/driver-api/cxl/linux/memory-hotplug.rst
create mode 100644 Documentation/driver-api/cxl/linux/overview.rst
create mode 100644 Documentation/driver-api/cxl/platform/acpi.rst
create mode 100644 Documentation/driver-api/cxl/platform/acpi/cedt.rst
create mode 100644 Documentation/driver-api/cxl/platform/acpi/dsdt.rst
create mode 100644 Documentation/driver-api/cxl/platform/acpi/hmat.rst
create mode 100644 Documentation/driver-api/cxl/platform/acpi/slit.rst
create mode 100644 Documentation/driver-api/cxl/platform/acpi/srat.rst
create mode 100644 Documentation/driver-api/cxl/platform/bios-and-efi.rst
create mode 100644 Documentation/driver-api/cxl/platform/example-configs.rst
create mode 100644 Documentation/driver-api/cxl/platform/example-configurations/flexible.rst
create mode 100644 Documentation/driver-api/cxl/platform/example-configurations/hb-interleave.rst
create mode 100644 Documentation/driver-api/cxl/platform/example-configurations/multi-dev-per-hb.rst
create mode 100644 Documentation/driver-api/cxl/platform/example-configurations/one-dev-per-hb.rst
rename Documentation/driver-api/cxl/{memory-devices.rst => theory-of-operation.rst} (98%)

--
2.49.0