diff options
author | alc <alc@FreeBSD.org> | 2002-07-14 20:24:40 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2002-07-14 20:24:40 +0000 |
commit | 84e8c06b808766af4447b87b2678fd2a64f4057a (patch) | |
tree | 2bbfbb70c1f11fc663065382f8f8aa732fe14a56 | |
parent | e650551ab94d75db5cd689ab630bf45931ec961d (diff) | |
download | FreeBSD-src-84e8c06b808766af4447b87b2678fd2a64f4057a.zip FreeBSD-src-84e8c06b808766af4447b87b2678fd2a64f4057a.tar.gz |
o Lock page queue accesses by vm_page_wire().
-rw-r--r-- | sys/amd64/amd64/pmap.c | 4 | ||||
-rw-r--r-- | sys/i386/i386/pmap.c | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 9b4d09d..a52736b 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -1071,9 +1071,11 @@ pmap_swapin_thread(td) m->valid = VM_PAGE_BITS_ALL; } ma[i] = m; + vm_page_lock_queues(); vm_page_wire(m); vm_page_wakeup(m); vm_page_flag_set(m, PG_MAPPED | PG_WRITEABLE); + vm_page_unlock_queues(); } pmap_qenter(ks, ma, KSTACK_PAGES); } @@ -1521,7 +1523,9 @@ pmap_growkernel(vm_offset_t addr) nkpt++; + vm_page_lock_queues(); vm_page_wire(nkpg); + vm_page_unlock_queues(); pmap_zero_page(nkpg); ptppaddr = VM_PAGE_TO_PHYS(nkpg); newpdir = (pd_entry_t) (ptppaddr | PG_V | PG_RW | PG_A | PG_M); diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index 9b4d09d..a52736b 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -1071,9 +1071,11 @@ pmap_swapin_thread(td) m->valid = VM_PAGE_BITS_ALL; } ma[i] = m; + vm_page_lock_queues(); vm_page_wire(m); vm_page_wakeup(m); vm_page_flag_set(m, PG_MAPPED | PG_WRITEABLE); + vm_page_unlock_queues(); } pmap_qenter(ks, ma, KSTACK_PAGES); } @@ -1521,7 +1523,9 @@ pmap_growkernel(vm_offset_t addr) nkpt++; + vm_page_lock_queues(); vm_page_wire(nkpg); + vm_page_unlock_queues(); pmap_zero_page(nkpg); ptppaddr = VM_PAGE_TO_PHYS(nkpg); newpdir = (pd_entry_t) (ptppaddr | PG_V | PG_RW | PG_A | PG_M); |