Subject: Re: [PATCH] PCI/ASPM: Enable only L0s and L1 for devicetree platforms

From: Bjorn Helgaas <[email-masked]>
Date: Tue, 28 Oct 2025 18:33:33 -0500

On Mon, Oct 27, 2025 at 06:12:24PM +0100, Christian Zigotzky wrote:
> Hi All,
> 
> I activated CONFIG_PCIEASPM and CONFIG_PCIEASPM_DEFAULT again for the RC3 of
> kernel 6.18. Unfortunately my AMD Radeon HD6870 doesn't work with the latest
> patches.
> 
> But that doesn't matter because we disable the above kernel options by
> default. We don't need power management for PCI Express because of boot
> issues and performance issues.

It matters to me!  The kernel should work correctly with or without
CONFIG_PCIEASPM and any of the CONFIG_PCIEASPM_* settings.  We can't
expect users to know a magic combination of config settings to make
things work.

I assume AMD Radeon HD6870 is used on a variety of platforms, and I
don't see other reports of ASPM problems with it, so I suspect the
problem is something else.

  - v6.17 CONFIG_PCIEASPM=y, works OK

  - v6.18-rc3 CONFIG_PCIEASPM unset, works OK, as expected since we
    don't do anything with ASPM

  - v6.18-rc3 CONFIG_PCIEASPM=y, boot fails (this report, no logs)

I looked at Hypexed's logs from
https://github.com/chzigotzky/kernels/issues/17#issuecomment-3400419966,
all of which worked fine:

  - 6.18.0-a8-dmesg.log, looks like CONFIG_PCIEASPM unset, so we would
    expect this to be fine.

  - 6.18.0-a7-dmesg.log, CONFIG_PCIEASPM=y, ASPM fully enabled,
    reported to work fine.

    Hardware name: pasemi,nemo PA6T 0x900102 A-EON Amigaone X1000
    Found PA-PXP PCI host bridge.
    pci 0000:00:10.0: [1959:a002] type 01 class 0x060400 PCIe Root Port

    All the Root Ports are [1959:a002], and ASPM for 01:00.0 and
    05:12.0 (apparently the only endpoints that advertise ASPM) seemed
    to work fine.

  - 6.18.0-a7-2-dmesg.log, looks like CONFIG_PCIEASPM unset, so we would
    expect this to be fine.

So the only data point I see is that [1959:a002] seems to work.

Christian, can you collect the output of "sudo lspci -vv" from your
machine where CONFIG_PCIEASPM=y doesn't work?  Doesn't matter what
kernel you're running when you collect it.

I assume your machine is this:

  Hardware name: varisys,CYRUS5040 e5500 0x80240012 CoreNet Generic

  Found FSL PCI host bridge at 0x0000000ffe200000. Firmware bus number: 0->1
  Found FSL PCI host bridge at 0x0000000ffe201000. Firmware bus number: 0->8
  fsl-pci ffe200000.pcie: PCI host bridge to bus 0000:00
  pci 0000:00:00.0: [1957:0451] type 01 class 0x060400 PCIe Root Port
  pci 0000:01:00.0: [1002:6738] type 00 class 0x030000 PCIe Legacy Endpoint
  pci 0000:01:00.1: [1002:aa88] type 00 class 0x040300 PCIe Legacy Endpoint

  [1957:0451] Freescale (some kind of Root Port)
  [1002:6738] AMD Barts XT [Radeon HD 6870]
  [1002:aa88] AMD Barts HDMI Audio [Radeon HD 6790/6850/6870 / 7720 OEM]

I don't see any real info about that Freescale Root Port.

If you have a chance, could you try the patch below on top of
v6.18-rc3 with CONFIG_PCIEASPM=y?

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 214ed060ca1b..2b6d4e0958aa 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -2524,6 +2524,7 @@ static void quirk_disable_aspm_l0s_l1(struct pci_dev *dev)
  * disable both L0s and L1 for now to be safe.
  */
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASMEDIA, 0x1080, quirk_disable_aspm_l0s_l1);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_FREESCALE, 0x0451, quirk_disable_aspm_l0s_l1);
 
 /*
  * Some Pericom PCIe-to-PCI bridges in reverse mode need the PCIe Retrain