summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2004-06-17 06:16:58 +0000
committeralc <alc@FreeBSD.org>2004-06-17 06:16:58 +0000
commit4c2e464ea2a4a1c5d41aff23221551d76f839a6d (patch)
treea44b368c5c8499289c09437806188fd8fecd1a0d
parent74169a273f2f2e37224bc4be29a6aba5fb792277 (diff)
downloadFreeBSD-src-4c2e464ea2a4a1c5d41aff23221551d76f839a6d.zip
FreeBSD-src-4c2e464ea2a4a1c5d41aff23221551d76f839a6d.tar.gz
Do not preset PG_BUSY on VM_ALLOC_NOOBJ pages. Such pages are not
accessible through an object. Thus, PG_BUSY serves no purpose.
-rw-r--r--sys/amd64/amd64/pmap.c4
-rw-r--r--sys/i386/i386/pmap.c4
-rw-r--r--sys/vm/vm_page.c2
3 files changed, 2 insertions, 8 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index e87c239..9e374c7 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -1227,10 +1227,6 @@ _pmap_allocpte(pmap, ptepindex)
*pd = VM_PAGE_TO_PHYS(m) | PG_U | PG_RW | PG_V | PG_A | PG_M;
}
- vm_page_lock_queues();
- vm_page_wakeup(m);
- vm_page_unlock_queues();
-
return m;
}
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index 69aba2e..f347cee 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -1196,10 +1196,6 @@ _pmap_allocpte(pmap, ptepindex)
pmap->pm_pdir[ptepindex] =
(pd_entry_t) (ptepa | PG_U | PG_RW | PG_V | PG_A | PG_M);
- vm_page_lock_queues();
- vm_page_wakeup(m);
- vm_page_unlock_queues();
-
return m;
}
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index a45259e..8c74f6e 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -844,6 +844,8 @@ loop:
if (req & VM_ALLOC_ZERO)
flags = PG_ZERO | PG_BUSY;
}
+ if (req & VM_ALLOC_NOOBJ)
+ flags &= ~PG_BUSY;
m->flags = flags;
if (req & VM_ALLOC_WIRED) {
atomic_add_int(&cnt.v_wire_count, 1);
OpenPOWER on IntegriCloud