From: sashiko-bot@kernel.org
To: "Ben Cheatham" <Benjamin.Cheatham@amd.com>
Cc: linux-cxl@vger.kernel.org
Subject: Re: [PATCH 11/15] cxl/core: Add support for HDM-D cache id programming
Date: Wed, 23 Sep 2026 17:51:35 +0000 [thread overview]
Message-ID: <20260923175135.837DC1F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260923173342.5584-12-Benjamin.Cheatham@amd.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] cxl/cache: HDM-D capability limit ignored for intermediate switches
- [Medium] cxl/cache: off-by-one error in HDMDMax capability limit check
--
commit bdfe2b9c776e24b9a52c8e7a8594ae19a2e9c210
Author: Ben Cheatham <Benjamin.Cheatham@amd.com>
cxl/core: Add support for HDM-D cache id programming
This commit adds cache id allocation and programming support to the
pre-existing cache id programming routines for HDM-D devices.
> diff --git a/drivers/cxl/core/cache.c b/drivers/cxl/core/cache.c
> --- a/drivers/cxl/core/cache.c
> +++ b/drivers/cxl/core/cache.c
[ ... ]
> @@ -290,6 +297,16 @@ static int cxl_cid_program_table_entry(struct cxl_port *port, int cid,
> return -EINVAL;
> }
>
> + if (is_cxl_root(parent_port_of(port)) && hdmd) {
> + hdmd_max = FIELD_GET(CXL_CACHE_ID_RT_CAP_HDMD_MAX, cap);
> +
> + if (port->num_hdmd > hdmd_max) {
[Severity: Medium]
Will this strict inequality reject valid configurations when the hardware
capability register is 0-based?
In the CXL capability registers, CXL_CACHE_ID_RT_CAP_HDMD_MAX is only 4 bits.
To support 16 HDM-D devices (the maximum), it is highly likely to be 0-based.
The strict inequality port->num_hdmd > hdmd_max incorrectly evaluates to 1 > 0
for the first device, which could erroneously reject valid HDM-D devices during
initialization.
[Severity: High]
Does this capability limit check silently ignore intermediate switches?
Because cxl_cid_program_table_entry() explicitly restricts the limit validation
only to the top-level switch (direct child of the root), intermediate cascaded
switches completely skip validation. In a nested CXL topology, probing multiple
HDM-D endpoints connected to an intermediate switch that has a lower HDMDMax
capability limit than the top-level switch could silently over-program the
intermediate switch. This could potentially cause incorrect hardware routing,
dropped cache snoops, or fatal errors.
> + dev_err(&port->dev,
> + "Maximum number of devices using HDM-D reached\n");
> + return -EINVAL;
> + }
> + }
[ ... ]
> @@ -385,6 +402,22 @@ static struct ida *find_cache_id_ida(struct cxl_port *port)
> return NULL;
> }
>
> +static void cxl_port_add_hdmd(struct cxl_port *endpoint, int val)
> +{
> + struct cxl_port *parent = parent_port_of(endpoint);
> + struct cxl_port *port = endpoint;
> +
> + if (!parent || !is_cxl_cachedev(endpoint->uport_dev))
> + return;
> +
> + while (parent && !is_cxl_root(parent)) {
> + port = parent;
> + parent = parent_port_of(port);
> + }
> +
> + port->num_hdmd += val;
[Severity: High]
Can this loop fail to track limits for nested topologies by only aggregating
the count on the top-level switch?
By skipping intermediate switches, the HDM-D device is attributed entirely
to the top-level switch. This causes the capability limit checks to be
bypassed for intermediate cascaded switches.
> +}
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260923173342.5584-1-Benjamin.Cheatham@amd.com?part=11
next prev parent reply other threads:[~2026-09-23 17:51 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-23 17:33 [PATCH 00/15] Add initial CXL.cache support Ben Cheatham
2026-09-23 17:33 ` [PATCH 01/15] cxl/core: Add CXL.cache device struct Ben Cheatham
2026-09-23 17:41 ` sashiko-bot
2026-09-23 17:33 ` [PATCH 02/15] cxl/cache: Add cxl_cache driver Ben Cheatham
2026-09-23 17:49 ` sashiko-bot
2026-09-23 17:33 ` [PATCH 03/15] cxl/core: Change cxl_ep_load() to use device pointer parameter Ben Cheatham
2026-09-23 17:33 ` [PATCH 04/15] cxl/core: Update devm_cxl_enumerate_ports() for cxl_cachedevs Ben Cheatham
2026-09-23 17:33 ` [PATCH 05/15] cxl/port: Split endpoint port probe on device type Ben Cheatham
2026-09-23 17:46 ` sashiko-bot
2026-09-23 17:33 ` [PATCH 06/15] cxl/core: Update devm_cxl_add_endpoint() for cxl_cachedevs Ben Cheatham
2026-09-23 17:51 ` sashiko-bot
2026-09-23 17:33 ` [PATCH 07/15] cxl/cache: Verify port hierarchy has CXL.cache enabled Ben Cheatham
2026-09-23 17:33 ` [PATCH 08/15] cxl/core, cache: Add Cache ID register probing and init Ben Cheatham
2026-09-23 17:46 ` sashiko-bot
2026-09-23 17:33 ` [PATCH 09/15] cxl/core: Add Cache ID verification Ben Cheatham
2026-09-23 17:49 ` sashiko-bot
2026-09-23 17:33 ` [PATCH 10/15] cxl/core: Add Cache ID allocation Ben Cheatham
2026-09-23 17:49 ` sashiko-bot
2026-09-23 17:33 ` [PATCH 11/15] cxl/core: Add support for HDM-D cache id programming Ben Cheatham
2026-09-23 17:51 ` sashiko-bot [this message]
2026-09-23 17:33 ` [PATCH 12/15] cxl/cache: Add snoop filter creation and set up Ben Cheatham
2026-09-23 17:50 ` sashiko-bot
2026-09-23 17:33 ` [PATCH 13/15] cxl/cache: Add snoop filter allocation Ben Cheatham
2026-09-23 17:58 ` sashiko-bot
2026-09-23 17:33 ` [PATCH 14/15] iommu, cxl: Configure IOMMU for CXL.cache Ben Cheatham
2026-09-23 17:57 ` sashiko-bot
2026-09-23 17:33 ` [PATCH 15/15] cxl/cache: Enable CXL.cache on successful probe Ben Cheatham
2026-09-23 17:35 ` [PATCH 00/15] Add initial CXL.cache support Cheatham, Benjamin
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=20260923175135.837DC1F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=Benjamin.Cheatham@amd.com \
--cc=linux-cxl@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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