diff options
author | alc <alc@FreeBSD.org> | 2002-07-18 17:40:07 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2002-07-18 17:40:07 +0000 |
commit | 1ba951badc25fd36cc925db74e53db5178c99ded (patch) | |
tree | 9f223a362027c87ed66d0c64bece89fa159087af /sys | |
parent | c147de1e61eb54990ffe00853ecb6d5032576e2b (diff) | |
download | FreeBSD-src-1ba951badc25fd36cc925db74e53db5178c99ded.zip FreeBSD-src-1ba951badc25fd36cc925db74e53db5178c99ded.tar.gz |
o Remove the acquisition and release of Giant from the idle priority thread
that pre-zeroes free pages.
o Remove GIANT_REQUIRED from some low-level page queue functions. (Instead
assertions on the page queue lock are being added to the higher-level
functions, like vm_page_wire(), etc.)
In collaboration with: peter
Diffstat (limited to 'sys')
-rw-r--r-- | sys/vm/vm_pageq.c | 3 | ||||
-rw-r--r-- | sys/vm/vm_zeroidle.c | 6 |
2 files changed, 1 insertions, 8 deletions
diff --git a/sys/vm/vm_pageq.c b/sys/vm/vm_pageq.c index d6036a8..5a5c0c6 100644 --- a/sys/vm/vm_pageq.c +++ b/sys/vm/vm_pageq.c @@ -195,7 +195,6 @@ _vm_pageq_find(int basequeue, int index) vm_page_t m = NULL; struct vpgqueues *pq; - GIANT_REQUIRED; pq = &vm_page_queues[basequeue]; /* @@ -219,8 +218,6 @@ vm_pageq_find(int basequeue, int index, boolean_t prefer_zero) { vm_page_t m; - GIANT_REQUIRED; - #if PQ_L2_SIZE > 1 if (prefer_zero) { m = TAILQ_LAST(&vm_page_queues[basequeue+index].pl, pglist); diff --git a/sys/vm/vm_zeroidle.c b/sys/vm/vm_zeroidle.c index d852b9b..46db4e7 100644 --- a/sys/vm/vm_zeroidle.c +++ b/sys/vm/vm_zeroidle.c @@ -74,18 +74,15 @@ vm_page_zero_idle(void) static int free_rover; vm_page_t m; - mtx_lock(&Giant); mtx_lock_spin(&vm_page_queue_free_mtx); zero_state = 0; m = vm_pageq_find(PQ_FREE, free_rover, FALSE); if (m != NULL && (m->flags & PG_ZERO) == 0) { vm_pageq_remove_nowakeup(m); mtx_unlock_spin(&vm_page_queue_free_mtx); - mtx_unlock(&Giant); pmap_zero_page_idle(m); - mtx_lock(&Giant); mtx_lock_spin(&vm_page_queue_free_mtx); - vm_page_flag_set(m, PG_ZERO); + m->flags |= PG_ZERO; vm_pageq_enqueue(PQ_FREE + m->pc, m); ++vm_page_zero_count; ++cnt_prezero; @@ -94,7 +91,6 @@ vm_page_zero_idle(void) } free_rover = (free_rover + PQ_PRIME2) & PQ_L2_MASK; mtx_unlock_spin(&vm_page_queue_free_mtx); - mtx_unlock(&Giant); return 1; } |