Module Name:    src
Committed By:   riz
Date:           Tue Apr  3 16:14:02 UTC 2012

Modified Files:
        src/sys/kern [netbsd-6]: subr_kmem.c subr_vmem.c
        src/sys/rump/librump/rumpkern [netbsd-6]: vm.c

Log Message:
Pull up following revision(s) (requested by para in ticket #155):
        sys/kern/subr_vmem.c: revision 1.73
        sys/kern/subr_kmem.c: revision 1.43
        sys/rump/librump/rumpkern/vm.c: revision 1.124
make accounting for vm_inuse sane
while here don't statically allocated for more caches then required
adjust rump for static pool_cache count
should have went in with subr_vmem 1.73
don't overallocated once we leave the caches


To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.42.2.1 src/sys/kern/subr_kmem.c
cvs rdiff -u -r1.72 -r1.72.2.1 src/sys/kern/subr_vmem.c
cvs rdiff -u -r1.122.2.1 -r1.122.2.2 src/sys/rump/librump/rumpkern/vm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/subr_kmem.c
diff -u src/sys/kern/subr_kmem.c:1.42 src/sys/kern/subr_kmem.c:1.42.2.1
--- src/sys/kern/subr_kmem.c:1.42	Sun Feb  5 03:40:08 2012
+++ src/sys/kern/subr_kmem.c	Tue Apr  3 16:14:02 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_kmem.c,v 1.42 2012/02/05 03:40:08 rmind Exp $	*/
+/*	$NetBSD: subr_kmem.c,v 1.42.2.1 2012/04/03 16:14:02 riz Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_kmem.c,v 1.42 2012/02/05 03:40:08 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_kmem.c,v 1.42.2.1 2012/04/03 16:14:02 riz Exp $");
 
 #include <sys/param.h>
 #include <sys/callback.h>
@@ -180,7 +180,7 @@ kmem_intr_alloc(size_t size, km_flag_t k
 
 	if (index >= kmem_cache_maxidx) {
 		int ret = uvm_km_kmem_alloc(kmem_va_arena,
-		    (vsize_t)round_page(allocsz),
+		    (vsize_t)round_page(size),
 		    ((kmflags & KM_SLEEP) ? VM_SLEEP : VM_NOSLEEP)
 		     | VM_INSTANTFIT, (vmem_addr_t *)&p);
 		return ret ? NULL : p;
@@ -229,7 +229,7 @@ kmem_intr_free(void *p, size_t size)
 
 	if (index >= kmem_cache_maxidx) {
 		uvm_km_kmem_free(kmem_va_arena, (vaddr_t)p,
-		    round_page(allocsz));
+		    round_page(size));
 		return;
 	}
 

Index: src/sys/kern/subr_vmem.c
diff -u src/sys/kern/subr_vmem.c:1.72 src/sys/kern/subr_vmem.c:1.72.2.1
--- src/sys/kern/subr_vmem.c:1.72	Fri Feb 10 17:35:47 2012
+++ src/sys/kern/subr_vmem.c	Tue Apr  3 16:14:02 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_vmem.c,v 1.72 2012/02/10 17:35:47 para Exp $	*/
+/*	$NetBSD: subr_vmem.c,v 1.72.2.1 2012/04/03 16:14:02 riz Exp $	*/
 
 /*-
  * Copyright (c)2006,2007,2008,2009 YAMAMOTO Takashi,
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_vmem.c,v 1.72 2012/02/10 17:35:47 para Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_vmem.c,v 1.72.2.1 2012/04/03 16:14:02 riz Exp $");
 
 #if defined(_KERNEL)
 #include "opt_ddb.h"
@@ -248,7 +248,8 @@ static LIST_HEAD(, vmem) vmem_list = LIS
 #define BT_MAXFREE 64
 #define STATIC_VMEM_COUNT 5
 #define STATIC_BT_COUNT 200
-#define STATIC_QC_POOL_COUNT (VMEM_QCACHE_IDX_MAX + 1)
+/* must be equal or greater then qcache multiplier for kmem_va_arena */
+#define STATIC_QC_POOL_COUNT 8
 
 static struct vmem static_vmems[STATIC_VMEM_COUNT];
 static int static_vmem_count = STATIC_VMEM_COUNT;
@@ -474,6 +475,7 @@ bt_rembusy(vmem_t *vm, bt_t *bt)
 {
 
 	KASSERT(vm->vm_nbusytag > 0);
+	vm->vm_inuse -= bt->bt_size;
 	vm->vm_nbusytag--;
 	LIST_REMOVE(bt, bt_hashlist);
 }
@@ -488,6 +490,7 @@ bt_insbusy(vmem_t *vm, bt_t *bt)
 	list = bt_hashhead(vm, bt->bt_start);
 	LIST_INSERT_HEAD(list, bt, bt_hashlist);
 	vm->vm_nbusytag++;
+	vm->vm_inuse += bt->bt_size;
 }
 
 /* ---- boundary tag list */
@@ -1265,7 +1268,6 @@ gotit:
 	KASSERT(bt->bt_size >= size);
 	bt_remfree(vm, bt);
 	vmem_check(vm);
-	vm->vm_inuse += size;
 	if (bt->bt_start != start) {
 		btnew2->bt_type = BT_TYPE_FREE;
 		btnew2->bt_start = bt->bt_start;
@@ -1357,8 +1359,6 @@ vmem_xfree(vmem_t *vm, vmem_addr_t addr,
 	bt_rembusy(vm, bt);
 	bt->bt_type = BT_TYPE_FREE;
 
-	vm->vm_inuse -= bt->bt_size;
-
 	/* coalesce */
 	t = CIRCLEQ_NEXT(bt, bt_seglist);
 	if (t != NULL && t->bt_type == BT_TYPE_FREE) {

Index: src/sys/rump/librump/rumpkern/vm.c
diff -u src/sys/rump/librump/rumpkern/vm.c:1.122.2.1 src/sys/rump/librump/rumpkern/vm.c:1.122.2.2
--- src/sys/rump/librump/rumpkern/vm.c:1.122.2.1	Sun Mar 25 11:29:59 2012
+++ src/sys/rump/librump/rumpkern/vm.c	Tue Apr  3 16:14:02 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm.c,v 1.122.2.1 2012/03/25 11:29:59 bouyer Exp $	*/
+/*	$NetBSD: vm.c,v 1.122.2.2 2012/04/03 16:14:02 riz Exp $	*/
 
 /*
  * Copyright (c) 2007-2011 Antti Kantee.  All Rights Reserved.
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vm.c,v 1.122.2.1 2012/03/25 11:29:59 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vm.c,v 1.122.2.2 2012/04/03 16:14:02 riz Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -340,7 +340,7 @@ uvm_init(void)
 
 	kmem_va_arena = vmem_create("kva", 0, 0, PAGE_SIZE,
 	    vmem_alloc, vmem_free, kmem_arena,
-	    32 * PAGE_SIZE, VM_NOSLEEP | VM_BOOTSTRAP, IPL_VM);
+	    8 * PAGE_SIZE, VM_NOSLEEP | VM_BOOTSTRAP, IPL_VM);
 
 	pool_cache_bootstrap(&pagecache, sizeof(struct vm_page), 0, 0, 0,
 	    "page$", NULL, IPL_NONE, pgctor, pgdtor, NULL);

Reply via email to