[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 19/26] hw/intc/arm_gicv3_its: Don't use data if reading command f
From: |
Peter Maydell |
Subject: |
[PATCH 19/26] hw/intc/arm_gicv3_its: Don't use data if reading command failed |
Date: |
Sat, 11 Dec 2021 19:11:28 +0000 |
In process_cmdq(), we read 64 bits of the command packet, which
contain the command identifier, which we then switch() on to dispatch
to an appropriate sub-function. However, if address_space_ldq_le()
reports a memory transaction failure, we still read the command
identifier out of the data and switch() on it. Restructure the code
so that we stop immediately (stalling the command queue) in this
case.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
hw/intc/arm_gicv3_its.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/hw/intc/arm_gicv3_its.c b/hw/intc/arm_gicv3_its.c
index 32cf18c10af..f3eba92946d 100644
--- a/hw/intc/arm_gicv3_its.c
+++ b/hw/intc/arm_gicv3_its.c
@@ -670,8 +670,13 @@ static void process_cmdq(GICv3ITSState *s)
data = address_space_ldq_le(as, s->cq.base_addr + cq_offset,
MEMTXATTRS_UNSPECIFIED, &res);
if (res != MEMTX_OK) {
- result = false;
+ s->creadr = FIELD_DP64(s->creadr, GITS_CREADR, STALLED, 1);
+ qemu_log_mask(LOG_GUEST_ERROR,
+ "%s: could not read command at 0x%" PRIx64 "\n",
+ __func__, s->cq.base_addr + cq_offset);
+ break;
}
+
cmd = (data & CMD_MASK);
switch (cmd) {
--
2.25.1
- [PATCH 25/26] hw/intc/arm_gicv3_its: Fix return codes in process_mapd(), (continued)
- [PATCH 25/26] hw/intc/arm_gicv3_its: Fix return codes in process_mapd(), Peter Maydell, 2021/12/11
- [PATCH 16/26] hw/intc/arm_gicv3_its: Fix event ID bounds checks, Peter Maydell, 2021/12/11
- [PATCH 18/26] hw/intc/arm_gicv3_its: Fix handling of process_its_cmd() return value, Peter Maydell, 2021/12/11
- [PATCH 19/26] hw/intc/arm_gicv3_its: Don't use data if reading command failed,
Peter Maydell <=
- [PATCH 22/26] hw/intc/arm_gicv3_its: Refactor process_its_cmd() to reduce nesting, Peter Maydell, 2021/12/11
- [PATCH 23/26] hw/intc/arm_gicv3_its: Fix return codes in process_mapti(), Peter Maydell, 2021/12/11