From be1a18f4ae4f932317a55c48ff1adc29dd595d8e Mon Sep 17 00:00:00 2001 From: Will Deacon Date: Thu, 7 Jul 2022 15:51:31 +0100 Subject: [PATCH] Revert "ANDROID: KVM: arm64: Factor out private range VA allocation" This reverts commit c9cc94723b5272fcdb971d05b09f809a9e91fdf6. Bug: 233587962 Signed-off-by: Will Deacon Change-Id: I657204a15aa35ad0b2856ec682523abc1bf5aeaf --- arch/arm64/kvm/hyp/nvhe/mm.c | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/arch/arm64/kvm/hyp/nvhe/mm.c b/arch/arm64/kvm/hyp/nvhe/mm.c index 1a3f5e027531..d9e223744e06 100644 --- a/arch/arm64/kvm/hyp/nvhe/mm.c +++ b/arch/arm64/kvm/hyp/nvhe/mm.c @@ -38,22 +38,6 @@ static int __pkvm_create_mappings(unsigned long start, unsigned long size, return err; } -static unsigned long hyp_alloc_private_va_range(size_t size) -{ - unsigned long addr = __io_map_base; - - hyp_assert_lock_held(&pkvm_pgd_lock); - __io_map_base += PAGE_ALIGN(size); - - /* Are we overflowing on the vmemmap ? */ - if (__io_map_base > __hyp_vmemmap) { - __io_map_base = addr; - addr = (unsigned long)ERR_PTR(-ENOMEM); - } - - return addr; -} - unsigned long __pkvm_create_private_mapping(phys_addr_t phys, size_t size, enum kvm_pgtable_prot prot) { @@ -62,10 +46,16 @@ unsigned long __pkvm_create_private_mapping(phys_addr_t phys, size_t size, hyp_spin_lock(&pkvm_pgd_lock); - size = size + offset_in_page(phys); - addr = hyp_alloc_private_va_range(size); - if (IS_ERR((void *)addr)) + size = PAGE_ALIGN(size + offset_in_page(phys)); + addr = __io_map_base; + __io_map_base += size; + + /* Are we overflowing on the vmemmap ? */ + if (__io_map_base > __hyp_vmemmap) { + __io_map_base -= size; + addr = (unsigned long)ERR_PTR(-ENOMEM); goto out; + } err = kvm_pgtable_hyp_map(&pkvm_pgtable, addr, size, phys, prot); if (err) {