From owner-cvs-all Sun May 21 5:50:28 2000 Delivered-To: cvs-all@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id AB09237B5BE; Sun, 21 May 2000 05:50:19 -0700 (PDT) (envelope-from peter@FreeBSD.org) Received: (from peter@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id FAA68825; Sun, 21 May 2000 05:50:19 -0700 (PDT) (envelope-from peter@FreeBSD.org) Message-Id: <200005211250.FAA68825@freefall.freebsd.org> From: Peter Wemm Date: Sun, 21 May 2000 05:50:19 -0700 (PDT) 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 ... Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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