On Tue, Apr 22, 2014 at 08:21:07PM +0300, Imre Deak wrote: > During runtime suspend there can be a last pending rps.work, so make > sure it's canceled. Note that in the runtime suspend callback we can't > get any RPS interrupts since it's called only after the GPU goes idle > and we set the minimum RPS frequency. The next possibility for an RPS > interrupt is only after getting an RPM ref (for example because of a new > GPU command) and calling the RPM resume callback. > > v2: > - patch introduced in v2 of the patchset > v3: > - Change the order of canceling the rps.work and disabling interrupts to > avoid the race between interrupt disabling and the the rps.work. Race > spotted by Ville. > > Signed-off-by: Imre Deak <imre.d...@intel.com> > --- > drivers/gpu/drm/i915/i915_drv.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index b87109c..edd4ab8 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -919,6 +919,12 @@ static int intel_runtime_suspend(struct device *device) > > DRM_DEBUG_KMS("Suspending device\n"); > > + /* > + * rps.work can't be rearmed here, since we get here only after making > + * sure the GPU is idle and the RPS freq is set to the minimum. See > + * intel_mark_idle(). > + */ > + cancel_work_sync(&dev_priv->rps.work);
Yeah makes sense. Well, unless the hardware is bonkers and generates an UP interrupt while idle. Reviewed-by: Ville Syrjälä <ville.syrj...@linux.intel.com> > intel_runtime_pm_disable_interrupts(dev); > > if (IS_GEN6(dev)) > @@ -970,6 +976,7 @@ static int intel_runtime_resume(struct device *device) > gen6_update_ring_freq(dev); > > intel_runtime_pm_restore_interrupts(dev); > + intel_reset_gt_powersave(dev); > > DRM_DEBUG_KMS("Device resumed\n"); > return 0; > -- > 1.8.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx