drm/i915/debugfs: Display the contents of the BLT and BSD status pages
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 29 Oct 2010 20:00:54 +0000 (21:00 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 29 Oct 2010 20:00:54 +0000 (21:00 +0100)
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_debugfs.c

index 70eec5aceabedc13e2d6415bd0353b82204f52a2..58cf60d89f6850839471f609b5ef21b0d4ed0a5e 100644 (file)
@@ -445,10 +445,18 @@ static int i915_hws_info(struct seq_file *m, void *data)
        struct drm_info_node *node = (struct drm_info_node *) m->private;
        struct drm_device *dev = node->minor->dev;
        drm_i915_private_t *dev_priv = dev->dev_private;
-       int i;
+       struct intel_ring_buffer *ring;
        volatile u32 *hws;
+       int i;
+
+       switch ((uintptr_t)node->info_ent->data) {
+       case RENDER_RING: ring = &dev_priv->render_ring; break;
+       case BSD_RING: ring = &dev_priv->bsd_ring; break;
+       case BLT_RING: ring = &dev_priv->blt_ring; break;
+       default: return -EINVAL;
+       }
 
-       hws = (volatile u32 *)dev_priv->render_ring.status_page.page_addr;
+       hws = (volatile u32 *)ring->status_page.page_addr;
        if (hws == NULL)
                return 0;
 
@@ -1087,7 +1095,9 @@ static struct drm_info_list i915_debugfs_list[] = {
        {"i915_gem_seqno", i915_gem_seqno_info, 0},
        {"i915_gem_fence_regs", i915_gem_fence_regs_info, 0},
        {"i915_gem_interrupt", i915_interrupt_info, 0},
-       {"i915_gem_hws", i915_hws_info, 0},
+       {"i915_gem_hws", i915_hws_info, 0, (void *)RENDER_RING},
+       {"i915_gem_hws_blt", i915_hws_info, 0, (void *)BLT_RING},
+       {"i915_gem_hws_bsd", i915_hws_info, 0, (void *)BSD_RING},
        {"i915_ringbuffer_data", i915_ringbuffer_data, 0, (void *)RENDER_RING},
        {"i915_ringbuffer_info", i915_ringbuffer_info, 0, (void *)RENDER_RING},
        {"i915_bsd_ringbuffer_data", i915_ringbuffer_data, 0, (void *)BSD_RING},