radv: re-order GPU hang report dumps by usefulness
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 20 Oct 2020 09:40:09 +0000 (11:40 +0200)
committerMarge Bot <eric+marge@anholt.net>
Fri, 23 Oct 2020 07:35:00 +0000 (07:35 +0000)
In case the GPU recover, it's probably better to dump useful info
first.

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>

src/amd/vulkan/radv_debug.c

index 48727f4..c5ab538 100644 (file)
@@ -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();
 }