diff options
author | alc <alc@FreeBSD.org> | 2003-06-29 06:10:32 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2003-06-29 06:10:32 +0000 |
commit | 4418bf544ed77d899f455f990473f305880e8c0c (patch) | |
tree | 900a28f0c1028d046e2443c8cad45b63e31be3b8 | |
parent | f9ef847419e515982d648ef72058bb7865bca782 (diff) | |
download | FreeBSD-src-4418bf544ed77d899f455f990473f305880e8c0c.zip FreeBSD-src-4418bf544ed77d899f455f990473f305880e8c0c.tar.gz |
- Remove the calls to pmap_install() from pmap_object_init_pt(); they are
redundant. Discussed with: marcel
- MFi386: Add vm object locking to pmap_object_init_pt().
-rw-r--r-- | sys/ia64/ia64/pmap.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/sys/ia64/ia64/pmap.c b/sys/ia64/ia64/pmap.c index 43405bd..8b8e63f 100644 --- a/sys/ia64/ia64/pmap.c +++ b/sys/ia64/ia64/pmap.c @@ -1762,7 +1762,6 @@ pmap_object_init_pt(pmap_t pmap, vm_offset_t addr, vm_object_t object, vm_pindex_t pindex, vm_size_t size, int limit) { - pmap_t oldpmap; vm_offset_t tmpidx; int psize; vm_page_t p; @@ -1770,21 +1769,18 @@ pmap_object_init_pt(pmap_t pmap, vm_offset_t addr, if (pmap == NULL || object == NULL) return; - - oldpmap = pmap_install(pmap); - + VM_OBJECT_LOCK(object); psize = ia64_btop(size); if ((object->type != OBJT_VNODE) || ((limit & MAP_PREFAULT_PARTIAL) && (psize > MAX_INIT_PT) && (object->resident_page_count > MAX_INIT_PT))) { - pmap_install(oldpmap); - return; + goto unlock_return; } if (psize + pindex > object->size) { if (object->size < pindex) - return; + goto unlock_return; psize = object->size - pindex; } @@ -1823,8 +1819,10 @@ pmap_object_init_pt(pmap_t pmap, vm_offset_t addr, vm_page_deactivate(p); vm_page_busy(p); vm_page_unlock_queues(); + VM_OBJECT_UNLOCK(object); pmap_enter_quick(pmap, addr + ia64_ptob(tmpidx), p); + VM_OBJECT_LOCK(object); vm_page_lock_queues(); vm_page_wakeup(p); } @@ -1855,16 +1853,18 @@ pmap_object_init_pt(pmap_t pmap, vm_offset_t addr, vm_page_deactivate(p); vm_page_busy(p); vm_page_unlock_queues(); + VM_OBJECT_UNLOCK(object); pmap_enter_quick(pmap, addr + ia64_ptob(tmpidx), p); + VM_OBJECT_LOCK(object); vm_page_lock_queues(); vm_page_wakeup(p); } vm_page_unlock_queues(); } } - pmap_install(oldpmap); - return; +unlock_return: + VM_OBJECT_UNLOCK(object); } /* |