vm: evict PTE entries for transferred vm-object pages
This commit is contained in:
@@ -659,6 +659,7 @@ kern_status_t address_space_map(
|
||||
}
|
||||
|
||||
object_ref(&object->vo_base);
|
||||
area->vma_space = root;
|
||||
area->vma_object = object;
|
||||
area->vma_prot = prot;
|
||||
area->vma_object_offset = object_offset;
|
||||
@@ -726,6 +727,7 @@ static kern_status_t split_area(
|
||||
left->vma_base = left_base;
|
||||
left->vma_limit = left_base + left_length - 1;
|
||||
|
||||
right->vma_space = left->vma_space;
|
||||
right->vma_object = left->vma_object;
|
||||
right->vma_prot = left->vma_prot;
|
||||
right->vma_object_offset = right_object_offset;
|
||||
@@ -983,6 +985,7 @@ kern_status_t address_space_reserve(
|
||||
return KERN_NO_MEMORY;
|
||||
}
|
||||
|
||||
area->vma_space = space;
|
||||
area->vma_base = base;
|
||||
area->vma_limit = base + length - 1;
|
||||
|
||||
@@ -1142,6 +1145,7 @@ static kern_status_t request_missing_page(
|
||||
irq_flags);
|
||||
if (!pg) {
|
||||
vm_object_unlock_irqrestore(object, *irq_flags);
|
||||
printk("page request for %zx failed", addr);
|
||||
return KERN_FATAL_ERROR;
|
||||
}
|
||||
|
||||
@@ -1203,8 +1207,12 @@ kern_status_t address_space_demand_map(
|
||||
object_offset,
|
||||
VMO_ALLOCATE_MISSING_PAGE,
|
||||
NULL);
|
||||
// tracek("vm: mapping %07llx -> %10llx", vm_page_get_paddr(pg),
|
||||
// addr);
|
||||
// tracek("vm: mapping %07llx -> %10llx", vm_page_get_paddr(pg), addr);
|
||||
|
||||
if (!pg) {
|
||||
return KERN_FATAL_ERROR;
|
||||
}
|
||||
|
||||
kern_status_t status = pmap_add(
|
||||
region->s_pmap,
|
||||
addr,
|
||||
|
||||
Reference in New Issue
Block a user