svn commit: r266601 - in user/attilio/rm_vmobj_cache/sys: mips/mips vm
Attilio Rao
attilio at FreeBSD.org
Fri May 23 23:13:19 UTC 2014
Author: attilio
Date: Fri May 23 23:13:17 2014
New Revision: 266601
URL: http://svnweb.freebsd.org/changeset/base/266601
Log:
The pages returned by vm_page_alloc_freelist() will always be unmanaged,
so also make them mandatory wired.
Avoid to pass then VM_ALLOC_WIRED in the allocation request.
Modified:
user/attilio/rm_vmobj_cache/sys/mips/mips/pmap.c
user/attilio/rm_vmobj_cache/sys/mips/mips/uma_machdep.c
user/attilio/rm_vmobj_cache/sys/vm/vm_page.c
Modified: user/attilio/rm_vmobj_cache/sys/mips/mips/pmap.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/mips/mips/pmap.c Fri May 23 22:50:49 2014 (r266600)
+++ user/attilio/rm_vmobj_cache/sys/mips/mips/pmap.c Fri May 23 23:13:17 2014 (r266601)
@@ -1047,8 +1047,7 @@ pmap_alloc_direct_page(unsigned int inde
{
vm_page_t m;
- m = vm_page_alloc_freelist(VM_FREELIST_DIRECT, req | VM_ALLOC_WIRED |
- VM_ALLOC_ZERO);
+ m = vm_page_alloc_freelist(VM_FREELIST_DIRECT, req | VM_ALLOC_ZERO);
if (m == NULL)
return (NULL);
@@ -1581,8 +1580,7 @@ retry:
}
}
/* No free items, allocate another chunk */
- m = vm_page_alloc_freelist(VM_FREELIST_DIRECT, VM_ALLOC_NORMAL |
- VM_ALLOC_WIRED);
+ m = vm_page_alloc_freelist(VM_FREELIST_DIRECT, VM_ALLOC_NORMAL);
if (m == NULL) {
if (try) {
pv_entry_count--;
Modified: user/attilio/rm_vmobj_cache/sys/mips/mips/uma_machdep.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/mips/mips/uma_machdep.c Fri May 23 22:50:49 2014 (r266600)
+++ user/attilio/rm_vmobj_cache/sys/mips/mips/uma_machdep.c Fri May 23 23:13:17 2014 (r266601)
@@ -49,7 +49,7 @@ uma_small_alloc(uma_zone_t zone, int byt
void *va;
*flags = UMA_SLAB_PRIV;
- pflags = malloc2vm_flags(wait) | VM_ALLOC_WIRED;
+ pflags = malloc2vm_flags(wait);
for (;;) {
m = vm_page_alloc_freelist(VM_FREELIST_DIRECT, pflags);
Modified: user/attilio/rm_vmobj_cache/sys/vm/vm_page.c
==============================================================================
--- user/attilio/rm_vmobj_cache/sys/vm/vm_page.c Fri May 23 22:50:49 2014 (r266600)
+++ user/attilio/rm_vmobj_cache/sys/vm/vm_page.c Fri May 23 23:13:17 2014 (r266601)
@@ -1883,6 +1883,8 @@ vm_page_alloc_init(vm_page_t m)
*
* The caller must always specify an allocation class.
*
+ * The returned page will be wired.
+ *
* allocation classes:
* VM_ALLOC_NORMAL normal process request
* VM_ALLOC_SYSTEM system *really* needs a page
@@ -1891,7 +1893,6 @@ vm_page_alloc_init(vm_page_t m)
* optional allocation flags:
* VM_ALLOC_COUNT(number) the number of additional pages that the caller
* intends to allocate
- * VM_ALLOC_WIRED wire the allocated page
* VM_ALLOC_ZERO prefer a zeroed page
*
* This routine may not sleep.
@@ -1904,6 +1905,10 @@ vm_page_alloc_freelist(int flind, int re
u_int flags;
int req_class;
+ KASSERT((req & VM_ALLOC_WIRED) == 0,
+ ("vm_page_alloc_freelist: VM_ALLOC_WIRED passed in req (%x)",
+ req));
+
req_class = req & VM_ALLOC_CLASS_MASK;
/*
@@ -1944,14 +1949,14 @@ vm_page_alloc_freelist(int flind, int re
if ((req & VM_ALLOC_ZERO) != 0)
flags = PG_ZERO;
m->flags &= flags;
- if ((req & VM_ALLOC_WIRED) != 0) {
- /*
- * The page lock is not required for wiring a page that does
- * not belong to an object.
- */
- atomic_add_int(&vm_cnt.v_wire_count, 1);
- m->wire_count = 1;
- }
+
+ /*
+ * The page lock is not required for wiring a page that does
+ * not belong to an object.
+ */
+ atomic_add_int(&vm_cnt.v_wire_count, 1);
+ m->wire_count = 1;
+
/* Unmanaged pages don't use "act_count". */
m->oflags = VPO_UNMANAGED;
if (drop != NULL)
More information about the svn-src-user
mailing list