Subject: CVS commit: src/sys/arch/arm
To: None <source-changes@netbsd.org>
From: Steve Woodford <scw@netbsd.org>
List: source-changes
Date: 04/18/2003 11:08:29
Module Name: src
Committed By: scw
Date: Fri Apr 18 11:08:28 UTC 2003
Modified Files:
src/sys/arch/arm/arm32: arm32_machdep.c bus_dma.c cpuswitch.S
db_interface.c fault.c genassym.cf vm_machdep.c
src/sys/arch/arm/conf: files.arm
src/sys/arch/arm/include: pcb.h
src/sys/arch/arm/include/arm32: pmap.h pte.h types.h vmparam.h
Added Files:
src/sys/arch/arm/arm32: pmap_new.c
Log Message:
Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.
Some features of the new pmap are:
- It allows L1 descriptor tables to be shared efficiently between
multiple processes. A typical "maxusers 32" kernel, where NPROC is set
to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily
with just 4 L1s. This completely solves the problem of running out
of contiguous physical memory for allocating new L1s at runtime on a
busy system.
- Much improved cache/TLB management "smarts". This change ripples
out to encompass the low-level context switch code, which is also
much smarter about when to flush the cache/TLB, and when not to.
- Faster allocation of L2 page tables and associated metadata thanks,
in part, to the pool_cache enhancements recently contributed to
NetBSD by Wasabi Systems.
- Faster VM space teardown due to accurate referenced tracking of L2
page tables.
- Better/faster cache-alias tracking.
The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel
config file, and making the necessary changes to the port-specific
initarm() function. Several ports have already been converted and will
be committed shortly.
To generate a diff of this commit:
cvs rdiff -r1.30 -r1.31 src/sys/arch/arm/arm32/arm32_machdep.c
cvs rdiff -r1.28 -r1.29 src/sys/arch/arm/arm32/bus_dma.c
cvs rdiff -r1.29 -r1.30 src/sys/arch/arm/arm32/cpuswitch.S
cvs rdiff -r1.22 -r1.23 src/sys/arch/arm/arm32/db_interface.c
cvs rdiff -r1.26 -r1.27 src/sys/arch/arm/arm32/fault.c
cvs rdiff -r1.21 -r1.22 src/sys/arch/arm/arm32/genassym.cf
cvs rdiff -r0 -r1.1 src/sys/arch/arm/arm32/pmap_new.c
cvs rdiff -r1.25 -r1.26 src/sys/arch/arm/arm32/vm_machdep.c
cvs rdiff -r1.66 -r1.67 src/sys/arch/arm/conf/files.arm
cvs rdiff -r1.7 -r1.8 src/sys/arch/arm/include/pcb.h
cvs rdiff -r1.64 -r1.65 src/sys/arch/arm/include/arm32/pmap.h
cvs rdiff -r1.5 -r1.6 src/sys/arch/arm/include/arm32/pte.h
cvs rdiff -r1.6 -r1.7 src/sys/arch/arm/include/arm32/types.h
cvs rdiff -r1.12 -r1.13 src/sys/arch/arm/include/arm32/vmparam.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.