On Sat, 28 Jun 2014, Paulo Zanoni <przanoni@xxxxxxxxx> wrote: > From: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > > It is possible that, by the time we run i915_drm_freeze(), > delayed_resume_work was already queued but did not run yet. If it > still didn't run after intel_runtime_pm_disable_interrupts(), by the > time it runs it will try to change the interrupt registers with the > interrupts already disabled, which will trigger a WARN. We can > reliably reproduce this with the pm_rpm system-suspend test case. > > In order to avoid the problem, we have to flush the work before > disabling the interrupts. We could also cancel the work instead of > flushing it, but that would require us to put a runtime PM reference - > and any other resource we may need in the future - in case the work > was already queued, so I believe flushing the work is more > future-proof, although less efficient. But I can also change this part > if someone requests. > > Another thing I tried was to move the intel_suspend_gt_powersave() > call to before intel_runtime_pm_disable_interrupts(), but since that > function needs to be called after the interrupts are already disabled, > due to dev_priv->rps.work, this strategy didn't work. > > Testcase: igt/pm_rpm/system-suspend > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=80517 > Signed-off-by: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> Pushed to dinq, thanks for the patch and review. BR, Jani. > --- > drivers/gpu/drm/i915/i915_drv.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index e64547e..672694b 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -524,6 +524,8 @@ static int i915_drm_freeze(struct drm_device *dev) > return error; > } > > + flush_delayed_work(&dev_priv->rps.delayed_resume_work); > + > intel_runtime_pm_disable_interrupts(dev); > dev_priv->enable_hotplug_processing = false; > > -- > 2.0.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx