radv: dump UMR ring and waves into the hang report

Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3620
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7233>
This commit is contained in:
Samuel Pitoiset 2020-10-19 16:38:26 +02:00 committed by Marge Bot
parent 18477241c1
commit ef6d374307
1 changed files with 38 additions and 0 deletions

View File

@ -554,6 +554,42 @@ radv_dump_device_name(struct radv_device *device, FILE *f)
kernel_version);
}
static void
radv_dump_umr_ring(struct radv_queue *queue, FILE *f)
{
enum ring_type ring = radv_queue_family_to_ring(queue->queue_family_index);
struct radv_device *device = queue->device;
char cmd[128];
/* TODO: Dump compute ring. */
if (ring != RING_GFX)
return;
sprintf(cmd, "umr -R %s 2>&1",
device->physical_device->rad_info.chip_class >= GFX10 ? "gfx_0.0.0" : "gfx");
fprintf(f, "\nUMR GFX ring:\n\n");
radv_dump_cmd(cmd, f);
}
static void
radv_dump_umr_waves(struct radv_queue *queue, FILE *f)
{
enum ring_type ring = radv_queue_family_to_ring(queue->queue_family_index);
struct radv_device *device = queue->device;
char cmd[128];
/* TODO: Dump compute ring. */
if (ring != RING_GFX)
return;
sprintf(cmd, "umr -O bits,halt_waves -wa %s 2>&1",
device->physical_device->rad_info.chip_class >= GFX10 ? "gfx_0.0.0" : "gfx");
fprintf(f, "\nUMR GFX waves:\n\n");
radv_dump_cmd(cmd, f);
}
static bool
radv_gpu_hang_occured(struct radv_queue *queue, enum ring_type ring)
{
@ -590,6 +626,8 @@ radv_check_gpu_hangs(struct radv_queue *queue, struct radeon_cmdbuf *cs)
radv_dump_enabled_options(device, stderr);
radv_dump_dmesg(stderr);
radv_dump_umr_ring(queue, stderr);
radv_dump_umr_waves(queue, stderr);
if (vm_fault_occurred) {
fprintf(stderr, "VM fault report.\n\n");