From: sashiko-bot@kernel.org
To: "Fabio M. De Francesco" <fabio.m.de.francesco@linux.intel.com>
Cc: linux-pci@vger.kernel.org, linux-cxl@vger.kernel.org
Subject: Re: [PATCH v2 02/13] cxl/hdm: Add function to restore one HDM decoder
Date: Tue, 25 Aug 2026 02:41:59 +0000 [thread overview]
Message-ID: <20260825024159.CA4B81F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260825022628.3651434-3-fabio.m.de.francesco@linux.intel.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] `cxl_decoder_recommit()` falsely reports success if the hardware is disconnected and the MMIO read returns `~0`.
--
--- Patch [2]: [PATCH v2 02/13] cxl/hdm: Add function to restore one HDM decoder ---
commit 15afab37836901527b4313972b91d202d46a3f32
Author: Fabio M. De Francesco <fabio.m.de.francesco@linux.intel.com>
cxl/hdm: Add function to restore one HDM decoder
This commit adds cxl_decoder_recommit() to restore a single HDM decoder's
settings if hardware no longer reports it as committed after a reset. The
function reprograms the registers and commits the changes, which is a step
toward restoring decoders below a reset port.
> diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c
> index 0c80b76a5f9b4..d55d764895f88 100644
> --- a/drivers/cxl/core/hdm.c
> +++ b/drivers/cxl/core/hdm.c
[ ... ]
> @@ -849,6 +849,77 @@ static int cxl_decoder_commit(struct cxl_decoder *cxld)
> return 0;
> }
>
> +/**
> + * cxl_decoder_recommit - reprogram @cxld's HDM decoder registers and commit
[ ... ]
> +int cxl_decoder_recommit(struct cxl_decoder *cxld, u32 ctrl)
> +{
> + struct cxl_port *port = to_cxl_port(cxld->dev.parent);
> + struct cxl_hdm *cxlhdm = dev_get_drvdata(&port->dev);
> + void __iomem *hdm = cxlhdm->regs.hdm_decoder;
> + u32 hw_ctrl;
> + int rc;
> +
> + if ((cxld->flags & CXL_DECODER_F_ENABLE) == 0)
> + return 0;
> +
> + if (!cxld->commit)
> + return 0;
> +
> + hw_ctrl = readl(hdm + CXL_HDM_DECODER0_CTRL_OFFSET(cxld->id));
> + if (FIELD_GET(CXL_HDM_DECODER0_CTRL_COMMITTED, hw_ctrl)) {
[Severity: High]
If the hardware is disconnected or failed to recover from reset, readl() could
return ~0 (all 1s). In that case, FIELD_GET() will evaluate the COMMITTED bit
as true, causing the function to immediately return 0 (success) without
reprogramming the decoder or checking for COMMIT_ERROR.
Could this lead to falsely reporting successful decoder restoration during a
hardware failure, potentially routing traffic to a dead path?
> + dev_dbg(&cxld->dev, "%s: still committed, no reprogram needed\n",
> + __func__);
> + return 0;
> + }
> +
> + writel(ctrl & ~(CXL_HDM_DECODER0_CTRL_COMMIT |
> + CXL_HDM_DECODER0_CTRL_COMMITTED |
> + CXL_HDM_DECODER0_CTRL_COMMIT_ERROR),
> + hdm + CXL_HDM_DECODER0_CTRL_OFFSET(cxld->id));
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260825022628.3651434-1-fabio.m.de.francesco@linux.intel.com?part=2
next prev parent reply other threads:[~2026-08-25 2:42 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-25 2:26 [PATCH v2 00/13] Make SBR work for CXL Downstream Ports Fabio M. De Francesco
2026-08-25 2:26 ` [PATCH v2 01/13] cxl/pci: Make the HDM and Mem_Enable writes callable from CXL Fabio M. De Francesco
2026-08-25 2:37 ` sashiko-bot
2026-08-25 2:26 ` [PATCH v2 02/13] cxl/hdm: Add function to restore one HDM decoder Fabio M. De Francesco
2026-08-25 2:41 ` sashiko-bot [this message]
2026-08-25 2:26 ` [PATCH v2 03/13] cxl/hdm: Add function to restore CXL.mem decode Fabio M. De Francesco
2026-08-25 2:45 ` sashiko-bot
2026-08-25 2:26 ` [PATCH v2 04/13] cxl/hdm: Reprogram the HDM Decoders below a CXL Port Fabio M. De Francesco
2026-08-25 2:58 ` sashiko-bot
2026-08-25 2:26 ` [PATCH v2 05/13] cxl/core: Restore the HDM decoders below DPort Fabio M. De Francesco
2026-08-25 2:43 ` sashiko-bot
2026-08-25 2:26 ` [PATCH v2 06/13] drivers/base/memory: Add cxl_offline_memory() to offline a physical range Fabio M. De Francesco
2026-08-25 2:40 ` sashiko-bot
2026-08-25 2:26 ` [PATCH v2 07/13] cxl/core: Add region disable and enable for a DPort SBR Fabio M. De Francesco
2026-08-25 2:44 ` sashiko-bot
2026-08-25 2:26 ` [PATCH v2 08/13] cxl/core: Collect the regions routed through a DPort Fabio M. De Francesco
2026-08-25 2:41 ` sashiko-bot
2026-08-25 2:26 ` [PATCH v2 09/13] PCI/CXL: Disable and re-enable CXL regions Fabio M. De Francesco
2026-08-25 2:39 ` sashiko-bot
2026-08-26 9:04 ` Richard Cheng
2026-08-25 2:26 ` [PATCH v2 10/13] PCI/CXL: Clear ACS SV across an SBR of a CXL DPort Fabio M. De Francesco
2026-08-25 2:40 ` sashiko-bot
2026-08-26 8:47 ` Richard Cheng
2026-08-25 2:26 ` [PATCH v2 11/13] PCI/DPC: Unbind regions for DPC recovery Fabio M. De Francesco
2026-08-25 2:51 ` sashiko-bot
2026-08-26 8:54 ` Richard Cheng
2026-08-25 2:26 ` [PATCH v2 12/13] PCI/CXL: Add a sysfs entry to unmask SBR Fabio M. De Francesco
2026-08-25 2:51 ` sashiko-bot
2026-08-25 2:26 ` [PATCH v2 13/13] PCI/CXL: Refuse an SBR of a CXL DPort unless authorized Fabio M. De Francesco
2026-08-25 2:59 ` sashiko-bot
2026-08-26 9:21 ` [PATCH v2 00/13] Make SBR work for CXL Downstream Ports 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=20260825024159.CA4B81F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=fabio.m.de.francesco@linux.intel.com \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-pci@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.