From: Tao Tang <[email protected]>
Add a STAGE1_SUPPORTED check in the CMD_CFGI_CD and CMD_CFGI_CD_ALL path
and return CERROR_ILL when stage-1 translation is not implemented,
matching the architecture requirement (IHI 0070G.b, page 176).
Fixes: 32cfd7f39e08 ("hw/arm/smmuv3: Cache/invalidate config data")
Signed-off-by: Tao Tang <[email protected]>
Reviewed-by: Pierrick Bouvier <[email protected]>
Reviewed-by: Mostafa Saleh <[email protected]>
Reviewed-by: Eric Auger <[email protected]>
Message-id: [email protected]
Links:
https://lore.kernel.org/qemu-devel/[email protected]/
Signed-off-by: Peter Maydell <[email protected]>
---
hw/arm/smmuv3.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
index af7a54143f..068108e49b 100644
--- a/hw/arm/smmuv3.c
+++ b/hw/arm/smmuv3.c
@@ -1407,6 +1407,15 @@ static int smmuv3_cmdq_consume(SMMUv3State *s, Error
**errp)
break;
}
+ /*
+ * This command raises CERROR_ILL when stage 1 is not implemented
+ * according to (IHI 0070G.b) Page 176.
+ */
+ if (!STAGE1_SUPPORTED(s)) {
+ cmd_error = SMMU_CERROR_ILL;
+ break;
+ }
+
trace_smmuv3_cmdq_cfgi_cd(sid);
smmuv3_flush_config(sdev);
if (!smmuv3_accel_issue_inv_cmd(s, &cmd, sdev, errp)) {
--
2.43.0