aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_debugfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_debugfs.c')
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c75
1 files changed, 30 insertions, 45 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 3c9d4b876865..aedb02157474 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -339,10 +339,10 @@ static int i915_gem_request_info(struct seq_file *m, void *data)
339 return ret; 339 return ret;
340 340
341 count = 0; 341 count = 0;
342 if (!list_empty(&dev_priv->render_ring.request_list)) { 342 if (!list_empty(&dev_priv->ring[RCS].request_list)) {
343 seq_printf(m, "Render requests:\n"); 343 seq_printf(m, "Render requests:\n");
344 list_for_each_entry(gem_request, 344 list_for_each_entry(gem_request,
345 &dev_priv->render_ring.request_list, 345 &dev_priv->ring[RCS].request_list,
346 list) { 346 list) {
347 seq_printf(m, " %d @ %d\n", 347 seq_printf(m, " %d @ %d\n",
348 gem_request->seqno, 348 gem_request->seqno,
@@ -350,10 +350,10 @@ static int i915_gem_request_info(struct seq_file *m, void *data)
350 } 350 }
351 count++; 351 count++;
352 } 352 }
353 if (!list_empty(&dev_priv->bsd_ring.request_list)) { 353 if (!list_empty(&dev_priv->ring[VCS].request_list)) {
354 seq_printf(m, "BSD requests:\n"); 354 seq_printf(m, "BSD requests:\n");
355 list_for_each_entry(gem_request, 355 list_for_each_entry(gem_request,
356 &dev_priv->bsd_ring.request_list, 356 &dev_priv->ring[VCS].request_list,
357 list) { 357 list) {
358 seq_printf(m, " %d @ %d\n", 358 seq_printf(m, " %d @ %d\n",
359 gem_request->seqno, 359 gem_request->seqno,
@@ -361,10 +361,10 @@ static int i915_gem_request_info(struct seq_file *m, void *data)
361 } 361 }
362 count++; 362 count++;
363 } 363 }
364 if (!list_empty(&dev_priv->blt_ring.request_list)) { 364 if (!list_empty(&dev_priv->ring[BCS].request_list)) {
365 seq_printf(m, "BLT requests:\n"); 365 seq_printf(m, "BLT requests:\n");
366 list_for_each_entry(gem_request, 366 list_for_each_entry(gem_request,
367 &dev_priv->blt_ring.request_list, 367 &dev_priv->ring[BCS].request_list,
368 list) { 368 list) {
369 seq_printf(m, " %d @ %d\n", 369 seq_printf(m, " %d @ %d\n",
370 gem_request->seqno, 370 gem_request->seqno,
@@ -398,15 +398,14 @@ static int i915_gem_seqno_info(struct seq_file *m, void *data)
398 struct drm_info_node *node = (struct drm_info_node *) m->private; 398 struct drm_info_node *node = (struct drm_info_node *) m->private;
399 struct drm_device *dev = node->minor->dev; 399 struct drm_device *dev = node->minor->dev;
400 drm_i915_private_t *dev_priv = dev->dev_private; 400 drm_i915_private_t *dev_priv = dev->dev_private;
401 int ret; 401 int ret, i;
402 402
403 ret = mutex_lock_interruptible(&dev->struct_mutex); 403 ret = mutex_lock_interruptible(&dev->struct_mutex);
404 if (ret) 404 if (ret)
405 return ret; 405 return ret;
406 406
407 i915_ring_seqno_info(m, &dev_priv->render_ring); 407 for (i = 0; i < I915_NUM_RINGS; i++)
408 i915_ring_seqno_info(m, &dev_priv->bsd_ring); 408 i915_ring_seqno_info(m, &dev_priv->ring[i]);
409 i915_ring_seqno_info(m, &dev_priv->blt_ring);
410 409
411 mutex_unlock(&dev->struct_mutex); 410 mutex_unlock(&dev->struct_mutex);
412 411
@@ -419,7 +418,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
419 struct drm_info_node *node = (struct drm_info_node *) m->private; 418 struct drm_info_node *node = (struct drm_info_node *) m->private;
420 struct drm_device *dev = node->minor->dev; 419 struct drm_device *dev = node->minor->dev;
421 drm_i915_private_t *dev_priv = dev->dev_private; 420 drm_i915_private_t *dev_priv = dev->dev_private;
422 int ret; 421 int ret, i;
423 422
424 ret = mutex_lock_interruptible(&dev->struct_mutex); 423 ret = mutex_lock_interruptible(&dev->struct_mutex);
425 if (ret) 424 if (ret)
@@ -458,9 +457,8 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
458 } 457 }
459 seq_printf(m, "Interrupts received: %d\n", 458 seq_printf(m, "Interrupts received: %d\n",
460 atomic_read(&dev_priv->irq_received)); 459 atomic_read(&dev_priv->irq_received));
461 i915_ring_seqno_info(m, &dev_priv->render_ring); 460 for (i = 0; i < I915_NUM_RINGS; i++)
462 i915_ring_seqno_info(m, &dev_priv->bsd_ring); 461 i915_ring_seqno_info(m, &dev_priv->ring[i]);
463 i915_ring_seqno_info(m, &dev_priv->blt_ring);
464 mutex_unlock(&dev->struct_mutex); 462 mutex_unlock(&dev->struct_mutex);
465 463
466 return 0; 464 return 0;
@@ -503,13 +501,7 @@ static int i915_hws_info(struct seq_file *m, void *data)
503 volatile u32 *hws; 501 volatile u32 *hws;
504 int i; 502 int i;
505 503
506 switch ((uintptr_t)node->info_ent->data) { 504 ring = &dev_priv->ring[(uintptr_t)node->info_ent->data];
507 case RING_RENDER: ring = &dev_priv->render_ring; break;
508 case RING_BSD: ring = &dev_priv->bsd_ring; break;
509 case RING_BLT: ring = &dev_priv->blt_ring; break;
510 default: return -EINVAL;
511 }
512
513 hws = (volatile u32 *)ring->status_page.page_addr; 505 hws = (volatile u32 *)ring->status_page.page_addr;
514 if (hws == NULL) 506 if (hws == NULL)
515 return 0; 507 return 0;
@@ -569,17 +561,11 @@ static int i915_ringbuffer_data(struct seq_file *m, void *data)
569 struct intel_ring_buffer *ring; 561 struct intel_ring_buffer *ring;
570 int ret; 562 int ret;
571 563
572 switch ((uintptr_t)node->info_ent->data) {
573 case RING_RENDER: ring = &dev_priv->render_ring; break;
574 case RING_BSD: ring = &dev_priv->bsd_ring; break;
575 case RING_BLT: ring = &dev_priv->blt_ring; break;
576 default: return -EINVAL;
577 }
578
579 ret = mutex_lock_interruptible(&dev->struct_mutex); 564 ret = mutex_lock_interruptible(&dev->struct_mutex);
580 if (ret) 565 if (ret)
581 return ret; 566 return ret;
582 567
568 ring = &dev_priv->ring[(uintptr_t)node->info_ent->data];
583 if (!ring->obj) { 569 if (!ring->obj) {
584 seq_printf(m, "No ringbuffer setup\n"); 570 seq_printf(m, "No ringbuffer setup\n");
585 } else { 571 } else {
@@ -603,21 +589,20 @@ static int i915_ringbuffer_info(struct seq_file *m, void *data)
603 drm_i915_private_t *dev_priv = dev->dev_private; 589 drm_i915_private_t *dev_priv = dev->dev_private;
604 struct intel_ring_buffer *ring; 590 struct intel_ring_buffer *ring;
605 591
606 switch ((uintptr_t)node->info_ent->data) { 592 ring = &dev_priv->ring[(uintptr_t)node->info_ent->data];
607 case RING_RENDER: ring = &dev_priv->render_ring; break;
608 case RING_BSD: ring = &dev_priv->bsd_ring; break;
609 case RING_BLT: ring = &dev_priv->blt_ring; break;
610 default: return -EINVAL;
611 }
612
613 if (ring->size == 0) 593 if (ring->size == 0)
614 return 0; 594 return 0;
615 595
616 seq_printf(m, "Ring %s:\n", ring->name); 596 seq_printf(m, "Ring %s:\n", ring->name);
617 seq_printf(m, " Head : %08x\n", I915_READ_HEAD(ring) & HEAD_ADDR); 597 seq_printf(m, " Head : %08x\n", I915_READ_HEAD(ring) & HEAD_ADDR);
618 seq_printf(m, " Tail : %08x\n", I915_READ_TAIL(ring) & TAIL_ADDR); 598 seq_printf(m, " Tail : %08x\n", I915_READ_TAIL(ring) & TAIL_ADDR);
619 seq_printf(m, " Size : %08x\n", ring->size); 599 seq_printf(m, " Size : %08x\n", ring->size);
620 seq_printf(m, " Active : %08x\n", intel_ring_get_active_head(ring)); 600 seq_printf(m, " Active : %08x\n", intel_ring_get_active_head(ring));
601 seq_printf(m, " NOPID : %08x\n", I915_READ_NOPID(ring));
602 if (IS_GEN6(dev)) {
603 seq_printf(m, " Sync 0 : %08x\n", I915_READ_SYNC_0(ring));
604 seq_printf(m, " Sync 1 : %08x\n", I915_READ_SYNC_1(ring));
605 }
621 seq_printf(m, " Control : %08x\n", I915_READ_CTL(ring)); 606 seq_printf(m, " Control : %08x\n", I915_READ_CTL(ring));
622 seq_printf(m, " Start : %08x\n", I915_READ_START(ring)); 607 seq_printf(m, " Start : %08x\n", I915_READ_START(ring));
623 608
@@ -1177,15 +1162,15 @@ static struct drm_info_list i915_debugfs_list[] = {
1177 {"i915_gem_seqno", i915_gem_seqno_info, 0}, 1162 {"i915_gem_seqno", i915_gem_seqno_info, 0},
1178 {"i915_gem_fence_regs", i915_gem_fence_regs_info, 0}, 1163 {"i915_gem_fence_regs", i915_gem_fence_regs_info, 0},
1179 {"i915_gem_interrupt", i915_interrupt_info, 0}, 1164 {"i915_gem_interrupt", i915_interrupt_info, 0},
1180 {"i915_gem_hws", i915_hws_info, 0, (void *)RING_RENDER}, 1165 {"i915_gem_hws", i915_hws_info, 0, (void *)RCS},
1181 {"i915_gem_hws_blt", i915_hws_info, 0, (void *)RING_BLT}, 1166 {"i915_gem_hws_blt", i915_hws_info, 0, (void *)BCS},
1182 {"i915_gem_hws_bsd", i915_hws_info, 0, (void *)RING_BSD}, 1167 {"i915_gem_hws_bsd", i915_hws_info, 0, (void *)VCS},
1183 {"i915_ringbuffer_data", i915_ringbuffer_data, 0, (void *)RING_RENDER}, 1168 {"i915_ringbuffer_data", i915_ringbuffer_data, 0, (void *)RCS},
1184 {"i915_ringbuffer_info", i915_ringbuffer_info, 0, (void *)RING_RENDER}, 1169 {"i915_ringbuffer_info", i915_ringbuffer_info, 0, (void *)RCS},
1185 {"i915_bsd_ringbuffer_data", i915_ringbuffer_data, 0, (void *)RING_BSD}, 1170 {"i915_bsd_ringbuffer_data", i915_ringbuffer_data, 0, (void *)VCS},
1186 {"i915_bsd_ringbuffer_info", i915_ringbuffer_info, 0, (void *)RING_BSD}, 1171 {"i915_bsd_ringbuffer_info", i915_ringbuffer_info, 0, (void *)VCS},
1187 {"i915_blt_ringbuffer_data", i915_ringbuffer_data, 0, (void *)RING_BLT}, 1172 {"i915_blt_ringbuffer_data", i915_ringbuffer_data, 0, (void *)BCS},
1188 {"i915_blt_ringbuffer_info", i915_ringbuffer_info, 0, (void *)RING_BLT}, 1173 {"i915_blt_ringbuffer_info", i915_ringbuffer_info, 0, (void *)BCS},
1189 {"i915_batchbuffers", i915_batchbuffer_info, 0}, 1174 {"i915_batchbuffers", i915_batchbuffer_info, 0},
1190 {"i915_error_state", i915_error_state, 0}, 1175 {"i915_error_state", i915_error_state, 0},
1191 {"i915_rstdby_delays", i915_rstdby_delays, 0}, 1176 {"i915_rstdby_delays", i915_rstdby_delays, 0},