drm/i915: Tweak on-error bbaddr parsing for clarity
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 22 Nov 2010 13:24:13 +0000 (13:24 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 25 Nov 2010 15:03:24 +0000 (15:03 +0000)
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_irq.c

index de95c7bb6dba88060c6c6bcc1f553383fce74685..9aa1e1dc5fd5c5ba66a93f4f08b2550bd7c93303 100644 (file)
@@ -525,26 +525,23 @@ i915_ringbuffer_last_batch(struct drm_device *dev,
        /* Locate the current position in the ringbuffer and walk back
         * to find the most recently dispatched batch buffer.
         */
-       bbaddr = 0;
        head = I915_READ_HEAD(ring) & HEAD_ADDR;
-       val = (u32 *)(ring->virtual_start + head);
 
+       val = (u32 *)(ring->virtual_start + head);
        while (--val >= (u32 *)ring->virtual_start) {
                bbaddr = i915_get_bbaddr(dev, val);
                if (bbaddr)
-                       break;
+                       return bbaddr;
        }
 
-       if (bbaddr == 0) {
-               val = (u32 *)(ring->virtual_start + ring->size);
-               while (--val >= (u32 *)ring->virtual_start) {
-                       bbaddr = i915_get_bbaddr(dev, val);
-                       if (bbaddr)
-                               break;
-               }
+       val = (u32 *)(ring->virtual_start + ring->size);
+       while (--val >= (u32 *)ring->virtual_start) {
+               bbaddr = i915_get_bbaddr(dev, val);
+               if (bbaddr)
+                       return bbaddr;
        }
 
-       return bbaddr;
+       return 0;
 }
 
 static u32 capture_bo_list(struct drm_i915_error_buffer *err,