summaryrefslogtreecommitdiffstats
path: root/include/linux/pci.h
diff options
context:
space:
mode:
authorVidya Sagar <sagar.tv@gmail.com>2014-07-16 15:33:42 +0530
committerBjorn Helgaas <bhelgaas@google.com>2014-07-16 14:27:31 -0600
commit1f6ae47ecff7f23da73417e068018b311f3b5583 (patch)
tree2356701528c4c2ea96768f504f63d20e91035988 /include/linux/pci.h
parentcbace46a9710a480cae51e4611697df5de41713e (diff)
downloadtalos-obmc-linux-1f6ae47ecff7f23da73417e068018b311f3b5583.tar.gz
talos-obmc-linux-1f6ae47ecff7f23da73417e068018b311f3b5583.zip
PCI: Configure ASPM when enabling device
We can't do ASPM configuration at enumeration-time because enabling it makes some defective hardware unresponsive, even if ASPM is disabled later (see 41cd766b0659 ("PCI: Don't enable aspm before drivers have had a chance to veto it"). Therefore, we have to do it after a driver claims the device. We previously configured ASPM in pci_set_power_state(), but that's not a very good place because it's not really related to setting the PCI device power state, and doing it there means: - We incorrectly skipped ASPM config when setting a device that's already in D0 to D0. - We unnecessarily configured ASPM when setting a device to a low-power state (the ASPM feature only applies when the device is in D0). - We unnecessarily configured ASPM when called from a .resume() method (ASPM configuration needs to be restored during resume, but pci_restore_pcie_state() should already do this). Move ASPM configuration from pci_set_power_state() to do_pci_enable_device() so we do it when a driver enables a device. [bhelgaas: changelog] Link: https://bugzilla.kernel.org/show_bug.cgi?id=79621 Fixes: db288c9c5f9d ("PCI / PM: restore the original behavior of pci_set_power_state()") Suggested-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Vidya Sagar <sagar.tv@gmail.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> CC: stable@vger.kernel.org # v3.6+
Diffstat (limited to 'include/linux/pci.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud