diff --git a/arch/arm64/kvm/hyp/include/nvhe/mm.h b/arch/arm64/kvm/hyp/include/nvhe/mm.h index af6dadc60a2c..5d33aca7d686 100644 --- a/arch/arm64/kvm/hyp/include/nvhe/mm.h +++ b/arch/arm64/kvm/hyp/include/nvhe/mm.h @@ -32,6 +32,7 @@ int pkvm_create_stack(phys_addr_t phys, unsigned long *haddr); int pkvm_alloc_private_va_range(size_t size, unsigned long *haddr); void pkvm_remove_mappings(void *from, void *to); phys_addr_t __pkvm_private_range_pa(void *va); +int __hyp_allocator_map(unsigned long start, phys_addr_t phys); int __pkvm_map_module_page(u64 pfn, void *va, enum kvm_pgtable_prot prot, bool is_protected); void __pkvm_unmap_module_page(u64 pfn, void *va); diff --git a/arch/arm64/kvm/hyp/nvhe/mm.c b/arch/arm64/kvm/hyp/nvhe/mm.c index 199cdfa0b39e..1a8da55a5196 100644 --- a/arch/arm64/kvm/hyp/nvhe/mm.c +++ b/arch/arm64/kvm/hyp/nvhe/mm.c @@ -176,6 +176,11 @@ void __pkvm_unmap_module_page(u64 pfn, void *va) pkvm_remove_mappings(va, va + PAGE_SIZE); } +int __hyp_allocator_map(unsigned long va, phys_addr_t phys) +{ + return __pkvm_create_mappings(va, PAGE_SIZE, phys, PAGE_HYP); +} + int pkvm_create_mappings_locked(void *from, void *to, enum kvm_pgtable_prot prot) { unsigned long start = (unsigned long)from;