Re: [PATCH v2 2/4] PCI/ASPM: Add pcie_aspm_remove_cap() to override advertised link states
From: "Maciej W. Rozycki" <macro@orcam.me.uk>
Date: 2025-11-13 04:02:41
Also in:
linux-pci, lkml
From: "Maciej W. Rozycki" <macro@orcam.me.uk>
Date: 2025-11-13 04:02:41
Also in:
linux-pci, lkml
On Wed, 12 Nov 2025, Bjorn Helgaas wrote:
quoted
quoted
+ pci_info(pdev, "ASPM:%s%s removed from Link Capabilities to avoid device defect\n", + lnkcap & PCI_EXP_LNKCAP_ASPM_L0S ? " L0s" : "", + lnkcap & PCI_EXP_LNKCAP_ASPM_L1 ? " L1" : "");I think this gives a false impression that the ASPM CAPs are being removed from the LnkCap register. This function is just removing it from the internal cache and the LnkCap register is left unchanged.Very true, this is confusing since we're not actually changing the LnkCap register, so lspci etc will still show these states as supported. The quirk needs to work for arbitrary devices, and there's no generic way to change LnkCap, so the quirk can't do that.
There's no way to poke at hw, but that is only relevant for x86 I believe and not the default access method for `lspci' anyway. For sysfs we do it already for things such as fixing the device class; cf. `quirk_isa_bridge' (arch/alpha/kernel/pci.c), so why is it a problem here? Unless we want to keep it for `lspci' actually. Maciej