linux/arch/arm64/kvm
Marc Zyngier 8fc153cda9 arm64: KVM: Fix AArch64 guest userspace exception injection
At the moment, our fault injection is pretty limited. We always
generate a SYNC exception into EL1, as if the fault was actually
from EL1h, no matter how it was generated.

This is obviously wrong, as EL0 can generate faults of its own
(not to mention the pretty-much unused EL1t mode).

This patch fixes it by implementing section D1.10.2 of the ARMv8 ARM,
and in particular table D1-7 ("Vector offsets from vector table base
address"), which describes which vector to use depending on the source
exception level and type (synchronous, IRQ, FIQ or SError).

Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Tested-by: Shannon Zhao <shannon.zhao@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
2016-01-24 21:55:57 +00:00
..
hyp arm64: KVM: Remove weak attributes 2015-12-14 11:30:44 +00:00
debug.c KVM: arm64: add trace points for guest_debug debug 2015-07-21 12:50:43 +01:00
emulate.c arm64: kvm: move to ESR_ELx macros 2015-01-15 12:24:25 +00:00
guest.c arm64: KVM: Turn system register numbers to an enum 2015-12-14 11:30:43 +00:00
handle_exit.c arm64: KVM: Turn system register numbers to an enum 2015-12-14 11:30:43 +00:00
hyp-init.S arm64: KVM: Add support for 16-bit VMID 2015-12-18 10:15:12 +00:00
hyp.S arm64: KVM: Move away from the assembly version of the world switch 2015-12-14 11:30:43 +00:00
inject_fault.c arm64: KVM: Fix AArch64 guest userspace exception injection 2016-01-24 21:55:57 +00:00
Kconfig s390: A bunch of fixes and optimizations for interrupt and time 2015-11-05 16:26:26 -08:00
Makefile arm64: KVM: Move away from the assembly version of the world switch 2015-12-14 11:30:43 +00:00
regmap.c arm64: KVM: 32bit GP register access 2013-06-12 16:42:14 +01:00
reset.c arm64/kvm: Make use of the system wide safe values 2015-10-21 15:35:59 +01:00
sys_regs_generic_v8.c arm64: KVM: Correctly handle zero register in system register accesses 2015-12-04 16:29:54 +00:00
sys_regs.c arm64: KVM: debug: Remove spurious inline attributes 2015-12-18 10:15:11 +00:00
sys_regs.h arm64: KVM: Correctly handle zero register in system register accesses 2015-12-04 16:29:54 +00:00
trace.h KVM: arm64: add trace points for guest_debug debug 2015-07-21 12:50:43 +01:00