Thread (44 messages) 44 messages, 5 authors, 2025-06-10

Re: PCI: Work around PCIe link training failures

From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date: 2024-07-29 10:27:57
Also in: linux-pci, linux-rdma, lkml, netdev

On Fri, 26 Jul 2024, Matthew W Carlis wrote:
On Mon, 22 Jul 2024, Maciej W. Rozycki wrote:
quoted
The main reason is it is believed that it is the downstream device
causing the issue, and obviously you can't fetch its ID if you can't
negotiate link so as to talk to it in the first place.
Have had some more time to look into this issue. So, I think the problem
with this change is that it is quite strict in its assumptions about what
it means when a device fails to train, but in an environment where hot-plug
is exercised frequently you are essentially bound have something interrupt
the link training. In the first case where we caught this problem our test
automation was doing some power cycle tortures on our endpoints. If you catch
the right timing the link will be forced down to Gen1 forever without some other
automation to recover you unless your device is the one single device in the
allowlist which had the hardware bug in the first place.

I wonder if we can come up with some kind of alternative.
The most obvious solution is to not leave the speed at Gen1 on failure in 
Target Speed quirk but to restore the original Target Speed value. The 
downside with that is if the current retraining interface (function) is 
used, it adds delay. But the retraining functions could be reworked such 
that the retraining is only triggered in case the Target Speed quirk 
fails but we don't wait for its result (which will very likely fail 
anyway).

-- 
 i.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help