Re: [PATCH v3] PCI: Skip Target Speed quirk on clamped ports with no link
From: blaat windows
Date: Sun Sep 20 2026 - 04:15:19 EST
Another reproducible case of the active-link failure described in this thread.
Hardware:
Intel 4th-gen/9-series platform
Intel 82571EB quad-port NIC
Microsemi/PMC/IDT PES12N3A PCIe switch
Root port 00:1c.4, LnkCap 5GT/s x4
Working negotiated link: 2.5GT/s x4
Kernel results:
7.2-rc1 fail
7.1-rc7 succes
On failing kernels, the PES12N3A hierarchy does not enumerate and all four downstream 82571EB ports disappear.
I traced this to pcie_failed_link_retrain() and specifically the new generic clamp-removal code introduced by 72780f7964684939d7d2f69c348876213b184484 ("PCI: Always lift 2.5GT/s restriction in PCIe failed link retraining").
I tested 7.3.0-rc3+ with only this block commented out:
pcie_capability_read_word(dev, PCI_EXP_LNKCTL2, &lnkctl2);
if ((lnkctl2 & PCI_EXP_LNKCTL2_TLS) == PCI_EXP_LNKCTL2_TLS_2_5GT) {
pci_info(dev, "removing 2.5GT/s downstream link speed restriction\n");
ret = pcie_set_target_speed(dev, speed_cap, false);
if (ret)
goto err;
}
With that block disabled, 7.3.0-rc3+ boots normally, having all four NIC ports enumerate:
07:00.0 82571EB
07:00.1 82571EB
08:00.0 82571EB
08:00.1 82571EB
The important result is that the initial 2.5GT/s recovery is fine. Leaving the link at 2.5GT/s works. It is the subsequent:
pcie_set_target_speed(dev, speed_cap, false);
which breaks this PES12N3A/82571EB link.
So this appears to be the same active-link failure mode, but with a PES12N3A switch rather than a direct 82571EB connection.
This was tested against vanilla 7.3.0-rc3+ with only the above local change.
I can provide full dmesg/lspci output and test a proposed fix if useful.