[PATCH v3 00/18] cxl: Address translation support, part 1: Cleanups and refactoring

Robert Richter
2025-02-11T09:54:21Z

This series is the first part of adding support for CXL address
translation. It contains cleanup and code refactoring in preparation
of the actual implementation that will be sent in part 2. Cleanup and
code refactoring have been split in a separate series to reduce the
number of patches of the series. Even without address translation on
top this rework improves esp. the region code, cleans it up,
simplifies it and adds debugging messages to better analyze region
creation failures:

Content of patches:

* Patches 1: Remove else after return.

* Patches 2-4: Cleanups and comments around cxl_hdm_decode_init().

* Patches 5, 6, 13: Adding and modifying helper functions.

* Patches 7-12, 14: Refactoring of endpoint decoder setup.

* Patches 15-18: Adding and modifying debug messages.

Most of the patches were part of my first submission of v1 [1], some
of them were already reviewed.

[1] https://lore.kernel.org/linux-cxl/20250107141015.3367194-1-rrichter@amd.com/

v3:
* added tags to SOB chain,
* fixed NULL pointer dereference in cxl_find_root_decoder() (Alison),
* updated subject line of patches that add kernel messages and
included example log messages (Alison),

V2:
* rebased onto cxl/next,
* added tags to SOB chain,
* move patches with cleanups and refactoring into this separate
series (Dave),
* added patch "cxl/acpi: Unify CFMWS memory log messages with SRAT
messages" to improve CFMWS log messages,
* renamed endpoint decoder functions to cxl_endpoint_decoder_*() (Li),
* reworded patch description that moves find_cxl_root() and reworks
cxl_find_root_decoder() (Terry),
* small changes to cxl_find_root_decoder()/
cxl_endpoint_decoder_initialize() (Jonanthan),
* updated comment in cxl_port_find_switch_decoder() (Ben),
* cxl_endpoint_decoder_initialize(): Simplify variable declaration
(Jonathan, Ben),
* cxl_find_decoder_early(): Added comment on function usage (Gregory),
* reordered patches and reworded some of the subject for a better
structure.

Robert Richter (18):
cxl: Remove else after return
cxl/pci: Moving code in cxl_hdm_decode_init()
cxl/pci: cxl_hdm_decode_init: Move comment
cxl/pci: Add comments to cxl_hdm_decode_init()
cxl: Introduce parent_port_of() helper
cxl/region: Rename function to cxl_find_decoder_early()
cxl/region: Avoid duplicate call of cxl_find_decoder_early()
cxl/region: Move find_cxl_root() to cxl_add_to_region()
cxl/region: Factor out code to find the root decoder
cxl/region: Factor out code to find a root decoder's region
cxl/region: Split region registration into an initialization and
adding part
cxl/region: Use iterator to find the root port in
cxl_find_root_decoder()
cxl/region: Add function to find a port's switch decoder by range
cxl/region: Unfold cxl_find_root_decoder() into
cxl_endpoint_decoder_initialize()
cxl/region: Add a dev_warn() on registration failure
cxl/region: Add a dev_err() on missing target list entries
cxl: Add a dev_dbg() when a decoder was added to a port
cxl/acpi: Unify CFMWS memory log messages with SRAT messages

drivers/cxl/acpi.c | 12 ++-
drivers/cxl/core/cdat.c | 2 +-
drivers/cxl/core/hdm.c | 3 +-
drivers/cxl/core/pci.c | 44 +++++----
drivers/cxl/core/port.c | 15 +--
drivers/cxl/core/region.c | 190 +++++++++++++++++++++++++-------------
drivers/cxl/cxl.h | 9 +-
drivers/cxl/port.c | 22 ++---
8 files changed, 187 insertions(+), 110 deletions(-)

base-commit: 5585e342e8d38cc598279bdb87f235f8b954dd5a
--
2.39.5