[Mesa-dev] [PATCH] radeonsi: fix crashing performance counters (division by zero)

Marek Olšák maraeo at gmail.com
Sat Jan 26 01:40:28 UTC 2019


From: Marek Olšák <marek.olsak at amd.com>

Fixes: e2b9329f17 "radeonsi: move remaining perfcounter code into si_perfcounter.c"
---
 src/gallium/drivers/radeonsi/si_perfcounter.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_perfcounter.c b/src/gallium/drivers/radeonsi/si_perfcounter.c
index 2da14f8868f..d55394f2cba 100644
--- a/src/gallium/drivers/radeonsi/si_perfcounter.c
+++ b/src/gallium/drivers/radeonsi/si_perfcounter.c
@@ -1326,21 +1326,21 @@ void si_init_perfcounters(struct si_screen *screen)
 	pc->separate_instance = debug_get_bool_option("RADEON_PC_SEPARATE_INSTANCE", false);
 
 	pc->blocks = CALLOC(num_blocks, sizeof(struct si_pc_block));
 	if (!pc->blocks)
 		goto error;
 	pc->num_blocks = num_blocks;
 
 	for (i = 0; i < num_blocks; ++i) {
 		struct si_pc_block *block = &pc->blocks[i];
 		block->b = &blocks[i];
-		block->num_instances = block->b->instances;
+		block->num_instances = MAX2(1, block->b->instances);
 
 		if (!strcmp(block->b->b->name, "CB") ||
 		    !strcmp(block->b->b->name, "DB"))
 			block->num_instances = screen->info.max_se;
 		else if (!strcmp(block->b->b->name, "TCC"))
 			block->num_instances = screen->info.num_tcc_blocks;
 		else if (!strcmp(block->b->b->name, "IA"))
 			block->num_instances = MAX2(1, screen->info.max_se / 2);
 
 		if (si_pc_block_has_per_instance_groups(pc, block)) {
-- 
2.17.1



More information about the mesa-dev mailing list