From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: "Maciej W. Rozycki" <macro@orcam.me.uk>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
linux-pci@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/2] PCI: Correct error reporting with PCIe failed link retraining
Date: Mon, 12 Feb 2024 14:01:25 +0200 (EET) [thread overview]
Message-ID: <f4eafdbc-b295-a982-fe8e-dbd11b98d56f@linux.intel.com> (raw)
In-Reply-To: <alpine.DEB.2.21.2402100045590.2376@angie.orcam.me.uk>
[-- Attachment #1: Type: text/plain, Size: 3242 bytes --]
On Sat, 10 Feb 2024, Maciej W. Rozycki wrote:
> Only return successful completion status from `pcie_failed_link_retrain'
> if retraining has actually been done, preventing excessive delays from
> being triggered at call sites in a hope that communication will finally
> be established with the downstream device where in fact nothing has been
> done about the link in question that would justify such a hope.
>
> Fixes: a89c82249c37 ("PCI: Work around PCIe link training failures")
> Reported-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
> Link: https://lore.kernel.org/r/aa2d1c4e-9961-d54a-00c7-ddf8e858a9b0@linux.intel.com/
> Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
> Cc: stable@vger.kernel.org # v6.5+
Thanks.
The original thread might be useful for context if somebody has to look at
this change later on from the history, so:
Link: https://lore.kernel.org/linux-pci/20240129112710.2852-2-ilpo.jarvinen@linux.intel.com/T/#u
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
--
i.
> ---
> drivers/pci/quirks.c | 18 +++++++++++-------
> 1 file changed, 11 insertions(+), 7 deletions(-)
>
> linux-pcie-failed-link-retrain-status-fix.diff
> Index: linux-macro/drivers/pci/quirks.c
> ===================================================================
> --- linux-macro.orig/drivers/pci/quirks.c
> +++ linux-macro/drivers/pci/quirks.c
> @@ -74,7 +74,8 @@
> * firmware may have already arranged and lift it with ports that already
> * report their data link being up.
> *
> - * Return TRUE if the link has been successfully retrained, otherwise FALSE.
> + * Return TRUE if the link has been successfully retrained, otherwise FALSE,
> + * also when retraining was not needed in the first place.
> */
> bool pcie_failed_link_retrain(struct pci_dev *dev)
> {
> @@ -83,10 +84,11 @@ bool pcie_failed_link_retrain(struct pci
> {}
> };
> u16 lnksta, lnkctl2;
> + bool ret = false;
>
> if (!pci_is_pcie(dev) || !pcie_downstream_port(dev) ||
> !pcie_cap_has_lnkctl2(dev) || !dev->link_active_reporting)
> - return false;
> + return ret;
>
> pcie_capability_read_word(dev, PCI_EXP_LNKCTL2, &lnkctl2);
> pcie_capability_read_word(dev, PCI_EXP_LNKSTA, &lnksta);
> @@ -98,9 +100,10 @@ bool pcie_failed_link_retrain(struct pci
> lnkctl2 |= PCI_EXP_LNKCTL2_TLS_2_5GT;
> pcie_capability_write_word(dev, PCI_EXP_LNKCTL2, lnkctl2);
>
> - if (pcie_retrain_link(dev, false)) {
> + ret = pcie_retrain_link(dev, false) == 0;
> + if (!ret) {
> pci_info(dev, "retraining failed\n");
> - return false;
> + return ret;
> }
>
> pcie_capability_read_word(dev, PCI_EXP_LNKSTA, &lnksta);
> @@ -117,13 +120,14 @@ bool pcie_failed_link_retrain(struct pci
> lnkctl2 |= lnkcap & PCI_EXP_LNKCAP_SLS;
> pcie_capability_write_word(dev, PCI_EXP_LNKCTL2, lnkctl2);
>
> - if (pcie_retrain_link(dev, false)) {
> + ret = pcie_retrain_link(dev, false) == 0;
> + if (!ret) {
> pci_info(dev, "retraining failed\n");
> - return false;
> + return ret;
> }
> }
>
> - return true;
> + return ret;
> }
>
> static ktime_t fixup_debug_start(struct pci_dev *dev,
>
next prev parent reply other threads:[~2024-02-12 12:01 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-10 1:43 [PATCH 0/2] PCI: Rework error reporting with PCIe failed link retraining Maciej W. Rozycki
2024-02-10 1:43 ` [PATCH 1/2] PCI: Correct " Maciej W. Rozycki
2024-02-12 12:01 ` Ilpo Järvinen [this message]
2024-08-09 13:30 ` Maciej W. Rozycki
2024-03-14 7:19 ` Pengfei Xu
2024-03-14 11:27 ` Ilpo Järvinen
2024-03-15 3:10 ` Pengfei Xu
2024-04-24 22:13 ` Bjorn Helgaas
2024-08-09 13:31 ` Maciej W. Rozycki
2024-02-10 1:43 ` [PATCH 2/2] PCI: Use an error code " Maciej W. Rozycki
2024-02-12 12:11 ` Ilpo Järvinen
2024-02-26 12:55 ` [PATCH 0/2] PCI: Rework error reporting " Maciej W. Rozycki
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=f4eafdbc-b295-a982-fe8e-dbd11b98d56f@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=bhelgaas@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=macro@orcam.me.uk \
--cc=mika.westerberg@linux.intel.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.