linux/arch/arm/kvm
James Morse d2e1936884 KVM: arm: Restore banked registers and physical timer access on hyp_panic()
When KVM panics, it hurridly restores the host context and parachutes
into the host's panic() code. This looks like it was copied from arm64,
the 32bit KVM panic code needs to restore the host's banked registers
too.

At some point panic() touches the physical timer/counter, this will
trap back to HYP. If we're lucky, we panic again.

Add a __timer_save_state() call to KVMs hyp_panic() path, this saves the
guest registers and disables the traps for the host.

Fixes: c36b6db5f3 ("ARM: KVM: Add panic handling code")
Signed-off-by: James Morse <james.morse@arm.com>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Reviewed-by: Christoffer Dall <cdall@linaro.org>
Signed-off-by: Christoffer Dall <cdall@linaro.org>
2017-05-16 09:54:24 +02:00
..
hyp KVM: arm: Restore banked registers and physical timer access on hyp_panic() 2017-05-16 09:54:24 +02:00
coproc_a7.c arm/arm64: KVM: Use set/way op trapping to track the state of the caches 2015-01-29 23:24:56 +01:00
coproc_a15.c arm/arm64: KVM: Use set/way op trapping to track the state of the caches 2015-01-29 23:24:56 +01:00
coproc.c arm: KVM: Treat CP15 accessors returning false as successful 2017-04-09 07:49:17 -07:00
coproc.h arm: KVM: Make unexpected register accesses inject an undef 2017-04-09 07:49:16 -07:00
emulate.c arm: KVM: Add Virtual Abort injection helper 2016-09-08 12:53:00 +02:00
guest.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
handle_exit.c ARM: KVM: Gracefully handle hyp-stubs being restored from under our feet 2017-04-09 07:49:31 -07:00
init.S ARM: hyp-stub: Zero r0 on successful stub handling 2017-04-09 07:49:36 -07:00
interrupts.S ARM: hyp-stub/KVM: Kill __hyp_get_vectors 2017-04-09 07:49:34 -07:00
irq.h KVM: arm/arm64: Enable irqchip routing 2016-07-22 18:52:01 +01:00
Kconfig ARM: KVM: Support vGICv3 ITS 2016-11-14 10:32:54 +00:00
Makefile KVM: arm/arm64: Move shared files to virt/kvm/arm 2017-05-04 13:57:26 +02:00
reset.c KVM: arm/arm64: Initialize the emulated EL1 physical timer 2017-02-08 15:13:34 +00:00
trace.h KVM: arm/arm64: Move shared files to virt/kvm/arm 2017-05-04 13:57:26 +02:00
vgic-v3-coproc.c KVM: arm/arm64: vgic: Implement VGICv3 CPU interface access 2017-01-30 13:47:25 +00:00