From owner-p4-projects@FreeBSD.ORG Tue Jul 6 23:47:18 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 331B716A4D0; Tue, 6 Jul 2004 23:47:18 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0E00916A4CE for ; Tue, 6 Jul 2004 23:47:18 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 068A943D41 for ; Tue, 6 Jul 2004 23:47:18 +0000 (GMT) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id i66NlHRI042919 for ; Tue, 6 Jul 2004 23:47:17 GMT (envelope-from peter@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id i66NlHV3042916 for perforce@freebsd.org; Tue, 6 Jul 2004 23:47:17 GMT (envelope-from peter@freebsd.org) Date: Tue, 6 Jul 2004 23:47:17 GMT Message-Id: <200407062347.i66NlHV3042916@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to peter@freebsd.org using -f From: Peter Wemm To: Perforce Change Reviews Subject: PERFORCE change 56647 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Jul 2004 23:47:18 -0000 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); }