qemu-e2k/target-mips
James Hogan eddedd546a target-mips: Ignore unassigned accesses with KVM
MIPS registers an unassigned access handler which raises a guest bus
error exception. However this causes QEMU to crash when KVM is enabled
as it isn't called from the main execution loop so longjmp() gets called
without a corresponding setjmp().

Until the KVM API can be updated to trigger a guest exception in
response to an MMIO exit, prevent the bus error exception being raised
from mips_cpu_unassigned_access() if KVM is enabled.

The check is at run time since the do_unassigned_access callback is
initialised before it is known whether KVM will be enabled.

The problem can be triggered with Malta emulation by making the guest
write to the reset region at physical address 0x1bf00000, since it is
marked read-only which is treated as unassigned for writes.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Cc: Christoffer Dall <christoffer.dall@linaro.org>
Cc: Sanjay Lal <sanjayl@kymasys.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2014-08-07 15:09:48 +02:00
..
Makefile.objs target-mips: Enable KVM support in build system 2014-06-18 16:59:37 +02:00
TODO target-mips: Change TODO file 2012-10-31 21:37:24 +01:00
cpu-qom.h softmmu: make do_unaligned_access a method of CPU 2014-06-05 16:10:31 +02:00
cpu.c target-mips: Call kvm_mips_reset_vcpu() from mips_cpu_reset() 2014-06-18 16:59:05 +02:00
cpu.h target-mips: implement UserLocal Register 2014-06-18 18:10:47 +02:00
dsp_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
gdbstub.c cpu: Introduce CPUClass::gdb_{read,write}_register() 2013-07-27 00:04:17 +02:00
helper.c target-mips: get_physical_address: Add KVM awareness 2014-06-18 16:58:37 +02:00
helper.h tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
kvm.c mips/kvm: Disable FPU on reset with KVM 2014-07-09 18:17:04 +02:00
kvm_mips.h target-mips: kvm: Add main KVM support for MIPS 2014-06-18 16:58:52 +02:00
lmi_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
machine.c target-mips: implement UserLocal Register 2014-06-18 18:10:47 +02:00
mips-defs.h target-mips: add CPU definition for MIPS32R5 2014-02-10 16:45:53 +01:00
op_helper.c target-mips: Ignore unassigned accesses with KVM 2014-08-07 15:09:48 +02:00
translate.c target-mips/translate.c: Free TCG in OPC_DINSV 2014-07-28 23:37:15 +02:00
translate_init.c target-mips: Avoid shifting left into sign bit 2014-03-27 19:22:49 +04:00