From 677980a696cf16bc7da1310d7749f8196bd44441 Mon Sep 17 00:00:00 2001 From: Will Deacon Date: Tue, 15 Nov 2022 14:24:02 +0000 Subject: [PATCH] ANDROID: KVM: arm64: Use fixmap when poisoning pvmfw pages When poisoning the pvmfw pages during system reset at EL2, ensure that we use a writable fixmap mapping rather than the persistent read-only mapping of the region. Signed-off-by: Will Deacon Bug: 254819795 Change-Id: I4c8be092d3c822695afd7d03d0d64163664a9f64 Signed-off-by: Will Deacon Signed-off-by: Quentin Perret --- arch/arm64/kvm/hyp/nvhe/pkvm.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/arm64/kvm/hyp/nvhe/pkvm.c b/arch/arm64/kvm/hyp/nvhe/pkvm.c index 3236ed39e70f..26db4f6e0a14 100644 --- a/arch/arm64/kvm/hyp/nvhe/pkvm.c +++ b/arch/arm64/kvm/hyp/nvhe/pkvm.c @@ -889,10 +889,13 @@ int pkvm_load_pvmfw_pages(struct pkvm_hyp_vm *vm, u64 ipa, phys_addr_t phys, void pkvm_poison_pvmfw_pages(void) { - void *addr = hyp_phys_to_virt(pvmfw_base); + u64 npages = pvmfw_size >> PAGE_SHIFT; + phys_addr_t addr = pvmfw_base; - memset(addr, 0, pvmfw_size); - kvm_flush_dcache_to_poc(addr, pvmfw_size); + while (npages--) { + hyp_poison_page(addr); + addr += PAGE_SIZE; + } } /*