summaryrefslogtreecommitdiffstats
path: root/sys/powerpc
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2009-06-13 18:35:29 +0000
committeralc <alc@FreeBSD.org>2009-06-13 18:35:29 +0000
commit46cf688d110bbc0895acaeca4e2265a6d5dd1037 (patch)
treef65067ae56d5f094089daeb8a9021ef37a6edb34 /sys/powerpc
parentf419891544e311aa974e0648e0455a9de14ea0fa (diff)
downloadFreeBSD-src-46cf688d110bbc0895acaeca4e2265a6d5dd1037.zip
FreeBSD-src-46cf688d110bbc0895acaeca4e2265a6d5dd1037.tar.gz
Correct the method of waking the page daemon when the number of allocated
pv entries surpasses the high water mark. The problem was that the page daemon would only be awakened the first time that the high water mark was surpassed. (The variable "pagedaemon_waken" is a non-working vestige of FreeBSD 4.x, in which it was external and reset by the page daemon whenever it ran. This reset allowed subsequent wakeups by the pv entry allocator.)
Diffstat (limited to 'sys/powerpc')
-rw-r--r--sys/powerpc/booke/pmap.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/sys/powerpc/booke/pmap.c b/sys/powerpc/booke/pmap.c
index 5a9dc1c..904424d 100644
--- a/sys/powerpc/booke/pmap.c
+++ b/sys/powerpc/booke/pmap.c
@@ -156,8 +156,6 @@ static void mmu_booke_enter_locked(mmu_t, pmap_t, vm_offset_t, vm_page_t,
unsigned int kptbl_min; /* Index of the first kernel ptbl. */
unsigned int kernel_ptbls; /* Number of KVA ptbls. */
-static int pagedaemon_waken;
-
/*
* If user pmap is processed with mmu_booke_remove and the resident count
* drops to 0, there are no more pages to remove, so we need not continue.
@@ -712,11 +710,8 @@ pv_alloc(void)
pv_entry_t pv;
pv_entry_count++;
- if ((pv_entry_count > pv_entry_high_water) &&
- (pagedaemon_waken == 0)) {
- pagedaemon_waken = 1;
- wakeup(&vm_pages_needed);
- }
+ if (pv_entry_count > pv_entry_high_water)
+ pagedaemon_wakeup();
pv = uma_zalloc(pvzone, M_NOWAIT);
return (pv);
OpenPOWER on IntegriCloud