From: Tomasz Bojanowski <tomasz@bojanowski.me>
To: Bjorn Helgaas <bhelgaas@google.com>, linux-pci@vger.kernel.org
Cc: "Maciej W. Rozycki" <macro@orcam.me.uk>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Andreas Wild" <andiwild@gmail.com>,
"Thorsten Leemhuis" <linux@leemhuis.info>,
linux-kernel@vger.kernel.org
Subject: PCI: failed link retraining quirk costs 1 s per empty AMD Promontory 21 port
Date: Wed, 23 Sep 2026 21:13:57 +0200 [thread overview]
Message-ID: <20260923191357.7410-1-tomasz@bojanowski.me> (raw)
Hi,
On an AMD AM5 desktop the pcie_failed_link_retrain() quirk fires on
two empty downstream ports of the chipset switch and adds 2 s to every
boot. This seems to be a different case from the one addressed by
"PCI: Skip Target Speed quirk on clamped ports with no link" [1]: here
the Target Link Speed is not clamped, so that patch does not return
early and the LBMS branch is taken instead.
Hardware: MSI MAG B850M MORTAR WIFI (MS-7E61), BIOS 1.A68 09/07/2026,
AMD Promontory 21 switch, downstream ports [1022:43f5]. Nothing is
connected behind 06:00.0 or 06:08.0.
Seen on Fedora kernels 7.2.5, 7.2.6 and 7.2.7 (33 boots, every time).
The same two messages were already present on openSUSE 7.1.x kernels
on this machine in July, so this is not new in 7.2.
[ 0.248171] pci 0000:06:00.0: broken device, retraining non-functional downstream link at 2.5GT/s
[ 1.248035] pci 0000:06:00.0: retraining failed
[ 1.248972] pci 0000:06:08.0: broken device, retraining non-functional downstream link at 2.5GT/s
[ 2.248036] pci 0000:06:08.0: retraining failed
Port state after boot (06:08.0 is the same except Width x2 in LnkCap):
LnkCap: Port #0, Speed 16GT/s, Width x4, ASPM L1, Exit Latency L1 <32us
LnkSta: Speed 2.5GT/s, Width x1
TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
LnkCtl2: Target Link Speed: 16GT/s
Since the message is printed, DLLLA was clear and pcie_lbms_seen() was
true when the quirk ran from pci_device_add(), before bwctrl is bound,
so the LBMS bit itself must have been set on a port with nothing behind
it. The kerneldoc above the quirk expects both bits to be clear on an
unconnected port, which this chipset does not seem to honour.
BWMgmt- after boot is expected, as bwctrl clears LBMS when it binds.
Each port then waits PCIE_LINK_RETRAIN_TIMEOUT_MS before the error path
restores the original 16GT/s target. With this chipset used on many
AM5 boards, other systems may well lose 1 s per empty chipset port too.
Let me know if any other information would be useful.
[1] https://lore.kernel.org/all/20260801201244.4421-1-andiwild@gmail.com/
Thanks,
Tomasz Bojanowski
next reply other threads:[~2026-09-23 19:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-23 19:13 Tomasz Bojanowski [this message]
2026-10-04 15:29 ` Thorsten Leemhuis
2026-10-05 22:21 ` Tomasz Bojanowski
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=20260923191357.7410-1-tomasz@bojanowski.me \
--to=tomasz@bojanowski.me \
--cc=andiwild@gmail.com \
--cc=bhelgaas@google.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux@leemhuis.info \
--cc=macro@orcam.me.uk \
/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
all inboxes | Powered by JetHome®