On Mon, Oct 13, 2025 at 07:02:19AM +0200, Christian Zigotzky wrote: > > > > On 13 October 2025 at 06:47 am, Christian Zigotzky <[email protected]> > > wrote: > > > > > >> On 11 October 2025 at 07:36 pm, Manivannan Sadhasivam <[email protected]> > >> wrote: > >> > >> Hi Lukas, > >> > >> Thanks for looping me in. The referenced commit forcefully enables ASPM on > >> all > >> DT platforms as we decided to bite the bullet finally. > >> > >> Looks like the device (0000:01:00.0) doesn't play nice with ASPM even > >> though it > >> advertises ASPM capability. > >> > >> Christian, could you please test the below change and see if it fixes the > >> issue? > >> > >> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > >> index 214ed060ca1b..e006b0560b39 100644 > >> --- a/drivers/pci/quirks.c > >> +++ b/drivers/pci/quirks.c > >> @@ -2525,6 +2525,15 @@ static void quirk_disable_aspm_l0s_l1(struct > >> pci_dev *dev) > >> */ > >> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASMEDIA, 0x1080, > >> quirk_disable_aspm_l0s_l1); > >> > >> + > >> +static void quirk_disable_aspm_all(struct pci_dev *dev) > >> +{ > >> + pci_info(dev, "Disabling ASPM\n"); > >> + pci_disable_link_state(dev, PCIE_LINK_STATE_ALL); > >> +} > >> + > >> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x6738, > >> quirk_disable_aspm_all); > >> + > >> /* > >> * Some Pericom PCIe-to-PCI bridges in reverse mode need the PCIe Retrain > >> * Link bit cleared after starting the link retrain process to allow this > >> > >> > >> Going forward, we should be quirking the devices if they behave > >> erratically. > >> > >> - Mani > >> > >> -- > >> மணிவண்ணன் சதாசிவம் > > > > Hello Mani, > > > >> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x6738, quirk_disable_aspm_all); > > > > Is this only for my AMD Radeon HD6870? > > > > My AMD Radeon HD5870 is also affected. > > > > And I tested it with my AMD Radeon HD5870. > > > > What would the line be for all AMD graphics cards? > > > > Thanks, > > Christian > > I see. 0x6738 is for the AMD Radeon HD 6800 series. > > It could be, that your patch works because I tested it with an AMD Radeon > HD5870 instead of an AMD Radeon HD6870. Sorry > > This could be the correct line for the HD5870: > > >> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x6898, quirk_disable_aspm_all); > > There are some more id numbers for the HD5870. > > Correct: > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > index 214ed060ca1b..e006b0560b39 100644 > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -2525,6 +2525,15 @@ static void quirk_disable_aspm_l0s_l1(struct pci_dev > *dev) > */ > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASMEDIA, 0x1080, > quirk_disable_aspm_l0s_l1); > > + > +static void quirk_disable_aspm_all(struct pci_dev *dev) > +{ > + pci_info(dev, "Disabling ASPM\n"); > + pci_disable_link_state(dev, PCIE_LINK_STATE_ALL); > +} > + > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x6738, quirk_disable_aspm_all);
As you've figured out, we need to add the quirks for individual devices. Btw, I just used PCIE_LINK_STATE_ALL to make sure the patch works. But for properly fixing the issue, we need to try disabling L0s, L1 separately and check which one (or both) is causing issue. - Mani -- மணிவண்ணன் சதாசிவம்
