From: Sagar Kamble <sagar.a.kam...@intel.com> To do a platform wide S0i3 transition, Gfx is required to go to D3_hot state. pci_save_state and pci_restore_state needed to avoid ring hangs across D3_hot transitions.
Cc: Daniel Vetter <daniel.vet...@ffwll.ch> (supporter:INTEL DRM DRIVERS...) Cc: Jani Nikula <jani.nik...@linux.intel.com> (supporter:INTEL DRM DRIVERS...) Signed-off-by: Sagar Kamble <sagar.a.kam...@intel.com> --- drivers/gpu/drm/i915/i915_drv.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 5a08c86..70bb456 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -1412,6 +1412,11 @@ static int intel_runtime_suspend(struct device *device) * via the suspend path. */ intel_opregion_notify_adapter(dev, PCI_D1); + if (IS_VALLEYVIEW(dev)) { + pci_save_state(pdev); + pci_disable_device(pdev); + pci_set_power_state(pdev, PCI_D3hot); + } DRM_DEBUG_KMS("Device suspended\n"); return 0; @@ -1428,6 +1433,12 @@ static int intel_runtime_resume(struct device *device) DRM_DEBUG_KMS("Resuming device\n"); + if (IS_VALLEYVIEW(dev)) { + pci_set_power_state(pdev, PCI_D0); + pci_restore_state(pdev); + pci_enable_device(pdev); + } + intel_opregion_notify_adapter(dev, PCI_D0); dev_priv->pm.suspended = false; -- 1.8.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx