Hi, This series fixes the behavior of the pci_enable_link_state() and pci_enable_link_state_locked() APIs to be in symmetry with pci_disable_link_state*() couterparts. First 5 patches fixes and cleans up the ASPM code and the last 3 patches modifies the atheros drivers to use the pci{enable/disable}_link_state() APIs instead of modifying the LNKCTL register directly for enabling ASPM. NOTE: The current callers of the pci_enable_link_state_locked() APIs (vmd and pcie-qcom) drivers doesn't look like depending on the old behavior of the API. I can atleast assure that for pcie-qcom. For VMD, it would be great if VMD folks CCed could provide their review tags for patch 2/6. Also in this version, I've included a patch from Ilpo (patch 1) that disables ASPM forcefully even if BIOS/ACPI didn't grant us permission. More details are in the patch description. I think this patch is needed anyway since the device drivers are forcefully disabling it even if PCI core was skipping ASPM disable previously. Testing ======= I've tested this series on Lenovo Thinkpad T14s with WCN7850 chipset (so that's just ath12k driver). Rest of the drivers are compile tested only. Merging Strategy ================ Even though there is no build dependency between PCI core and atheros patches, there is a functional dependency. So I'd recommend creating an immutable branch with PCI patches and merging that branch into both PCI and linux-wireless trees and finally merging the atheros patches into linux-wireless tree. If immutable branch seems like a hassle, then PCI core patches could get merged for 6.18 and atheros patches can wait for 6.19. - Mani Changes in v2: * Reworked the pcie_aspm_enabled() API to return the enabled states instead of bool and used it to save/restore the ASPM states in ath drivers. * Added a patch from Ilpo to disable ASPM even if BIOS didn't grant permission * Added the CONFIG_PCIEASPM dependency to ath{10/11/12}k drivers as they now depend on the ASPM APIs for stable operation. * Rebased on top of v6.17-rc1 Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxxxxxxxx> --- Ilpo Järvinen (1): PCI/ASPM: Always disable ASPM when driver requests it Manivannan Sadhasivam (7): PCI/ASPM: Fix the behavior of pci_enable_link_state*() APIs PCI/ASPM: Transition the device to D0 (if required) inside pci_enable_link_state_locked() API PCI/ASPM: Improve the kernel-doc for pci_disable_link_state*() APIs PCI/ASPM: Return enabled ASPM states from pcie_aspm_enabled() API wifi: ath12k: Use pci_{enable/disable}_link_state() APIs to enable/disable ASPM states wifi: ath11k: Use pci_{enable/disable}_link_state() APIs to enable/disable ASPM states wifi: ath10k: Use pci_{enable/disable}_link_state() APIs to enable/disable ASPM states drivers/net/wireless/ath/ath10k/Kconfig | 2 +- drivers/net/wireless/ath/ath10k/pci.c | 11 ++-- drivers/net/wireless/ath/ath10k/pci.h | 5 +- drivers/net/wireless/ath/ath11k/Kconfig | 2 +- drivers/net/wireless/ath/ath11k/pci.c | 19 +----- drivers/net/wireless/ath/ath11k/pci.h | 3 +- drivers/net/wireless/ath/ath12k/Kconfig | 2 +- drivers/net/wireless/ath/ath12k/pci.c | 19 +----- drivers/net/wireless/ath/ath12k/pci.h | 4 +- drivers/pci/controller/dwc/pcie-qcom.c | 5 -- drivers/pci/controller/vmd.c | 5 -- drivers/pci/pcie/aspm.c | 103 ++++++++++++++++++++++---------- include/linux/pci.h | 4 +- 13 files changed, 92 insertions(+), 92 deletions(-) --- base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585 change-id: 20250825-ath-aspm-fix-588f135c9fb9 Best regards, -- Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxxxxxxxx>