diff options
Diffstat (limited to 'sys/vm/vm_map.c')
-rw-r--r-- | sys/vm/vm_map.c | 18 |
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: |