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
Alan Cox
alc at FreeBSD.org
Wed Dec 15 11:55:06 PST 2004
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
More information about the cvs-src
mailing list