target/arm: kvm: Handle misconfigured dabt injection
commit1711bfa5f5b2b108901813f57246c9ff4a44a50f
authorBeata Michalska <beata.michalska@linaro.org>
Fri, 3 Jul 2020 15:59:42 +0000 (3 16:59 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 3 Jul 2020 15:59:42 +0000 (3 16:59 +0100)
tree445b909cd5b4a075fc14b94175b274b3266703cc
parent694bcaa81f41b7fc5e07273debe1dc309b3dcf03
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>
target/arm/cpu.h
target/arm/kvm.c
target/arm/kvm32.c
target/arm/kvm64.c
target/arm/kvm_arm.h