[PATCH] PCI/ASPM: Enable only L0s and L1 for devicetree platforms
Bjorn Helgaas
helgaas at kernel.org
Wed Oct 29 10:33:33 AEDT 2025
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
More information about the Linuxppc-dev
mailing list