2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-28 23:23:55 +08:00
linux-next/drivers/pci/pcie
Mika Westerberg 006d44e49a PCI: Add runtime PM support for PCIe ports
Add back runtime PM support for PCIe ports that was removed by
fe9a743a26 ("PCI/PM: Drop unused runtime PM support code for PCIe
ports").

We cannot enable it automatically for all ports since there have been
problems previously [1].  In summary suspended PCIe ports were not able
to deal with ACPI-based hotplug reliably.  One reason why this might happen
is the fact that when a PCIe port is powered down, config space access to
the devices behind the port is not possible.  If the BIOS hotplug SMI
handler assumes the port is always in D0 it will not be able to find the
hotplugged devices.  To be on the safe side only enable runtime PM if the
port does not claim to support hotplug.

For PCIe ports not using hotplug, we enable and allow runtime PM
automatically.  Since 'bridge_d3' can be changed any time we check this in
driver ->runtime_idle() and ->runtime_suspend() and only allow runtime
suspend if the flag is still set.  Use autosuspend with default of 100ms
idle time to prevent the port from repeatedly suspending and resuming on
continuous configuration space access of devices behind the port.

The actual power transition to D3 and back is handled in the PCI core.

Idea to automatically unblock (allow) runtime PM for PCIe ports came from
Dave Airlie.

[1] https://bugzilla.kernel.org/show_bug.cgi?id=53811

This includes a fix for lockdep issue reported by Valdis Kletnieks.

Tested-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2016-06-13 14:58:53 -05:00
..
aer PCI changes for the v4.6 merge window: 2016-03-16 14:45:55 -07:00
aspm.c PCI/ASPM: Make sysfs link_state_store() consistent with link_state_show() 2015-12-03 10:42:59 -06:00
Kconfig PCI: Add Downstream Port Containment driver 2016-05-03 10:39:24 -05:00
Makefile PCI: Add Downstream Port Containment driver 2016-05-03 10:39:24 -05:00
pcie-dpc.c PCI: Add Downstream Port Containment driver 2016-05-03 10:39:24 -05:00
pme.c PCI/PME: Restructure pcie_pme_suspend() to prevent compiler warning 2016-02-05 16:28:03 -06:00
portdrv_acpi.c Merge branches 'pci/dpc', 'pci/resource' and 'pci/thunderbolt' into next 2016-05-03 11:49:21 -05:00
portdrv_bus.c PCI: Fix whitespace, capitalization, and spelling errors 2013-11-14 11:28:18 -07:00
portdrv_core.c PCI: Add runtime PM support for PCIe ports 2016-06-13 14:58:53 -05:00
portdrv_pci.c PCI: Add runtime PM support for PCIe ports 2016-06-13 14:58:53 -05:00
portdrv.h Merge branches 'pci/dpc', 'pci/resource' and 'pci/thunderbolt' into next 2016-05-03 11:49:21 -05:00