From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
To: Lukas Wunner <lukas@wunner.de>
Cc: Bjorn Helgaas <helgaas@kernel.org>, <linux-pci@vger.kernel.org>,
"Niklas Schnelle" <niks@kernel.org>,
Ilpo Jarvinen <ilpo.jarvinen@linux.intel.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
"Maciej W. Rozycki" <macro@orcam.me.uk>,
Mario Limonciello <mario.limonciello@amd.com>
Subject: Re: [PATCH for-linus v2 1/3] PCI: Assume 2.5 GT/s if Max Link Speed is undefined
Date: Mon, 16 Dec 2024 10:51:11 +0000 [thread overview]
Message-ID: <20241216105111.000053b8@huawei.com> (raw)
In-Reply-To: <1a07f35cdfda64ca1d5154cc85ca1dd5f01137d3.1734257330.git.lukas@wunner.de>
On Sun, 15 Dec 2024 11:20:51 +0100
Lukas Wunner <lukas@wunner.de> wrote:
> Broken PCIe devices may not set any of the bits in the Link Capabilities
> Register's "Max Link Speed" field. Assume 2.5 GT/s in such a case,
> which is the lowest possible PCIe speed. It must be supported by every
> device per PCIe r6.2 sec 8.2.1.
>
> Emit a message informing about the malformed field. Use KERN_INFO
> severity to minimize annoyance. This will help silicon validation
> engineers take note of the issue so that regular users hopefully never
> see it.
>
> There is currently no known affected product, but a subsequent commit
> will honor the Max Link Speed field when determining supported speeds
> and depends on the field being well-formed. (It uses the Max Link Speed
> as highest bit in a GENMASK(highest, lowest) macro and if the field is
> zero, that would result in GENMASK(0, lowest).)
>
> Signed-off-by: Lukas Wunner <lukas@wunner.de>
Seems like this is the best we can do for this (hopefully)
theoretical hardware bug.
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
> drivers/pci/pci.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 35dc9f249b86..ab0ef7b6c798 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -6233,6 +6233,13 @@ u8 pcie_get_supported_speeds(struct pci_dev *dev)
> u32 lnkcap2, lnkcap;
> u8 speeds;
>
> + /* A device must support 2.5 GT/s (PCIe r6.2 sec 8.2.1) */
> + pcie_capability_read_dword(dev, PCI_EXP_LNKCAP, &lnkcap);
> + if (!(lnkcap & PCI_EXP_LNKCAP_SLS)) {
> + pci_info(dev, "Undefined Max Link Speed; assume 2.5 GT/s\n");
> + return PCI_EXP_LNKCAP2_SLS_2_5GB;
> + }
> +
> /*
> * Speeds retain the reserved 0 at LSB before PCIe Supported Link
> * Speeds Vector to allow using SLS Vector bit defines directly.
> @@ -6244,8 +6251,6 @@ u8 pcie_get_supported_speeds(struct pci_dev *dev)
> if (speeds)
> return speeds;
>
> - pcie_capability_read_dword(dev, PCI_EXP_LNKCAP, &lnkcap);
> -
> /* Synthesize from the Max Link Speed field */
> if ((lnkcap & PCI_EXP_LNKCAP_SLS) == PCI_EXP_LNKCAP_SLS_5_0GB)
> speeds = PCI_EXP_LNKCAP2_SLS_5_0GB | PCI_EXP_LNKCAP2_SLS_2_5GB;
next prev parent reply other threads:[~2024-12-16 10:51 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-15 10:20 [PATCH for-linus v2 0/3] Fix bwctrl boot hang Lukas Wunner
2024-12-15 10:20 ` [PATCH for-linus v2 1/3] PCI: Assume 2.5 GT/s if Max Link Speed is undefined Lukas Wunner
2024-12-15 21:17 ` Niklas Schnelle
2024-12-16 6:45 ` Lukas Wunner
2024-12-16 10:51 ` Jonathan Cameron [this message]
2024-12-16 14:09 ` Ilpo Järvinen
2024-12-16 14:17 ` Mario Limonciello
2024-12-15 10:20 ` [PATCH for-linus v2 2/3] PCI: Honor Max Link Speed when determining supported speeds Lukas Wunner
2024-12-15 20:56 ` Niklas Schnelle
2024-12-16 10:53 ` Jonathan Cameron
2024-12-16 14:12 ` Ilpo Järvinen
2024-12-15 10:20 ` [PATCH for-linus v2 3/3] PCI/bwctrl: Enable only if more than one speed is supported Lukas Wunner
2024-12-15 21:03 ` Niklas Schnelle
2024-12-16 11:32 ` Jonathan Cameron
2024-12-16 14:20 ` Mario Limonciello
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=20241216105111.000053b8@huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=helgaas@kernel.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=linux-pci@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=macro@orcam.me.uk \
--cc=mario.limonciello@amd.com \
--cc=mika.westerberg@linux.intel.com \
--cc=niks@kernel.org \
/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.