summaryrefslogtreecommitdiffstats
path: root/target/arm/cpu.h
diff options
context:
space:
mode:
authorBeata Michalska2020-07-03 17:59:42 +0200
committerPeter Maydell2020-07-03 17:59:42 +0200
commit1711bfa5f5b2b108901813f57246c9ff4a44a50f (patch)
tree445b909cd5b4a075fc14b94175b274b3266703cc /target/arm/cpu.h
parenttarget/arm: kvm: Handle DABT with no valid ISS (diff)
downloadqemu-1711bfa5f5b2b108901813f57246c9ff4a44a50f.tar.gz
qemu-1711bfa5f5b2b108901813f57246c9ff4a44a50f.tar.xz
qemu-1711bfa5f5b2b108901813f57246c9ff4a44a50f.zip
target/arm: kvm: Handle misconfigured dabt injection
Injecting external data abort through KVM might trigger an issue on kernels that do not get updated to include the KVM fix. For those and aarch32 guests, the injected abort gets misconfigured to be an implementation defined exception. This leads to the guest repeatedly re-running the faulting instruction. Add support for handling that case. [ Fixed-by: 018f22f95e8a ('KVM: arm: Fix DFSR setting for non-LPAE aarch32 guests') Fixed-by: 21aecdbd7f3a ('KVM: arm: Make inject_abt32() inject an external abort instead') ] Signed-off-by: Beata Michalska <beata.michalska@linaro.org> Acked-by: Andrew Jones <drjones@redhat.com> Message-id: 20200629114110.30723-3-beata.michalska@linaro.org Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target/arm/cpu.h')
-rw-r--r--target/arm/cpu.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/target/arm/cpu.h b/target/arm/cpu.h
index cf99dcca9f..9e8ed423ea 100644
--- a/target/arm/cpu.h
+++ b/target/arm/cpu.h
@@ -573,6 +573,8 @@ typedef struct CPUARMState {
uint64_t esr;
} serror;
+ uint8_t ext_dabt_raised; /* Tracking/verifying injection of ext DABT */
+
/* State of our input IRQ/FIQ/VIRQ/VFIQ lines */
uint32_t irq_line_state;