drm/i915: Get VECS semaphore info on error
authorBen Widawsky <benjamin.widawsky@intel.com>
Mon, 12 Aug 2013 23:53:04 +0000 (16:53 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 22 Aug 2013 11:31:43 +0000 (13:31 +0200)
Ideally we could use for_each_ring with the ring flags as I've done a
couple times
(http://lists.freedesktop.org/archives/intel-gfx/2013-June/029450.html).
Until Daniel merges that patch though, we can just use this.

Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gpu_error.c

index 60393cb..558e568 100644 (file)
@@ -243,6 +243,11 @@ static void i915_ring_error_state(struct drm_i915_error_state_buf *m,
                err_printf(m, "  SYNC_1: 0x%08x [last synced 0x%08x]\n",
                           error->semaphore_mboxes[ring][1],
                           error->semaphore_seqno[ring][1]);
+               if (HAS_VEBOX(dev)) {
+                       err_printf(m, "  SYNC_2: 0x%08x [last synced 0x%08x]\n",
+                                  error->semaphore_mboxes[ring][2],
+                                  error->semaphore_seqno[ring][2]);
+               }
        }
        err_printf(m, "  seqno: 0x%08x\n", error->seqno[ring]);
        err_printf(m, "  waiting: %s\n", yesno(error->waiting[ring]));
@@ -682,6 +687,12 @@ static void i915_record_ring_state(struct drm_device *dev,
                error->semaphore_seqno[ring->id][1] = ring->sync_seqno[1];
        }
 
+       if (HAS_VEBOX(dev)) {
+               error->semaphore_mboxes[ring->id][2] =
+                       I915_READ(RING_SYNC_2(ring->mmio_base));
+               error->semaphore_seqno[ring->id][2] = ring->sync_seqno[2];
+       }
+
        if (INTEL_INFO(dev)->gen >= 4) {
                error->faddr[ring->id] = I915_READ(RING_DMA_FADD(ring->mmio_base));
                error->ipeir[ring->id] = I915_READ(RING_IPEIR(ring->mmio_base));