aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-11-22 08:24:13 -0500
committerChris Wilson <chris@chris-wilson.co.uk>2010-11-25 10:03:24 -0500
commitab5793ad3ae11a5cbe2194b449e5fdd80b19f14f (patch)
treef4e6c86471319bfac3b3fc2e377773cc7c51b407 /drivers/gpu
parent312817a39f17dbb4de000165b5b724e3728cd91c (diff)
drm/i915: Tweak on-error bbaddr parsing for clarity
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index de95c7bb6dba..9aa1e1dc5fd5 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -525,26 +525,23 @@ i915_ringbuffer_last_batch(struct drm_device *dev,
525 /* Locate the current position in the ringbuffer and walk back 525 /* Locate the current position in the ringbuffer and walk back
526 * to find the most recently dispatched batch buffer. 526 * to find the most recently dispatched batch buffer.
527 */ 527 */
528 bbaddr = 0;
529 head = I915_READ_HEAD(ring) & HEAD_ADDR; 528 head = I915_READ_HEAD(ring) & HEAD_ADDR;
530 val = (u32 *)(ring->virtual_start + head);
531 529
530 val = (u32 *)(ring->virtual_start + head);
532 while (--val >= (u32 *)ring->virtual_start) { 531 while (--val >= (u32 *)ring->virtual_start) {
533 bbaddr = i915_get_bbaddr(dev, val); 532 bbaddr = i915_get_bbaddr(dev, val);
534 if (bbaddr) 533 if (bbaddr)
535 break; 534 return bbaddr;
536 } 535 }
537 536
538 if (bbaddr == 0) { 537 val = (u32 *)(ring->virtual_start + ring->size);
539 val = (u32 *)(ring->virtual_start + ring->size); 538 while (--val >= (u32 *)ring->virtual_start) {
540 while (--val >= (u32 *)ring->virtual_start) { 539 bbaddr = i915_get_bbaddr(dev, val);
541 bbaddr = i915_get_bbaddr(dev, val); 540 if (bbaddr)
542 if (bbaddr) 541 return bbaddr;
543 break;
544 }
545 } 542 }
546 543
547 return bbaddr; 544 return 0;
548} 545}
549 546
550static u32 capture_bo_list(struct drm_i915_error_buffer *err, 547static u32 capture_bo_list(struct drm_i915_error_buffer *err,