diff options
author | Samuel Pitoiset <[email protected]> | 2019-07-07 19:32:29 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2019-07-08 09:10:57 +0200 |
commit | 49e5136887a063e5450f1fe9af2f9ea1a6ea1ea4 (patch) | |
tree | 12f40d60b2e8079c6fad136e8be7c32837ef1eaf /src/amd | |
parent | 4d118ad44a46cf3f9c2acee20849951692bb562d (diff) |
ac: select the GFX ring when halting waves with UMR on GFX10
GFX10 has two rings, so UMR want to know which one to halt.
Select the first one by default.
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd')
-rw-r--r-- | src/amd/common/ac_debug.c | 9 | ||||
-rw-r--r-- | src/amd/common/ac_debug.h | 3 | ||||
-rw-r--r-- | src/amd/vulkan/radv_debug.c | 3 |
3 files changed, 10 insertions, 5 deletions
diff --git a/src/amd/common/ac_debug.c b/src/amd/common/ac_debug.c index e4cb6a13a3a..1632106fdb9 100644 --- a/src/amd/common/ac_debug.c +++ b/src/amd/common/ac_debug.c @@ -769,12 +769,15 @@ static int compare_wave(const void *p1, const void *p2) } /* Return wave information. "waves" should be a large enough array. */ -unsigned ac_get_wave_info(struct ac_wave_info waves[AC_MAX_WAVES_PER_CHIP]) +unsigned ac_get_wave_info(enum chip_class chip_class, + struct ac_wave_info waves[AC_MAX_WAVES_PER_CHIP]) { - char line[2000]; + char line[2000], cmd[128]; unsigned num_waves = 0; - FILE *p = popen("umr -O halt_waves -wa", "r"); + sprintf(cmd, "umr -O halt_waves -wa %s", chip_class >= GFX10 ? "gfx_0.0.0" : "gfx"); + + FILE *p = popen(cmd, "r"); if (!p) return 0; diff --git a/src/amd/common/ac_debug.h b/src/amd/common/ac_debug.h index 23343fe1304..0d5c1dd9eac 100644 --- a/src/amd/common/ac_debug.h +++ b/src/amd/common/ac_debug.h @@ -64,6 +64,7 @@ void ac_parse_ib(FILE *f, uint32_t *ib, int num_dw, const int *trace_ids, bool ac_vm_fault_occured(enum chip_class chip_class, uint64_t *old_dmesg_timestamp, uint64_t *out_addr); -unsigned ac_get_wave_info(struct ac_wave_info waves[AC_MAX_WAVES_PER_CHIP]); +unsigned ac_get_wave_info(enum chip_class chip_class, + struct ac_wave_info waves[AC_MAX_WAVES_PER_CHIP]); #endif diff --git a/src/amd/vulkan/radv_debug.c b/src/amd/vulkan/radv_debug.c index 2f661c0208f..42296745543 100644 --- a/src/amd/vulkan/radv_debug.c +++ b/src/amd/vulkan/radv_debug.c @@ -445,7 +445,8 @@ radv_dump_annotated_shaders(struct radv_pipeline *pipeline, VkShaderStageFlagBits active_stages, FILE *f) { struct ac_wave_info waves[AC_MAX_WAVES_PER_CHIP]; - unsigned num_waves = ac_get_wave_info(waves); + enum chip_class chip_class = pipeline->device->physical_device->rad_info.chip_class; + unsigned num_waves = ac_get_wave_info(chip_class, waves); fprintf(f, COLOR_CYAN "The number of active waves = %u" COLOR_RESET "\n\n", num_waves); |