summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-02-15 11:25:38 +0000
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-02-15 14:27:18 +0100
commitee4f42b10bbc404579c2e6f446b24d898592753c (patch)
treeaf918261e95149922e5edaafd2b7a067489d2ae0 /drivers/gpu/drm/i915
parent52d39a21350531063bf8f4f704101bd371ea5d7d (diff)
downloadlinux-3.10-ee4f42b10bbc404579c2e6f446b24d898592753c.tar.gz
linux-3.10-ee4f42b10bbc404579c2e6f446b24d898592753c.tar.bz2
linux-3.10-ee4f42b10bbc404579c2e6f446b24d898592753c.zip
drm/i915: Record the position of the request upon error
So that we can tally the request against the command sequence in the ringbuffer, or merely jump to the interesting locations. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c5
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c1
3 files changed, 5 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 45876e5bf2a..fdb7ccefffb 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -799,9 +799,10 @@ static int i915_error_state(struct seq_file *m, void *unused)
dev_priv->ring[i].name,
error->ring[i].num_requests);
for (j = 0; j < error->ring[i].num_requests; j++) {
- seq_printf(m, " seqno 0x%08x, emitted %ld\n",
+ seq_printf(m, " seqno 0x%08x, emitted %ld, tail 0x%08x\n",
error->ring[i].requests[j].seqno,
- error->ring[i].requests[j].jiffies);
+ error->ring[i].requests[j].jiffies,
+ error->ring[i].requests[j].tail);
}
}
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 5622ec8907f..b8397282153 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -183,6 +183,7 @@ struct drm_i915_error_state {
struct drm_i915_error_request {
long jiffies;
u32 seqno;
+ u32 tail;
} *requests;
int num_requests;
} ring[I915_NUM_RINGS];
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 85504fb1a4b..afd4e03e337 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -975,6 +975,7 @@ static void i915_gem_record_rings(struct drm_device *dev,
erq = &error->ring[i].requests[count++];
erq->seqno = request->seqno;
erq->jiffies = request->emitted_jiffies;
+ erq->tail = request->tail;
}
}
}