PCI / PM: Add needs_resume flag to avoid suspend complete optimization
Hi Bjorn,
Quoted 9 lines · Imre Deak
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 the next patch fixing suspend/resume on i915.
Suggested by Rafael.
Are you planning to merge this one patch via the pci tree? It's a dependency for fixing a regression in the i915 driver.
Thanks,
Imre
Quoted 59 lines
v2-v3:
- unchangedv4:
- Move the flag todev_flagsinstead of using a bit field. (Rafael)v5:
- Rebase on pci/next branch using the free next enum number available.Cc Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>Cc Bjorn Helgaas <bhelgaas@xxxxxxxxxx>Cc linux-pci@xxxxxxxxxxxxxxxCc stable@xxxxxxxxxxxxxxxSigned-off-by Imre Deak <imre.deak@xxxxxxxxx>---
[ Bjorn, could you apply this one patch to the pci tree? We would merge
the second patch via the drm-tip tree once this one shows up in Linus' tree. ]--- drivers/pci/pci.c | 3 ++- include/linux/pci.h | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-)drivers/pci/pci.c +2
-1@@ -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;/* include/linux/pci.h +5
-0@@ -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 {Signature · 1 line
2.7.4