From 7f13e3e2368ee8d0ce92a72b3280fbec07c0abdf Mon Sep 17 00:00:00 2001 From: Sebastian Ene Date: Wed, 23 Jul 2025 10:53:26 +0000 Subject: [PATCH] ANDROID: KVM: arm64: Don't copy pvmfw pages more than once If a pvmfw page is relinquished from the guest back to the host, disable subsequent re-faulting of the pvmfw image for the pVM if a new page is donated back to the same IPA region. Bug: 432439762 Change-Id: Ibe7ba22bc19cad0a7c31dedae64c29e10537b669 Signed-off-by: Sebastian Ene --- arch/arm64/kvm/hyp/nvhe/mem_protect.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm64/kvm/hyp/nvhe/mem_protect.c b/arch/arm64/kvm/hyp/nvhe/mem_protect.c index bec0ebf25e80..745c52300a95 100644 --- a/arch/arm64/kvm/hyp/nvhe/mem_protect.c +++ b/arch/arm64/kvm/hyp/nvhe/mem_protect.c @@ -440,6 +440,10 @@ int __pkvm_guest_relinquish_to_host(struct pkvm_hyp_vcpu *vcpu, psci_mem_protect_dec(1); WARN_ON(host_stage2_set_owner_locked(phys, PAGE_SIZE, PKVM_ID_HOST)); + + if (pkvm_ipa_range_has_pvmfw(vm, ipa, ipa + PAGE_SIZE)) + vm->kvm.arch.pkvm.pvmfw_load_addr = PVMFW_INVALID_LOAD_ADDR; + end: guest_unlock_component(vm); host_unlock_component();