Linux PCI subsystem development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Hans Zhang" <18255117159@163.com>
Cc: wsa+renesas@sang-engineering.com, linux-pci@vger.kernel.org
Subject: Re: [PATCH v3 3/7] PCI: cadence: HPA: Add post-link delay
Date: Tue, 12 May 2026 00:44:10 +0000	[thread overview]
Message-ID: <20260512004410.8ACB1C2BCB0@smtp.kernel.org> (raw)
In-Reply-To: <20260511055923.37117-4-18255117159@163.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Missing device tree property silently disables the mandatory 100 ms PCIe link training delay.
- [High] The function `cdns_pcie_hpa_host_link_setup()` aborts the entire PCIe root complex probe if no downstream endpoint is connected.
--

commit 53fefd8ead01e523abe2d99bb9e1db2677c7f7ec
Author: Hans Zhang <18255117159@163.com>

PCI: cadence: HPA: Add post-link delay

This commit updates the Cadence HPA link setup function to include a 
100 ms delay after link training completes for speeds greater than 
5.0 GT/s. It also reads the max-link-speed device tree property to 
initialize the max link speed if it hasn't been set by a glue driver.

> diff --git a/drivers/pci/controller/cadence/pcie-cadence-host-hpa.c b/drivers/pci/controller/cadence/pcie-cadence-host-hpa.c
> index 0f540bed58e88..8ef58ed01daaa 100644
> --- a/drivers/pci/controller/cadence/pcie-cadence-host-hpa.c
> +++ b/drivers/pci/controller/cadence/pcie-cadence-host-hpa.c
[ ... ]
> @@ -304,6 +306,8 @@ int cdns_pcie_hpa_host_link_setup(struct cdns_pcie_rc *rc)
>  	ret = cdns_pcie_host_wait_for_link(pcie, cdns_pcie_hpa_link_up);
>  	if (ret)
>  		dev_dbg(dev, "PCIe link never came up\n");
> +	else
> +		pci_host_common_link_train_delay(pcie->max_link_speed);
>  
>  	return ret;

This isn't a regression introduced by this patch, but since we are modifying 
this function, does returning ret here abort the entire PCIe root complex 
probe if no downstream endpoint is connected?

When no endpoint is connected, cdns_pcie_host_wait_for_link() returns 
-ETIMEDOUT. Returning that error back to the caller causes 
cdns_pcie_hpa_host_setup() to fail initialization. 

Could this break hotplug functionality or standard empty-slot handling 
when the slot is unoccupied at boot?

>  }
> @@ -313,6 +317,7 @@ int cdns_pcie_hpa_host_setup(struct cdns_pcie_rc *rc)
[ ... ]
> @@ -343,6 +348,9 @@ int cdns_pcie_hpa_host_setup(struct cdns_pcie_rc *rc)
>  		rc->cfg_res = res;
>  	}
>  
> +	if (pcie->max_link_speed < 1)
> +		pcie->max_link_speed = of_pci_get_max_link_speed(np);

If the max-link-speed property is missing from the device tree, 
of_pci_get_max_link_speed() will return -EINVAL.

Will assigning this negative error code directly to pcie->max_link_speed 
cause the post-link delay check to fail?

When pci_host_common_link_train_delay() is called:

static inline void pci_host_common_link_train_delay(int max_link_speed)
{
        if (max_link_speed > 2)
                msleep(PCIE_RESET_CONFIG_WAIT_MS);
}

Since -EINVAL is a negative value, the condition max_link_speed > 2 
evaluates to false. This appears to silently bypass the required 100 ms 
delay for Gen3+ speeds entirely.

Should the return value of of_pci_get_max_link_speed() be validated 
before assignment?

> +
>  	/* Put EROM Bar aperture to 0 */
>  	cdns_pcie_hpa_writel(pcie, REG_BANK_IP_CFG_CTRL_REG, CDNS_PCIE_EROM, 0x0);

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260511055923.37117-1-18255117159@163.com?part=3

  reply	other threads:[~2026-05-12  0:44 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-11  5:59 [PATCH v3 0/7] PCI: Add common helper for 100 ms delay after link training Hans Zhang
2026-05-11  5:59 ` [PATCH v3 1/7] PCI: Add pci_host_common_link_train_delay() helper Hans Zhang
2026-05-12  0:07   ` sashiko-bot
2026-05-12  0:45     ` Hans Zhang
2026-05-12  7:05   ` Claudiu Beznea
2026-05-12 10:06     ` Hans Zhang
2026-05-11  5:59 ` [PATCH v3 2/7] PCI: cadence: Add post-link delay for LGA and j721e glue driver Hans Zhang
2026-05-12  0:24   ` sashiko-bot
2026-05-12  0:44     ` Hans Zhang
2026-05-11  5:59 ` [PATCH v3 3/7] PCI: cadence: HPA: Add post-link delay Hans Zhang
2026-05-12  0:44   ` sashiko-bot [this message]
2026-05-11  5:59 ` [PATCH v3 4/7] PCI: dwc: Use common pci_host_common_link_train_delay() helper Hans Zhang
2026-05-11  7:02   ` Krzysztof Wilczyński
2026-05-12  0:43     ` Hans Zhang
2026-05-12  7:14       ` Krzysztof Wilczyński
2026-05-12 10:06         ` Hans Zhang
2026-05-12  6:45     ` Manivannan Sadhasivam
2026-05-12  7:14       ` Krzysztof Wilczyński
2026-05-12  1:00   ` sashiko-bot
2026-05-11  5:59 ` [PATCH v3 5/7] PCI: aardvark: Add 100 ms delay after link training Hans Zhang
2026-05-12  1:31   ` sashiko-bot
2026-05-11  5:59 ` [PATCH v3 6/7] PCI: mediatek-gen3: Add 100 ms delay after link up Hans Zhang
2026-05-12  1:59   ` sashiko-bot
2026-05-11  5:59 ` [PATCH v3 7/7] PCI: rzg3s-host: Use common pci_host_common_link_train_delay() helper Hans Zhang
2026-05-12  2:15   ` sashiko-bot

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=20260512004410.8ACB1C2BCB0@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=18255117159@163.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=sashiko@lists.linux.dev \
    --cc=wsa+renesas@sang-engineering.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