From b41edee879e33a8490230b771c955e7a5b0c99d3 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Wed, 24 Feb 2021 11:22:16 +0100 Subject: [PATCH] broadcom/compiler: fix DAG pre-remove for merged instructions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When selecting an instruction to merge, we want to pre-remove that instruction from the DAG, not the one we are merging it in, which we had already pre-removed right before. The reason this was not causing problems before is that the consequence of this bug is we will choose the same instruction again in the merge loop and trying to merge that instruction twice will fail and we would break out of the merge loop and move on. Reviewed-by: Alejandro PiƱeiro Part-of: --- src/broadcom/compiler/qpu_schedule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/broadcom/compiler/qpu_schedule.c b/src/broadcom/compiler/qpu_schedule.c index 10ee1a33e30..4d23a80c15a 100644 --- a/src/broadcom/compiler/qpu_schedule.c +++ b/src/broadcom/compiler/qpu_schedule.c @@ -1512,7 +1512,7 @@ schedule_instructions(struct v3d_compile *c, scoreboard, chosen))) { time = MAX2(merge->unblocked_time, time); - pre_remove_head(scoreboard->dag, chosen); + pre_remove_head(scoreboard->dag, merge); list_addtail(&merge->link, &merged_list); (void)qpu_merge_inst(devinfo, inst, inst, &merge->inst->qpu);