ANDROID: KVM: Reduce upstream diff for kaslr_off

Refactor slightly the code so that upstream patches are easier to apply
as our code diff to support pKVM modules is minimized.

Note: no functional change intended.

Bug: 278010198
Bug: 278749606
Change-Id: I509ba966e257a7bce757a3d7730b50d22d1bc4e5
Signed-off-by: Pierre-Clément Tosi <ptosi@google.com>
This commit is contained in:
Pierre-Clément Tosi 2024-06-28 20:25:44 +01:00 committed by Will Deacon
parent 30068fa327
commit 2fe138183d

View File

@ -475,17 +475,11 @@ void __noreturn __cold nvhe_hyp_panic_handler(u64 esr, u64 spsr,
u64 far, u64 hpfar)
{
u64 elr_in_kimg = __phys_to_kimg(elr_phys);
u64 kaslr_off = kaslr_offset();
u64 hyp_offset = elr_in_kimg - kaslr_off - elr_virt;
u64 hyp_offset = elr_in_kimg - kaslr_offset() - elr_virt;
u64 mode = spsr & PSR_MODE_MASK;
u64 panic_addr = elr_virt + hyp_offset;
u64 mod_addr = pkvm_el2_mod_kern_va(elr_virt);
if (mod_addr) {
panic_addr = mod_addr;
kaslr_off = 0;
}
if (mode != PSR_MODE_EL2t && mode != PSR_MODE_EL2h) {
kvm_err("Invalid host exception to nVHE hyp!\n");
} else if (ESR_ELx_EC(esr) == ESR_ELx_EC_BRK64 &&
@ -504,12 +498,18 @@ void __noreturn __cold nvhe_hyp_panic_handler(u64 esr, u64 spsr,
if (file)
kvm_err("nVHE hyp BUG at: %s:%u!\n", file, line);
else if (mod_addr)
kvm_err("nVHE hyp BUG at: [<%016llx>] %pB!\n", mod_addr,
(void *)mod_addr);
else
kvm_err("nVHE hyp BUG at: [<%016llx>] %pB!\n", panic_addr,
(void *)(panic_addr + kaslr_off));
(void *)(panic_addr + kaslr_offset()));
} else if (mod_addr) {
kvm_err("nVHE hyp panic at: [<%016llx>] %pB!\n", mod_addr,
(void *)mod_addr);
} else {
kvm_err("nVHE hyp panic at: [<%016llx>] %pB!\n", panic_addr,
(void *)(panic_addr + kaslr_off));
(void *)(panic_addr + kaslr_offset()));
}
/* Dump the nVHE hypervisor backtrace */