Re: [PATCH v2 4/5] drm/i915/bxt: Block D3 during suspend.

David Weinehall
2016-04-08T11:46:30Z

On Thu, Apr 07, 2016 at 08:22:11PM +0530, Animesh Manna wrote:
> For BXT, display engine can not generate interrupt when in D3.
> On the othen hand S0ix can be achieved without display in D3. So,

other

> Display should not put into D3 for HPD to work and will not
> have any power impact.
>
> Signed-off-by: Animesh Manna <animesh.manna@intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 020a31c..6b8c906 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -1547,6 +1547,9 @@ static int intel_runtime_suspend(struct device *device)
>
> assert_forcewakes_inactive(dev_priv);
>
> + if (dev_priv->vbt.hpd_wakeup_enabled)
> + pci_save_state(pdev);
> +
> DRM_DEBUG_KMS("Device suspended\n");
> return 0;
> }
> @@ -1563,6 +1566,9 @@ static int intel_runtime_resume(struct device *device)
>
> DRM_DEBUG_KMS("Resuming device\n");
>
> + if (dev_priv->vbt.hpd_wakeup_enabled)
> + pci_restore_state(pdev);

If the state hasn't been saved pci_restore_state() will return
without doing anything, so the conditional shouldn't be necessary.

> +
> WARN_ON_ONCE(atomic_read(&dev_priv->pm.wakeref_count));
> disable_rpm_wakeref_asserts(dev_priv);