On Thu, 29 Oct 2020 14:30:22 -0500 Bjorn Helgaas <helgaas@xxxxxxxxxx> wrote: > On Thu, Oct 29, 2020 at 12:12:21PM +0100, Toke Høiland-Jørgensen wrote: > > Pali Rohár <pali@xxxxxxxxxx> writes: > > > > I have been testing mainline kernel on Turris Omnia with two PCIe > > > default cards (WLE200 and WLE900) and it worked fine. But I do not know > > > if I had ASPM enabled or not. > > > > > > So it is working fine for you when CONFIG_PCIEASPM is disabled and whole > > > issue is only when CONFIG_PCIEASPM is enabled? > > > > Yup, exactly. And I'm also currently testing with the default WLE200/900 > > cards... I just tried sticking an MT76-based WiFi card into the third > > PCI slot, and that doesn't come up either when I enable PCIEASPM. > > Huh. So IIUC, the following cases all try to retrain the link and it > fails to come up again: > > - aardvark + WLE900VX (see commit 43fc679ced18) > - mvebu + WLE200 > - mvebu + WLE900 > - mvebu + MT76 Bjorn, IIRC Pali's patches fix the WLE900VX card for Aardvark (both in kernel and in U-Boot). IMO mvebu has similar issues. Both these drivers handle the PCIe reset signal incorrectly (or at least Aardvark did before Pali's work). mvebu is used on Turris Omnia, and our HW guys first solved the WLE900VX not working issue by using different capacitors for the SerDeses (this was 5 years ago). But after Pali's work on Aardvark I think this could also be solved for mvebu driver in software. BTW the WLE900VX card has problems on many systems, it won't work for example on Thinkpad X230. There is a bug on kernel bugzilla reported for this. My opinion is that many drivers do not respect the PCIe specification for reset and link training totally correctly (Pali was talking about this when he was looking at Aardvark) and that WLE900VX has a bug that in combination with those drivers causes the fail. If you look at the drivers, they are incompatible in how they handle the reset signal and link training. I am curious what Pali will tell us, he said that he will look into the mvebu driver. Marek