diff options
author | Eric Anholt <eric@anholt.net> | 2011-12-22 14:54:59 -0800 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2012-07-04 05:44:13 +0100 |
commit | 86d94bc5ca0b9283cae6dfa34b259d22200b4e3a (patch) | |
tree | 76993faf867b0aa69d5efd13a06c43b263047a40 | |
parent | 4cf6a9718fc616a246b88d78ec08d646f173af86 (diff) |
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 <eric@anholt.net>
Tested-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 3e7c4788585..3e2edc6b810 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; } } |