Created attachment 142341 [details] ASPM call flow The expectation from PCIe sub system is that when a driver for a particular PCIe device is loaded, pci_enable_device() API gets called which would eventually enable the ASPM states for the links. This is not happening as of today because of the following check in drivers/pci/pci.c: pci_set_power_state() /* Check if we're already there */ if (dev->current_state == state) return 0; Because of this, call to pcie_aspm_powersave_config_link() is never made resulting in not enabling ASPM forever (even when CONFIG_PCIEASPM_POWERSAVE=y ). Please refer to the attached PDF (ASPM call flow) for different paths that can enable ASPM.
Created attachment 142381 [details] log with 'dmesg' and 'lspci -vvv' before applying the proposed patch Attached file is a log with info from commands 'dmesg' and 'lspci -vvv'
Created attachment 142391 [details] log with 'dmesg' and 'lspci -vvv' after applying the proposed patch Attached file is a log with info from commands 'dmesg' and 'lspci -vvv'
Created attachment 142401 [details] Patch to fix the ASPM issue being discussed in this bug
Created attachment 143271 [details] The patch that got applied for 3.17 This is the patch that got applied for 3.17
in 3.17-rc1: commit 1f6ae47ecff7f23da73417e068018b311f3b5583 Author: Vidya Sagar <sagar.tv@gmail.com> Date: Wed Jul 16 15:33:42 2014 +0530 PCI: Configure ASPM when enabling device