radeonsi: pass -O halt_waves to umr for hang debugging
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Thu, 18 Jan 2018 15:04:15 +0000 (16:04 +0100)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Wed, 11 Apr 2018 10:44:24 +0000 (12:44 +0200)
This will give us meaningful wave information in the case of a hang where
shaders are still running in an infinite loop.

Note that we call umr multiple times for different sections of the ddebug
hang dump, and so the wave information will not necessarily match up
between sections.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/amd/common/ac_debug.c
src/gallium/drivers/radeonsi/si_debug.c

index 7f43437aa958cde231784bd8931f46b75714bf16..3b15398a2a294d266a601801faf8c02e258c2288 100644 (file)
@@ -761,7 +761,7 @@ unsigned ac_get_wave_info(struct ac_wave_info waves[AC_MAX_WAVES_PER_CHIP])
        char line[2000];
        unsigned num_waves = 0;
 
-       FILE *p = popen("umr -wa", "r");
+       FILE *p = popen("umr -O halt_waves -wa", "r");
        if (!p)
                return 0;
 
index 00e0722c82155da1eab1dbd384c79731d460d896..69d20c1efec9c549808befd4bb50fca47eae6c9d 100644 (file)
@@ -1051,8 +1051,8 @@ static void si_dump_debug_state(struct pipe_context *ctx, FILE *f,
                si_dump_debug_registers(sctx, f);
 
                si_dump_annotated_shaders(sctx, f);
-               si_dump_command("Active waves (raw data)", "umr -wa | column -t", f);
-               si_dump_command("Wave information", "umr -O bits -wa", f);
+               si_dump_command("Active waves (raw data)", "umr -O halt_waves -wa | column -t", f);
+               si_dump_command("Wave information", "umr -O halt_waves,bits -wa", f);
        }
 }