summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_contig.c
diff options
context:
space:
mode:
authormux <mux@FreeBSD.org>2003-07-25 21:02:25 +0000
committermux <mux@FreeBSD.org>2003-07-25 21:02:25 +0000
commita3fee15cba3be9ccb7672a0e23a21f0b258a28d6 (patch)
treea4e2823c0152ed939325b21bad02a58ddaae6703 /sys/vm/vm_contig.c
parentb8872d23e6a7848fe5292b96e5f9138d8244c043 (diff)
downloadFreeBSD-src-a3fee15cba3be9ccb7672a0e23a21f0b258a28d6.zip
FreeBSD-src-a3fee15cba3be9ccb7672a0e23a21f0b258a28d6.tar.gz
Add support for the M_ZERO flag to contigmalloc().
Reviewed by: jeff
Diffstat (limited to 'sys/vm/vm_contig.c')
-rw-r--r--sys/vm/vm_contig.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/vm/vm_contig.c b/sys/vm/vm_contig.c
index 905e848..25d9a3a 100644
--- a/sys/vm/vm_contig.c
+++ b/sys/vm/vm_contig.c
@@ -222,7 +222,8 @@ again1:
m->valid = VM_PAGE_BITS_ALL;
if (m->flags & PG_ZERO)
vm_page_zero_count--;
- m->flags = 0;
+ /* Don't clear the PG_ZERO flag, we'll need it later. */
+ m->flags &= PG_ZERO;
KASSERT(m->dirty == 0,
("contigmalloc1: page %p was dirty", m));
m->wire_count = 0;
@@ -259,6 +260,9 @@ again1:
vm_page_t m = &pga[i];
vm_page_insert(m, kernel_object,
OFF_TO_IDX(tmp_addr - VM_MIN_KERNEL_ADDRESS));
+ if ((flags & M_ZERO) && !(m->flags & PG_ZERO))
+ bzero((void *)tmp_addr, PAGE_SIZE);
+ m->flags = 0;
tmp_addr += PAGE_SIZE;
}
VM_OBJECT_UNLOCK(kernel_object);
OpenPOWER on IntegriCloud