diff mbox

[2/3] drm/i915: cancel RPS work before disabling RPS

Message ID 1366736968-15227-2-git-send-email-jbarnes@virtuousgeek.org (mailing list archive)
State New, archived
Headers show

Commit Message

Jesse Barnes April 23, 2013, 5:09 p.m. UTC
Ville noticed this while doing another review; we may as well cancel
this work just to make sure we don't try anything fancy after disabling
the RPS interfaces.

Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_pm.c |    1 +
 1 file changed, 1 insertion(+)

Comments

Daniel Vetter April 24, 2013, 9:09 a.m. UTC | #1
On Tue, Apr 23, 2013 at 10:09:27AM -0700, Jesse Barnes wrote:
> Ville noticed this while doing another review; we may as well cancel
> this work just to make sure we don't try anything fancy after disabling
> the RPS interfaces.
> 
> Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
>  drivers/gpu/drm/i915/intel_pm.c |    1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 93b01e1..72ad817 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -3657,6 +3657,7 @@ void intel_disable_gt_powersave(struct drm_device *dev)
>  		ironlake_disable_rc6(dev);
>  	} else if (INTEL_INFO(dev)->gen >= 6) {
>  		cancel_delayed_work_sync(&dev_priv->rps.delayed_resume_work);
> +		cancel_work_sync(&dev_priv->rps.work);

Module unload is a bit a mess around this area here: We disable irqs too
late, so the work item could easily rearm between the canceling here nad
the disable_rps below. I'll throw a patch on top to remedy that.
-Daniel
  
>  		if (IS_VALLEYVIEW(dev))
>  			cancel_delayed_work_sync(&dev_priv->rps.vlv_work);
>  		mutex_lock(&dev_priv->rps.hw_lock);
> -- 
> 1.7.10.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 93b01e1..72ad817 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -3657,6 +3657,7 @@  void intel_disable_gt_powersave(struct drm_device *dev)
 		ironlake_disable_rc6(dev);
 	} else if (INTEL_INFO(dev)->gen >= 6) {
 		cancel_delayed_work_sync(&dev_priv->rps.delayed_resume_work);
+		cancel_work_sync(&dev_priv->rps.work);
 		if (IS_VALLEYVIEW(dev))
 			cancel_delayed_work_sync(&dev_priv->rps.vlv_work);
 		mutex_lock(&dev_priv->rps.hw_lock);