summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_map.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/vm/vm_map.c')
-rw-r--r--sys/vm/vm_map.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index 905201e..cc6628b 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -1518,28 +1518,24 @@ vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot,
start = addr + ptoa(tmpidx);
p_start = p;
}
+ } else if (p_start != NULL) {
if (!are_queues_locked) {
are_queues_locked = TRUE;
vm_page_lock_queues();
}
- if (VM_PAGE_INQUEUE1(p, PQ_CACHE)) {
- if ((flags & MAP_PREFAULT_MADVISE) != 0)
- vm_page_deactivate(p);
- else if (p_start != NULL) {
- pmap_enter_object(map->pmap, start, addr +
- ptoa(tmpidx), p_start, prot);
- p_start = NULL;
- }
- }
- } else if (p_start != NULL) {
pmap_enter_object(map->pmap, start, addr +
ptoa(tmpidx), p_start, prot);
p_start = NULL;
}
}
- if (p_start != NULL)
+ if (p_start != NULL) {
+ if (!are_queues_locked) {
+ are_queues_locked = TRUE;
+ vm_page_lock_queues();
+ }
pmap_enter_object(map->pmap, start, addr + ptoa(psize),
p_start, prot);
+ }
if (are_queues_locked)
vm_page_unlock_queues();
unlock_return:
OpenPOWER on IntegriCloud