Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d071c32 authored by Imre Deak's avatar Imre Deak Committed by Bjorn Helgaas
Browse files

PCI/PM: Add needs_resume flag to avoid suspend complete optimization



Some drivers - like i915 - may not support the system suspend direct
complete optimization due to differences in their runtime and system
suspend sequence.  Add a flag that when set resumes the device before
calling the driver's system suspend handlers which effectively disables
the optimization.

Needed by a future patch fixing suspend/resume on i915.

Suggested by Rafael.

Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Acked-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: stable@vger.kernel.org
parent 415b6185
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -2144,7 +2144,8 @@ bool pci_dev_keep_suspended(struct pci_dev *pci_dev)

	if (!pm_runtime_suspended(dev)
	    || pci_target_state(pci_dev) != pci_dev->current_state
	    || platform_pci_need_resume(pci_dev))
	    || platform_pci_need_resume(pci_dev)
	    || (pci_dev->dev_flags & PCI_DEV_FLAGS_NEEDS_RESUME))
		return false;

	/*
+5 −0
Original line number Diff line number Diff line
@@ -183,6 +183,11 @@ enum pci_dev_flags {
	PCI_DEV_FLAGS_BRIDGE_XLATE_ROOT = (__force pci_dev_flags_t) (1 << 9),
	/* Do not use FLR even if device advertises PCI_AF_CAP */
	PCI_DEV_FLAGS_NO_FLR_RESET = (__force pci_dev_flags_t) (1 << 10),
	/*
	 * Resume before calling the driver's system suspend hooks, disabling
	 * the direct_complete optimization.
	 */
	PCI_DEV_FLAGS_NEEDS_RESUME = (__force pci_dev_flags_t) (1 << 11),
};

enum pci_irq_reroute_variant {