drm/i915: Check whether chip is wedged in i915_wait_request()
authorBen Gamari <bgamari.foss@gmail.com>
Mon, 14 Sep 2009 21:48:41 +0000 (17:48 -0400)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Thu, 17 Sep 2009 21:33:52 +0000 (14:33 -0700)
i915_wait_request() only checks mm.wedged after it interacts with the
hardware, generally causing the driver to lock up waiting for a wedged
chip. Make sure we check mm.wedged as the first thing we do.

Reported-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Ben Gamari <bgamari.foss@gmail.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/gpu/drm/i915/i915_gem.c

index e0da98602eed4c988d6635f5cf7f11ca2e06f3a6..91005132110460e19f63b8a54104cbf095b92f4c 100644 (file)
@@ -1751,6 +1751,9 @@ i915_wait_request(struct drm_device *dev, uint32_t seqno)
 
        BUG_ON(seqno == 0);
 
+       if (dev_priv->mm.wedged)
+               return -EIO;
+
        if (!i915_seqno_passed(i915_get_gem_seqno(dev), seqno)) {
                if (IS_IGDNG(dev))
                        ier = I915_READ(DEIER) | I915_READ(GTIER);