From 9516f9369e4e9f16748afff81c02b9f225c0f124 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 20 Oct 2020 11:40:09 +0200 Subject: [PATCH] radv: re-order GPU hang report dumps by usefulness In case the GPU recover, it's probably better to dump useful info first. Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/radv_debug.c | 64 ++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/amd/vulkan/radv_debug.c b/src/amd/vulkan/radv_debug.c index 48727f4ee80..c5ab5387a80 100644 --- a/src/amd/vulkan/radv_debug.c +++ b/src/amd/vulkan/radv_debug.c @@ -638,6 +638,38 @@ radv_check_gpu_hangs(struct radv_queue *queue, struct radeon_cmdbuf *cs) abort(); } + /* Dump pipeline state. */ + snprintf(dump_path, sizeof(dump_path), "%s/%s", dump_dir, "pipeline.log"); + f = fopen(dump_path, "w+"); + if (f) { + radv_dump_queue_state(queue, f); + fclose(f); + } + + /* Dump UMR ring. */ + snprintf(dump_path, sizeof(dump_path), "%s/%s", dump_dir, "umr_ring.log"); + f = fopen(dump_path, "w+"); + if (f) { + radv_dump_umr_ring(queue, f); + fclose(f); + } + + /* Dump UMR waves. */ + snprintf(dump_path, sizeof(dump_path), "%s/%s", dump_dir, "umr_waves.log"); + f = fopen(dump_path, "w+"); + if (f) { + radv_dump_umr_waves(queue, f); + fclose(f); + } + + /* Dump debug registers. */ + snprintf(dump_path, sizeof(dump_path), "%s/%s", dump_dir, "registers.log"); + f = fopen(dump_path, "w+"); + if (f) { + radv_dump_debug_registers(device, f); + fclose(f); + } + /* Dump VM fault info. */ if (vm_fault_occurred) { snprintf(dump_path, sizeof(dump_path), "%s/%s", dump_dir, "vm_fault.log"); @@ -674,38 +706,6 @@ radv_check_gpu_hangs(struct radv_queue *queue, struct radeon_cmdbuf *cs) fclose(f); } - /* Dump UMR ring. */ - snprintf(dump_path, sizeof(dump_path), "%s/%s", dump_dir, "umr_ring.log"); - f = fopen(dump_path, "w+"); - if (f) { - radv_dump_umr_ring(queue, f); - fclose(f); - } - - /* Dump UMR waves. */ - snprintf(dump_path, sizeof(dump_path), "%s/%s", dump_dir, "umr_waves.log"); - f = fopen(dump_path, "w+"); - if (f) { - radv_dump_umr_waves(queue, f); - fclose(f); - } - - /* Dump debug registers. */ - snprintf(dump_path, sizeof(dump_path), "%s/%s", dump_dir, "registers.log"); - f = fopen(dump_path, "w+"); - if (f) { - radv_dump_debug_registers(device, f); - fclose(f); - } - - /* Dump pipeline state. */ - snprintf(dump_path, sizeof(dump_path), "%s/%s", dump_dir, "pipeline.log"); - f = fopen(dump_path, "w+"); - if (f) { - radv_dump_queue_state(queue, f); - fclose(f); - } - fprintf(stderr, "radv: GPU hang report saved to '%s'!\n", dump_dir); abort(); }