diff options
-rw-r--r-- | sys/sparc64/sparc64/pmap.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c index 8897a48..586435e 100644 --- a/sys/sparc64/sparc64/pmap.c +++ b/sys/sparc64/sparc64/pmap.c @@ -1233,7 +1233,8 @@ pmap_release(pmap_t pm) pmap_resident_count(pm))); while (!TAILQ_EMPTY(&obj->memq)) { m = TAILQ_FIRST(&obj->memq); - if (vm_page_sleep_busy(m, FALSE, "pmaprl")) + vm_page_lock_queues(); + if (vm_page_sleep_if_busy(m, FALSE, "pmaprl")) continue; vm_page_busy(m); KASSERT(m->hold_count == 0, @@ -1241,6 +1242,7 @@ pmap_release(pmap_t pm) m->wire_count--; cnt.v_wire_count--; vm_page_free_zero(m); + vm_page_unlock_queues(); } pmap_qremove((vm_offset_t)pm->pm_tsb, TSB_PAGES); } |