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>