Date: Sun, 21 May 2000 05:50:19 -0700 (PDT) From: Peter Wemm <peter@FreeBSD.org> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/alpha/alpha pmap.c src/sys/alpha/include pmap.h src/sys/cam/scsi scsi_da.c src/sys/dev/ata ata-disk.c src/sys/i386/i386 mem.c pmap.c src/sys/i386/include pmap.h src/sys/pc98/pc98 wd.c src/sys/vm pmap.h swap_pager.c vm_fault.c ... Message-ID: <200005211250.FAA68825@freefall.freebsd.org>
index | next in thread | raw e-mail
peter 2000/05/21 05:50:19 PDT
Modified files:
sys/alpha/alpha pmap.c
sys/alpha/include pmap.h
sys/cam/scsi scsi_da.c
sys/dev/ata ata-disk.c
sys/i386/i386 mem.c pmap.c
sys/i386/include pmap.h
sys/pc98/pc98 wd.c
sys/vm pmap.h swap_pager.c vm_fault.c vm_kern.c
vm_mmap.c vm_object.c vm_page.c vm_page.h
vm_pageout.c vnode_pager.c
Log:
Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly
to various pmap_*() functions instead of looking up the physical address
and passing that. In many cases, the first thing the pmap code was doing
was going to a lot of trouble to get back the original vm_page_t, or
it's shadow pv_table entry.
Inspired by: John Dyson's 1998 patches.
Also:
Eliminate pv_table as a seperate thing and build it into a machine
dependent part of vm_page_t. This eliminates having a seperate set of
structions that shadow each other in a 1:1 fashion that we often went to
a lot of trouble to translate from one to the other. (see above)
This happens to save 4 bytes of physical memory for each page in the
system. (8 bytes on the Alpha).
Eliminate the use of the phys_avail[] array to determine if a page is
managed (ie: it has pv_entries etc). Store this information in a flag.
Things like device_pager set it because they create vm_page_t's on the
fly that do not have pv_entries. This makes it easier to "unmanage" a
page of physical memory (this will be taken advantage of in subsequent
commits).
Add a function to add a new page to the freelist. This could be used
for reclaiming the previously wasted pages left over from preloaded
loader(8) files.
Reviewed by: dillon
Revision Changes Path
1.38 +137 -209 src/sys/alpha/alpha/pmap.c
1.7 +4 -4 src/sys/alpha/include/pmap.h
1.48 +3 -5 src/sys/cam/scsi/scsi_da.c
1.68 +3 -5 src/sys/dev/ata/ata-disk.c
1.82 +3 -6 src/sys/i386/i386/mem.c
1.254 +163 -228 src/sys/i386/i386/pmap.c
1.66 +4 -4 src/sys/i386/include/pmap.h
1.111 +4 -5 src/sys/pc98/pc98/wd.c
1.34 +11 -11 src/sys/vm/pmap.h
1.144 +3 -3 src/sys/vm/swap_pager.c
1.111 +3 -4 src/sys/vm/vm_fault.c
1.64 +2 -3 src/sys/vm/vm_kern.c
1.112 +3 -3 src/sys/vm/vm_mmap.c
1.176 +2 -2 src/sys/vm/vm_object.c
1.151 +29 -15 src/sys/vm/vm_page.c
1.76 +6 -3 src/sys/vm/vm_page.h
1.156 +9 -9 src/sys/vm/vm_pageout.c
1.123 +4 -4 src/sys/vm/vnode_pager.c
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200005211250.FAA68825>
