From f6504f64e853809bde997a761cca16a693512175 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Mon, 22 Nov 2021 12:23:13 +0100 Subject: broadcom/compiler: don't allow RF writes from signals after thrend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Writes to physical registers are not allowed after thread end. We were checking this for ALU writes, but we need to check it for signal writes too. Reviewed-by: Alejandro PiƱeiro (cherry picked from commit bd7584c16bc56fdcb3a7a720c9a857e158f699d2) Part-of: --- .pick_status.json | 2 +- src/broadcom/compiler/qpu_schedule.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 5cf866f299c..75174b7e574 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1561,7 +1561,7 @@ "description": "broadcom/compiler: don't allow RF writes from signals after thrend", "nominated": false, "nomination_type": null, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/broadcom/compiler/qpu_schedule.c b/src/broadcom/compiler/qpu_schedule.c index c559814b9ea..afab1641600 100644 --- a/src/broadcom/compiler/qpu_schedule.c +++ b/src/broadcom/compiler/qpu_schedule.c @@ -1490,6 +1490,11 @@ qpu_inst_valid_in_thrend_slot(struct v3d_compile *c, return false; } + if (v3d_qpu_sig_writes_address(c->devinfo, &inst->sig) && + !inst->sig_magic) { + return false; + } + if (c->devinfo->ver < 40 && inst->alu.add.op == V3D_QPU_A_SETMSF) return false; -- cgit v1.2.3