drm/i915: Make the fallback IRQ wait not sleep.
authorEric Anholt <eric@anholt.net>
Thu, 22 Dec 2011 22:55:01 +0000 (14:55 -0800)
committerKeith Packard <keithp@keithp.com>
Tue, 3 Jan 2012 17:31:16 +0000 (09:31 -0800)
The waits we do here are generally so short that sleeping is a bad
idea unless we have an IRQ to wake us up.  Improves regression test
performance from 18 minutes to 3.5 minutes on gen7, which is now
consistent with the previous generation.

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>
drivers/gpu/drm/i915/i915_gem.c

index 66e0a555dbccfc51b1e6fa7c078869bcce4413da..e55badb2d86ddc5d7f245b8e81343a358f5dc43c 100644 (file)
@@ -2006,9 +2006,9 @@ i915_wait_request(struct intel_ring_buffer *ring,
                                           || atomic_read(&dev_priv->mm.wedged));
 
                        ring->irq_put(ring);
-               } else if (wait_for(i915_seqno_passed(ring->get_seqno(ring),
-                                                     seqno) ||
-                                   atomic_read(&dev_priv->mm.wedged), 3000))
+               } else if (wait_for_atomic(i915_seqno_passed(ring->get_seqno(ring),
+                                                            seqno) ||
+                                          atomic_read(&dev_priv->mm.wedged), 3000))
                        ret = -EBUSY;
                ring->waiting_seqno = 0;
 
@@ -3309,8 +3309,8 @@ 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) ||
+               } else if (wait_for_atomic(i915_seqno_passed(ring->get_seqno(ring),
+                                                            seqno) ||
                                    atomic_read(&dev_priv->mm.wedged), 3000)) {
                        ret = -EBUSY;
                }