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:
committed by
Keir Fraser
parent
99b2c01ad2
commit
9d8af4215d
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user