Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 Jul 2004 23:47:17 GMT
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 56647 for review
Message-ID:  <200407062347.i66NlHV3042916@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=56647

Change 56647 by peter@peter_daintree on 2004/07/06 23:47:07

	move the pmap_pinit/pmap_release to the vmspace init/fini
	routines.  This causes us to keep an almost-empty page
	directory associated with each vmspace in the zone.  In this
	case "almost" means that userland has been removed, just the
	kernel bits are active.  This leads to some interesting optimization
	possiblities because we can almost completely avoid the pmap_lazyfix
	shootdown problems since the pmaps will remain usable even after
	the vmspace has been "freed".

Affected files ...

.. //depot/projects/hammer/sys/vm/vm_map.c#38 edit

Differences ...

==== //depot/projects/hammer/sys/vm/vm_map.c#38 (text+ko) ====

@@ -175,7 +175,7 @@
 	struct vmspace *vm;
 
 	vm = (struct vmspace *)mem;
-
+	pmap_release(vmspace_pmap(vm));
 	vm_map_zfini(&vm->vm_map, sizeof(vm->vm_map));
 }
 
@@ -187,6 +187,7 @@
 	vm = (struct vmspace *)mem;
 
 	vm_map_zinit(&vm->vm_map, sizeof(vm->vm_map));
+	pmap_pinit(vmspace_pmap(vm));
 }
 
 static void
@@ -254,7 +255,6 @@
 	vm = uma_zalloc(vmspace_zone, M_WAITOK);
 	CTR1(KTR_VM, "vmspace_alloc: %p", vm);
 	_vm_map_init(&vm->vm_map, min, max);
-	pmap_pinit(vmspace_pmap(vm));
 	vm->vm_map.pmap = vmspace_pmap(vm);		/* XXX */
 	vm->vm_refcnt = 1;
 	vm->vm_shm = NULL;
@@ -299,7 +299,6 @@
 	    vm->vm_map.max_offset);
 	vm_map_unlock(&vm->vm_map);
 
-	pmap_release(vmspace_pmap(vm));
 	uma_zfree(vmspace_zone, vm);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200407062347.i66NlHV3042916>