Re: [PATCH v2] cxl/pci: Honor -EPROBE_DEFER from component register setup
Dave Jiang <[email protected]>
| Newsgroups | org.kernel.vger.linux-cxl |
|---|---|
| Message-ID | <[email protected]> |
On 7/6/26 3:43 PM, Dave Jiang wrote:
> cxl_pci_setup_regs() for CXL_REGLOC_RBI_COMPONENT can return
> -EPROBE_DEFER on a Restricted CXL Host (RCD) when the upstream port
> has not yet been enumerated and the Component Registers must be
> extracted from the RCRB. cxl_pci_probe() treats every non-zero return
> from that call as the benign "component registers not found" case,
> logs a warning, and continues. The rc is then immediately overwritten
> by the subsequent cxl_pci_type3_init_mailbox() call, so the deferral
> is silently swallowed.
>
> Return -EPROBE_DEFER instead of continuing so the probe is retried
> once the upstream port is available.
>
> Fixes: 733b57f262b0 ("cxl/pci: Early setup RCH dport component registers from RCRB")
> Reported-by: [email protected]
> Closes: https://lore.kernel.org/linux-cxl/ajzhsubot_PSYtHQ@MWDK4CY14F/T/#m063bbf76b1c9c293ade52ab311018ae6bba11a44
> Assisted-by: Claude:claude-opus-4-8
> Signed-off-by: Dave Jiang <[email protected]>
Applied to cxl/next
430c502c80e5
> ---
> drivers/cxl/pci.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
> index 267c679b0b3c..6a132a6c4c5b 100644
> --- a/drivers/cxl/pci.c
> +++ b/drivers/cxl/pci.c
> @@ -829,10 +829,13 @@ static int cxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> */
> rc = cxl_pci_setup_regs(pdev, CXL_REGLOC_RBI_COMPONENT,
> &cxlds->reg_map);
> - if (rc)
> + if (rc) {
> + if (rc == -EPROBE_DEFER)
> + return rc;
> dev_warn(&pdev->dev, "No component registers (%d)\n", rc);
> - else if (!cxlds->reg_map.component_map.ras.valid)
> + } else if (!cxlds->reg_map.component_map.ras.valid) {
> dev_dbg(&pdev->dev, "RAS registers not found\n");
> + }
>
> rc = cxl_pci_type3_init_mailbox(cxlds);
> if (rc)
>
> base-commit: 8cdeaa50eae8dad34885515f62559ee83e7e8dda