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 v2 6/8] PCI: aardvark: Add 100 ms delay after link training
Date: Wed, 06 May 2026 21:48:53 +0000 [thread overview]
Message-ID: <20260506214853.D1119C2BCB0@smtp.kernel.org> (raw)
In-Reply-To: <20260506152346.166056-7-18255117159@163.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Bypass of the mandatory 100ms post-reset delay for Gen 1 / Gen 2 endpoints.
- [Medium] The commit message incorrectly claims that `link_gen` holds the negotiated link speed.
--
commit 9114690f6dce7f4f9d92fc0cec16e81c387aa8fb
Author: Hans Zhang <18255117159@163.com>
PCI: aardvark: Add 100 ms delay after link training
This commit adds a 100 ms delay after link training completes for speeds
greater than 5.0 GT/s. It utilizes the pcie_wait_after_link_train() helper
together with the driver's link_gen field to insert the delay once the link
is up.
> The driver already maintains a 'link_gen' field that holds the negotiated
> link speed. Use it together with pcie_wait_after_link_train() to insert
> the required delay immediately after confirming that the link is up.
Is this description of link_gen accurate?
Looking at the driver, pcie->link_gen appears to be populated at probe time
via of_pci_get_max_link_speed() and statically stores the port's maximum
configured link speed capability, rather than being dynamically updated with
the actual negotiated speed.
While passing the maximum capability to pcie_wait_after_link_train() is
correct per the PCIe specification, could the commit message be updated to
reflect the actual contents of the link_gen field?
> diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
> index e34bea1ff0ac6..526351c21c49e 100644
> --- a/drivers/pci/controller/pci-aardvark.c
> +++ b/drivers/pci/controller/pci-aardvark.c
> @@ -350,8 +350,10 @@ static int advk_pcie_wait_for_link(struct advk_pcie *pcie)
>
> /* check if the link is up or not */
> for (retries = 0; retries < LINK_WAIT_MAX_RETRIES; retries++) {
> - if (advk_pcie_link_up(pcie))
> + if (advk_pcie_link_up(pcie)) {
> + pcie_wait_after_link_train(pcie->link_gen);
> return 0;
> + }
>
> usleep_range(LINK_WAIT_USLEEP_MIN, LINK_WAIT_USLEEP_MAX);
> }
Does this sequence bypass the mandatory 100ms post-reset delay for Gen 1 and
Gen 2 endpoints?
The PCIe specification requires a minimum 100ms delay after a conventional
reset before sending configuration requests. This function is called by
advk_pcie_setup_hw() to fulfill that requirement, but it polls and returns
immediately upon link-up.
If a link trains quickly (e.g., in 10-20ms), the function exits early. Since
pcie_wait_after_link_train() only executes a delay if link_gen > 2:
drivers/pci/pci.h:pcie_wait_after_link_train() {
if (max_link_speed > 2)
msleep(PCIE_RESET_CONFIG_WAIT_MS);
}
Are Gen 1 and Gen 2 endpoints left exposed to premature configuration requests
since the remainder of the mandatory 100ms post-reset delay is skipped?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260506152346.166056-1-18255117159@163.com?part=6
next prev parent reply other threads:[~2026-05-06 21:48 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-06 15:23 [PATCH v2 0/8] PCI: Add common helper for 100 ms delay after link training Hans Zhang
2026-05-06 15:23 ` [PATCH v2 1/8] PCI: Add pcie_wait_after_link_train() helper Hans Zhang
2026-05-06 15:34 ` Biju Das
2026-05-06 16:16 ` Hans Zhang
2026-05-06 15:55 ` Manivannan Sadhasivam
2026-05-06 16:13 ` Hans Zhang
2026-05-06 20:18 ` sashiko-bot
2026-05-06 15:23 ` [PATCH v2 2/8] PCI: cadence: LGA: Add max_link_speed field and 100 ms delay after link training Hans Zhang
2026-05-06 15:31 ` Biju Das
2026-05-06 16:21 ` Hans Zhang
2026-05-06 16:27 ` Biju Das
2026-05-06 16:31 ` Hans Zhang
2026-05-06 16:03 ` Manivannan Sadhasivam
2026-05-06 16:14 ` Hans Zhang
2026-05-06 20:39 ` sashiko-bot
2026-05-06 15:23 ` [PATCH v2 3/8] PCI: cadence: HPA: Add " Hans Zhang
2026-05-06 21:05 ` sashiko-bot
2026-05-06 15:23 ` [PATCH v2 4/8] PCI: j721e: Set max_link_speed to enable 100 ms delay after link up Hans Zhang
2026-05-06 16:04 ` Manivannan Sadhasivam
2026-05-06 16:11 ` Hans Zhang
2026-05-06 16:51 ` Manivannan Sadhasivam
2026-05-06 21:12 ` sashiko-bot
2026-05-06 15:23 ` [PATCH v2 5/8] PCI: dwc: Use common pcie_wait_after_link_train() helper Hans Zhang
2026-05-06 15:23 ` [PATCH v2 6/8] PCI: aardvark: Add 100 ms delay after link training Hans Zhang
2026-05-06 21:48 ` sashiko-bot [this message]
2026-05-12 21:25 ` Pali Rohár
2026-05-13 7:00 ` Hans Zhang
2026-05-13 7:20 ` Pali Rohár
2026-05-13 7:34 ` Hans Zhang
2026-05-13 18:54 ` Pali Rohár
2026-05-15 15:04 ` Hans Zhang
2026-05-06 15:23 ` [PATCH v2 7/8] PCI: mediatek-gen3: " Hans Zhang
2026-05-06 22:14 ` sashiko-bot
2026-05-06 15:23 ` [PATCH v2 8/8] PCI: rzg3s-host: " Hans Zhang
2026-05-06 16:52 ` Claudiu Beznea
2026-05-09 16:25 ` Hans Zhang
2026-05-06 22:28 ` sashiko-bot
2026-05-14 12:19 ` kernel test robot
2026-05-14 12:50 ` kernel test robot
2026-05-14 14:22 ` kernel test robot
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=20260506214853.D1119C2BCB0@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 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.