PERFORCE change 56647 for review
Peter Wemm
peter at FreeBSD.org
Tue Jul 6 16:47:18 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=56647
Change 56647 by peter at 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);
}
More information about the p4-projects
mailing list