Message ID | 1344922871-2248-1-git-send-email-ben@bwidawsk.net (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Mon, 13 Aug 2012 22:41:08 -0700, Ben Widawsky <ben@bwidawsk.net> wrote: > After reset we unconditionally reinitialize lists. If the context switch > hasn't yet completed before the suspend the default context object will > end up on lists that are going to go away when we resume. > > The patch forces the context switch to be synchronous before suspend > assuring that the active/inactive tracking is correct at the time of > resume. > > References: https://bugs.freedesktop.org/show_bug.cgi?id=52429 > Tested-by: Guang A Yang <guang.a.yang@intel.com> > Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Reviewd-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 0514593..31054fa 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2273,11 +2273,11 @@ int i915_gpu_idle(struct drm_device *dev) /* Flush everything onto the inactive list. */ for_each_ring(ring, dev_priv, i) { - ret = i915_ring_idle(ring); + ret = i915_switch_context(ring, NULL, DEFAULT_CONTEXT_ID); if (ret) return ret; - ret = i915_switch_context(ring, NULL, DEFAULT_CONTEXT_ID); + ret = i915_ring_idle(ring); if (ret) return ret; }