diff options
| author | Alan Cox <alc@FreeBSD.org> | 2004-12-15 19:55:05 +0000 |
|---|---|---|
| committer | Alan Cox <alc@FreeBSD.org> | 2004-12-15 19:55:05 +0000 |
| commit | 85f5b245737ff775a931182dbc5dd1cfa0969c63 (patch) | |
| tree | 04c4387210403e2f15960fa9ce72542103f52ac1 /sys/vm/vm_map.c | |
| parent | 99b6fea1af79c11f0302fefd9de9086e3e9e75d1 (diff) | |
Notes
Diffstat (limited to 'sys/vm/vm_map.c')
| -rw-r--r-- | sys/vm/vm_map.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 3788a4f119f1..46ed8490aa47 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -1417,22 +1417,17 @@ vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot, cnt.v_free_count < cnt.v_free_reserved) { break; } - vm_page_lock_queues(); if ((p->valid & VM_PAGE_BITS_ALL) == VM_PAGE_BITS_ALL && (p->busy == 0) && (p->flags & (PG_BUSY | PG_FICTITIOUS)) == 0) { - if ((p->queue - p->pc) == PQ_CACHE) + if ((p->queue - p->pc) == PQ_CACHE) { + vm_page_lock_queues(); vm_page_deactivate(p); - vm_page_busy(p); - vm_page_unlock_queues(); - VM_OBJECT_UNLOCK(object); + vm_page_unlock_queues(); + } mpte = pmap_enter_quick(map->pmap, addr + ptoa(tmpidx), p, mpte); - VM_OBJECT_LOCK(object); - vm_page_lock_queues(); - vm_page_wakeup(p); } - vm_page_unlock_queues(); } unlock_return: VM_OBJECT_UNLOCK(object); |
