On Fri, 26 Jul 2024, Matthew W Carlis wrote: > On Mon, 22 Jul 2024, Maciej W. Rozycki wrote: > > > 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.