• Christoffer Dall's avatar
    KVM: arm64: Rework hyp_panic for VHE and non-VHE · 8f17f5e4
    Christoffer Dall authored
    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: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Reviewed-by: default avatarAndrew Jones <drjones@redhat.com>
    Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    8f17f5e4
switch.c 13.1 KB