ANDROID: KVM: arm64: Add __hyp_allocator_map for the pKVM hyp

In preparation for the hyp heap allocator, add a way of creating
non-linear mappings for the hyp stage-1. A function to unmap
(pkvm_remove_mappings()) is already available.

Bug: 357781595
Bug: 273748186
Change-Id: I8a00cb1874de2f26d38bec9ad9b309b71aade1b4
Signed-off-by: Vincent Donnefort <vdonnefort@google.com>
This commit is contained in:
Vincent Donnefort
2023-04-25 09:38:28 +01:00
committed by Keir Fraser
parent 99b2c01ad2
commit 9d8af4215d
2 changed files with 6 additions and 0 deletions
+1
View File
@@ -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);
+5
View File
@@ -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;