diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_debugfs.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 75 |
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}, |