@@ -1380,15 +1380,17 @@ vm_vaddr_t vm_vaddr_unused_gap(struct kvm_vm *vm, size_t sz,
1380
1380
return pgidx_start * vm -> page_size ;
1381
1381
}
1382
1382
1383
- vm_vaddr_t __vm_vaddr_alloc (struct kvm_vm * vm , size_t sz , vm_vaddr_t vaddr_min ,
1384
- enum kvm_mem_region_type type )
1383
+ static vm_vaddr_t ____vm_vaddr_alloc (struct kvm_vm * vm , size_t sz ,
1384
+ vm_vaddr_t vaddr_min ,
1385
+ enum kvm_mem_region_type type ,
1386
+ bool protected )
1385
1387
{
1386
1388
uint64_t pages = (sz >> vm -> page_shift ) + ((sz % vm -> page_size ) != 0 );
1387
1389
1388
1390
virt_pgd_alloc (vm );
1389
- vm_paddr_t paddr = vm_phy_pages_alloc (vm , pages ,
1390
- KVM_UTIL_MIN_PFN * vm -> page_size ,
1391
- vm -> memslots [type ]);
1391
+ vm_paddr_t paddr = __vm_phy_pages_alloc (vm , pages ,
1392
+ KVM_UTIL_MIN_PFN * vm -> page_size ,
1393
+ vm -> memslots [type ], protected );
1392
1394
1393
1395
/*
1394
1396
* Find an unused range of virtual page addresses of at least
@@ -1408,6 +1410,20 @@ vm_vaddr_t __vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_min,
1408
1410
return vaddr_start ;
1409
1411
}
1410
1412
1413
+ vm_vaddr_t __vm_vaddr_alloc (struct kvm_vm * vm , size_t sz , vm_vaddr_t vaddr_min ,
1414
+ enum kvm_mem_region_type type )
1415
+ {
1416
+ return ____vm_vaddr_alloc (vm , sz , vaddr_min , type ,
1417
+ vm_arch_has_protected_memory (vm ));
1418
+ }
1419
+
1420
+ vm_vaddr_t vm_vaddr_alloc_shared (struct kvm_vm * vm , size_t sz ,
1421
+ vm_vaddr_t vaddr_min ,
1422
+ enum kvm_mem_region_type type )
1423
+ {
1424
+ return ____vm_vaddr_alloc (vm , sz , vaddr_min , type , false);
1425
+ }
1426
+
1411
1427
/*
1412
1428
* VM Virtual Address Allocate
1413
1429
*
0 commit comments