FROMGIT: KVM: arm64: Introduce print_nvhe_hyp_panic helper

Add a helper to display a panic banner soon to also be used for kCFI
failures, to ensure that we remain consistent.

Bug: 278010198
Bug: 278749606
(cherry picked from commit 8f3873a395
 https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git )
Change-Id: I7eff49dfbd97472206564bc9dce48ea8eb1cc9ef
Signed-off-by: Pierre-Clément Tosi <ptosi@google.com>
Acked-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20240610063244.2828978-8-ptosi@google.com
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
This commit is contained in:
Pierre-Clément Tosi 2024-06-10 07:32:36 +01:00 committed by Will Deacon
parent ad4668a0b4
commit f3cc12e6b9

View File

@ -469,6 +469,12 @@ void handle_exit_early(struct kvm_vcpu *vcpu, int exception_index)
kvm_handle_guest_serror(vcpu, kvm_vcpu_get_esr(vcpu)); kvm_handle_guest_serror(vcpu, kvm_vcpu_get_esr(vcpu));
} }
static void print_nvhe_hyp_panic(const char *name, u64 panic_addr)
{
kvm_err("nVHE hyp %s at: [<%016llx>] %pB!\n", name, panic_addr,
(void *)(panic_addr + kaslr_offset()));
}
void __noreturn __cold nvhe_hyp_panic_handler(u64 esr, u64 spsr, void __noreturn __cold nvhe_hyp_panic_handler(u64 esr, u64 spsr,
u64 elr_virt, u64 elr_phys, u64 elr_virt, u64 elr_phys,
u64 par, uintptr_t vcpu, u64 par, uintptr_t vcpu,
@ -502,14 +508,12 @@ void __noreturn __cold nvhe_hyp_panic_handler(u64 esr, u64 spsr,
kvm_err("nVHE hyp BUG at: [<%016llx>] %pB!\n", mod_addr, kvm_err("nVHE hyp BUG at: [<%016llx>] %pB!\n", mod_addr,
(void *)mod_addr); (void *)mod_addr);
else else
kvm_err("nVHE hyp BUG at: [<%016llx>] %pB!\n", panic_addr, print_nvhe_hyp_panic("BUG", panic_addr);
(void *)(panic_addr + kaslr_offset()));
} else if (mod_addr) { } else if (mod_addr) {
kvm_err("nVHE hyp panic at: [<%016llx>] %pB!\n", mod_addr, kvm_err("nVHE hyp panic at: [<%016llx>] %pB!\n", mod_addr,
(void *)mod_addr); (void *)mod_addr);
} else { } else {
kvm_err("nVHE hyp panic at: [<%016llx>] %pB!\n", panic_addr, print_nvhe_hyp_panic("panic", panic_addr);
(void *)(panic_addr + kaslr_offset()));
} }
/* Dump the nVHE hypervisor backtrace */ /* Dump the nVHE hypervisor backtrace */