]> git.proxmox.com Git - mirror_qemu.git/commitdiff
hw/intc/arm_gic: reserved register addresses are RAZ/WI
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 11 Jan 2018 13:25:40 +0000 (13:25 +0000)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Thu, 11 Jan 2018 21:10:57 +0000 (15:10 -0600)
The GICv2 specification says that reserved register addresses
must RAZ/WI; now that we implement external abort handling
for Arm CPUs this means we must return MEMTX_OK rather than
MEMTX_ERROR, to avoid generating a spurious guest data abort.

Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1513183941-24300-3-git-send-email-peter.maydell@linaro.org
Reviewed-by: Alistair Francis <alistair.francis@xilinx.com>
(cherry picked from commit 0cf09852015e47a5fbb974ff7ac320366afd21ee)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
hw/intc/arm_gic.c

index 5a0e2a3c1abcce71f8ee34e4fa716a5fc5262d84..d701e49ff98fa506939cf84bc5fc58ca57f37d7c 100644 (file)
@@ -1261,7 +1261,8 @@ static MemTxResult gic_cpu_read(GICState *s, int cpu, int offset,
     default:
         qemu_log_mask(LOG_GUEST_ERROR,
                       "gic_cpu_read: Bad offset %x\n", (int)offset);
-        return MEMTX_ERROR;
+        *data = 0;
+        break;
     }
     return MEMTX_OK;
 }
@@ -1329,7 +1330,7 @@ static MemTxResult gic_cpu_write(GICState *s, int cpu, int offset,
     default:
         qemu_log_mask(LOG_GUEST_ERROR,
                       "gic_cpu_write: Bad offset %x\n", (int)offset);
-        return MEMTX_ERROR;
+        return MEMTX_OK;
     }
     gic_update(s);
     return MEMTX_OK;