]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
drm/i915: Do the fallback non-IRQ wait in ring throttle, too.
authorEric Anholt <eric@anholt.net>
Thu, 22 Dec 2011 22:54:59 +0000 (14:54 -0800)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 4 Jul 2012 04:44:13 +0000 (05:44 +0100)
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>
drivers/gpu/drm/i915/i915_gem.c

index 3e7c4788585f49e9adfdce8fca5e64bf643132fc..3e2edc6b81056c040fcf708d148fa217cdbd7920 100644 (file)
@@ -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;
                }
        }