From: Richard Cheng <icheng@nvidia.com>
To: dave@stgolabs.net, jic23@kernel.org, dave.jiang@intel.com,
alison.schofield@intel.com, vishal.l.verma@intel.com,
djbw@kernel.org, danwilliams@nvidia.com
Cc: iweiny@kernel.org, ming.li@zohomail.com, kobak@nvidia.com,
kaihengf@nvidia.com, kees@kernel.org, newtonl@nvidia.com,
kristinc@nvidia.com, mochs@nvidia.com, linux-cxl@vger.kernel.org,
linux-kernel@vger.kernel.org, Richard Cheng <icheng@nvidia.com>
Subject: [PATCH v7 0/2] Support zero-sized HDM decoders
Date: Wed, 8 Jul 2026 18:40:21 +0800 [thread overview]
Message-ID: <20260708104024.68029-1-icheng@nvidia.com> (raw)
CXL r4.0 §8.2.4.20.12 ("Committing Decoder Programming") and
§14.13.10 ("CXL HDM Decoder Zero Size Commit") permit committing an
HDM decoder with size 0. Firmware may commit and lock such decoders so
the OS cannot program regions through them; this is a platform design
choice rather than a specification requirement.
The kernel currently rejects these decoders with -ENXIO during port
enumeration and aborts enumeration of the entire port. On affected
systems, this prevents the CXL topology from appearing in userspace.
This series enumerates empty committed decoders into the topology while
keeping them out of region assembly.
Patch 1 makes zero-size DPA reservations first-class. Since the resource
tree cannot represent an empty range, an empty decoder is backed by a
separately allocated resource. This keeps port->hdm_end, skip handling,
and in-order DPA accounting consistent. Operations requiring non-empty
capacity, including region attachment and poison queries, are guarded
appropriately.
Patch 2 adds the mock_zero_size_decoders cxl_test module parameter,
disabled by default. When enabled, it installs committed, locked,
zero-sized endpoint, switch, and host-bridge decoders under
host-bridge0.
Testing on arm64 covered enumeration of eight locked zero-sized
decoders, DPA reservation and release after those decoders, ACPI
unbind/rebind, module reload, poison handling, and rejection of
incompatible cxl_test module-parameter combinations. The core patch was
also previously validated on a Montage CXL Type 3 device.
Changelog:
v6->v7:
- Rebase onto cxl/for-7.3/cxl-type2-test.
- Patch 1 is unchanged.
- Adapt patch 2 to the refactored Type-2/Type-3 decoder initialization
paths.
- Integrate mock_zero_size_decoders with special-topology parameter
validation and reject its incompatible use with fail_autoassemble.
Richard Cheng (2):
cxl/hdm: Allow zero sized HDM decoders
tools/testing/cxl: Enable zero sized decoders under hb0
drivers/cxl/core/hdm.c | 52 +++++++++++------
drivers/cxl/core/mbox.c | 3 +
drivers/cxl/core/region.c | 49 ++++++++++------
drivers/cxl/cxl.h | 10 ++++
drivers/cxl/port.c | 3 +
tools/testing/cxl/test/cxl.c | 109 ++++++++++++++++++++++++++++++-----
6 files changed, 177 insertions(+), 49 deletions(-)
base-commit: 1c6b4ceafc3b994871c29340e0c1ddb0af5800e7
--
2.43.0
next reply other threads:[~2026-07-08 10:40 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-08 10:40 Richard Cheng [this message]
2026-07-08 10:40 ` [PATCH v7 1/2] cxl/hdm: Allow zero sized HDM decoders Richard Cheng
2026-07-08 10:40 ` [PATCH v7 2/2] tools/testing/cxl: Enable zero sized decoders under hb0 Richard Cheng
2026-07-08 18:35 ` Alison Schofield
2026-07-09 2:33 ` Richard Cheng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260708104024.68029-1-icheng@nvidia.com \
--to=icheng@nvidia.com \
--cc=alison.schofield@intel.com \
--cc=danwilliams@nvidia.com \
--cc=dave.jiang@intel.com \
--cc=dave@stgolabs.net \
--cc=djbw@kernel.org \
--cc=iweiny@kernel.org \
--cc=jic23@kernel.org \
--cc=kaihengf@nvidia.com \
--cc=kees@kernel.org \
--cc=kobak@nvidia.com \
--cc=kristinc@nvidia.com \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ming.li@zohomail.com \
--cc=mochs@nvidia.com \
--cc=newtonl@nvidia.com \
--cc=vishal.l.verma@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox