Commit 47a8e237 authored by Lukas Wunner's avatar Lukas Wunner Committed by Bjorn Helgaas

PCI: Whitelist Thunderbolt ports for runtime D3

Thunderbolt controllers can be runtime suspended to D3cold to save ~1.5W.
This requires that runtime D3 is allowed on its PCIe ports, so whitelist
them.

The 2015 BIOS cutoff that we've instituted for runtime D3 on PCIe ports
is unnecessary on Thunderbolt because we know that even the oldest
controller, Light Ridge (2010), is able to suspend its ports to D3 just
fine -- specifically including its hotplug ports.  And the power saving
should be afforded to machines even if their BIOS predates 2015.
Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Reviewed-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: Andreas Noever <andreas.noever@gmail.com>
parent eb3b5bf1
...@@ -2290,7 +2290,7 @@ void pci_config_pm_runtime_put(struct pci_dev *pdev) ...@@ -2290,7 +2290,7 @@ void pci_config_pm_runtime_put(struct pci_dev *pdev)
* @bridge: Bridge to check * @bridge: Bridge to check
* *
* This function checks if it is possible to move the bridge to D3. * This function checks if it is possible to move the bridge to D3.
* Currently we only allow D3 for recent enough PCIe ports. * Currently we only allow D3 for recent enough PCIe ports and Thunderbolt.
*/ */
bool pci_bridge_d3_possible(struct pci_dev *bridge) bool pci_bridge_d3_possible(struct pci_dev *bridge)
{ {
...@@ -2314,6 +2314,10 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge) ...@@ -2314,6 +2314,10 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge)
if (pci_bridge_d3_force) if (pci_bridge_d3_force)
return true; return true;
/* Even the oldest 2010 Thunderbolt controller supports D3. */
if (bridge->is_thunderbolt)
return true;
/* /*
* Hotplug ports handled natively by the OS were not validated * Hotplug ports handled natively by the OS were not validated
* by vendors for runtime D3 at least until 2018 because there * by vendors for runtime D3 at least until 2018 because there
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment