From: Eric Anholt Date: Thu, 22 Dec 2011 22:54:59 +0000 (-0800) Subject: drm/i915: Do the fallback non-IRQ wait in ring throttle, too. X-Git-Tag: v3.2.22~32 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=86d94bc5ca0b9283cae6dfa34b259d22200b4e3a;p=karo-tx-linux.git drm/i915: Do the fallback non-IRQ wait in ring throttle, too. commit 7ea29b13e5e3e1e61e612349eb0366efdb6457f3 upstream. As a workaround for IRQ synchronization issues in the gen7 BLT ring, we want to turn the two wait functions into polling loops. Signed-off-by: Eric Anholt Tested-by: Eugeni Dodonov Reviewed-by: Eugeni Dodonov Acked-by: Kenneth Graunke Signed-off-by: Keith Packard Signed-off-by: Ben Hutchings --- diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 3e7c4788585f..3e2edc6b8105 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -3312,6 +3312,10 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file) if (ret == 0 && atomic_read(&dev_priv->mm.wedged)) ret = -EIO; + } else if (wait_for(i915_seqno_passed(ring->get_seqno(ring), + seqno) || + atomic_read(&dev_priv->mm.wedged), 3000)) { + ret = -EBUSY; } }