aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-11-27 12:06:54 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-11-29 05:43:54 -0500
commitdf2b23d97919601218e9229ff517afea83fe5520 (patch)
treea1c79198576e7161014248b32b46c32a8220f8a7
parent3e9605018ab3e333d51cc90fccfde2031886763b (diff)
drm/i915: Include the last semaphore sync point in the error-state
Should be useful to know what the driver thought the other ring's seqno was when it last used a semaphore. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c10
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c2
3 files changed, 9 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 4568e7d8a06..8afc0dd7de6 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -655,10 +655,12 @@ static void i915_ring_error_state(struct seq_file *m,
655 if (INTEL_INFO(dev)->gen >= 6) { 655 if (INTEL_INFO(dev)->gen >= 6) {
656 seq_printf(m, " RC PSMI: 0x%08x\n", error->rc_psmi[ring]); 656 seq_printf(m, " RC PSMI: 0x%08x\n", error->rc_psmi[ring]);
657 seq_printf(m, " FAULT_REG: 0x%08x\n", error->fault_reg[ring]); 657 seq_printf(m, " FAULT_REG: 0x%08x\n", error->fault_reg[ring]);
658 seq_printf(m, " SYNC_0: 0x%08x\n", 658 seq_printf(m, " SYNC_0: 0x%08x [last synced 0x%08x]\n",
659 error->semaphore_mboxes[ring][0]); 659 error->semaphore_mboxes[ring][0],
660 seq_printf(m, " SYNC_1: 0x%08x\n", 660 error->semaphore_seqno[ring][0]);
661 error->semaphore_mboxes[ring][1]); 661 seq_printf(m, " SYNC_1: 0x%08x [last synced 0x%08x]\n",
662 error->semaphore_mboxes[ring][1],
663 error->semaphore_seqno[ring][1]);
662 } 664 }
663 seq_printf(m, " seqno: 0x%08x\n", error->seqno[ring]); 665 seq_printf(m, " seqno: 0x%08x\n", error->seqno[ring]);
664 seq_printf(m, " waiting: %s\n", yesno(error->waiting[ring])); 666 seq_printf(m, " waiting: %s\n", yesno(error->waiting[ring]));
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 45491c1ac7d..79589bbff3d 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -197,6 +197,7 @@ struct drm_i915_error_state {
197 u32 instdone[I915_NUM_RINGS]; 197 u32 instdone[I915_NUM_RINGS];
198 u32 acthd[I915_NUM_RINGS]; 198 u32 acthd[I915_NUM_RINGS];
199 u32 semaphore_mboxes[I915_NUM_RINGS][I915_NUM_RINGS - 1]; 199 u32 semaphore_mboxes[I915_NUM_RINGS][I915_NUM_RINGS - 1];
200 u32 semaphore_seqno[I915_NUM_RINGS][I915_NUM_RINGS - 1];
200 u32 rc_psmi[I915_NUM_RINGS]; /* sleep state */ 201 u32 rc_psmi[I915_NUM_RINGS]; /* sleep state */
201 /* our own tracking of ring head and tail */ 202 /* our own tracking of ring head and tail */
202 u32 cpu_ring_head[I915_NUM_RINGS]; 203 u32 cpu_ring_head[I915_NUM_RINGS];
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 2604867e6b7..6cd3dc94b47 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1120,6 +1120,8 @@ static void i915_record_ring_state(struct drm_device *dev,
1120 = I915_READ(RING_SYNC_0(ring->mmio_base)); 1120 = I915_READ(RING_SYNC_0(ring->mmio_base));
1121 error->semaphore_mboxes[ring->id][1] 1121 error->semaphore_mboxes[ring->id][1]
1122 = I915_READ(RING_SYNC_1(ring->mmio_base)); 1122 = I915_READ(RING_SYNC_1(ring->mmio_base));
1123 error->semaphore_seqno[ring->id][0] = ring->sync_seqno[0];
1124 error->semaphore_seqno[ring->id][1] = ring->sync_seqno[1];
1123 } 1125 }
1124 1126
1125 if (INTEL_INFO(dev)->gen >= 4) { 1127 if (INTEL_INFO(dev)->gen >= 4) {