From owner-cvs-all@FreeBSD.ORG Wed Dec 15 19:55:06 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2831716A4CE; Wed, 15 Dec 2004 19:55:06 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0D66A43D5A; Wed, 15 Dec 2004 19:55:06 +0000 (GMT) (envelope-from alc@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id iBFJt5xV069575; Wed, 15 Dec 2004 19:55:05 GMT (envelope-from alc@repoman.freebsd.org) Received: (from alc@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id iBFJt5hM069574; Wed, 15 Dec 2004 19:55:05 GMT (envelope-from alc) Message-Id: <200412151955.iBFJt5hM069574@repoman.freebsd.org> From: Alan Cox Date: Wed, 15 Dec 2004 19:55:05 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/alpha/alpha pmap.c src/sys/amd64/amd64 pmap.c src/sys/arm/arm pmap.c src/sys/i386/i386 pmap.c src/sys/ia64/ia64 pmap.c src/sys/powerpc/powerpc pmap.c src/sys/sparc64/sparc64 pmap.c src/sys/vm vm_fault.c vm_map.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Dec 2004 19:55:06 -0000 alc 2004-12-15 19:55:05 UTC FreeBSD src repository Modified files: sys/alpha/alpha pmap.c sys/amd64/amd64 pmap.c sys/arm/arm pmap.c sys/i386/i386 pmap.c sys/ia64/ia64 pmap.c sys/powerpc/powerpc pmap.c sys/sparc64/sparc64 pmap.c sys/vm vm_fault.c vm_map.c Log: In the common case, pmap_enter_quick() completes without sleeping. In such cases, the busying of the page and the unlocking of the containing object by vm_map_pmap_enter() and vm_fault_prefault() is unnecessary overhead. To eliminate this overhead, this change modifies pmap_enter_quick() so that it expects the object to be locked on entry and it assumes the responsibility for busying the page and unlocking the object if it must sleep. Note: alpha, amd64, i386 and ia64 are the only implementations optimized by this change; arm, powerpc, and sparc64 still conservatively busy the page and unlock the object within every pmap_enter_quick() call. Additionally, this change is the first case where we synchronize access to the page's PG_BUSY flag and busy field using the containing object's lock rather than the global page queues lock. (Modifications to the page's PG_BUSY flag and busy field have asserted both locks for several weeks, enabling an incremental transition.) Revision Changes Path 1.175 +30 -13 src/sys/alpha/alpha/pmap.c 1.512 +12 -2 src/sys/amd64/amd64/pmap.c 1.21 +11 -0 src/sys/arm/arm/pmap.c 1.519 +12 -2 src/sys/i386/i386/pmap.c 1.156 +4 -0 src/sys/ia64/ia64/pmap.c 1.91 +8 -0 src/sys/powerpc/powerpc/pmap.c 1.142 +8 -0 src/sys/sparc64/sparc64/pmap.c 1.199 +2 -8 src/sys/vm/vm_fault.c 1.362 +4 -9 src/sys/vm/vm_map.c