summaryrefslogtreecommitdiffstats
path: root/src/amd
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2019-07-07 19:32:29 +0200
committerSamuel Pitoiset <[email protected]>2019-07-08 09:10:57 +0200
commit49e5136887a063e5450f1fe9af2f9ea1a6ea1ea4 (patch)
tree12f40d60b2e8079c6fad136e8be7c32837ef1eaf /src/amd
parent4d118ad44a46cf3f9c2acee20849951692bb562d (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.c9
-rw-r--r--src/amd/common/ac_debug.h3
-rw-r--r--src/amd/vulkan/radv_debug.c3
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);