[Intel-gfx] [PATCH 11/16] drm/i915: disable/re-enable PCI device around S4 freeze/thaw

Ville Syrjälä ville.syrjala at linux.intel.com
Tue Oct 21 15:16:46 CEST 2014


On Wed, Sep 10, 2014 at 06:17:04PM +0300, Imre Deak wrote:
> We already disable everything during S4 freeze, except the PCI device
> itself. There is no reason why we couldn't disable that too and doing
> so allows us to unify these handlers in the next patch with the
> corresponding S3 suspend/resume handlers.

First I was a bit WTF because the PCI core doesn't seem to explicitly
set the device back to D0 in .thaw() whereas it does for
.restore()/.resume(). But then I realized pci_enable_device() does that
anyway, so this looks fine.

To properly optimize .freeze()/.thaw() we should basically just quiesce
the device but leave everything powered on. But such optimizations are
for the future, and in the meantime sharing the same codepaths should
mean we have the same bugs for both, instead of slightly different bugs
for each.

Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

> 
> Signed-off-by: Imre Deak <imre.deak at intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index ea8dda7..0ff5e92 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -991,12 +991,11 @@ static int i915_pm_freeze_late(struct device *dev)
>  {
>  	struct pci_dev *pdev = to_pci_dev(dev);
>  	struct drm_device *drm_dev = pci_get_drvdata(pdev);
> -	struct drm_i915_private *dev_priv = drm_dev->dev_private;
>  
>  	if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF)
>  		return 0;
>  
> -	return intel_suspend_complete(dev_priv);
> +	return i915_drm_suspend_late(drm_dev);
>  }
>  
>  static int i915_pm_thaw_early(struct device *dev)
> @@ -1004,7 +1003,7 @@ static int i915_pm_thaw_early(struct device *dev)
>  	struct pci_dev *pdev = to_pci_dev(dev);
>  	struct drm_device *drm_dev = pci_get_drvdata(pdev);
>  
> -	return i915_drm_thaw_early(drm_dev);
> +	return i915_resume_early(drm_dev);
>  }
>  
>  static int i915_pm_thaw(struct device *dev)
> -- 
> 1.8.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC



More information about the Intel-gfx mailing list