]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: arm64: Rework hyp_panic for VHE and non-VHE
authorChristoffer Dall <christoffer.dall@linaro.org>
Mon, 9 Oct 2017 19:43:50 +0000 (21:43 +0200)
committerMarc Zyngier <marc.zyngier@arm.com>
Mon, 19 Mar 2018 10:53:10 +0000 (10:53 +0000)
commita4d4e2d1f480dba96ec238312c890b40c092465c
treed151eaca18df587f527086602797eb2d9820f42e
parentd8ed07f7bdcaa1daba431c21ba02647eafffa01e
KVM: arm64: Rework hyp_panic for VHE and non-VHE

VHE actually doesn't rely on clearing the VTTBR when returning to the
host kernel, and that is the current key mechanism of hyp_panic to
figure out how to attempt to return to a state good enough to print a
panic statement.

Therefore, we split the hyp_panic function into two functions, a VHE and
a non-VHE, keeping the non-VHE version intact, but changing the VHE
behavior.

The vttbr_el2 check on VHE doesn't really make that much sense, because
the only situation where we can get here on VHE is when the hypervisor
assembly code actually called into hyp_panic, which only happens when
VBAR_EL2 has been set to the KVM exception vectors.  On VHE, we can
always safely disable the traps and restore the host registers at this
point, so we simply do that unconditionally and call into the panic
function directly.

Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
arch/arm64/kvm/hyp/switch.c