|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.11 |
04-Jan-2017 |
christos |
really, don't install uvm_physseg.h!
|
| 1.10 |
22-Dec-2016 |
cherry |
Use uvm_physseg.h:uvm_page_physload() instead of uvm_extern.h
For this, include uvm_physseg.h in the build and include tree, make a cosmetic modification to the prototype for uvm_page_physload().
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase nick-csl-alignment-base5 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base matt-armv6-nbase jmcneill-base netbsd-4-0-RC4 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.9 |
11-Feb-2006 |
yamt |
branches: 1.9.134; 1.9.138; remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 yamt-readahead-base3 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 yamt-readahead-base2 netbsd-3-0-RC2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base netbsd-3-0-RC1 yamt-vop-base3 netbsd-2-0-3-RELEASE yamt-vop-base2 thorpej-vnode-attr-base netbsd-2-1-RELEASE yamt-vop-base netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base ktrace-lwp-base nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.8 |
26-Nov-2002 |
lukem |
branches: 1.8.22; 1.8.34; 1.8.36; 1.8.38; Remove KDIR=, since SYS_INCLUDE=symlinks and KDIR are not supported any more.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf kqueue-base
|
| 1.7 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.6 |
01-Aug-2000 |
wiz |
branches: 1.6.2; 1.6.4; 1.6.6; Rename VM_INHERIT_* to MAP_INHERIT_* and move them to sys/sys/mman.h as discussed on tech-kern. Retire sys/uvm/uvm_inherit.h, update man page for minherit(2).
|
| 1.5 |
27-Jun-2000 |
mrg |
install uvm_pmap.h
|
| 1.4 |
26-Jun-2000 |
mrg |
install uvm_param.h.
|
| 1.3 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
| 1.2 |
25-Jun-2000 |
mrg |
<vm/vm_prot.h> becomes <uvm/uvm_prot.h>
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-4-PATCH003 netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base netbsd-1-4-PATCH002 chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base kame_141_19991130 comdex-fall-1999-base fvdl-softdep-base netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 chs-ubc2-base netbsd-1-4-RELEASE netbsd-1-4-base kenh-if-detach-base chs-ubc-base eeh-paddr_t-base
|
| 1.1 |
12-Jun-1998 |
cgd |
branches: 1.1.14; Rework the way kernel include files are installed. In the new method, as with user-land programs, include files are installed by each directory in the tree that has includes to install. (This allows more flexibility as to what gets installed, makes 'partial installs' easier, and gives us more options as to which machines' includes get installed at any given time.) The old SYS_INCLUDES={symlinks,copies} behaviours are _both_ still supported, though at least one bug in the 'symlinks' case is fixed by this change. Include files can't be build before installation, so directories that have includes as targets (e.g. dev/pci) have to move those targets into a different Makefile.
|
|
Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE yamt-pagecache-base9 yamt-pagecache-tag8 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE rmind-smpnet-nbase rmind-smpnet-base agc-symver-base tls-maxphys-base yamt-pagecache-base8 yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-nb5-pq3-base netbsd-5-1-RELEASE yamt-nfs-mp-base11 netbsd-5-1-RC4 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE yamt-nfs-mp-base8 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base haad-dm-base1 haad-dm-base simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base jmcneill-pm-base hpcarm-cleanup-base mjf-ufs-trans-base yamt-idlelwp-base8 reinoud-bufcleanup-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 elad-kernelauth-nbase yamt-pdpolicy-base4 yamt-pdpolicy-base3 yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base yamt-km-base4 yamt-km-base3 yamt-km-base2 yamt-km-base kent-audio2-base ktrace-lwp-base nathanw_sa_before_merge gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base kqueue-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase chs-ubc2-newbase fvdl-softdep-base thorpej_scsipi_base
|
| 1.1 |
25-Mar-1999 |
chs |
branches: 1.1.2; file README.ubc was initially added on branch chs-ubc.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 thorpej-i2c-spi-conf-base
|
| 1.37 |
03-Jun-2021 |
riastradh |
uvm(9): Enable swap encryption by default.
For machines where the performance impact of swapping before the system has an opportunity to process `vm.swap_encrypt=0' in /etc/sysctl.conf, you can disable it again by adding
options VMSWAP_DEFAULT_PLAINTEXT
to the kernel config.
|
|
Revision tags: cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-cfargs-base thorpej-futex-base
|
| 1.36 |
04-Aug-2020 |
skrll |
branches: 1.36.6; 1.36.10; G/C USE_TOPDOWN_VM. __USE_TOPDOWN_VM is used (and hidden)
|
| 1.35 |
29-Jun-2020 |
riastradh |
uvm(9): Switch from legacy rijndael API to new aes API.
|
| 1.34 |
10-May-2020 |
pgoyette |
Add missing dependency.
Fixes builds with VM_SWAP but no other users of rijndael crypto code.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1
|
| 1.33 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.32 |
27-Dec-2019 |
ad |
branches: 1.32.2; Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
| 1.31 |
15-Dec-2019 |
ad |
Merge from yamt-pagecache:
- do gang lookup of pages using radixtree. - remove now unused uvm_object::uo_memq and vm_page::listq.queue.
|
| 1.30 |
20-Nov-2019 |
pgoyette |
Move all non-emulation-specific coredump code into the coredump module, and remove all #ifdef COREDUMP conditional compilation. Now, the coredump module is completely separated from the emulation modules, and they can all be independently loaded and unloaded.
Welcome to 9.99.18 !
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
|
| 1.29 |
19-May-2018 |
jdolecek |
branches: 1.29.2; Remove emap support. Unfortunately it never got to state where it would be used and usable, due to reliability and limited & complicated MD support.
Going forward, we need to concentrate on interface which do not map anything into kernel in first place (such as direct map or KVA-less I/O), rather than making those mappings cheaper to do.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.28 |
23-Dec-2016 |
cherry |
branches: 1.28.14; "Make NetBSD great again!"
Introduce uvm_hotplug(9) to the kernel.
Many thanks, in no particular order to:
TNF, for funding the project.
Chuck Silvers - for multiple API reviews and feedback. Nick Hudson - for testing on multiple architectures and bugfix patches. Everyone who helped with boot testing.
KeK (http://www.kek.org.in) for hosting the primary developers.
|
|
Revision tags: nick-nhusb-base-20161204
|
| 1.27 |
01-Dec-2016 |
mrg |
allow the sizes of the maphist and pdhist to be set in the config file via UVMHIST_MAPHIST_SIZE and UVMHIST_PDHIST_SIZE.
|
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914
|
| 1.26 |
12-Aug-2016 |
skrll |
Make UVMHIST_PRINT work again by making it define KERNHIST_PRINT
|
|
Revision tags: pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
| 1.25 |
27-Jul-2015 |
maxv |
branches: 1.25.2; Several changes and improvements in KMEM_GUARD: - merge uvm_kmguard.{c,h} into subr_kmem.c. It is only user there, and makes it more consistent. Also, it allows us to enable KMEM_GUARD without enabling DEBUG. - rename uvm_kmguard_XXX to kmem_guard_XXX, for consistency - improve kmem_guard_alloc() so that it supports allocations bigger than PAGE_SIZE - remove the canary value, and use directly the kmem header as underflow pattern. - fix some comments
(The UAF fifo is disabled for the moment; we actually need to register the va and its size, and add a weight support not to consume too much memory.)
|
|
Revision tags: nick-nhusb-base-20150606
|
| 1.24 |
12-Apr-2015 |
joerg |
UVM_RESERVED_PAGES_PER_CPU must be a param, not a flag.
|
| 1.23 |
11-Apr-2015 |
joerg |
Allow changing the per-cpu emergency page reservation via kernel config.
|
|
Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
|
| 1.22 |
10-Oct-2014 |
uebayasi |
branches: 1.22.2; Use opt_*.h to not polute CPPFLAGS.
Attribute dependency is not yet. Revert a definition.
|
| 1.21 |
10-Oct-2014 |
uebayasi |
Define "uvm" attribute and mark files.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.20 |
17-May-2011 |
mrg |
branches: 1.20.4; 1.20.14; fix the ordering and make UVMHIST enable KERNHIST automatically.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231
|
| 1.19 |
09-Dec-2010 |
uebayasi |
branches: 1.19.2; Make UVM_PAGE_TRKOWN a real flag.
|
|
Revision tags: uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9
|
| 1.18 |
21-Feb-2010 |
drochner |
branches: 1.18.2; rename the va0_disabled option and cpp conditional to "disable" as well, for consistency, and document option and sysctl flag
|
| 1.17 |
18-Feb-2010 |
drochner |
Disable mapping of virtual address 0 by user programs per default. This blocks an easy exploit of kernel bugs leading to dereference of a NULL pointer on some architectures (eg i386). The check can be disabled in various ways: -by CPP definitions in machine/types.h (portmaster's choice) -by a kernel config option USER_VA0_DISABLED_DEFAULT=0 -at runtime by sysctl vm.user_va0_disabled (cannot be cleared at securelevel>0)
|
|
Revision tags: uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
| 1.16 |
21-Oct-2009 |
rmind |
branches: 1.16.2; Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
| 1.15 |
09-Aug-2009 |
matt |
Add [default] option to make UAREAs swappable. Disabling the option makes them unswappable and therefore allocatable using KSEG/BAT/etc.
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6
|
| 1.14 |
28-Jun-2009 |
rmind |
Ephemeral mapping (emap) implementation. Concept is based on the idea that activity of other threads will perform the TLB flush for the processes using emap as a side effect. To track that, global and per-CPU generation numbers are used. This idea was suggested by Andrew Doran; various improvements to it by me. Notes:
- For now, zero-copy on pipe is not yet enabled. - TCP socket code would likely need more work. - Additional UVM loaning improvements are needed.
Proposed on <tech-kern>, silence there. Quickly reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
| 1.13 |
29-Mar-2009 |
ad |
kernel memory guard for DEBUG kernels, proposed on tech-kern. See kmem_alloc(9) for details.
|
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
| 1.12 |
19-Nov-2008 |
ad |
branches: 1.12.4; Make the emulations, exec formats, coredump, NFS, and the NFS server into modules. By and large this commit:
- shuffles header files and ifdefs - splits code out where necessary to be modular - adds module glue for each of the components - adds/replaces hooks for things that can be installed at runtime
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base
|
| 1.11 |
04-Jun-2008 |
ad |
branches: 1.11.4; 1.11.6; 1.11.12; - Switch off the map evcnts by default. - SAVE_HINT() doesn't need to be atomic.
|
|
Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
| 1.10 |
25-Oct-2007 |
yamt |
branches: 1.10.16; 1.10.18; 1.10.20; 1.10.22; defparam PAGER_MAP_SIZE.
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base vmlocking-base
|
| 1.9 |
17-Jul-2007 |
joerg |
branches: 1.9.6; 1.9.8; 1.9.12; Add native mremap system call based on the UVM implementation for Linux compat. Add code to enforce alignment of the new location. Special thanks to wizd for helping with the man page.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
| 1.8 |
25-Nov-2006 |
christos |
branches: 1.8.8; PR/34837: Mindaguas: Add SysV SHM dynamic reallocation and locking to the physical memory
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.7 |
12-Oct-2006 |
yamt |
uobj_wirepages and uobj_unwirepages from Mindaugas. PR/34771. (commented out in files.uvm for now because there is no user in tree.)
http://mail-index.netbsd.org/tech-kern/2006/09/24/0000.html http://mail-index.netbsd.org/tech-kern/2006/10/10/0000.html
|
| 1.6 |
30-Sep-2006 |
yamt |
add ubc window hit/miss evcnts.
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.5 |
15-Sep-2006 |
yamt |
branches: 1.5.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.4 |
21-Jan-2006 |
yamt |
branches: 1.4.6; 1.4.16; 1.4.20; implement compat_linux mremap.
|
|
Revision tags: ktrace-lwp-base
|
| 1.3 |
29-Nov-2005 |
yamt |
branches: 1.3.2; 1.3.4; merge yamt-readahead branch.
|
|
Revision tags: yamt-readahead-base3
|
| 1.2 |
29-Nov-2005 |
yamt |
branches: 1.2.2; read-ahead statistics.
|
| 1.1 |
27-Nov-2005 |
thorpej |
Move UVM files to files.uvm
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.78 |
17-Jul-2023 |
riastradh |
uvm(9): One rndsource for faults -- not one per CPU.
All relevant state is per-CPU anyway; the only substantive difference this makes is how many entries appear in `rndctl -l' output and what they are called -- formerly the somewhat confusing `cpuN', meaning `page faults on cpuN', and now just `uvmfault'. I don't think there's any real value in being able to enable or disable measurement or counting of page faults on one CPU vs others, so although this could be a minor compatibility change, it's hard to imagine it matters much.
XXX kernel ABI change in struct cpu_info
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.77 |
17-May-2020 |
ad |
- If the hardware provided NUMA info, then use it to decide how to set up the allocator's buckets, instead of doing round robin distribution. There are open questions here but this is better than doing nothing.
- Kernel reserve pages are for the kernel not realtime threads.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.76 |
14-Mar-2020 |
ad |
Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.75 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
| 1.74 |
18-Feb-2020 |
chs |
remove the aiodoned thread. I originally added this to provide a thread context for doing page cache iodone work, but since then biodone() has changed to hand off all iodone work to a softint thread, so we no longer need the special-purpose aiodoned thread.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.73 |
31-Dec-2019 |
ad |
branches: 1.73.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.72 |
27-Dec-2019 |
ad |
Nothing uses uvm.cpus any more, and we can do the same with cpu_lookup(), so get rid of it.
|
| 1.71 |
27-Dec-2019 |
ad |
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
| 1.70 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.69 |
01-Dec-2019 |
ad |
- Adjust uvmexp.swpgonly with atomics, and make uvm_swap_data_lock static. - A bit more __cacheline_aligned on mutexes.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.68 |
02-Jan-2017 |
cherry |
branches: 1.68.16; Move sys/uvm/uvm_physseg.h inclusion to within _KERNEL only.
|
| 1.67 |
22-Dec-2016 |
cherry |
Use uvm_physseg.h:uvm_page_physload() instead of uvm_extern.h
For this, include uvm_physseg.h in the build and include tree, make a cosmetic modification to the prototype for uvm_page_physload().
|
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
| 1.66 |
13-Apr-2015 |
riastradh |
branches: 1.66.2; Limit <sys/rndsource.h> include to kernel.
|
| 1.65 |
13-Apr-2015 |
riastradh |
Convert remaining MI <sys/rnd.h> stragglers. Many MD ones left.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base tls-maxphys-base
|
| 1.64 |
10-Aug-2014 |
tls |
branches: 1.64.4; Merge tls-earlyentropy branch into HEAD.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-base9 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.63 |
02-Feb-2012 |
tls |
branches: 1.63.6; 1.63.20; Entropy-pool implementation move and cleanup.
1) Move core entropy-pool code and source/sink/sample management code to sys/kern from sys/dev.
2) Remove use of NRND as test for presence of entropy-pool code throughout source tree.
3) Remove use of RND_ENABLED in device drivers as microoptimization to avoid expensive operations on disabled entropy sources; make the rnd_add calls do this directly so all callers benefit.
4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might have lead to slight entropy overestimation for some sources.
5) Add new source types for environmental sensors, power sensors, VM system events, and skew between clocks, with a sample implementation for each.
ok releng to go in before the branch due to the difficulty of later pullup (widespread #ifdef removal and moved files). Tested with release builds on amd64 and evbarm and live testing on amd64.
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.62 |
17-May-2011 |
mrg |
branches: 1.62.4; 1.62.8; move and rename the uvm history code out of uvm_stat to "kernhist".
rename "UVMHIST" option to enable the uvm histories.
TODO: - make UVMHIST properly depend upon KERNHIST - enable dynamic registration of histories. this is mostly just allocating something in a bitmap, and is only for viewing multiple histories in a merged form.
tested on amd64 and sparc64.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.61 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
| 1.60 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231
|
| 1.59 |
09-Dec-2010 |
uebayasi |
branches: 1.59.2; 1.59.4; Make UVM_PAGE_TRKOWN a real flag.
|
|
Revision tags: uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1
|
| 1.58 |
25-Apr-2010 |
ad |
Reduce memory spent on bookkeeping for large values of MAXCPUS.
|
|
Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
| 1.57 |
21-Oct-2009 |
rmind |
branches: 1.57.2; 1.57.4; Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6
|
| 1.56 |
28-Jun-2009 |
rmind |
Ephemeral mapping (emap) implementation. Concept is based on the idea that activity of other threads will perform the TLB flush for the processes using emap as a side effect. To track that, global and per-CPU generation numbers are used. This idea was suggested by Andrew Doran; various improvements to it by me. Notes:
- For now, zero-copy on pipe is not yet enabled. - TCP socket code would likely need more work. - Additional UVM loaning improvements are needed.
Proposed on <tech-kern>, silence there. Quickly reviewed by <ad>.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
|
| 1.55 |
04-Jun-2008 |
ad |
branches: 1.55.12; 1.55.16; Replace the global vm_page hash with a per vm_object rbtree. Proposed on tech-kern@.
|
| 1.54 |
04-Jun-2008 |
ad |
- vm_page: put listq, pageq into a union alongside a LIST_ENTRY, so we can use both types of list.
- Make page coloring and idle zero state per-CPU.
- Maintain per-CPU page freelists. When freeing, put pages onto the local CPU's lists and the global lists. When allocating, prefer to take pages from the local CPU. If none are available take from the global list as done now. Proposed on tech-kern@.
|
|
Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.53 |
02-Jan-2008 |
ad |
branches: 1.53.6; 1.53.8; 1.53.10; 1.53.12; Merge vmlocking2 to head.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
|
| 1.52 |
21-Jul-2007 |
ad |
branches: 1.52.6; 1.52.12; 1.52.14; 1.52.18; 1.52.22; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base mjf-ufs-trans-base
|
| 1.51 |
09-Jul-2007 |
ad |
branches: 1.51.2; Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
| 1.50 |
15-Jun-2007 |
ad |
Add a sysctl to disable swapout of kernel stacks. Discussed on tech-kern@.
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base ad-audiomp-base
|
| 1.49 |
21-Feb-2007 |
thorpej |
branches: 1.49.4; 1.49.6; Pick up some additional files that were missed before due to conflicts with newlock2 merge:
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
| 1.48 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
| 1.47 |
19-Feb-2007 |
ad |
uvm_kick_scheduler(): do nothing until the swap subsystem is initialized.
|
| 1.46 |
15-Feb-2007 |
ad |
branches: 1.46.2; Add uvm_kick_scheduler() (MP safe) to replace wakeup(&proc0).
|
|
Revision tags: post-newlock2-merge newlock2-nbase newlock2-base
|
| 1.45 |
21-Dec-2006 |
yamt |
merge yamt-splraiseipl branch.
- finish implementing splraiseipl (and makeiplcookie). http://mail-index.NetBSD.org/tech-kern/2006/07/01/0000.html - complete workqueue(9) and fix its ipl problem, which is reported to cause audio skipping. - fix netbt (at least compilation problems) for some ports. - fix PR/33218.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base netbsd-4-base
|
| 1.44 |
15-Sep-2006 |
yamt |
branches: 1.44.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.43 |
11-Feb-2006 |
yamt |
branches: 1.43.2; 1.43.14; remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
| 1.42 |
29-Nov-2005 |
yamt |
branches: 1.42.2; 1.42.4; 1.42.6; read-ahead statistics.
|
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3
|
| 1.41 |
30-Oct-2005 |
yamt |
branches: 1.41.2; don't include uvm_*_i.h unless needed, to reduce bogus header dependencies.
|
|
Revision tags: yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.40 |
11-May-2005 |
yamt |
branches: 1.40.2; 1.40.4; allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge
|
| 1.39 |
01-Jan-2005 |
yamt |
for in-kernel maps, - allocate kva for vm_map_entry from the map itsself and remove the static limit, MAX_KMAPENT. - keep merged entries for later splitting to fix allocate-to-free problem. PR/24039.
|
|
Revision tags: kent-audio1-base
|
| 1.38 |
23-Nov-2004 |
yamt |
introduce UVMHIST_LOANHIST and sprinkle UVMHIST_LOGs.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.37 |
10-Feb-2004 |
matt |
Back out the changes in http://mail-index.netbsd.org/source-changes/2004/01/29/0027.html since they don't really fix the problem.
Incorpate one fix: Mark uvm_map_entry's that were created with UVM_FLAG_NOMERGE so that they will not be used as future merge candidates.
|
| 1.36 |
29-Jan-2004 |
yamt |
- split uvm_map() into two functions for the followings. - for in-kernel maps, disable map entry merging so that unmap operations won't block. (workaround for PR/24039) - for in-kernel maps, allocate kva for vm_map_entry from the map itsself and eliminate MAX_KMAPENT and uvm_map_entry_kmem_pool.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.35 |
01-Dec-2002 |
matt |
branches: 1.35.6; Reorder things so that with multiple inclusion protection that optional definitions are outside the protection checks.
|
| 1.34 |
02-Nov-2002 |
perry |
gah. reversed a test.
|
| 1.33 |
02-Nov-2002 |
perry |
/*CONTCOND*/, and protect UVMHIST_DECL with #ifdef UVMHIST
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.32 |
15-Sep-2002 |
thorpej |
Protect "struct uvm" with _KERNEL.
|
|
Revision tags: netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.31 |
15-Sep-2001 |
chs |
branches: 1.31.6; 1.31.12; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.30 |
27-Jun-2001 |
thorpej |
branches: 1.30.2; 1.30.4; Macro'ize the code that checks the free and inactive thresholds and wakes the pagedaemon.
|
| 1.29 |
02-Jun-2001 |
chs |
replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.28 |
30-May-2001 |
mrg |
use _KERNEL_OPT
|
| 1.27 |
26-May-2001 |
chs |
replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
|
| 1.26 |
22-May-2001 |
ross |
Merge the swap-backed and object-backed inactive lists.
|
| 1.25 |
29-Apr-2001 |
thorpej |
Implement page coloring, using a round-robin bucket selection algorithm (Solaris calls this "Bin Hopping").
This implementation currently relies on MD code to define a constant defining the number of buckets. This will change reasonably soon (MD code will be able to dynamically size the bucket array).
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.24 |
27-Nov-2000 |
chs |
branches: 1.24.2; Initial integration of the Unified Buffer Cache project.
|
| 1.23 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
|
| 1.22 |
08-Jun-2000 |
thorpej |
Change UVM_UNLOCK_AND_WAIT() to use ltsleep() (it is now atomic, as advertised). Garbage-collect uvm_sleep().
|
|
Revision tags: minoura-xpg4dl-base
|
| 1.21 |
24-Apr-2000 |
thorpej |
branches: 1.21.2; Changes necessary to implement pre-zero'ing of pages in the idle loop: - Make page free lists have two actual queues: known-zero pages and pages with unknown contents. - Implement uvm_pageidlezero(). This function attempts to zero up to the target number of pages until the target has been reached (currently target is `all free pages') or until whichqs becomes non-zero (indicating that a process is ready to run). - Define a new hook for the pmap module for pre-zero'ing pages. This is used to zero the pages using uncached access. This allows us to zero as many pages as we want without polluting the cache.
In order to use this feature, each platform must add the appropropriate glue in their idle loop.
|
| 1.20 |
10-Apr-2000 |
chs |
tidy.
|
| 1.19 |
02-Apr-2000 |
thorpej |
Instead of checking vm_physmem[<physseg>].pgs to determine if uvm_page_init() has completed, add a boolean uvm.page_init_done, and test against that. Use this same boolean (rather than pmap_initialized) in pmap_growkernel() to determine if we are being called via uvm_page_init() to grow the kernel address space.
This fixes a problem on some i386 configurations where pmap_init() itself was needing to have the kernel page table grown, and since pmap_initialized was not yet set to TRUE, pmap_growkernel() was choosing the wrong code path.
Fix tested by Havard Eidnes.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base fvdl-softdep-base
|
| 1.18 |
13-Nov-1999 |
thorpej |
Always pass all arguments to uvm_sleep().
|
|
Revision tags: comdex-fall-1999-base chs-ubc2-base
|
| 1.17 |
22-Jul-1999 |
thorpej |
branches: 1.17.2; 1.17.4; 1.17.8; Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.16 |
21-Jun-1999 |
thorpej |
Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.15 |
26-Mar-1999 |
chs |
branches: 1.15.2; 1.15.4; add uvmexp.swpgonly and use it to detect out-of-swap conditions.
|
| 1.14 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.13 |
11-Oct-1998 |
chuck |
branches: 1.13.2; remove unused share map code from UVM: dump UVM_ET_MAP/UVM_ET_ISMAP. if you need to detect a submap use UVM_ET_SUBMAP/UVM_ET_ISSUBMAP.
|
| 1.12 |
24-Sep-1998 |
thorpej |
NCPU > 1 -> MULTIPROCESSOR
|
| 1.11 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.10 |
08-Jul-1998 |
thorpej |
branches: 1.10.2; Add support for multiple memory free lists. There is at least one default free list, and 0 - N additional free list, in order of descending priority.
A new page allocation function, uvm_pagealloc_strat(), has been added, providing three page allocation strategies:
- normal: high -> low priority free list walk, taking the page off the first free list that has one.
- only: attempt to allocate a page only from the specified free list, failing if that free list has none available.
- fallback: if `only' fails, fall back on `normal'.
uvm_pagealloc(...) is provided for normal use (and is a synonym for uvm_pagealloc_strat(..., UVM_PGA_STRAT_NORMAL, 0); the free list argument is ignored for the `normal' case).
uvm_page_physload() now specified which free list the pages will be loaded onto. This means that some platforms which have multiple physical memory segments may define additional vm_physsegs if they wish to break individual physical segments into differing priorities.
Machine-dependent code must define _at least_ the following constants in <machine/vmparam.h>:
VM_NFREELIST: the number of free lists the system will have
VM_FREELIST_DEFAULT: the default freelist (should always be 0, but is defined in machdep code so that it's with all of the other free list-related constants).
Additional free list names may be defined by machine-dependent code, but they will only be used by machine-dependent code (e.g. for loading the vm_physsegs).
|
| 1.9 |
04-Jul-1998 |
pk |
Shield `#include opt_*.h'.
|
| 1.8 |
20-May-1998 |
thorpej |
defopt LOCKDEBUG
|
| 1.7 |
18-May-1998 |
pk |
No dummy locks if LOCKDEBUG.
|
| 1.6 |
01-Mar-1998 |
fvdl |
Merge with Lite2 + local changes
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.129 |
10-Sep-2023 |
ad |
Align uvm_amap to COHERENCY_UNIT.
|
| 1.128 |
19-Jun-2023 |
msaitoh |
s/value value/value/ in comment. No functional change.
|
| 1.127 |
09-Apr-2023 |
riastradh |
uvm(9): KASSERT(A && B) -> KASSERT(A); KASSERT(B)
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.126 |
13-Mar-2021 |
skrll |
Consistently use %#jx instead of 0x%jx or just %jx in UVMHIST_LOG formats
|
| 1.125 |
21-Sep-2020 |
chs |
branches: 1.125.2; the previous fix for PR 55366 in uvm_amap.c 1.124 was incomplete: - amap_adjref_anons() must also ignore AMAP_REFALL when updating the ppref, not just when deciding whether or not to initialize ppref. - UVM_EXTRACT_QREF relies on AMAP_REFALL to work properly, and since we can't use AMAP_REFALL then we can't use QREF either.
|
| 1.124 |
20-Sep-2020 |
chs |
Effectively disable the AMAP_REFALL flag because it is unsafe. This flag tells the amap code that it does not need to allocate ppref as part of adding or removing a reference, but that is only correct if the range of the reference being added or removed is the same as the range of all other references to the amap, and the point of this flag is exactly to try to optimize the case where the range is different and thus this flag would not be correct to use. Fixes PR 55366.
|
| 1.123 |
18-Aug-2020 |
chs |
fix amap_extend() to handle amaps where we previously failed to allocate the ppref memory.
|
| 1.122 |
09-Jul-2020 |
skrll |
Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.121 |
08-Jul-2020 |
skrll |
Trailing whitespace
|
| 1.120 |
17-May-2020 |
ad |
Mark amappl with PR_LARGECACHE.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.119 |
20-Mar-2020 |
ad |
Go back to freeing struct vm_anon one by one. There may have been an advantage circa ~2008 but there isn't now.
|
| 1.118 |
14-Mar-2020 |
ad |
Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
| 1.117 |
14-Mar-2020 |
ad |
- Hide the details of SPCF_SHOULDYIELD and related behind a couple of small functions: preempt_point() and preempt_needed().
- preempt(): if the LWP has exceeded its timeslice in kernel, strip it of any priority boost gained earlier from blocking.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.116 |
24-Feb-2020 |
rin |
0x%#x --> %#x for non-external codes. Also, stop mixing up 0x%x and %#x in single files as far as possible.
|
| 1.115 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.114 |
02-Jan-2020 |
ad |
branches: 1.114.2; Back out the amap allocation changes from earlier today - have seen a panic with them. Retain the lock changes.
|
| 1.113 |
01-Jan-2020 |
ad |
- Start trying to reduce the high cache miss rate observed around vm_amap. On _LP64, pad struct vm_amap to 128 bytes and use the additional space to hold the arrays for tiny amaps which are common. Carefully size the array allocations to avoid false sharing, and for smaller amaps try to share allocated cache lines.
- Eliminate most contention due to amap_list: maintain the list in the pool cache constructor / destructor like we do for struct file. Cache the mutexes we allocate here.
- Don't do PR_WAITOK mutex allocations when NOWAIT has been specified.
|
| 1.112 |
01-Jan-2020 |
ad |
PR kern/54821: 9.99.32 assertion in uvm_pageactivate
Looks like I forgot to commit this file yesterday.
|
| 1.111 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.110 |
01-Dec-2019 |
ad |
Activate pages in batch instead of acquring uvm_pageqlock a zillion times.
|
|
Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
| 1.109 |
12-Aug-2018 |
maxv |
branches: 1.109.4; Rename 'slotspace' -> 'slotarea' in UVM, to avoid (future) collision with the x86 slotspace structure.
|
|
Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.108 |
28-Oct-2017 |
pgoyette |
branches: 1.108.2; 1.108.4; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4
|
| 1.107 |
08-Apr-2012 |
chs |
branches: 1.107.2; 1.107.32; initialize amap per-page reference counts before changing the amap's overall reference count. this fixes the crashes seen for the last 9 months with web browers and plugins, which was also the cause of PR 46193.
|
|
Revision tags: jmcneill-usbmp-base8
|
| 1.106 |
30-Mar-2012 |
chs |
adjust amap_cow_now() to make UVM_PAGE_TRKOWN happy.
|
|
Revision tags: jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.105 |
27-Jan-2012 |
para |
branches: 1.105.2; extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.104 |
11-Oct-2011 |
yamt |
branches: 1.104.2; 1.104.6; assertion
|
| 1.103 |
17-Aug-2011 |
rmind |
amap_cow_now: just free the fresh anon on error, no need to dispose it.
|
| 1.102 |
06-Aug-2011 |
rmind |
- Rework uvm_anfree() into uvm_anon_freelst(), which always drops the lock. - Free anons in uvm_anon_freelst() without lock held. - Mechanic sync to unused loaning code.
|
| 1.101 |
05-Jul-2011 |
yamt |
reduce the number of atomic ops in common cases. it's exceptional for anons to remain longer than amap.
|
| 1.100 |
27-Jun-2011 |
hannken |
amap_copy(): Keep the source amap locked until its lock has been copied.
Kernel assertion "anon->an_lock == amap->am_lock" no longer fails.
Ok: Mindaugas Rasiukevicius <rmind@netbsd.org>
|
| 1.99 |
24-Jun-2011 |
rmind |
amap_copy: fix one more regression, thanks to enami@.
|
| 1.98 |
24-Jun-2011 |
rmind |
Fix uvmplock regression - a lock against oneself case in amap_swap_off(). Happens since amap is NULL in uvmfault_anonget(), so uvmfault_unlockall() keeps anon locked, when it should unlock it.
|
| 1.97 |
24-Jun-2011 |
rmind |
amap_pp_adjref: fix regression, spotted by nonaka@.
|
| 1.96 |
23-Jun-2011 |
rmind |
Clean-up, add asserts, slightly simplify.
|
| 1.95 |
18-Jun-2011 |
rmind |
Clean up, sprinkle asserts, consify, use unsigned, use kmem_zalloc instead of memset, reduce the scope of some variables, improve some comments.
No functional change intended.
|
| 1.94 |
18-Jun-2011 |
rmind |
amap_add/amap_unadd: clean up slightly, use unsigned, add asserts.
|
| 1.93 |
18-Jun-2011 |
rmind |
Add amap_adjref_anons() helper and simplify amap_ref()/amap_unref().
|
| 1.92 |
16-Jun-2011 |
rmind |
amap_lookup{s}: add assert, clean-up slightly.
|
| 1.91 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.90 |
23-Apr-2011 |
rmind |
branches: 1.90.2; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.89 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
| 1.88 |
21-Oct-2009 |
rmind |
branches: 1.88.4; 1.88.6; 1.88.8; Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
| 1.87 |
16-Aug-2009 |
yamt |
assertions
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
| 1.86 |
28-Mar-2009 |
rmind |
Convert some panic() checks to KASSERT()s. This code is stable and there is no reason to enforce checks.
|
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
| 1.85 |
03-Dec-2008 |
ad |
branches: 1.85.4; Make adjustment of uvm_extrapages atomic since it's done without a lock. XXX This is still a hack.
|
|
Revision tags: netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.84 |
02-Jan-2008 |
ad |
branches: 1.84.6; 1.84.10; 1.84.16; 1.84.18; 1.84.20; Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase jmcneill-pm-base
|
| 1.83 |
08-Dec-2007 |
ad |
branches: 1.83.4; Allocate amaps from a pool_cache.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base reinoud-bufcleanup-base vmlocking-base
|
| 1.82 |
21-Jul-2007 |
ad |
branches: 1.82.4; 1.82.6; 1.82.12; 1.82.14; 1.82.16; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base mjf-ufs-trans-base
|
| 1.81 |
09-Jul-2007 |
ad |
branches: 1.81.2; Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
|
| 1.80 |
12-Mar-2007 |
ad |
branches: 1.80.2; 1.80.4; Pass an ipl argument to pool_init/POOL_INIT to be used when initializing the pool's lock.
|
|
Revision tags: ad-audiomp-base
|
| 1.79 |
22-Feb-2007 |
thorpej |
branches: 1.79.4; TRUE -> true, FALSE -> false
|
| 1.78 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: post-newlock2-merge
|
| 1.77 |
09-Feb-2007 |
ad |
branches: 1.77.2; Merge newlock2 to head.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
| 1.76 |
01-Nov-2006 |
yamt |
remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.75 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 rpaulo-netinet-merge-pcb-base
|
| 1.74 |
25-Jun-2006 |
yamt |
branches: 1.74.4; 1.74.6; make amap use kmem_alloc, rather than malloc. (ie. make it use kernel_map, rather than kmem_map.) kmem_map is more restricted than kernel_map, and there's no point for amap to use it.
|
|
Revision tags: chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
| 1.73 |
21-Apr-2006 |
yamt |
branches: 1.73.4; amap_splitref: assert that origref->ar_amap is initialized by caller beforehand.
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.72 |
15-Feb-2006 |
yamt |
branches: 1.72.2; 1.72.4; 1.72.6; - amap_copy: take a "flags" argument instead of booleans. - add AMAP_COPY_NOMERGE flag, and use it for uvm_map_extract. PR/32806 from Julio M. Merino Vidal.
|
| 1.71 |
11-Feb-2006 |
yamt |
remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.70 |
21-Jan-2006 |
yamt |
branches: 1.70.2; 1.70.4; - uvm_fault: move a common code of 1B and 2B to a new function. don't attempt to allocate anons with kernel_map locked. PR/32543. - amap_copy: add an assertion.
|
| 1.69 |
18-Jan-2006 |
chs |
in amap_alloc(), only put the amap on the list of amaps if we succeeded in allocating it.
|
| 1.68 |
24-Dec-2005 |
perry |
branches: 1.68.2; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
| 1.67 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base ktrace-lwp-base
|
| 1.66 |
06-Nov-2005 |
chs |
in amap_cow_now(), handle the case where we have to sleep and some of the already-copied pages are paged out. anons that have already been copied will have refcount == 1, whereas anons that still need to be copied will have refcount > 1. fixes PR 25392, PR 30257, PR 31924.
|
|
Revision tags: yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.65 |
13-Sep-2005 |
yamt |
wrap swap related code by #ifdef VMSWAP. always #define VMSWAP for now.
|
| 1.64 |
31-Jul-2005 |
yamt |
revert "defflag VMSWAP" changes for now. there seems to be far more people who don't want to edit their kernel config files than i thought.
|
| 1.63 |
30-Jul-2005 |
yamt |
defflag VMSWAP.
|
| 1.62 |
27-Jun-2005 |
thorpej |
branches: 1.62.2; Use ANSI function decls.
|
| 1.61 |
17-May-2005 |
yamt |
(try to) merge map entries in fault handler.
|
| 1.60 |
11-May-2005 |
yamt |
allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
| 1.59 |
05-May-2005 |
yamt |
- amap_extend: don't extend amap beyond UVM_AMAP_LARGE. - uvm_map_enter: if we fail to extend amap, just give up merging instead of bailing out immediately.
|
|
Revision tags: kent-audio2-base
|
| 1.58 |
06-Apr-2005 |
yamt |
amap_wipeout: remove a comment which is no longer true. despite of what comment said, i left preempt() call because i don't think of any bad effects.
|
|
Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2
|
| 1.57 |
30-Jan-2005 |
chs |
branches: 1.57.4; hack around a UVM problem that causes hangs when large processes fork. see PR 26908 for details.
|
|
Revision tags: yamt-km-base kent-audio1-beforemerge
|
| 1.56 |
01-Jan-2005 |
yamt |
branches: 1.56.2; 1.56.4; for in-kernel maps, - allocate kva for vm_map_entry from the map itsself and remove the static limit, MAX_KMAPENT. - keep merged entries for later splitting to fix allocate-to-free problem. PR/24039.
|
|
Revision tags: kent-audio1-base
|
| 1.55 |
12-May-2004 |
yamt |
add assertions.
|
| 1.54 |
25-Apr-2004 |
simonb |
Initialise (most) pools from a link set instead of explicit calls to pool_init. Untouched pools are ones that either in arch-specific code, or aren't initialiased during initial system startup.
Convert struct session, ucred and lockf to pools.
|
|
Revision tags: netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.53 |
24-Mar-2004 |
junyoung |
branches: 1.53.2; 1.53.4; - Nuke __P(). - Drop trailing spaces.
|
| 1.52 |
01-Feb-2003 |
thorpej |
branches: 1.52.2; Add extensible malloc types, adapted from FreeBSD. This turns malloc types into a structure, a pointer to which is passed around, instead of an int constant. Allow the limit to be adjusted when the malloc type is defined, or with a function call, as suggested by Jonathan Stone.
|
| 1.51 |
27-Jan-2003 |
pk |
amap_copy: remove stray amap_unlock().
|
| 1.50 |
18-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
|
| 1.49 |
20-Dec-2002 |
atatat |
Properly set page references counts at the start of the newly allocated ppref data to zero in the case of an amap that has empty space at the front.
Don't set anything in the ppref array if "len" is zero.
Many thanks to Sami Kantoluoto for providing gdb access to a machine that would reliably crash with problems related to the above, and to Stephan Thesing for corroborating that the patch properly addressed the problem.
Note that the ar_pageoff (and related variables) types must be changed soon. The use of "int" here is not theoretically sufficient.
|
|
Revision tags: gmcgarry_ctxsw_base gmcgarry_ucred_base
|
| 1.48 |
30-Nov-2002 |
bouyer |
Change uvm_km_kmemalloc() to accept flag UVM_KMF_NOWAIT and pass it to uvm_map(). Change uvm_map() to honnor UVM_KMF_NOWAIT. For this, change amap_extend() to take a flags parameter instead of just boolean for direction, and introduce AMAP_EXTEND_FORWARDS and AMAP_EXTEND_NOWAIT flags (AMAP_EXTEND_BACKWARDS is still defined as 0x0, to keep the code easier to read). Add a flag parameter to uvm_mapent_alloc(). This solves a problem a pool_get(PR_NOWAIT) could trigger a pool_get(PR_WAITOK) in uvm_mapent_alloc(). Thanks to Chuck Silvers, enami tsugutomo, Andrew Brown and Jason R Thorpe for feedback.
|
| 1.47 |
15-Nov-2002 |
atatat |
Properly free "newppref", instead of "amap->am_ppref" (oops), and delay freeing the old am_ppref so that if we bail early due to malloc() failures, valid ppref data hasn't been freed for no reason.
Based on comments from enami.
|
| 1.46 |
14-Nov-2002 |
atatat |
Implement backwards extension of amaps. There are three cases to deal with:
Case #1 -- adjust offset: The slot offset in the aref can be decremented to cover the required size addition.
Case #2 -- move pages and adjust offset: The slot offset is not large enough, but the amap contains enough inactive space *after* the mapped pages to make up the difference, so active slots are slid to the "end" of the amap, and the slot offset is, again, adjusted to cover the required size addition. This optimizes for hitting case #1 again on the next small extension.
Case #3 -- reallocate, move pages, and adjust offset: There is not enough inactive space in the amap, so the arrays are reallocated, and the active pages are copied again to the "end" of the amap, and the slot offset is adjusted to cover the required size. This also optimizes for hitting case #1 on the next backwards extension.
This provides the missing piece in the "forward extension of vm_map_entries" logic, so the merge failure counters have been removed.
Not many applications will make any use of this at this time (except for jvms and perhaps gcc3), but a "top-down" memory allocator will use it extensively.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.45 |
15-Sep-2002 |
chs |
add a new km flag UVM_KMF_CANFAIL, which causes uvm_km_kmemalloc() to return failure if swap is full and there are no free physical pages. have malloc() use this flag if M_CANFAIL is passed to it. use M_CANFAIL to allow amap_extend() to fail when memory is scarce. this should prevent most of the remaining hangs in low-memory situations.
|
|
Revision tags: gehenna-devsw-base
|
| 1.44 |
29-Jun-2002 |
chs |
rearrange a few lines to appease an assertion.
|
|
Revision tags: netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
|
| 1.43 |
28-Mar-2002 |
nathanw |
branches: 1.43.2; 1.43.4; In amap_pp_adjref(), avoid incorrectly merging the first two chunks in a ppref array when the range being adjusted includes the beginning of the array.
|
|
Revision tags: eeh-devprop-base newlock-base
|
| 1.42 |
08-Mar-2002 |
thorpej |
branches: 1.42.2; Pool deals fairly well with physical memory shortage, but it doesn't deal with shortages of the VM maps where the backing pages are mapped (usually kmem_map). Try to deal with this:
* Group all information about the backend allocator for a pool in a separate structure. The pool references this structure, rather than the individual fields. * Change the pool_init() API accordingly, and adjust all callers. * Link all pools using the same backend allocator on a list. * The backend allocator is responsible for waiting for physical memory to become available, but will still fail if it cannot callocate KVA space for the pages. If this happens, carefully drain all pools using the same backend allocator, so that some KVA space can be freed. * Change pool_reclaim() to indicate if it actually succeeded in freeing some pages, and use that information to make draining easier and more efficient. * Get rid of PR_URGENT. There was only one use of it, and it could be dealt with by the caller.
From art@openbsd.org.
|
|
Revision tags: ifpoll-base
|
| 1.41 |
25-Feb-2002 |
chs |
in amap_pp_adjref(), avoid unnecessary fragmentation of the am_ppref array by merging the first changed chunk with the last unchanged chunk if possible.
|
| 1.40 |
05-Dec-2001 |
enami |
When initially allocating or extending arrays in struct uvm_amap, adjust allocation size using malloc_roundup(). This eliminates many unnecessary malloc/memcpy calls.
|
| 1.39 |
05-Dec-2001 |
enami |
No need to zero clear after amap->am_bckptr[amap->am_nslot], since we're clearing corresponding elements in an array amap->am_anon[].
|
| 1.38 |
01-Dec-2001 |
chuck |
fix bug in amap_wiperange() detected by enami tsugutomo. loop control was wrong in one case.
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.37 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.36 |
06-Nov-2001 |
simonb |
Change some unsigned int variables and parameters to plain ints so that all usages of those agree on unsigned vs. signed.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2
|
| 1.35 |
19-Sep-2001 |
chs |
branches: 1.35.2; work around swap-space/extent performance problem which causes long pauses when processes with lots of swapped-out pages exit.
|
|
Revision tags: post-chs-ubcperf
|
| 1.34 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.33 |
22-Jul-2001 |
wiz |
branches: 1.33.2; seperate -> separate
|
| 1.32 |
02-Jun-2001 |
chs |
branches: 1.32.2; replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.31 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.30 |
18-Feb-2001 |
chs |
branches: 1.30.2; clean up DIAGNOSTIC checks, use KASSERT().
|
| 1.29 |
23-Jan-2001 |
thorpej |
Change uvm_analloc() to return a locked anon, update all callers, and fix an anon locking protocol error in uvm_loanzero().
|
| 1.28 |
23-Jan-2001 |
thorpej |
Sprinkle some assertions: amap_free(): Assert that the amap is locked. amap_share_protect(): Assert that the amap is locked. amap_wipeout(): Assert that the amap is locked. uvm_anfree(): Assert that the anon has a reference count of 0 and is not locked. uvm_anon_lockloanpg(): Assert that the anon is locked. anon_pagein(): Assert that the anon is locked. uvmfault_anonget(): Assert that the anon is locked. uvm_pagealloc_strat(): Assert that the uobj or the anon is locked
And fix the problems these have uncovered: amap_cow_now(): Lock the new anon after allocating it, and unref and unlock it (rather than lock!) before freeing it in case of an error condition. This should fix a problem reported by Dan Carosone using cdrecord on an i386 MP kernel. uvm_fault(): Case1B -- Lock the new anon afer allocating it, and unlock it later when we unlock the old anon. Case2 -- Lock the new anon after allocating it, and unlock it later by passing it to uvmfault_unlockall() (we set anon to NULL if we're not doing a promote fault).
|
| 1.27 |
25-Nov-2000 |
chs |
lots of cleanup: use queue.h macros and KASSERT(). address amap offsets in pages instead of bytes. make amap_ref() and amap_unref() take an amap, offset and length instead of a vm_map_entry_t. improve whitespace and comments.
|
| 1.26 |
03-Aug-2000 |
thorpej |
MALLOC()/FREE() are not to be used for variable size allocations.
|
| 1.25 |
02-Aug-2000 |
thorpej |
Fix a fairly obvious locking error in amap_cow_now() -- the amap was left locked upon exit from the function (how did this one slip for so long?)
|
| 1.24 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.23 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base
|
| 1.22 |
12-Sep-1999 |
chs |
branches: 1.22.2; 1.22.12; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
|
Revision tags: chs-ubc2-base
|
| 1.21 |
06-Jul-1999 |
cgd |
fix allocation handling bugs in amap_alloc1(). if the first or second sub-structure malloc() failed, it was quite likely that the function would return success incorrectly. This is this direct cause of the bug reported in PR#7897. (Thanks to chs for helping to track it down.)
|
| 1.20 |
11-Apr-1999 |
chs |
add a `flags' argument to uvm_pagealloc_strat(). define a flag UVM_PGA_USERESERVE to allow non-kernel object allocations to use pages from the reserve. use the new flag for allocations in pmap modules.
|
|
Revision tags: netbsd-1-4-base
|
| 1.19 |
28-Jan-1999 |
chuck |
branches: 1.19.2; comment cleanup, shift around the inline stuff a bit, rename VM_AMAP_PPREF (to UVM_AMAP_PPREF).
|
| 1.18 |
24-Jan-1999 |
chuck |
cleanup/reorg: - break anon related functions out of uvm_amap.c and put them in their own file (uvm_anon.c). includes break up uvm_anon_init into an amap and an an anon init function - ensure that only functions within the amap module access amap structure fields (add macros to amap api as needed)
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.17 |
04-Nov-1998 |
chs |
branches: 1.17.2; be consistent with locking of amaps and anons when freeing them.
|
| 1.16 |
18-Oct-1998 |
chs |
shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.15 |
08-Oct-1998 |
chuck |
fix ppref botch. establish ppref at split time before we add the duplicate reference.
|
| 1.14 |
31-Aug-1998 |
thorpej |
Allocate vm_anon arrays from kernel_map, not via MALLOC(). Helps relieve much of UVM's kmem_map usage.
|
| 1.13 |
29-Aug-1998 |
thorpej |
Use the pool allocator (and the "nointr" pool page allocator) for vm_amap structures.
|
| 1.12 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
| 1.11 |
09-Aug-1998 |
perry |
bzero->memset, bcopy->memcpy, bcmp->memcmp
|
|
Revision tags: eeh-paddr_t-base
|
| 1.10 |
20-Jun-1998 |
mrg |
branches: 1.10.2; add a "<-done!" log
|
| 1.9 |
14-May-1998 |
chuck |
detect ending VA wrap-around in the chunking code of amap_copy.
fixes problem reported by Ken Nakata <kenn@synap.ne.jp> on the mac68k where the stack amap chunking caused entry->end to wrap around to zero, thus corrupting the map entry list and causing kmem_map to fill.
|
| 1.8 |
05-May-1998 |
kleink |
Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
| 1.7 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.6 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.5 |
08-Feb-1998 |
mrg |
KNF
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
fix typoes in locking. use M_UVMAMAP instead of M_TEMP for malloc type.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
| 1.42 |
11-Dec-2025 |
andvar |
Fix various typos in comments.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.41 |
20-Mar-2020 |
ad |
Go back to freeing struct vm_anon one by one. There may have been an advantage circa ~2008 but there isn't now.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.40 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.39 |
02-Jan-2020 |
ad |
branches: 1.39.2; Back out the amap allocation changes from earlier today - have seen a panic with them. Retain the lock changes.
|
| 1.38 |
01-Jan-2020 |
ad |
- Start trying to reduce the high cache miss rate observed around vm_amap. On _LP64, pad struct vm_amap to 128 bytes and use the additional space to hold the arrays for tiny amaps which are common. Carefully size the array allocations to avoid false sharing, and for smaller amaps try to share allocated cache lines.
- Eliminate most contention due to amap_list: maintain the list in the pool cache constructor / destructor like we do for struct file. Cache the mutexes we allocate here.
- Don't do PR_WAITOK mutex allocations when NOWAIT has been specified.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.37 |
12-Jun-2011 |
rmind |
branches: 1.37.2; 1.37.54; Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.36 |
23-Apr-2011 |
rmind |
branches: 1.36.2; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.35 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base haad-dm-base mjf-devfs2-base
|
| 1.34 |
26-Oct-2008 |
bjs |
branches: 1.34.16; 1.34.22; 1.34.24; "sparce" -> "sparse" + commas after "large", prior to "sparse"
|
|
Revision tags: matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 nick-csl-alignment-base5 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base vmlocking-base
|
| 1.33 |
21-Jul-2007 |
ad |
branches: 1.33.26; 1.33.30; 1.33.36; 1.33.38; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base
|
| 1.32 |
22-Feb-2007 |
matt |
branches: 1.32.4; 1.32.12; Fix lossage from boolean_t -> bool and updated x86 bus_dma.
|
| 1.31 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 rpaulo-netinet-merge-pcb-base
|
| 1.30 |
25-Jun-2006 |
yamt |
branches: 1.30.10; make amap use kmem_alloc, rather than malloc. (ie. make it use kernel_map, rather than kmem_map.) kmem_map is more restricted than kernel_map, and there's no point for amap to use it.
|
|
Revision tags: chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base
|
| 1.29 |
15-Feb-2006 |
yamt |
branches: 1.29.2; 1.29.10; - amap_copy: take a "flags" argument instead of booleans. - add AMAP_COPY_NOMERGE flag, and use it for uvm_map_extract. PR/32806 from Julio M. Merino Vidal.
|
| 1.28 |
11-Feb-2006 |
yamt |
remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.27 |
24-Dec-2005 |
perry |
branches: 1.27.2; 1.27.4; 1.27.6; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
| 1.26 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.25 |
11-May-2005 |
yamt |
branches: 1.25.2; allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
| 1.24 |
25-Apr-2004 |
simonb |
Initialise (most) pools from a link set instead of explicit calls to pool_init. Untouched pools are ones that either in arch-specific code, or aren't initialiased during initial system startup.
Convert struct session, ucred and lockf to pools.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.23 |
24-Mar-2004 |
junyoung |
Nuke __P().
|
| 1.22 |
01-Feb-2003 |
thorpej |
branches: 1.22.2; Add extensible malloc types, adapted from FreeBSD. This turns malloc types into a structure, a pointer to which is passed around, instead of an int constant. Allow the limit to be adjusted when the malloc type is defined, or with a function call, as suggested by Jonathan Stone.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
|
| 1.21 |
20-Dec-2002 |
atatat |
Properly set page references counts at the start of the newly allocated ppref data to zero in the case of an amap that has empty space at the front.
Don't set anything in the ppref array if "len" is zero.
Many thanks to Sami Kantoluoto for providing gdb access to a machine that would reliably crash with problems related to the above, and to Stephan Thesing for corroborating that the patch properly addressed the problem.
Note that the ar_pageoff (and related variables) types must be changed soon. The use of "int" here is not theoretically sufficient.
|
|
Revision tags: gmcgarry_ctxsw_base gmcgarry_ucred_base
|
| 1.20 |
30-Nov-2002 |
bouyer |
Change uvm_km_kmemalloc() to accept flag UVM_KMF_NOWAIT and pass it to uvm_map(). Change uvm_map() to honnor UVM_KMF_NOWAIT. For this, change amap_extend() to take a flags parameter instead of just boolean for direction, and introduce AMAP_EXTEND_FORWARDS and AMAP_EXTEND_NOWAIT flags (AMAP_EXTEND_BACKWARDS is still defined as 0x0, to keep the code easier to read). Add a flag parameter to uvm_mapent_alloc(). This solves a problem a pool_get(PR_NOWAIT) could trigger a pool_get(PR_WAITOK) in uvm_mapent_alloc(). Thanks to Chuck Silvers, enami tsugutomo, Andrew Brown and Jason R Thorpe for feedback.
|
| 1.19 |
14-Nov-2002 |
atatat |
Implement backwards extension of amaps. There are three cases to deal with:
Case #1 -- adjust offset: The slot offset in the aref can be decremented to cover the required size addition.
Case #2 -- move pages and adjust offset: The slot offset is not large enough, but the amap contains enough inactive space *after* the mapped pages to make up the difference, so active slots are slid to the "end" of the amap, and the slot offset is, again, adjusted to cover the required size addition. This optimizes for hitting case #1 again on the next small extension.
Case #3 -- reallocate, move pages, and adjust offset: There is not enough inactive space in the amap, so the arrays are reallocated, and the active pages are copied again to the "end" of the amap, and the slot offset is adjusted to cover the required size. This also optimizes for hitting case #1 on the next backwards extension.
This provides the missing piece in the "forward extension of vm_map_entries" logic, so the merge failure counters have been removed.
Not many applications will make any use of this at this time (except for jvms and perhaps gcc3), but a "top-down" memory allocator will use it extensively.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.18 |
15-Sep-2002 |
chs |
add a new km flag UVM_KMF_CANFAIL, which causes uvm_km_kmemalloc() to return failure if swap is full and there are no free physical pages. have malloc() use this flag if M_CANFAIL is passed to it. use M_CANFAIL to allow amap_extend() to fail when memory is scarce. this should prevent most of the remaining hangs in low-memory situations.
|
|
Revision tags: netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
| 1.17 |
02-Jun-2001 |
chs |
branches: 1.17.2; 1.17.10; 1.17.16; replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.16 |
26-May-2001 |
chs |
replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
|
| 1.15 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.14 |
18-Feb-2001 |
chs |
branches: 1.14.2; clean up DIAGNOSTIC checks, use KASSERT().
|
| 1.13 |
25-Nov-2000 |
chs |
lots of cleanup: use queue.h macros and KASSERT(). address amap offsets in pages instead of bytes. make amap_ref() and amap_unref() take an amap, offset and length instead of a vm_map_entry_t. improve whitespace and comments.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.12 |
07-Jul-1999 |
thorpej |
branches: 1.12.2; Don't bother returning the "slot" number from amap_add(): * Nothing currently uses this return value. * It's arguably an abstraction violation.
Fix amap_unadd()'s API to be consistent w/ amap_add()'s: rather than take a vm_amap * and a slot number, take a vm_aref * and an offset.
It's now actually possible to use amap_unadd() to remove an anon from an amap.
|
| 1.11 |
21-Jun-1999 |
thorpej |
Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.10 |
28-Jan-1999 |
chuck |
branches: 1.10.4; comment cleanup, shift around the inline stuff a bit, rename VM_AMAP_PPREF (to UVM_AMAP_PPREF).
|
| 1.9 |
24-Jan-1999 |
chuck |
cleanup/reorg: - break anon related functions out of uvm_amap.c and put them in their own file (uvm_anon.c). includes break up uvm_anon_init into an amap and an an anon init function - ensure that only functions within the amap module access amap structure fields (add macros to amap api as needed)
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.8 |
18-Oct-1998 |
chs |
branches: 1.8.2; shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.7 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.6 |
09-Mar-1998 |
mrg |
branches: 1.6.2; KNF.
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE yamt-pagecache-base9 yamt-pagecache-tag8 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE rmind-smpnet-nbase rmind-smpnet-base agc-symver-base tls-maxphys-base yamt-pagecache-base8 yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-nb5-pq3-base netbsd-5-1-RELEASE yamt-nfs-mp-base11 netbsd-5-1-RC4 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE yamt-nfs-mp-base8 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base haad-dm-base1 haad-dm-base simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base jmcneill-pm-base hpcarm-cleanup-base mjf-ufs-trans-base yamt-idlelwp-base8 reinoud-bufcleanup-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 gdamore-uart-base yamt-pdpolicy-base5 elad-kernelauth-nbase yamt-pdpolicy-base4 yamt-pdpolicy-base3 yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.25 |
11-Feb-2006 |
yamt |
remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.24 |
11-Dec-2005 |
christos |
branches: 1.24.2; 1.24.4; 1.24.6; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.23 |
27-Jun-2005 |
thorpej |
branches: 1.23.2; Use ANSI function decls.
|
| 1.22 |
11-May-2005 |
yamt |
allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
| 1.21 |
28-Feb-2005 |
chs |
add some locking assertions.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE yamt-km-base2 yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base nathanw_sa_before_merge fvdl_fs64_base nathanw_sa_base
|
| 1.20 |
20-Dec-2002 |
atatat |
branches: 1.20.2; 1.20.10; 1.20.12; Properly set page references counts at the start of the newly allocated ppref data to zero in the case of an amap that has empty space at the front.
Don't set anything in the ppref array if "len" is zero.
Many thanks to Sami Kantoluoto for providing gdb access to a machine that would reliably crash with problems related to the above, and to Stephan Thesing for corroborating that the patch properly addressed the problem.
Note that the ar_pageoff (and related variables) types must be changed soon. The use of "int" here is not theoretically sufficient.
|
|
Revision tags: gmcgarry_ctxsw_base gmcgarry_ucred_base
|
| 1.19 |
01-Dec-2002 |
matt |
Reorder things so that with multiple inclusion protection that optional definitions are outside the protection checks.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge gehenna-devsw-base kqueue-base
|
| 1.18 |
22-Aug-2002 |
matt |
In amap_ref, only increment the amap's refcnt after we have established the ppref array. Otherwise, the newly ref'ed pages will be doubly counted and thus never freed because the pprefcnt can't fall to 0.
|
|
Revision tags: netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
| 1.17 |
25-May-2001 |
chs |
branches: 1.17.2; 1.17.14; 1.17.16; remove trailing whitespace.
|
| 1.16 |
06-May-2001 |
thorpej |
Remove a comment which is no longer true. From Artur Grabowski.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.15 |
25-Nov-2000 |
chs |
branches: 1.15.2; lots of cleanup: use queue.h macros and KASSERT(). address amap offsets in pages instead of bytes. make amap_ref() and amap_unref() take an amap, offset and length instead of a vm_map_entry_t. improve whitespace and comments.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base
|
| 1.14 |
12-Sep-1999 |
chs |
branches: 1.14.2; 1.14.12; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
|
Revision tags: chs-ubc2-base
|
| 1.13 |
07-Jul-1999 |
thorpej |
Don't bother returning the "slot" number from amap_add(): * Nothing currently uses this return value. * It's arguably an abstraction violation.
Fix amap_unadd()'s API to be consistent w/ amap_add()'s: rather than take a vm_amap * and a slot number, take a vm_aref * and an offset.
It's now actually possible to use amap_unadd() to remove an anon from an amap.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.12 |
25-Mar-1999 |
mrg |
branches: 1.12.4; remove now >1 year old pre-release message.
|
| 1.11 |
28-Jan-1999 |
chuck |
comment cleanup, shift around the inline stuff a bit, rename VM_AMAP_PPREF (to UVM_AMAP_PPREF).
|
| 1.10 |
24-Jan-1999 |
chuck |
cleanup/reorg: - break anon related functions out of uvm_amap.c and put them in their own file (uvm_anon.c). includes break up uvm_anon_init into an amap and an an anon init function - ensure that only functions within the amap module access amap structure fields (add macros to amap api as needed)
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.9 |
18-Oct-1998 |
chs |
branches: 1.9.2; shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.8 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
| 1.7 |
09-Aug-1998 |
perry |
bzero->memset, bcopy->memcpy, bcmp->memcmp
|
|
Revision tags: eeh-paddr_t-base
|
| 1.6 |
10-Feb-1998 |
mrg |
branches: 1.6.2; - add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.5 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.4 |
08-Feb-1998 |
mrg |
KNF
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.80 |
25-Oct-2020 |
chs |
Handle PG_PAGEOUT in uvm_anon_release() too.
|
| 1.79 |
09-Jul-2020 |
skrll |
Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.78 |
08-Jul-2020 |
skrll |
Trailing whitespace
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.77 |
22-Mar-2020 |
ad |
Process concurrent page faults on individual uvm_objects / vm_amaps in parallel, where the relevant pages are already in-core. Proposed on tech-kern.
Temporarily disabled on MP architectures with __HAVE_UNLOCKED_PMAP until adjustments are made to their pmaps.
|
| 1.76 |
20-Mar-2020 |
ad |
Go back to freeing struct vm_anon one by one. There may have been an advantage circa ~2008 but there isn't now.
|
| 1.75 |
14-Mar-2020 |
ad |
Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.74 |
24-Feb-2020 |
rin |
0x%#x --> %#x for non-external codes. Also, stop mixing up 0x%x and %#x in single files as far as possible.
|
| 1.73 |
23-Feb-2020 |
ad |
Use rw_lock_op().
|
| 1.72 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.71 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.70 |
31-Dec-2019 |
ad |
branches: 1.70.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.69 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.68 |
02-Dec-2019 |
chs |
fix the build for when UVMHIST is enabled.
|
| 1.67 |
01-Dec-2019 |
uwe |
Add missing #include <sys/atomic.h>
|
| 1.66 |
01-Dec-2019 |
ad |
Free pages in batch instead of taking uvm_pageqlock for each one.
|
| 1.65 |
01-Dec-2019 |
ad |
- Adjust uvmexp.swpgonly with atomics, and make uvm_swap_data_lock static. - A bit more __cacheline_aligned on mutexes.
|
|
Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.64 |
28-Oct-2017 |
pgoyette |
branches: 1.64.4; 1.64.8; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.63 |
25-Oct-2013 |
martin |
branches: 1.63.22; Mark a diagnostic-only variable
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.62 |
18-Aug-2011 |
yamt |
branches: 1.62.2; 1.62.12; 1.62.16; uvm_anon_release: - don't forget to call uvm_anon_dispose. - simplify code a little.
|
| 1.61 |
18-Aug-2011 |
yamt |
uvm_anon_freelst: - clear an_link/an_ref when deferring anon disposal. otherwise others can see bogus an_ref. - fix the code to remove anon from the list.
|
| 1.60 |
14-Aug-2011 |
rmind |
uvm_anon_freelst: do not free PG_RELEASED pages (change uvm_anon_dispose() to indicate them with a return value).
|
| 1.59 |
06-Aug-2011 |
rmind |
- Rework uvm_anfree() into uvm_anon_freelst(), which always drops the lock. - Free anons in uvm_anon_freelst() without lock held. - Mechanic sync to unused loaning code.
|
| 1.58 |
05-Jul-2011 |
yamt |
reduce the number of atomic ops in common cases. it's exceptional for anons to remain longer than amap.
|
| 1.57 |
24-Jun-2011 |
rmind |
Fix uvmplock regression - a lock against oneself case in amap_swap_off(). Happens since amap is NULL in uvmfault_anonget(), so uvmfault_unlockall() keeps anon locked, when it should unlock it.
|
| 1.56 |
24-Jun-2011 |
yamt |
uvm_anon_release: fix a locking error after the rmind-uvmplock merge
|
| 1.55 |
17-Jun-2011 |
rmind |
Improve comments on uvm_anon.c, tidy up slightly. No functional changes.
|
| 1.54 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.53 |
23-Apr-2011 |
rmind |
branches: 1.53.2; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.52 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
| 1.51 |
18-Jan-2008 |
yamt |
branches: 1.51.28; 1.51.32; 1.51.38; 1.51.40; push pmap_clear_reference calls into pdpolicy code, where reference bits actually matter.
|
|
Revision tags: matt-armv6-base
|
| 1.50 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3
|
| 1.49 |
20-Dec-2007 |
ad |
Specify PR_LARGECACHE for anon_cache (which is insanely busy).
|
|
Revision tags: yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.48 |
13-Nov-2007 |
yamt |
branches: 1.48.2; 1.48.6; g/c unused uvm_anon_pool.
|
| 1.47 |
07-Nov-2007 |
ad |
Merge from vmlocking:
- pool_cache changes. - Debugger/procfs locking fixes. - Other minor changes.
|
|
Revision tags: jmcneill-base yamt-x86pmap-base4 yamt-x86pmap-base3 vmlocking-base
|
| 1.46 |
11-Oct-2007 |
ad |
branches: 1.46.2; 1.46.4; Remove LOCK_ASSERT(!simple_lock_held(&foo));
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base
|
| 1.45 |
21-Jul-2007 |
ad |
branches: 1.45.4; 1.45.6; 1.45.8; 1.45.10; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base
|
| 1.44 |
12-Mar-2007 |
ad |
branches: 1.44.8; Pass an ipl argument to pool_init/POOL_INIT to be used when initializing the pool's lock.
|
|
Revision tags: ad-audiomp-base
|
| 1.43 |
22-Feb-2007 |
thorpej |
branches: 1.43.4; TRUE -> true, FALSE -> false
|
| 1.42 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
| 1.41 |
01-Nov-2006 |
yamt |
branches: 1.41.4; remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.40 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.39 |
15-Sep-2006 |
yamt |
branches: 1.39.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.38 |
11-Dec-2005 |
christos |
branches: 1.38.8; 1.38.20; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.37 |
13-Sep-2005 |
yamt |
wrap swap related code by #ifdef VMSWAP. always #define VMSWAP for now.
|
| 1.36 |
31-Jul-2005 |
yamt |
revert "defflag VMSWAP" changes for now. there seems to be far more people who don't want to edit their kernel config files than i thought.
|
| 1.35 |
30-Jul-2005 |
yamt |
defflag VMSWAP.
|
| 1.34 |
27-Jun-2005 |
thorpej |
branches: 1.34.2; Use ANSI function decls.
|
| 1.33 |
11-May-2005 |
yamt |
allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
|
Revision tags: kent-audio2-base
|
| 1.32 |
01-Apr-2005 |
yamt |
merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio1-beforemerge kent-audio1-base
|
| 1.31 |
01-Sep-2004 |
yamt |
branches: 1.31.4; 1.31.6; uvm_pagefree: when orphaning an A->K loaned page, - decrement uvmexp.anonpages as it's no longer an anon page. - null out anon->u.an_page as the anon no longer own the page. uvm_anfree: add related assertions.
|
| 1.30 |
01-Sep-2004 |
yamt |
uvm_anfree: remove a comment which is no longer true.
|
| 1.29 |
05-May-2004 |
yamt |
fix a amap_wirerange deadlock problem by re-introducing PG_RELEASED for anon pages. PR/23171 from Christian Limpach. for details, see discussion filed in the PR database.
uvm_anon_release: a new function to free anon-owned PG_RELEASED page. uvm_anfree: we can't wait for the page here because the caller might hold amap lock. instead, just mark the page as PG_RELEASED. who unbusy the page should check the PG_RELEASED. uvm_aio_aiodone: uvm_anon_release() instead of uvm_page_unbusy() if appropriate. uvmfault_anonget: check PG_RELEASED.
|
|
Revision tags: netbsd-2-0-base
|
| 1.28 |
24-Mar-2004 |
junyoung |
branches: 1.28.2; Nuke __P().
|
| 1.27 |
06-Jan-2004 |
chs |
fix lock initialization in uvm_anon_add(). from PR 23831.
|
| 1.26 |
28-Aug-2003 |
pk |
When retiring a swap device with marked bad blocks on it we should update the `# swap page in use' and `# swap page only' counters. However, at the time of swap device removal we can no longer figure out how many of the bad swap pages are actually also `swap only' pages.
So, on swap I/O errors arrange things to not include the bad swap pages in the `swpgonly' counter as follows: uvm_swap_markbad() decrements `swpgonly' by the number of bad pages, and the various VM object deallocation routines do not decrement `swpgonly' for swap slots marked as SWSLOT_BAD.
|
| 1.25 |
11-Aug-2003 |
pk |
uao_pagein_page() & anon_pagein(): * return failure if the page cannot be retrieved. * wakeup any waiters when releasing a page after successful page in.
|
| 1.24 |
11-Aug-2003 |
pk |
Only deactivate pages if their wired count is zero.
|
| 1.23 |
11-Aug-2003 |
pk |
Make sure to call uvm_swap_free() and uvm_swap_markbad() with valid (i.e. positive) slot numbers.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.22 |
21-Sep-2002 |
chs |
branches: 1.22.6; add missing anon lock around call to uvm_anon_lockloanpg().
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base
|
| 1.21 |
10-Nov-2001 |
lukem |
branches: 1.21.4; add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.20 |
06-Nov-2001 |
chs |
several changes prompted by loaning problems: - fix the loaned case in uvm_pagefree(). - redo uvmexp.swpgonly accounting to work with page loaning. add an assertion before each place we adjust uvmexp.swpgonly. - fix uvm_km_pgremove() to always free any swap space associated with the range being removed. - get rid of UVM_LOAN_WIRED flag. instead, we just make sure that pages loaned to the kernel are never on the page queues. this allows us to assert that pages are not loaned and wired at the same time. - add yet more assertions.
|
| 1.19 |
21-Oct-2001 |
chs |
branches: 1.19.2; add some missing spinlocks.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.18 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.17 |
25-May-2001 |
chs |
branches: 1.17.2; 1.17.4; remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.16 |
10-Mar-2001 |
chs |
eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
| 1.15 |
18-Feb-2001 |
chs |
branches: 1.15.2; clean up DIAGNOSTIC checks, use KASSERT().
|
| 1.14 |
28-Jan-2001 |
thorpej |
Page scanner improvements, behavior is actually a bit more like Mach VM's now. Specific changes: - Pages now need not have all of their mappings removed before being put on the inactive list. They only need to have the "referenced" attribute cleared. This makes putting pages onto the inactive list much more efficient. In order to eliminate redundant clearings of "refrenced", callers of uvm_pagedeactivate() must now do this themselves. - When checking the "modified" attribute for a page (for clearing PG_CLEAN), make sure to only do it if PG_CLEAN is currently set on the page (saves a potentially expensive pmap operation). - When scanning the inactive list, if a page is referenced, reactivate it (this part was actually added in uvm_pdaemon.c,v 1.27). This now works properly now that pages on the inactive list are allowed to have mappings. - When scanning the inactive list and considering a page for freeing, remove all mappings, and then check the "modified" attribute if the page is marked PG_CLEAN. - When scanning the active list, if the page was referenced since its last sweep by the scanner, don't deactivate it. (This part was actually added in uvm_pdaemon.c,v 1.28.)
These changes greatly improve interactive performance during moderate to high memory and I/O load.
|
| 1.13 |
23-Jan-2001 |
thorpej |
Change uvm_analloc() to return a locked anon, update all callers, and fix an anon locking protocol error in uvm_loanzero().
|
| 1.12 |
23-Jan-2001 |
thorpej |
Sprinkle some assertions: amap_free(): Assert that the amap is locked. amap_share_protect(): Assert that the amap is locked. amap_wipeout(): Assert that the amap is locked. uvm_anfree(): Assert that the anon has a reference count of 0 and is not locked. uvm_anon_lockloanpg(): Assert that the anon is locked. anon_pagein(): Assert that the anon is locked. uvmfault_anonget(): Assert that the anon is locked. uvm_pagealloc_strat(): Assert that the uobj or the anon is locked
And fix the problems these have uncovered: amap_cow_now(): Lock the new anon after allocating it, and unref and unlock it (rather than lock!) before freeing it in case of an error condition. This should fix a problem reported by Dan Carosone using cdrecord on an i386 MP kernel. uvm_fault(): Case1B -- Lock the new anon afer allocating it, and unlock it later when we unlock the old anon. Case2 -- Lock the new anon after allocating it, and unlock it later by passing it to uvmfault_unlockall() (we set anon to NULL if we're not doing a promote fault).
|
| 1.11 |
27-Dec-2000 |
chs |
when we fail to allocate anons to represent new swap space, just return an error rather than panicing.
|
| 1.10 |
25-Nov-2000 |
chs |
lots of cleanup: use queue.h macros and KASSERT(). address amap offsets in pages instead of bytes. make amap_ref() and amap_unref() take an amap, offset and length instead of a vm_map_entry_t. improve whitespace and comments.
|
| 1.9 |
06-Aug-2000 |
thorpej |
Do something sane with a DIAGNOSTIC condition in an non-DIAGNOSTIC kernel.
|
| 1.8 |
05-Aug-2000 |
thorpej |
Correct a comment about locking wrt. uvmfault_anonget().
|
| 1.7 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.6 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase
|
| 1.5 |
11-Jan-2000 |
chs |
branches: 1.5.4; add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base
|
| 1.4 |
12-Sep-1999 |
chs |
branches: 1.4.2; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
| 1.3 |
14-Aug-1999 |
ross |
In uvm_anon_init() and uvm_anon_add(), initialize the ref count lock.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 chs-ubc2-base netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.2 |
26-Mar-1999 |
chs |
add uvmexp.swpgonly and use it to detect out-of-swap conditions.
|
| 1.1 |
24-Jan-1999 |
chuck |
cleanup/reorg: - break anon related functions out of uvm_amap.c and put them in their own file (uvm_anon.c). includes break up uvm_anon_init into an amap and an an anon init function - ensure that only functions within the amap module access amap structure fields (add macros to amap api as needed)
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.32 |
20-Mar-2020 |
ad |
Go back to freeing struct vm_anon one by one. There may have been an advantage circa ~2008 but there isn't now.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.31 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.30 |
06-Aug-2011 |
rmind |
branches: 1.30.54; 1.30.60; - Rework uvm_anfree() into uvm_anon_freelst(), which always drops the lock. - Free anons in uvm_anon_freelst() without lock held. - Mechanic sync to unused loaning code.
|
| 1.29 |
24-Jun-2011 |
rmind |
Fix uvmplock regression - a lock against oneself case in amap_swap_off(). Happens since amap is NULL in uvmfault_anonget(), so uvmfault_unlockall() keeps anon locked, when it should unlock it.
|
| 1.28 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.27 |
02-Feb-2011 |
chuck |
branches: 1.27.2; udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 jym-xensuspend-nbase
|
| 1.26 |
14-Jun-2009 |
yamt |
branches: 1.26.4; 1.26.6; 1.26.8; change the order of members of vm_anon for better packing.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.25 |
02-Jan-2008 |
ad |
branches: 1.25.10; 1.25.24; Merge vmlocking2 to head.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.24 |
21-Feb-2007 |
thorpej |
branches: 1.24.4; 1.24.18; 1.24.24; 1.24.26; 1.24.30; Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.23 |
11-Dec-2005 |
christos |
branches: 1.23.26; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.22 |
17-Sep-2005 |
yamt |
make VMSWAP optional again.
|
| 1.21 |
13-Sep-2005 |
yamt |
wrap swap related code by #ifdef VMSWAP. always #define VMSWAP for now.
|
| 1.20 |
31-Jul-2005 |
yamt |
revert "defflag VMSWAP" changes for now. there seems to be far more people who don't want to edit their kernel config files than i thought.
|
| 1.19 |
30-Jul-2005 |
yamt |
defflag VMSWAP.
|
| 1.18 |
11-May-2005 |
yamt |
branches: 1.18.2; allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
| 1.17 |
05-May-2004 |
yamt |
fix a amap_wirerange deadlock problem by re-introducing PG_RELEASED for anon pages. PR/23171 from Christian Limpach. for details, see discussion filed in the PR database.
uvm_anon_release: a new function to free anon-owned PG_RELEASED page. uvm_anfree: we can't wait for the page here because the caller might hold amap lock. instead, just mark the page as PG_RELEASED. who unbusy the page should check the PG_RELEASED. uvm_aio_aiodone: uvm_anon_release() instead of uvm_page_unbusy() if appropriate. uvmfault_anonget: check PG_RELEASED.
|
|
Revision tags: netbsd-2-0-base
|
| 1.16 |
24-Mar-2004 |
junyoung |
branches: 1.16.2; Nuke __P().
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base kqueue-base
|
| 1.15 |
26-May-2001 |
chs |
branches: 1.15.22; replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
|
| 1.14 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.13 |
27-Dec-2000 |
chs |
branches: 1.13.2; when we fail to allocate anons to represent new swap space, just return an error rather than panicing.
|
|
Revision tags: netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase
|
| 1.12 |
11-Jan-2000 |
chs |
branches: 1.12.4; add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.11 |
21-Jun-1999 |
thorpej |
branches: 1.11.2; Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.10 |
26-Mar-1999 |
chs |
branches: 1.10.4; add uvmexp.swpgonly and use it to detect out-of-swap conditions.
|
| 1.9 |
24-Jan-1999 |
chuck |
cleanup/reorg: - break anon related functions out of uvm_amap.c and put them in their own file (uvm_anon.c). includes break up uvm_anon_init into an amap and an an anon init function - ensure that only functions within the amap module access amap structure fields (add macros to amap api as needed)
|
|
Revision tags: kenh-if-detach-base
|
| 1.8 |
20-Nov-1998 |
chuck |
update outdated an_swslot comments
|
|
Revision tags: chs-ubc-base eeh-paddr_t-base
|
| 1.7 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.6 |
01-Mar-1998 |
fvdl |
Merge with Lite2 + local changes
|
| 1.5 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.4 |
09-Feb-1998 |
mrg |
KNF.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.157 |
24-Feb-2023 |
riastradh |
uvm: Eliminate __HAVE_ATOMIC_AS_MEMBAR conditionals.
Discussed on tech-kern: https://mail-index.netbsd.org/tech-kern/2023/02/23/msg028729.html
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.156 |
31-May-2022 |
andvar |
fix various typos in comments, documentation and messages.
|
| 1.155 |
09-Apr-2022 |
riastradh |
sys: Use membar_release/acquire around reference drop.
This just goes through my recent reference count membar audit and changes membar_exit to membar_release and membar_enter to membar_acquire -- this should make everything cheaper on most CPUs without hurting correctness, because membar_acquire is generally cheaper than membar_enter.
|
| 1.154 |
12-Mar-2022 |
riastradh |
sys: Membar audit around reference count releases.
If two threads are using an object that is freed when the reference count goes to zero, we need to ensure that all memory operations related to the object happen before freeing the object.
Using an atomic_dec_uint_nv(&refcnt) == 0 ensures that only one thread takes responsibility for freeing, but it's not enough to ensure that the other thread's memory operations happen before the freeing.
Consider:
Thread A Thread B obj->foo = 42; obj->baz = 73; mumble(&obj->bar); grumble(&obj->quux); /* membar_exit(); */ /* membar_exit(); */ atomic_dec -- not last atomic_dec -- last /* membar_enter(); */ KASSERT(invariant(obj->foo, obj->bar)); free_stuff(obj);
The memory barriers ensure that
obj->foo = 42; mumble(&obj->bar);
in thread A happens before
KASSERT(invariant(obj->foo, obj->bar)); free_stuff(obj);
in thread B. Without them, this ordering is not guaranteed.
So in general it is necessary to do
membar_exit(); if (atomic_dec_uint_nv(&obj->refcnt) != 0) return; membar_enter();
to release a reference, for the `last one out hit the lights' style of reference counting. (This is in contrast to the style where one thread blocks new references and then waits under a lock for existing ones to drain with a condvar -- no membar needed thanks to mutex(9).)
I searched for atomic_dec to find all these. Obviously we ought to have a better abstraction for this because there's so much copypasta. This is a stop-gap measure to fix actual bugs until we have that. It would be nice if an abstraction could gracefully handle the different styles of reference counting in use -- some years ago I drafted an API for this, but making it cover everything got a little out of hand (particularly with struct vnode::v_usecount) and I ended up setting it aside to work on psref/localcount instead for better scalability.
I got bored of adding #ifdef __HAVE_ATOMIC_AS_MEMBAR everywhere, so I only put it on things that look performance-critical on 5sec review. We should really adopt membar_enter_preatomic/membar_exit_postatomic or something (except they are applicable only to atomic r/m/w, not to atomic_load/store_*, making the naming annoying) and get rid of all the ifdefs.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.153 |
13-Mar-2021 |
skrll |
Consistently use %#jx instead of 0x%jx or just %jx in UVMHIST_LOG formats
|
| 1.152 |
04-Nov-2020 |
chs |
In uvmpd_tryownerlock(), if the initial try-lock of the owner lock fails then rather than do more try-locks and eventually sleep for a tick, take a hold on the current owner's lock, drop the page interlock, and acquire the lock that we took the hold on in a blocking fashion. After we get the lock, check if the lock that we acquired is still the lock for the owner of the page that we're interested in. If the owner hasn't changed then can proceed with this page, otherwise we will skip this page and move on to a different page. This dramatically reduces the amount of time that the pagedaemon sleeps trying to get locks, since even 1 tick is an eternity to sleep in this context and it was easy to trigger that case in practice, and with this new method the pagedaemon only very rarely actually blocks to acquire the lock that it wants since the object locks are adaptive, and when the pagedaemon does block then the amount of time it spends sleeping will be generally be much less than 1 tick.
|
| 1.151 |
19-Aug-2020 |
chs |
branches: 1.151.2; in uao_get(), if we unlock the uobj to read a page from swap, we must clear the cached page array because it is now stale. also add a missing call to uvm_page_array_fini() if the I/O fails. fixes PR 55493.
|
| 1.150 |
19-Aug-2020 |
simonb |
Remove trailing \n from UVMHIST_LOG() format strings.
|
| 1.149 |
09-Jul-2020 |
skrll |
Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.148 |
08-Jul-2020 |
skrll |
Trailing whitespace
|
| 1.147 |
25-May-2020 |
ad |
uao_get(): in the PGO_SYNCIO case use uvm_page_array and simplify control flow a little bit.
|
| 1.146 |
25-May-2020 |
ad |
- Alter the convention for uvm_page_array slightly, so the basic search parameters can't change part way through a search: move the "uobj" and "flags" arguments over to uvm_page_array_init() and store those with the array.
- With that, detect when it's not possible to find any more pages in the tree with the given search parameters, and avoid repeated tree lookups if the caller loops over uvm_page_array_fill_and_peek().
|
| 1.145 |
25-May-2020 |
ad |
PR kern/55300: ubciomove triggers page not dirty assertion
If overwriting an existing page, mark it dirty since there may be no managed mapping to track the modification.
|
| 1.144 |
22-May-2020 |
ad |
uao_get(): handle PGO_OVERWRITE.
|
| 1.143 |
20-May-2020 |
hannken |
Suppress GCC warnings and fix a UVMHIST_LOG() statement.
Kernels ALL/amd64 and ALL/i386 and port sparc64 build again.
|
| 1.142 |
19-May-2020 |
ad |
PR kern/32166: pgo_get protocol is ambiguous Also problems with tmpfs+nfs noted by hannken@.
Don't pass PGO_ALLPAGES to pgo_get, and ignore PGO_DONTCARE in the !PGO_LOCKED case. In uao_get() have uvm_pagealloc() take care of page zeroing and release busy pages on error.
|
| 1.141 |
17-May-2020 |
ad |
Start trying to reduce cache misses on vm_page during fault processing.
- Make PGO_LOCKED getpages imply PGO_NOBUSY and remove the latter. Mark pages busy only when there's actually I/O to do.
- When doing COW on a uvm_object, don't mess with neighbouring pages. In all likelyhood they're already entered.
- Don't mess with neighbouring VAs that have existing mappings as replacing those mappings with same can be quite costly.
- Don't enqueue pages for neighbour faults unless not enqueued already, and don't activate centre pages unless uvmpdpol says its useful.
Also:
- Make PGO_LOCKED getpages on UAOs work more like vnodes: do gang lookup in the radix tree, and don't allocate new pages.
- Fix many assertion failures around faults/loans with tmpfs.
|
| 1.140 |
15-May-2020 |
ad |
PR kern/55268: tmpfs is slow
uao_get(): in the PGO_LOCKED case, we're okay to allocate a new page as long as the caller holds a write lock. PGO_NOBUSY doesn't put a stop to that.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.139 |
22-Mar-2020 |
ad |
Process concurrent page faults on individual uvm_objects / vm_amaps in parallel, where the relevant pages are already in-core. Proposed on tech-kern.
Temporarily disabled on MP architectures with __HAVE_UNLOCKED_PMAP until adjustments are made to their pmaps.
|
| 1.138 |
17-Mar-2020 |
ad |
Tweak the March 14th change to make page waits interlocked by pg->interlock. Remove unneeded changes and only deal with the PQ_WANTED flag, to exclude possible bugs.
|
| 1.137 |
14-Mar-2020 |
ad |
Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.136 |
24-Feb-2020 |
rin |
0x%#x --> %#x for non-external codes. Also, stop mixing up 0x%x and %#x in single files as far as possible.
|
| 1.135 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.134 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.133 |
31-Dec-2019 |
ad |
branches: 1.133.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.132 |
15-Dec-2019 |
ad |
Merge from yamt-pagecache:
- do gang lookup of pages using radixtree. - remove now unused uvm_object::uo_memq and vm_page::listq.queue.
|
| 1.131 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.130 |
01-Dec-2019 |
ad |
Avoid calling pmap_page_protect() while under uvm_pageqlock.
|
| 1.129 |
01-Dec-2019 |
ad |
- Adjust uvmexp.swpgonly with atomics, and make uvm_swap_data_lock static. - A bit more __cacheline_aligned on mutexes.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base
|
| 1.128 |
28-Jul-2019 |
msaitoh |
Avoid undefined behavior in uao_pagein_page(). Found by kUBSan. OK'd by riastradh. I think this is a real bug on amd64 at least.
|
|
Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625
|
| 1.127 |
28-May-2018 |
chs |
branches: 1.127.2; allow tmpfs files to be larger than 4GB.
|
|
Revision tags: pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.126 |
28-Oct-2017 |
pgoyette |
branches: 1.126.2; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
|
| 1.125 |
30-May-2017 |
chs |
branches: 1.125.2; add assertions that would have caught the recent audio mmap bugs.
|
|
Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806
|
| 1.124 |
28-Jul-2016 |
martin |
PR kern/51371: fix misleading indentation
|
|
Revision tags: pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
| 1.123 |
24-Aug-2015 |
pooka |
branches: 1.123.2; to garnish, dust with _KERNEL_OPT
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
| 1.122 |
25-May-2014 |
riastradh |
branches: 1.122.4; Allow VM_NFREELIST in uao_set_pgfl, meaning any freelist is OK.
|
| 1.121 |
22-May-2014 |
riastradh |
Add uao_set_pgfl to limit a uvm_aobj's pages to a specified freelist.
Brought up on tech-kern:
https://mail-index.netbsd.org/tech-kern/2014/05/20/msg017095.html
|
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
| 1.120 |
25-Oct-2013 |
martin |
branches: 1.120.2; Mark a diagnostic-only variable
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.119 |
15-Sep-2012 |
matt |
branches: 1.119.2; #include <sys/atomic.h>
|
| 1.118 |
14-Sep-2012 |
rmind |
- Manage anonymous UVM object reference count with atomic ops. - Fix an old bug of possible lock against oneself (uao_detach_locked() is called from uao_swap_off() with uao_list_lock acquired). Also removes the try-lock dance in uao_swap_off(), since the lock order changes.
|
| 1.117 |
14-Sep-2012 |
rmind |
- Describe uvm_aobj and the lock order. - Remove unnecessary uao_dropswap_range1() wrapper. - KNF. Sprinkle some __cacheline_aligned.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-0-5-RELEASE netbsd-6-0-4-RELEASE netbsd-6-0-3-RELEASE netbsd-6-0-2-RELEASE netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.116 |
06-Sep-2011 |
matt |
branches: 1.116.2; 1.116.8; 1.116.12; Allocate color appropriate pages.
|
| 1.115 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.114 |
23-Apr-2011 |
rmind |
branches: 1.114.2; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.113 |
11-Feb-2011 |
rmind |
Replace uvm_aobj_cache with kmem(9).
|
| 1.112 |
02-Feb-2011 |
chuck |
udpate license clauses on chuck^2 code to match the new-style BSD licenses. based on diff that rmind@ sent me (and confirmed with chs@ via email).
no functional change with this commit.
|
| 1.111 |
25-Jan-2011 |
enami |
Remove nop code; the code is moved to uao_dropswap_range1() when it is introduced in rev. 1.75.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.110 |
29-Jul-2010 |
hannken |
branches: 1.110.2; 1.110.4; Add vm page flag PG_MARKER and use it to tag dummy marker pages in genfs_do_putpages() and uao_put(). Use 'v_uobj.uo_npages' to check for an empty memq. Put some assertions where these marker pages may not appear.
Ok: YAMAMOTO Takashi <yamt@netbsd.org>
|
| 1.109 |
28-May-2010 |
rmind |
uvm_fault_{upper,lower}_done: move drop-swap outside the page-queues lock. Assert for object lock being held (or ref count 0) in uao_set_swslot().
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
| 1.108 |
21-Oct-2009 |
rmind |
branches: 1.108.2; 1.108.4; Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base8
|
| 1.107 |
13-Sep-2009 |
pooka |
Wipe out the last vestiges of POOL_INIT with one swift stroke. In most cases, use a proper constructor. For proplib, give a local equivalent of POOL_INIT for the kernel object implementation. This way the code structure can be preserved, and a local link set is not hazardous anyway (unless proplib is split to several modules, but that'll be the day).
tested by booting a kernel in qemu and compile-testing i386/ALL
|
|
Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base nick-hppapmap-base
|
| 1.106 |
18-Feb-2009 |
yamt |
make some functions static.
|
|
Revision tags: mjf-devfs2-base
|
| 1.105 |
16-Jan-2009 |
yamt |
branches: 1.105.2; - g/c stale function prototypes. - rename UVM_PAGE_HASH_PENALTY to UVM_PAGE_TREE_PENALTY.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 haad-dm-base
|
| 1.104 |
18-Oct-2008 |
rmind |
branches: 1.104.2; 1.104.10; - Initialize pool subsystem and kmem(9) earlier, when UVM is up enough. - Remove uao_hashinit() workaround used for anon-objects. - Replace malloc with kmem.
OK by <yamt>.
|
|
Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
|
| 1.103 |
25-Jun-2008 |
ad |
branches: 1.103.2; Use pool_cache.
|
|
Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 wrstuden-revivesa-base
|
| 1.102 |
04-Jun-2008 |
ad |
branches: 1.102.2; vm_page: put TAILQ_ENTRY into a union with LIST_ENTRY, so we can use both.
|
|
Revision tags: yamt-pf42-base3
|
| 1.101 |
03-Jun-2008 |
ad |
uao_reference, uao_detach: we don't do reference counting on kernel objects, so don't lock them needlessly.
|
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
| 1.100 |
05-May-2008 |
ad |
branches: 1.100.2; - Convert hashinit() to use kmem_alloc(). The hash tables can be large and it's better to not have them in kmem_map. - Convert a couple of minor items along the way to kmem_alloc(). - Fix some memory leaks.
|
|
Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase hpcarm-cleanup-base
|
| 1.99 |
27-Feb-2008 |
ad |
branches: 1.99.2; 1.99.4; Minor corrections to comments.
|
| 1.98 |
27-Feb-2008 |
yamt |
uao_put: fix a race with pageout.
|
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-nbase bouyer-xeni386-base mjf-devfs-base
|
| 1.97 |
18-Jan-2008 |
yamt |
branches: 1.97.2; 1.97.6; push pmap_clear_reference calls into pdpolicy code, where reference bits actually matter.
|
|
Revision tags: matt-armv6-base
|
| 1.96 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.95 |
01-Dec-2007 |
yamt |
branches: 1.95.2; 1.95.6; constify pagerops.
|
| 1.94 |
01-Dec-2007 |
yamt |
use designated initiaizers for uvm_pagerops.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking jmcneill-base bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base vmlocking-base
|
| 1.93 |
05-Aug-2007 |
pooka |
branches: 1.93.2; 1.93.8; 1.93.10; In uao_get(), drop object lock only after dropswap to avoid KASSERT panic.
Should fix tmpfs problem reported by riz on current-users. yamt ok.
|
| 1.92 |
24-Jul-2007 |
ad |
branches: 1.92.4; In order to pacify assertions, make uao_list_lock + uvm_swap_data_lock spinlocks for the time being.
|
| 1.91 |
21-Jul-2007 |
ad |
Temporarily work around an assertion from mutex_enter.
|
| 1.90 |
21-Jul-2007 |
ad |
Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base mjf-ufs-trans-base
|
| 1.89 |
09-Jul-2007 |
ad |
branches: 1.89.2; Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
|
| 1.88 |
12-Mar-2007 |
ad |
branches: 1.88.2; Pass an ipl argument to pool_init/POOL_INIT to be used when initializing the pool's lock.
|
|
Revision tags: ad-audiomp-base
|
| 1.87 |
22-Feb-2007 |
thorpej |
branches: 1.87.4; TRUE -> true, FALSE -> false
|
| 1.86 |
22-Feb-2007 |
matt |
Fix lossage from boolean_t -> bool and updated x86 bus_dma.
|
| 1.85 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: post-newlock2-merge newlock2-nbase newlock2-base
|
| 1.84 |
24-Jan-2007 |
hubertf |
branches: 1.84.2; Remove duplicate #includes, patch contributed in private mail by Slava Semushin <slava.semushin@gmail.com>.
To verify that no nasty side effects of duplicate includes (or their removal) have an effect here, I've compiled an i386/ALL kernel with and without the patch, and the only difference in the resulting .o files was in shifted line numbers in some assert() calls. The comparison of the .o files was based on the output of "objdump -D".
Thanks to martin@ for the input on testing.
|
|
Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4
|
| 1.83 |
15-Dec-2006 |
yamt |
put ->K loaned pages on the page queue, so that page loaning doesn't disturb pagedaemon/pdpolicy.
|
|
Revision tags: yamt-splraiseipl-base3 netbsd-4-base
|
| 1.82 |
01-Nov-2006 |
yamt |
branches: 1.82.2; 1.82.4; remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.81 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.80 |
15-Sep-2006 |
yamt |
branches: 1.80.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
| 1.79 |
01-Sep-2006 |
cherry |
branches: 1.79.2; bumps kernel aobj to 64 bit. \ See: http://mail-index.netbsd.org/tech-kern/2006/03/07/0007.html
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base
|
| 1.78 |
24-Dec-2005 |
yamt |
branches: 1.78.4; 1.78.8; uao_get: don't mark pages dirty unless it's a write fault.
|
|
Revision tags: ktrace-lwp-base
|
| 1.77 |
05-Dec-2005 |
yamt |
uao_pagein_page: pass PGO_SYNCIO to uao_get. uao_get doesn't always assume PGO_SYNCIO after yamt-readahead merge.
reported and a dump provided by Masanori Kanaoka.
|
| 1.76 |
29-Nov-2005 |
yamt |
merge yamt-readahead branch.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base
|
| 1.75 |
08-Nov-2005 |
yamt |
branches: 1.75.2; add a function to drop all swap slots in a given range. for tmpfs. XXX maybe it's better to implement true truncation.
|
|
Revision tags: yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.74 |
17-Sep-2005 |
yamt |
make VMSWAP optional again.
|
| 1.73 |
14-Sep-2005 |
yamt |
uao_put: don't skip loaned or wired pages.
|
| 1.72 |
13-Sep-2005 |
yamt |
wrap swap related code by #ifdef VMSWAP. always #define VMSWAP for now.
|
| 1.71 |
13-Sep-2005 |
yamt |
uao_put: recognize endoff == 0 as "to the end of the object", as VOP_PUTPAGES (thus vnode pager) does. for tmpfs.
|
| 1.70 |
31-Jul-2005 |
yamt |
revert "defflag VMSWAP" changes for now. there seems to be far more people who don't want to edit their kernel config files than i thought.
|
| 1.69 |
30-Jul-2005 |
yamt |
defflag VMSWAP.
|
| 1.68 |
27-Jun-2005 |
thorpej |
branches: 1.68.2; Sprinkle some static.
|
| 1.67 |
27-Jun-2005 |
thorpej |
Use ANSI function decls.
|
| 1.66 |
06-Jun-2005 |
yamt |
introduce a macro to initialize uvm_object and use it.
|
| 1.65 |
29-May-2005 |
christos |
avoid shadow variables. remove unneeded casts.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
| 1.64 |
25-Apr-2004 |
simonb |
Initialise (most) pools from a link set instead of explicit calls to pool_init. Untouched pools are ones that either in arch-specific code, or aren't initialiased during initial system startup.
Convert struct session, ucred and lockf to pools.
|
| 1.63 |
05-Apr-2004 |
simonb |
Fix a tyop.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.62 |
24-Mar-2004 |
junyoung |
Nuke __P().
|
| 1.61 |
18-Sep-2003 |
drochner |
Fix a reversed logic in swap deallocation which could lead to uvm_swap_free() being called with a zero slot; this might have been the reason for crashes with sysvshm and heavy swapping. (PR kern/22752 by Tom Spindler) Confirmed by Chuck Silvers.
|
| 1.60 |
28-Aug-2003 |
pk |
When retiring a swap device with marked bad blocks on it we should update the `# swap page in use' and `# swap page only' counters. However, at the time of swap device removal we can no longer figure out how many of the bad swap pages are actually also `swap only' pages.
So, on swap I/O errors arrange things to not include the bad swap pages in the `swpgonly' counter as follows: uvm_swap_markbad() decrements `swpgonly' by the number of bad pages, and the various VM object deallocation routines do not decrement `swpgonly' for swap slots marked as SWSLOT_BAD.
|
| 1.59 |
11-Aug-2003 |
pk |
uao_pagein_page() & anon_pagein(): * return failure if the page cannot be retrieved. * wakeup any waiters when releasing a page after successful page in.
|
| 1.58 |
11-Aug-2003 |
pk |
Only deactivate pages if their wired count is zero.
|
| 1.57 |
11-Aug-2003 |
pk |
Make sure to call uvm_swap_free() and uvm_swap_markbad() with valid (i.e. positive) slot numbers.
|
| 1.56 |
12-Apr-2003 |
yamt |
branches: 1.56.2; unbusy a page after put it on the queue. fix a panic with UVM_PAGE_TRKOWN when doing swapoff.
|
| 1.55 |
09-Feb-2003 |
pk |
uao_put: release uvm object's lock only after we're done with its page list.
|
| 1.54 |
01-Feb-2003 |
thorpej |
Add extensible malloc types, adapted from FreeBSD. This turns malloc types into a structure, a pointer to which is passed around, instead of an int constant. Allow the limit to be adjusted when the malloc type is defined, or with a function call, as suggested by Jonathan Stone.
|
| 1.53 |
18-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.52 |
24-Nov-2002 |
scw |
Quell uninitialised variable warnings.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base kqueue-base
|
| 1.51 |
09-May-2002 |
enami |
In uao_put(), if we wait for the busy page owned by someone else, we can't simply reuse the pointor to the page. Instead, we need to acquire it again. So, rearrange the loop like genfs_putpages() does. Reviewed by chuq.
|
|
Revision tags: eeh-devprop-base newlock-base
|
| 1.50 |
08-Mar-2002 |
thorpej |
branches: 1.50.2; Pool deals fairly well with physical memory shortage, but it doesn't deal with shortages of the VM maps where the backing pages are mapped (usually kmem_map). Try to deal with this:
* Group all information about the backend allocator for a pool in a separate structure. The pool references this structure, rather than the individual fields. * Change the pool_init() API accordingly, and adjust all callers. * Link all pools using the same backend allocator on a list. * The backend allocator is responsible for waiting for physical memory to become available, but will still fail if it cannot callocate KVA space for the pages. If this happens, carefully drain all pools using the same backend allocator, so that some KVA space can be freed. * Change pool_reclaim() to indicate if it actually succeeded in freeing some pages, and use that information to make draining easier and more efficient. * Get rid of PR_URGENT. There was only one use of it, and it could be dealt with by the caller.
From art@openbsd.org.
|
|
Revision tags: ifpoll-base thorpej-mips-cache-base
|
| 1.49 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.48 |
07-Nov-2001 |
chs |
only acquire the lock for swpgonly if we actually need to adjust it.
|
| 1.47 |
06-Nov-2001 |
chs |
several changes prompted by loaning problems: - fix the loaned case in uvm_pagefree(). - redo uvmexp.swpgonly accounting to work with page loaning. add an assertion before each place we adjust uvmexp.swpgonly. - fix uvm_km_pgremove() to always free any swap space associated with the range being removed. - get rid of UVM_LOAN_WIRED flag. instead, we just make sure that pages loaned to the kernel are never on the page queues. this allows us to assert that pages are not loaned and wired at the same time. - add yet more assertions.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.46 |
15-Sep-2001 |
chs |
branches: 1.46.2; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.45 |
23-Jun-2001 |
chs |
branches: 1.45.2; 1.45.4; don't for memory in uao_set_swlot() since we're holding spinlocks, instead return -1. adjust callers to handle this new error return. fixes PR 13194.
|
| 1.44 |
22-Jun-2001 |
chs |
don't use the list pointers after we take an object off its list.
|
| 1.43 |
26-May-2001 |
chs |
replace vm_page_t with struct vm_page *.
|
| 1.42 |
26-May-2001 |
chs |
replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
|
| 1.41 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.40 |
10-Mar-2001 |
chs |
eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
| 1.39 |
18-Feb-2001 |
chs |
branches: 1.39.2; clean up DIAGNOSTIC checks, use KASSERT().
|
| 1.38 |
28-Jan-2001 |
thorpej |
Page scanner improvements, behavior is actually a bit more like Mach VM's now. Specific changes: - Pages now need not have all of their mappings removed before being put on the inactive list. They only need to have the "referenced" attribute cleared. This makes putting pages onto the inactive list much more efficient. In order to eliminate redundant clearings of "refrenced", callers of uvm_pagedeactivate() must now do this themselves. - When checking the "modified" attribute for a page (for clearing PG_CLEAN), make sure to only do it if PG_CLEAN is currently set on the page (saves a potentially expensive pmap operation). - When scanning the inactive list, if a page is referenced, reactivate it (this part was actually added in uvm_pdaemon.c,v 1.27). This now works properly now that pages on the inactive list are allowed to have mappings. - When scanning the inactive list and considering a page for freeing, remove all mappings, and then check the "modified" attribute if the page is marked PG_CLEAN. - When scanning the active list, if the page was referenced since its last sweep by the scanner, don't deactivate it. (This part was actually added in uvm_pdaemon.c,v 1.28.)
These changes greatly improve interactive performance during moderate to high memory and I/O load.
|
| 1.37 |
25-Nov-2000 |
chs |
lots of cleanup: use queue.h macros and KASSERT(). address amap offsets in pages instead of bytes. make amap_ref() and amap_unref() take an amap, offset and length instead of a vm_map_entry_t. improve whitespace and comments.
|
| 1.36 |
24-Nov-2000 |
chs |
g/c unused pager ops "asyncget" and "aiodone".
|
| 1.35 |
08-Nov-2000 |
ad |
Update for hashinit() change.
|
| 1.34 |
02-Aug-2000 |
thorpej |
MALLOC()/FREE() are not to be used for variable-sized allocations.
|
| 1.33 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.32 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.31 |
19-May-2000 |
thorpej |
NULL != 0
|
| 1.30 |
10-Apr-2000 |
thorpej |
Use UVM_PGA_ZERO in a few (easy) places.
|
| 1.29 |
03-Apr-2000 |
chs |
remove the "shareprot" pagerop. it's not needed anymore since share maps are long gone.
|
| 1.28 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase
|
| 1.27 |
11-Jan-2000 |
chs |
add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base
|
| 1.26 |
12-Sep-1999 |
chs |
branches: 1.26.2; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
| 1.25 |
21-Aug-1999 |
thorpej |
When handling the MADV_FREE case, if the amap or aobj has more than one reference, go through the deactivate path; the page may actually be in use by another process.
Fixes kern/8239.
|
|
Revision tags: chs-ubc2-base
|
| 1.24 |
22-Jul-1999 |
thorpej |
Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.23 |
22-Jul-1999 |
thorpej |
0 -> FALSE in a few places.
|
| 1.22 |
17-Jul-1999 |
thorpej |
Implement uao_flush(). This is pretty much identical to the "amap flush" code in uvm_map_clean().
|
| 1.21 |
07-Jul-1999 |
thorpej |
Update a comment in uao_flush().
|
| 1.20 |
25-May-1999 |
thorpej |
Macro'ize the test for "object is a kernel object".
|
| 1.19 |
11-Apr-1999 |
chs |
add a `flags' argument to uvm_pagealloc_strat(). define a flag UVM_PGA_USERESERVE to allow non-kernel object allocations to use pages from the reserve. use the new flag for allocations in pmap modules.
|
|
Revision tags: netbsd-1-4-base
|
| 1.18 |
26-Mar-1999 |
chs |
branches: 1.18.2; add uvmexp.swpgonly and use it to detect out-of-swap conditions.
|
| 1.17 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
| 1.16 |
24-Mar-1999 |
cgd |
after discussion with chuck, nuke pgo_attach from uvm_pagerops
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.15 |
18-Oct-1998 |
chs |
branches: 1.15.2; shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.14 |
18-Sep-1998 |
thorpej |
Add a comment documenting the last change.
|
| 1.13 |
18-Sep-1998 |
thorpej |
Don't use the nointr pool page allocator for the uao_swhash_elt pool. We need to ensure that these come from a non-pageable kernel map, otherwise we can run into a deadlock condition (as noticed by Chuck Silvers).
|
| 1.12 |
31-Aug-1998 |
thorpej |
Use the pool allocator w/ the "nointr" pool page allocator for uvm_aobj and uao_swhash_elt structures. Also, fix a bug in uao_set_swlot() where if setting the swslot to 0 (freeing swap resources), and no swslot was currently allocated, a new entry would be allocated anyhow (revealed during pool'ification).
|
| 1.11 |
13-Aug-1998 |
drochner |
minor consistency nit: the page index into an anon object is always assigned to from integer types, and it is compared to integers. So let it be an integer instead of vsize_t.
|
| 1.10 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
| 1.9 |
09-Aug-1998 |
perry |
bzero->memset, bcopy->memcpy, bcmp->memcmp
|
|
Revision tags: eeh-paddr_t-base
|
| 1.8 |
01-Mar-1998 |
fvdl |
branches: 1.8.2; Merge with Lite2 + local changes
|
| 1.7 |
12-Feb-1998 |
chs |
add copyright.
|
| 1.6 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.5 |
09-Feb-1998 |
mrg |
KNF.
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
enable hashtables for swapslot storage - deadlock is fixed. fix initialization of swhash entries. use malloc(M_NOWAIT) for creating kernel object. avoid dereferencing a vm_page once the page has been freed.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.23 |
18-Oct-2013 |
christos |
use __USE() for empty macro
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.22 |
14-Sep-2012 |
rmind |
branches: 1.22.2; - Describe uvm_aobj and the lock order. - Remove unnecessary uao_dropswap_range1() wrapper. - KNF. Sprinkle some __cacheline_aligned.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-0-5-RELEASE netbsd-6-0-4-RELEASE netbsd-6-0-3-RELEASE netbsd-6-0-2-RELEASE netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.21 |
02-Feb-2011 |
chuck |
branches: 1.21.4; 1.21.10; 1.21.14; udpate license clauses on chuck^2 code to match the new-style BSD licenses. based on diff that rmind@ sent me (and confirmed with chs@ via email).
no functional change with this commit.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase mjf-devfs-base vmlocking-nbase matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
| 1.20 |
01-Dec-2007 |
yamt |
branches: 1.20.40; 1.20.46; 1.20.48; remove a duplicated decl. of aobj_pager.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking jmcneill-base bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.19 |
22-Feb-2007 |
matt |
branches: 1.19.16; 1.19.18; 1.19.24; Fix lossage from boolean_t -> bool and updated x86 bus_dma.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.18 |
11-Dec-2005 |
christos |
branches: 1.18.26; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base ktrace-lwp-base
|
| 1.17 |
08-Nov-2005 |
yamt |
add a function to drop all swap slots in a given range. for tmpfs. XXX maybe it's better to implement true truncation.
|
|
Revision tags: yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.16 |
17-Sep-2005 |
yamt |
make VMSWAP optional again.
|
| 1.15 |
13-Sep-2005 |
yamt |
wrap swap related code by #ifdef VMSWAP. always #define VMSWAP for now.
|
| 1.14 |
31-Jul-2005 |
yamt |
revert "defflag VMSWAP" changes for now. there seems to be far more people who don't want to edit their kernel config files than i thought.
|
| 1.13 |
30-Jul-2005 |
yamt |
defflag VMSWAP.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.12 |
24-Mar-2004 |
junyoung |
branches: 1.12.16; Nuke __P().
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf kqueue-base
|
| 1.11 |
15-Sep-2001 |
chs |
branches: 1.11.18; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: netbsd-1-5-PATCH003 pre-chs-ubcperf thorpej-devvp-base netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 thorpej_scsipi_beforemerge thorpej_scsipi_nbase netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase thorpej_scsipi_base
|
| 1.10 |
11-Jan-2000 |
chs |
branches: 1.10.6; 1.10.8; 1.10.10; add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.9 |
21-Jun-1999 |
thorpej |
branches: 1.9.2; Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.8 |
26-Mar-1999 |
chs |
branches: 1.8.4; add uvmexp.swpgonly and use it to detect out-of-swap conditions.
|
| 1.7 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base eeh-paddr_t-base
|
| 1.6 |
12-Feb-1998 |
chs |
branches: 1.6.4; add copyright.
|
| 1.5 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
declare aobj_pager, needed in uvm_km.c.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.128 |
09-Apr-2023 |
riastradh |
uvm(9): KASSERT(A && B) -> KASSERT(A); KASSERT(B)
|
| 1.127 |
12-Feb-2023 |
andvar |
s/strucure/structure/ and s/structues/structures/ in comments.
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.126 |
01-Apr-2021 |
simonb |
Add a sysctl hashstat collector for ubchash.
|
| 1.125 |
13-Mar-2021 |
skrll |
branches: 1.125.2; Consistently use %#jx instead of 0x%jx or just %jx in UVMHIST_LOG formats
|
| 1.124 |
10-Nov-2020 |
chs |
remove someone's leftover debug printfs.
|
| 1.123 |
18-Oct-2020 |
rin |
branches: 1.123.2; PR kern/55658
Revert rev 1.122: http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/uvm/uvm_bio.c#rev1.122
If this commit is applied to NFS client, changes to files in client side are sometimes invisible in server side, which results in file corruption.
Demonstrated by test code provided by Anthony Mallet: https://mail-index.netbsd.org/current-users/2020/10/17/msg039708.html
Whether the test case above passes or not depends on architectures and size of NFS I/O specified by -r and -w options of mount_nfs(8) (the default size is 32KB for x86 and 8KB for other archs).
Whereas it fails on amd64 and i386 with the default size, it passes on other archs (aarch64, arm, alpha, m68k, and powerpc at least) with their default. On most ports, it fails with some I/O sizes.
However, the condition for failure is still unclear; whereas it fails with 2KB I/O size on amiga (m68k, 8KB page), it passes with same I/O size on alpha (8KB page). It may depends on some VM parameters or details in pmap implementation, or some race conditions are involved.
Great thanks to Anthony Mallet for providing the test code, and sorry everyone for breakage.
|
| 1.122 |
05-Oct-2020 |
rin |
PR kern/55658
ubc_fault_page(): Ignore PG_RDONLY flag and always pmap_enter() the page with the permissions of the original access_type.
It is the file system's responsibility to allocate blocks that is being modified by write(), before calling into UBC to fill the pages for that range. KASSERT() is added there to confirm that no clean page is mapped writable.
Fix infinite loop in uvm_fault_internal(), observed on 16KB-page systems, where it continues to try to make a partially-backed page writable.
No regression in ATF and KASSERT() does not fire on several architectures, as far as I can see.
Fix suggested by chs. Thanks!
|
| 1.121 |
09-Jul-2020 |
rin |
PR kern/55467 tmpfs calls pmap_kenter_pa(9) with virtual address with page offset
Bisectioning revealed that the failure starts with this commit:
sys/fs/tmpfs/tmpfs_vnops.c rev 1.142: http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/fs/tmpfs/tmpfs_vnops.c#rev1.142
by which tmpfs became to use UBC_FAULTBUSY flag for ubc_uiomove(9). If this flag is specified, pmap_kenter_pa(9) is called with virtual address with page offset via ubc_alloc(9):
https://nxr.netbsd.org/xref/src/sys/uvm/uvm_bio.c#616
Most ports seem to neglect silently page offset of va argument for pmap_kenter_pa(9). However, it causes KASSERT failure correctly for powerpc/booke. So, truncate page offset there.
Now, tmpfs works just fine on evbppc-booke, and I've confirmed that no new failures are detected by ATF.
Discussed with chs@. Thanks!
|
| 1.120 |
09-Jul-2020 |
skrll |
Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.119 |
08-Jul-2020 |
skrll |
Trailing whitespace
|
| 1.118 |
25-Jun-2020 |
jdolecek |
make ubc_winshift / ubc_winsize constant, and based on whatever is bigger of (1 << UBC_WINSHIFT, MAX_PAGE_SIZE)
given that default UBC_WINSHIFT is 13, this changes behaviour only for mips and powerpc (BookE/OEA), which will now have twice as much memory used for UBC windows; if this ever becomes a problem, it's possible to reduce ubc_nwins in MD code similar to what is done on sparc
this eliminates variable-length arrays in ubc_fault(), ubc_uiomove(), and ubc_zerorange() so that the stack usage can be determined and checked in compile time
|
| 1.117 |
25-May-2020 |
ad |
ubc_uiomove_direct(): if UBC_FAULTBUSY, the left-over portion of the final page needs to be zeroed.
|
| 1.116 |
24-May-2020 |
ad |
- ubc_uiomove(): Always use direct access in the UBC_FAULTBUSY case, since it works basically the same way as !direct minus temporary mappings, and there are no concurrency issues.
- ubc_alloc_direct(): In the PGO_OVERWRITE case blocks are allocated beforehand. Avoid waking or activating pages unless needed.
|
| 1.115 |
23-May-2020 |
ad |
- In ubc_alloc() take initial offset into account in the UBC_FAULTBUSY case or one too few pages can be mapped.
- In ubc_release() with UBC_FAULTBUSY, chances are that pages are newly allocated and freshly enqueued, so avoid uvm_pageactivate() if possible
- Keep track of the pages mapped in ubc_alloc() in an array on the stack, and use this to avoid calling pmap_extract() in ubc_release().
|
| 1.114 |
19-May-2020 |
ad |
PR kern/32166: pgo_get protocol is ambiguous Also problems with tmpfs+nfs noted by hannken@.
Don't pass PGO_ALLPAGES to pgo_get, and ignore PGO_DONTCARE in the !PGO_LOCKED case. In uao_get() have uvm_pagealloc() take care of page zeroing and release busy pages on error.
|
| 1.113 |
26-Apr-2020 |
thorpej |
Disable ubc_direct by default again. There are still stability issues (e.g. panic during 2020.04.25.00.07.27 amd64 releng test run).
|
|
Revision tags: bouyer-xenpvh-base2
|
| 1.112 |
24-Apr-2020 |
ad |
ubc_alloc_direct(): for a write make sure pages are always marked dirty because there's no managed mapping.
|
| 1.111 |
23-Apr-2020 |
ad |
Enable ubc_direct by default, but only on systems with no more than 2 CPUs for now.
|
| 1.110 |
23-Apr-2020 |
ad |
PR kern/54759 (vm.ubc_direct deadlock when read()/write() into mapping of itself)
- Add new flag UBC_ISMAPPED which tells ubc_uiomove() the object is mmap()ed somewhere. Use it to decide whether to do direct-mapped copy, rather than poking around directly in the vnode in ubc_uiomove(), which is ugly and doesn't work for tmpfs. It would be nicer to contain all this in UVM but the filesystem provides the needed locking here (VV_MAPPED) and to reinvent that would suck more.
- Rename UBC_UNMAP_FLAG() to UBC_VNODE_FLAGS(). Pass in UBC_ISMAPPED where appropriate.
|
| 1.109 |
23-Apr-2020 |
ad |
ubc_direct_release(): unbusy the pages directly since pg->interlock is being taken.
|
|
Revision tags: phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base
|
| 1.108 |
07-Apr-2020 |
ad |
branches: 1.108.2; ubc_direct_release(): remove spurious call to uvm_pagemarkdirty().
|
| 1.107 |
07-Apr-2020 |
ad |
PR kern/54759: vm.ubc_direct deadlock when read()/write() into mapping of itself
Prevent ubc_uiomove_direct() on mapped vnodes.
|
|
Revision tags: phil-wifi-20200406
|
| 1.106 |
17-Mar-2020 |
ad |
Tweak the March 14th change to make page waits interlocked by pg->interlock. Remove unneeded changes and only deal with the PQ_WANTED flag, to exclude possible bugs.
|
| 1.105 |
14-Mar-2020 |
ad |
Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.104 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.103 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.102 |
31-Dec-2019 |
ad |
branches: 1.102.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.101 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
|
Revision tags: phil-wifi-20191119
|
| 1.100 |
07-Nov-2019 |
skrll |
Fix a UVMHIST_LOG format broken in 1.91
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
|
| 1.99 |
09-Dec-2018 |
jdolecek |
for direct map case, avoid PGO_NOBLOCKALLOC when writing, it makes genfs_getpages() return unallocated pages using the zero page and PG_RDONLY; the old code relied on fault logic to get it allocated, which the direct case can't rely on
instead just allocate the blocks right away; pass PGO_JOURNALLOCKED so that code wouldn't try to take wapbl lock, this code path is called with it already held
this should fix KASSERT() due to PG_RDONLY on write with wapbl
towards resolution of PR kern/53124
|
|
Revision tags: pgoyette-compat-1126
|
| 1.98 |
20-Nov-2018 |
jdolecek |
need to use PGO_NOBLOCKALLOC also in ubc_alloc_direct() case, same as non-direct code - otherwise the code tries to acquire the wapbl lock again in genfs_getpages(), and panic due to locking against itself
towards PR kern/53124
|
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625
|
| 1.97 |
02-Jun-2018 |
chs |
branches: 1.97.2; add missing boilerplate for UVMHIST.
|
| 1.96 |
26-May-2018 |
jdolecek |
uvm_pageactivate() needs to be called _after_ code is done with the page, no reason to bother pdaemon with PG_BUSY pages; also clear the PG_FAKE and PG_CLEAN after we are done with the write
this does not make any difference on my machine, but maybe it might fix the machine check panic on Martin's alpha
while here remove UBC_PARTIALOK handling from ubc_zeropage_direct(), just to be sure it works exactly the same as the non-direct one
|
|
Revision tags: pgoyette-compat-0521
|
| 1.95 |
19-May-2018 |
jdolecek |
change code to take advantage of direct map when available, avoiding the need to map pages into kernel
this improves performance of UBC-based (read(2)/write(2)) I/O especially for cached block I/O - sequential read on my NVMe goes from 1.7 GB/s to 1.9 GB/s for non-cached, and from 2.2 GB/s to 5.6 GB/s for cached read
the new code is conditional now and off for now, so that it can be tested further; can be turned on by adjusting ubc_direct variable to true
part of fix for PR kern/53124
|
|
Revision tags: pgoyette-compat-0502 pgoyette-compat-0422
|
| 1.94 |
20-Apr-2018 |
jdolecek |
make ubc_alloc() and ubc_release() static, they should not be used outside of ubc_uiomove()/ubc_zeropage(); for now mark as noinline to keep them available as breakpoints
|
|
Revision tags: pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330
|
| 1.93 |
26-Mar-2018 |
jdolecek |
mark ubc_winshift and ubc_winsize as __read_mostly, they are used often so might benefit from cache placement
|
|
Revision tags: pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
| 1.92 |
09-Feb-2018 |
maxv |
branches: 1.92.2; Use UVM_PROT_RW instead of UVM_PROT_ALL. This doesn't change anything, since the protection code is not applied: the pages are manually kentered as RW.
But fix it anyway, so that "pmap 0" does not say the map is executable.
|
|
Revision tags: tls-maxphys-base-20171202
|
| 1.91 |
28-Oct-2017 |
pgoyette |
Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
|
| 1.90 |
01-Jun-2017 |
chs |
branches: 1.90.2; remove checks for failure after memory allocation calls that cannot fail:
kmem_alloc() with KM_SLEEP kmem_zalloc() with KM_SLEEP percpu_alloc() pserialize_create() psref_class_create()
all of these paths include an assertion that the allocation has not failed, so callers should not assert that again.
|
|
Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base
|
| 1.89 |
21-Mar-2017 |
ozaki-r |
Fix typo
|
| 1.88 |
20-Mar-2017 |
kre |
Ugh. This stuff is disgusting. We really need an arch dependent PRIxOFF (and PRIdOFF) to print off_t's in a way that matches the arch's definition of off_t.
In the meantime fall back on %jx and an (intmax_t) cast. Ugly. (And the way it is written is even uglier...)
|
| 1.87 |
20-Mar-2017 |
kre |
Third time lucky...
Why is there no PRI[xd]OFF ? How are off_t's intended to be printed?
If a PRIxOFF gets added in some appropriate place, the XXX lines in this commit can go away.
(I understand not having PRI[xd]VOFF).
|
| 1.86 |
20-Mar-2017 |
kre |
One more (should have noticed last time) and this time fix the format the way it should have been fixed, not just what was easiest...
|
| 1.85 |
20-Mar-2017 |
kre |
Perhaps fix printf format for KASSERTMSG (unbreak i386 build maybe). This can be revisited by anyone who wants to do things better...
|
|
Revision tags: pgoyette-localcount-20170320
|
| 1.84 |
19-Mar-2017 |
riastradh |
#if DIAGNOSTIC panic ---> KASSERT
|
|
Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
| 1.83 |
27-May-2015 |
rmind |
branches: 1.83.2; 1.83.4; ubc_alloc: perform pmap_update() in the error path as we might have removed the mapping.
|
|
Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
|
| 1.82 |
05-Sep-2014 |
matt |
branches: 1.82.2; Don't nest structure definitions.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
| 1.81 |
07-Jul-2014 |
riastradh |
Initialize ubchist earlier.
|
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
| 1.80 |
25-Oct-2013 |
martin |
branches: 1.80.2; Mark a diagnostic-only variable
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.79 |
27-Sep-2011 |
jym |
branches: 1.79.2; 1.79.12; 1.79.16; Modify *ASSERTMSG() so they are now used as variadic macros. The main goal is to provide routines that do as KASSERT(9) says: append a message to the panic format string when the assertion triggers, with optional arguments.
Fix call sites to reflect the new definition.
Discussed on tech-kern@. See http://mail-index.netbsd.org/tech-kern/2011/09/07/msg011427.html
|
| 1.78 |
29-Jun-2011 |
hannken |
Remove dead uvm_vnp_zerorange() after bump to 5.99.54.
|
| 1.77 |
19-Jun-2011 |
rmind |
- Fix a silly bug: remove umap from uobj in ubc_release() UBC_UNMAP case. - Use UBC_WANT_UNMAP() consistently.
ARM (PMAP_CACHE_VIVT case) works again.
|
| 1.76 |
18-Jun-2011 |
rmind |
- Move pre-check from uvm_obj_destroy() to ubc_purge(), keep it abstracted. - Add comments noting the race between ubc_alloc() and ubc_purge().
|
| 1.75 |
17-Jun-2011 |
hannken |
When ubc_alloc() reuses a cached mapping window remove the object from the lists AFTER clearing its mapping.
Removes a race where uvm_obj_destroy() sees an empty uo_ubc list and destroys the object before ubc_alloc() gets the objects lock to clear the mapping.
|
| 1.74 |
16-Jun-2011 |
hannken |
Rename uvm_vnp_zerorange(struct vnode *, off_t, size_t) to ubc_zerorange(struct uvm_object *, off_t, size_t, int) changing the first argument to an uvm_object and adding a flags argument.
Modify tmpfs_reg_resize() to zero the backing store (aobj) instead of the vnode. Ubc_purge() no longer panics when unmounting tmpfs.
Keep uvm_vnp_zerorange() until the next kernel version bump.
|
| 1.73 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.72 |
19-May-2011 |
rmind |
branches: 1.72.2; ubc_release: use voff_t for offsets, rather than int. Constify. Reviewed by matt@.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231
|
| 1.71 |
30-Nov-2010 |
hannken |
branches: 1.71.2; Always take the object lock before changing vmpage flags. Fixes a deadlock where a thread is waiting on "genput" but the page in question is neither BUSY nor WANTED.
No objections from tech-kern@.
|
|
Revision tags: uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.70 |
22-Jun-2010 |
rmind |
Keep the lock around pmap_update() where required. While fixing this in ubc_fault(), rework logic to "remember" the last object of page and reduce locking overhead, since in common case pages belong to one and the same UVM object (but not always, therefore add a comment).
Unlocks before pmap_update(), on removal of mappings, might cause TLB coherency issues, since on architectures like x86 and mips64 invalidation IPIs are deferred to pmap_update(). Hence, VA space might be globally visible before IPIs are sent or while they are still in-flight.
OK ad@.
|
| 1.69 |
29-May-2010 |
rmind |
ubc_fault: split-off code part handling a single page into ubc_fault_page().
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211
|
| 1.68 |
07-Nov-2009 |
cegger |
branches: 1.68.2; 1.68.4; Add a flags argument to pmap_kenter_pa(9). Patch showed on tech-kern@ http://mail-index.netbsd.org/tech-kern/2009/11/04/msg006434.html No objections.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jym-xensuspend-nbase
|
| 1.67 |
04-Aug-2009 |
pooka |
uvm_vnp_zerorange() logically and by implementation more a part of ubc than uvm_vnode, so move it over.
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base haad-dm-base2 haad-nbase2 ad-audiomp2-base nick-hppapmap-base haad-dm-base mjf-devfs2-base
|
| 1.66 |
27-Nov-2008 |
pooka |
g/c #if 0'd ubc_flush()
|
|
Revision tags: netbsd-5-1-5-RELEASE netbsd-5-1-4-RELEASE netbsd-5-1-3-RELEASE netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
|
| 1.65 |
05-May-2008 |
ad |
branches: 1.65.6; 1.65.8; 1.65.10; 1.65.14; - Convert hashinit() to use kmem_alloc(). The hash tables can be large and it's better to not have them in kmem_map. - Convert a couple of minor items along the way to kmem_alloc(). - Fix some memory leaks.
|
|
Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.64 |
02-Jan-2008 |
ad |
branches: 1.64.6; 1.64.8; 1.64.10; Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.63 |
01-Dec-2007 |
yamt |
branches: 1.63.2; 1.63.6; constify pagerops.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking jmcneill-base bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base vmlocking-base
|
| 1.62 |
27-Jul-2007 |
yamt |
branches: 1.62.4; 1.62.6; 1.62.12; 1.62.14; ubc_uiomove: add an "advice" argument rather than using UVM_ADV_RANDOM blindly.
|
| 1.61 |
27-Jul-2007 |
yamt |
remove a debug printf.
|
| 1.60 |
21-Jul-2007 |
ad |
Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base mjf-ufs-trans-base
|
| 1.59 |
22-Jun-2007 |
yamt |
branches: 1.59.2; ubc_alloc: break loans on UBC_FAULTBUSY.
it's necessary after recent file overwrite changes. (http://mail-index.NetBSD.org/source-changes/2007/06/05/0014.html) it should fix the problem reported by Sarton O'Brien on current-users@/port-xen@. (http://mail-index.NetBSD.org/current-users/2007/06/22/0001.html)
|
| 1.58 |
05-Jun-2007 |
yamt |
improve post-ubc file overwrite performance in common cases. ie. when it's safe, actually overwrite blocks rather than doing read-modify-write.
also fixes PR/33152 and PR/36303.
|
|
Revision tags: yamt-idlelwp-base8
|
| 1.57 |
07-May-2007 |
yamt |
add an evcnt and some assertions.
|
|
Revision tags: thorpej-atomic-base ad-audiomp-base
|
| 1.56 |
22-Feb-2007 |
thorpej |
branches: 1.56.4; 1.56.6; TRUE -> true, FALSE -> false
|
| 1.55 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
| 1.54 |
01-Nov-2006 |
yamt |
branches: 1.54.4; remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.53 |
19-Oct-2006 |
yamt |
add an assertion.
|
| 1.52 |
12-Oct-2006 |
yamt |
move some knowledge about vnode into uvm_vnode.c.
|
| 1.51 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
| 1.50 |
30-Sep-2006 |
yamt |
add ubc window hit/miss evcnts.
|
| 1.49 |
30-Sep-2006 |
yamt |
ubc_fault: check UVM_OBJ_NEEDS_WRITEFAULT. fix an assertion failure in genfs_putpages when using msdosfs. (http://mail-index.NetBSD.org/tech-kern/2006/09/27/0002.html) reported and tested by Darrin B.Jewell.
|
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 rpaulo-netinet-merge-pcb-base
|
| 1.48 |
03-Sep-2006 |
christos |
branches: 1.48.2; 1.48.4; use c99 initializer.
|
|
Revision tags: yamt-pdpolicy-base8
|
| 1.47 |
18-Aug-2006 |
yamt |
ubc_fault: fix a deadlock in the case of uvm_loanbreak() failure.
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base
|
| 1.46 |
03-May-2006 |
yamt |
ubc_fault: use PMAP_CANFAIL. pointed by Jed Davis on tech-kern@.
|
| 1.45 |
13-Apr-2006 |
yamt |
ubc_fault: don't forget to clear PG_WANTED. reported by Michael Lorenz on tech-kern@.
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.44 |
22-Feb-2006 |
drochner |
branches: 1.44.2; 1.44.4; 1.44.6; kill the "fault_type" argument to pager's pgo_fault() methods it is never used (and using it would comprise an abstraction violation imho)
|
| 1.43 |
31-Jan-2006 |
yamt |
branches: 1.43.2; 1.43.4; handle "strange" filesystems like layered filesystems and tmpfs, where pgo_get returns pages which don't belong to the uobj. also fix an XXX in uvm_loananon and lock-unlock mismatch in uvm_loanuobj.
PR/28372, PR/32665 (Alan Barrett).
|
|
Revision tags: ktrace-lwp-base
|
| 1.42 |
29-Nov-2005 |
yamt |
branches: 1.42.2; merge yamt-readahead branch.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.41 |
23-Jul-2005 |
yamt |
branches: 1.41.6; update file timestamps for nfsd loaned-read and mmap. PR/25279. discussed on tech-kern@.
|
| 1.40 |
17-Jul-2005 |
yamt |
- introduce PGO_NOBLOCKALLOC and use it for ubc mapping to prevent unnecessary block allocations in the case that page size > block size.
- ufs_balloc_range: use VM_PROT_WRITE+PGO_NOBLOCKALLOC rather than VM_PROT_READ.
|
| 1.39 |
27-Jun-2005 |
thorpej |
branches: 1.39.2; Use ANSI function decls.
|
| 1.38 |
06-Jun-2005 |
yamt |
introduce a macro to initialize uvm_object and use it.
|
|
Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base kent-audio2-base
|
| 1.37 |
26-Feb-2005 |
perry |
branches: 1.37.2; nuke trailing whitespace
|
|
Revision tags: yamt-km-base2 yamt-km-base
|
| 1.36 |
17-Jan-2005 |
atatat |
branches: 1.36.2; Convert the PMAP_PREFER() macro from two arguments (offset and hint) to four (adding size and direction).
In order for topdown uvm to be an option on ports using PMAP_PREFER, they will need to "prefer" lower addresses if topdown is being used. Additionally, at least one port also needs to know the size.
|
| 1.35 |
16-Jan-2005 |
yamt |
branches: 1.35.2; remove no longer needed #include.
|
| 1.34 |
15-Jan-2005 |
chs |
deal with alpha's architectural failing of not being able to operate on memory quantities smaller than 32 bits.
|
|
Revision tags: kent-audio1-beforemerge
|
| 1.33 |
09-Jan-2005 |
chs |
adjust the UBC mapping code to support non-vnode uvm_objects. this means we can no longer look at the vnode size to determine how many pages to request in a fault, which is good since for NFS the size can change out from under us on the server anyway. there's also a new flag UBC_UNMAP for ubc_release(), so that the file system code can make the decision about whether to cache mappings for files being used as executables.
|
|
Revision tags: kent-audio1-base
|
| 1.32 |
05-May-2004 |
yamt |
ubc_release: grab uobj's vmobjlock when calling uvm_page_unbusy().
|
|
Revision tags: netbsd-2-0-base
|
| 1.31 |
24-Mar-2004 |
junyoung |
branches: 1.31.2; Nuke __P().
|
| 1.30 |
05-Mar-2004 |
dbj |
add debugging assertion ensuring UBC_FAULTBUSY is only used with UBC_WRITE
|
| 1.29 |
07-Jan-2004 |
yamt |
#if 0 out unused ubc_flush().
|
| 1.28 |
03-May-2003 |
yamt |
branches: 1.28.2; fix ubc pager to take care of loan_count.
|
| 1.27 |
10-Mar-2003 |
thorpej |
For PMAP_CACHE_VIVT platforms, make UBC_RELEASE_UNMAP evaluate to TRUE, and add a comment explaining why.
Reviewed by Chuq Silvers.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.26 |
27-Sep-2002 |
provos |
remove trailing \n in panic(). approved perry.
|
|
Revision tags: netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base
|
| 1.25 |
27-Feb-2002 |
chs |
branches: 1.25.10; honor the PG_RDONLY flag (so that NFS can clear the PG_NEEDCOMMIT flag when page with it set is modified again). fixes PR 15733.
|
| 1.24 |
15-Feb-2002 |
simonb |
Add a space after a comma in a few places (KNF).
|
| 1.23 |
19-Jan-2002 |
chs |
add a new flag PMAP_CACHE_VIVT for the pmap to inform the MI code that that the cache is virtually-indexed and virtually-tagged (such as on the ARM), and use this flag in the UBC code to be more friendly to those caches.
|
| 1.22 |
19-Nov-2001 |
enami |
Zero clear an array of vm_page * before passing it to VOP_GETPAGES().
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.21 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.20 |
16-Oct-2001 |
chs |
branches: 1.20.2; it is with great chagrin that I must fix yet another 64-bit math bug.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2
|
| 1.19 |
28-Sep-2001 |
chs |
don't depend on other headers to include sys/proc.h for us.
|
|
Revision tags: post-chs-ubcperf
|
| 1.18 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf
|
| 1.17 |
10-Sep-2001 |
chris |
Update pmap_update to now take the updated pmap as an argument. This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.
Currently this is a no-op on most platforms, so they should see no difference.
Reviewed by Jason.
|
|
Revision tags: thorpej-devvp-base
|
| 1.16 |
18-Jul-2001 |
thorpej |
branches: 1.16.2; bzero -> memset
|
| 1.15 |
13-Jun-2001 |
simonb |
branches: 1.15.2; Add a sanity check for ubc_winshift.
|
| 1.14 |
26-May-2001 |
chs |
replace vm_page_t with struct vm_page *.
|
| 1.13 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge
|
| 1.12 |
24-Apr-2001 |
thorpej |
Sprinkle pmap_update() calls after calls to: - pmap_enter() - pmap_remove() - pmap_protect() - pmap_kenter_pa() - pmap_kremove() as described in pmap(9).
These calls are relatively conservative. It may be possible to optimize these a little more.
|
|
Revision tags: thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.11 |
19-Mar-2001 |
chs |
change uvm_winsize to uvm_winshift so that we can avoid division by a non-constant value.
|
| 1.10 |
17-Mar-2001 |
chs |
return the real error from VOP_GETPAGES().
|
| 1.9 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.8 |
10-Mar-2001 |
chs |
eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
| 1.7 |
02-Feb-2001 |
enami |
branches: 1.7.2; Explicitly panic if failed to allocate some memory during initialization.
|
| 1.6 |
27-Dec-2000 |
chs |
fix some types so that files larger than 4GB work.
|
| 1.5 |
27-Dec-2000 |
chs |
VOP_GETPAGES() returns an E* error code, not a VM_PAGER_* error code.
|
| 1.4 |
21-Dec-2000 |
enami |
s/UBC_WINSIZE/ubc_winsize/g except the variable initialization.
|
| 1.3 |
10-Dec-2000 |
chs |
we don't need VM_PROT_EXECUTE for UBC mappings.
|
| 1.2 |
27-Nov-2000 |
chs |
Initial integration of the Unified Buffer Cache project.
|
|
Revision tags: chs-ubc2-newbase fvdl-softdep-base
|
| 1.1 |
09-Nov-1998 |
chs |
branches: 1.1.2; 1.1.4; 1.1.6; file uvm_bio.c was initially added on branch chs-ubc.
|
| 1.9 |
10-Aug-2025 |
andvar |
Fix few typos in comments.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.8 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
| 1.7 |
17-Feb-2019 |
rin |
branches: 1.7.6; VM_MAXUSER_ADDRESS can be undefined when compiling module/coredump; it varies between machines for evbppc (and possibly evbppc64).
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.6 |
07-Jan-2014 |
dsl |
branches: 1.6.30; Re-instate the zero length sections in elf core dumps (they probably help describe the process memory layout). Fudge the a.out core code to not dump the entire contents. I'm not sue that anything can read a.out core files - more progress might be made on such dumps by converting the a.out file to elf!
|
| 1.5 |
03-Jan-2014 |
dsl |
There is no need for uvm_coredump_walkmap() to explicity pass the proc_t pointer to the calller's function. If the code needs the process its address can be placed in the caller's cookie.
|
| 1.4 |
03-Jan-2014 |
dsl |
Minor changes to the process coredump code. - Add some extra comments. - Add some XXX comments because the process state might not be stable, - Add uvm_coredump_count_segs() to simplify the calling code. - uvm code now only returns non-empty sections/segments. - Put the 'iocookie' into the 'cookie' block passed to uvm_coredump_walkmap() instead of passing it through as an additional parameter. amd64 can still generate core dumps that gdb can read.
|
| 1.3 |
01-Jan-2014 |
dsl |
Change the type of the 'cookie' that holds the state of the core dump file from 'void *' to the actual type 'struct coredump_iostate *'. In most of the code the contents of the structure are still unknown. This just stops the wrong type of pointer being passed to the 'void *' parameter. I hope I've found everything, amd64 GENERIC and i386 GENERIC & ALL compile.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.2 |
02-Feb-2011 |
chuck |
branches: 1.2.4; 1.2.14; 1.2.18; udpate license clauses on my code to match the new-style BSD licenses. based on second diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base nick-hppapmap-base mjf-devfs2-base haad-dm-base haad-dm-base2 haad-nbase2 ad-audiomp2-base
|
| 1.1 |
19-Nov-2008 |
ad |
branches: 1.1.4; 1.1.6; 1.1.8; 1.1.12; 1.1.16; 1.1.18; 1.1.20; Make the emulations, exec formats, coredump, NFS, and the NFS server into modules. By and large this commit:
- shuffles header files and ifdefs - splits code out where necessary to be modular - adds module glue for each of the components - adds/replaces hooks for things that can be installed at runtime
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.16 |
27-Dec-2019 |
ad |
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.15 |
17-May-2011 |
mrg |
branches: 1.15.56; move and rename the uvm history code out of uvm_stat to "kernhist".
rename "UVMHIST" option to enable the uvm histories.
TODO: - make UVMHIST properly depend upon KERNHIST - enable dynamic registration of histories. this is mostly just allocating something in a bitmap, and is only for viewing multiple histories in a merged form.
tested on amd64 and sparc64.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.14 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 jym-xensuspend-base
|
| 1.13 |
03-May-2009 |
pooka |
branches: 1.13.4; 1.13.6; 1.13.8; Include some debug print routines if DEBUGPRINT is defined. This way they can be included without having to include DDB. (arguably all print routines should be behind #ifdef DEBUGPRINT and options DDB should define that macro, but I'll tackle that later)
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base mjf-devfs2-base
|
| 1.12 |
08-Aug-2008 |
skrll |
branches: 1.12.8; Make "show uvmhist" available to all arches (not just sparc*) in ddb.
|
|
Revision tags: nick-csl-alignment-base5 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.11 |
21-Feb-2007 |
thorpej |
branches: 1.11.38; 1.11.42; 1.11.44; 1.11.48; Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.10 |
19-Feb-2006 |
bjh21 |
branches: 1.10.20; Add a "show all pages" command to DDB which prints one line per physical page in the system. Useful for getting some idea where all your memory's gone, at least on a sufficiently small system.
|
| 1.9 |
11-Dec-2005 |
christos |
branches: 1.9.2; 1.9.4; 1.9.6; merge ktrace-lwp.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 yamt-readahead-base3 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 yamt-readahead-base2 netbsd-3-0-RC2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base netbsd-3-0-RC1 yamt-vop-base3 netbsd-2-0-3-RELEASE yamt-vop-base2 thorpej-vnode-attr-base netbsd-2-1-RELEASE yamt-vop-base netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base ktrace-lwp-base
|
| 1.8 |
24-Mar-2004 |
junyoung |
branches: 1.8.16; Nuke __P().
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base kqueue-base
|
| 1.7 |
02-Jun-2001 |
chs |
branches: 1.7.22; replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.6 |
27-Apr-2001 |
marcus |
STDC cleanup: extra token not allowed after #endif.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.5 |
25-Nov-2000 |
chs |
branches: 1.5.2; lots of cleanup: use queue.h macros and KASSERT(). address amap offsets in pages instead of bytes. make amap_ref() and amap_unref() take an amap, offset and length instead of a vm_map_entry_t. improve whitespace and comments.
|
| 1.4 |
24-Nov-2000 |
chs |
add ddb commands "show uvmexp" and "show ncache". the former used to be "call uvm_dump", the latter is new.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.3 |
21-Jun-1999 |
thorpej |
branches: 1.3.2; Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.2 |
25-Mar-1999 |
mrg |
branches: 1.2.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base eeh-paddr_t-base
|
| 1.1 |
04-Jul-1998 |
jonathan |
defopt DDB.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.80 |
07-Jul-2022 |
riastradh |
uvm: CTASSERT about MIN_PAGE_SIZE, which is constant.
|
| 1.79 |
07-Jul-2022 |
rin |
Convert CTASSERT(9) for PAGE_{SIZE,MASK} into KASSERT(9).
They are not compile-time constants for sparc.
|
| 1.78 |
06-Jul-2022 |
riastradh |
kern: Work around spurious -Wtype-limits warnings.
This useless garbage warning is apparently designed to make it painful to write portable safe arithmetic and I think we ought to just disable it.
|
| 1.77 |
06-Jul-2022 |
riastradh |
mmap(2): Guarantee two's-complement wraparound for D_NEGOFFSAFE.
XXX Not sure this should be allowed at all, but this way we don't change the semantics of the existing code which was written under essentially the assumption of -fwrapv.
|
| 1.76 |
06-Jul-2022 |
riastradh |
uvm/uvm_device.c: Sprinkle KNF.
|
| 1.75 |
06-Jul-2022 |
riastradh |
mmap(2): Prohibit overflowing offsets for non-D_NEGOFFSAFE devices.
Reported-by: syzbot+d5a96e7a0ebbd0b76dfc@syzkaller.appspotmail.com
|
| 1.74 |
06-Jul-2022 |
riastradh |
uvm(9): fo_mmap caller guarantees positive size.
No functional change intended, just sprinkling assertions to make it clearer.
|
| 1.73 |
28-Mar-2022 |
riastradh |
driver(9): New types dev_*_t for device driver devsw operations.
These will serve to replace the archaic and kludgey dev_type_* macros which should've been typedefs all along.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.72 |
13-Mar-2021 |
skrll |
Consistently use %#jx instead of 0x%jx or just %jx in UVMHIST_LOG formats
|
| 1.71 |
09-Jul-2020 |
skrll |
branches: 1.71.2; Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.70 |
24-Feb-2020 |
rin |
0x%#x --> %#x for non-external codes. Also, stop mixing up 0x%x and %#x in single files as far as possible.
|
| 1.69 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
| 1.68 |
22-Feb-2020 |
chs |
do not wait for memory in pgo_fault methods, just return ENOMEM and let the uvm_fault code wait if it is appropriate.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.67 |
01-Dec-2019 |
ad |
branches: 1.67.2; __cacheline_aligned on a lock.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.66 |
28-Oct-2017 |
pgoyette |
branches: 1.66.4; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.65 |
17-Dec-2016 |
riastradh |
branches: 1.65.6; 1.65.8; Omit needless nullmmap.
Convert the one user of it to nommap. No functional change to the device driver, since uvm interpreted nullmmap just like nommap.
This slightly changes the uvm ABI so that the function pointer nullop is no longer interpreted as non-mmappable. I do hereby declare that I am surfing the kernel version bump from a few hours ago.
|
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
| 1.64 |
14-Dec-2014 |
chs |
branches: 1.64.2; add a new "fo_mmap" fileops method to allow use of arbitrary uvm_objects for mappings of file objects. move vnode-specific details of mmap()ing a vnode from uvm_mmap() to the new vnode-specific vn_mmap(). add new uvm_mmap_dev() and uvm_mmap_anon() convenience functions for mapping character devices and anonymous memory, and replace all other calls to uvm_mmap() with those. use the new fileop in drm2 so that libdrm can use mmap() to map things like on other platforms (instead of the ioctl that we have used so far).
|
|
Revision tags: nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.63 |
27-Jan-2012 |
para |
branches: 1.63.6; 1.63.22; 1.63.24; extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.62 |
12-Jun-2011 |
rmind |
branches: 1.62.2; 1.62.6; Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.61 |
23-Apr-2011 |
rmind |
branches: 1.61.2; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.60 |
12-Feb-2011 |
jmcneill |
need uvm_pmap.h for pmap_mmap_flags definition
|
| 1.59 |
11-Feb-2011 |
jmcneill |
add optional MD pmap_mmap_flags macro for passing flags between cdev_mmap and pmap_enter, ok matt@
|
| 1.58 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
| 1.57 |
05-Feb-2010 |
uebayasi |
branches: 1.57.2; 1.57.4; 1.57.6; 1.57.8; vnode.h is not used here.
|
|
Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 jym-xensuspend-nbase
|
| 1.56 |
20-Jun-2009 |
mrg |
add a workaround for drm:
for device mmap()'s, if the D_NEGOFFSAFE flag is set, do not check if the offset is negative.
this should go away with the test itself when all drivers are audited and checked to not fail with negative offsets.
|
|
Revision tags: yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base nick-hppapmap-base mjf-devfs2-base
|
| 1.55 |
17-Dec-2008 |
cegger |
branches: 1.55.2; kill MALLOC and FREE macros.
|
|
Revision tags: netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base
|
| 1.54 |
04-Jun-2008 |
ad |
branches: 1.54.6; 1.54.8; 1.54.14; udv_fault: pmap_update before releasing locks.
|
|
Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.53 |
02-Jan-2008 |
ad |
branches: 1.53.6; 1.53.8; 1.53.10; 1.53.12; Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase jmcneill-pm-base
|
| 1.52 |
08-Dec-2007 |
ad |
branches: 1.52.4; Merge from vmlocking2 (use cdev_mmap()).
|
|
Revision tags: vmlocking2-base1 vmlocking-nbase reinoud-bufcleanup-base
|
| 1.51 |
01-Dec-2007 |
yamt |
branches: 1.51.2; constify pagerops.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking jmcneill-base bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base mjf-ufs-trans-base vmlocking-base
|
| 1.50 |
24-Jun-2007 |
christos |
branches: 1.50.6; 1.50.8; 1.50.14; handle UVM_UNKNOWN_OFFSET.
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base ad-audiomp-base
|
| 1.49 |
22-Feb-2007 |
thorpej |
branches: 1.49.4; 1.49.6; 1.49.8; TRUE -> true, FALSE -> false
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base netbsd-4-base rpaulo-netinet-merge-pcb-base
|
| 1.48 |
03-Sep-2006 |
christos |
branches: 1.48.8; use c99 initializers
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base
|
| 1.47 |
22-Feb-2006 |
drochner |
branches: 1.47.2; kill the "fault_type" argument to pager's pgo_fault() methods it is never used (and using it would comprise an abstraction violation imho)
|
| 1.46 |
11-Dec-2005 |
christos |
branches: 1.46.2; 1.46.4; 1.46.6; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.45 |
27-Jun-2005 |
thorpej |
branches: 1.45.2; Small whitespace tweak.
|
| 1.44 |
27-Jun-2005 |
thorpej |
Use ANSI function decls.
|
| 1.43 |
06-Jun-2005 |
yamt |
introduce a macro to initialize uvm_object and use it.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.42 |
24-Mar-2004 |
junyoung |
Nuke __P().
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.41 |
06-Sep-2002 |
gehenna |
branches: 1.41.6; Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to dynamically generated by config(8).
- All device switches is defined as a constant structure in device drivers.
- The new grammer ``device-major'' is introduced to ``files''.
device-major <prefix> char <num> [block <num>] [<rules>]
- All device major numbers must be listed up in port dependent majors.<arch> by using this grammer.
- Added the new naming convention. The name of the device switch must be <prefix>_[bc]devsw for auto-generation of device switch tables.
- The backward compatibility of loading block/character device switch by LKM framework is broken. This is necessary to convert from block/character device major to device name in runtime and vice versa.
- The restriction to assign device major by LKM is completely removed. We don't need to reserve LKM entries for dynamic loading of device switch.
- In compile time, device major numbers list is packed into the kernel and the LKM framework will refer it to assign device major number dynamically.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base
|
| 1.40 |
28-Feb-2002 |
christos |
branches: 1.40.8; use the <sys/conf.h> macro to get the mmap footprint.
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.39 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.38 |
15-Sep-2001 |
chs |
branches: 1.38.2; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf
|
| 1.37 |
10-Sep-2001 |
chris |
Update pmap_update to now take the updated pmap as an argument. This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.
Currently this is a no-op on most platforms, so they should see no difference.
Reviewed by Jason.
|
|
Revision tags: thorpej-devvp-base
|
| 1.36 |
26-May-2001 |
chs |
branches: 1.36.2; 1.36.4; replace vm_page_t with struct vm_page *.
|
| 1.35 |
26-May-2001 |
chs |
replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
|
| 1.34 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge
|
| 1.33 |
24-Apr-2001 |
thorpej |
Sprinkle pmap_update() calls after calls to: - pmap_enter() - pmap_remove() - pmap_protect() - pmap_kenter_pa() - pmap_kremove() as described in pmap(9).
These calls are relatively conservative. It may be possible to optimize these a little more.
|
|
Revision tags: thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.32 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.31 |
10-Mar-2001 |
chs |
eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
| 1.30 |
25-Nov-2000 |
chs |
branches: 1.30.2; lots of cleanup: use queue.h macros and KASSERT(). address amap offsets in pages instead of bytes. make amap_ref() and amap_unref() take an amap, offset and length instead of a vm_map_entry_t. improve whitespace and comments.
|
| 1.29 |
24-Nov-2000 |
chs |
g/c unused pager ops "asyncget" and "aiodone".
|
| 1.28 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.27 |
27-Jun-2000 |
simonb |
In udv_fault(), use an off_t for curr_offset so that the offset passed to d_mmap isn't truncated on 64 bit architectures.
|
| 1.26 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
| 1.25 |
26-Jun-2000 |
simonb |
Change the kernel mmap interface so that the offset to map is an "off_t" and the return value is a "paddr_t" to allow mappings at offsets past 2^31 bytes. Somewhat inspired by FreeBSD, which only changed the offset to a "vm_offset_t".
Includes updates for the i386, pc532 and sh3 mmmmap from Jason Thorpe.
|
| 1.24 |
24-Jun-2000 |
pk |
uvm_detach: eliminate degenerate loop construction.
|
| 1.23 |
24-Jun-2000 |
pk |
Insert two missing `simple_unlock()'s' in udv_detach().
|
|
Revision tags: netbsd-1-5-base
|
| 1.22 |
28-May-2000 |
drochner |
branches: 1.22.2; Don't silently truncate the voff_t offset to vaddr_t when passing it to udv_attach. Pass the whole voff_t instead and do an explicite overflow check before it is passed to the device's mmap handler (as "int", sadly).
|
|
Revision tags: minoura-xpg4dl-base
|
| 1.21 |
03-Apr-2000 |
chs |
branches: 1.21.2; remove the "shareprot" pagerop. it's not needed anymore since share maps are long gone.
|
| 1.20 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
| 1.19 |
26-Mar-2000 |
kleink |
Kill duplicate udv_attach() prototype; it's a public interface, and declared in uvm_device.h.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base fvdl-softdep-base
|
| 1.18 |
13-Nov-1999 |
thorpej |
Change the pmap_enter() API slightly; pmap_enter() now returns an error value (KERN_SUCCESS or KERN_RESOURCE_SHORTAGE) indicating if it succeeded or failed. Change the `wired' and `access_type' arguments to a single `flags' argument, which includes the access type, and flags:
PMAP_WIRED the old `wired' boolean PMAP_CANFAIL pmap_enter() is allowed to fail
If PMAP_CANFAIL is not specified, the pmap should behave as it always has in the face of a drastic resource shortage: fall over dead.
Change the fault handler to deal with failure (which indicates resource shortage) by unlocking everything, waiting for the pagedaemon to free more memory, then retrying the fault.
|
|
Revision tags: comdex-fall-1999-base
|
| 1.17 |
24-Oct-1999 |
ross |
Patch from chuq for uvm r/w map oscillation bug. Fixes the XalphaNetBSD slowdown.
|
|
Revision tags: chs-ubc2-base
|
| 1.16 |
08-Apr-1999 |
drochner |
branches: 1.16.2; 1.16.4; 1.16.6; sanity: use ';' to separate statements
|
|
Revision tags: kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.15 |
26-Mar-1999 |
mycroft |
branches: 1.15.2; 1.15.4; Add a new `access type' argument to pmap_enter(). This indicates what type of memory access a mapping was caused by. This is passed through from uvm_fault() and udv_fault(), and in most other cases is 0. The pmap module may use this to preset R/M information. On MMUs which require R/M emulation, the implementation may preset the bits and avoid taking another fault. On MMUs which keep R/M information in hardware, the implementation may preset its cached bits to speed up the next call to pmap_is_modified() or pmap_is_referenced().
|
| 1.14 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
| 1.13 |
24-Mar-1999 |
cgd |
modify udv_attach() and its caller (uvm_mmap()) so that it's passed the offset and size of the requested region to be mapped, so that the udv_attach() can use the device d_mmap() entry to check mappability of the requested region.
|
| 1.12 |
24-Mar-1999 |
cgd |
after discussion with chuck, nuke pgo_attach from uvm_pagerops
|
|
Revision tags: kenh-if-detach-base
|
| 1.11 |
19-Nov-1998 |
mrg |
check the return value of d_mmap before pmap_phys_address() gets hold of it.
|
|
Revision tags: chs-ubc-base
|
| 1.10 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - udv_fault() no longer has to worry about share map address translations on device faults. simplify code.
|
| 1.9 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.8 |
05-May-1998 |
kleink |
branches: 1.8.2; Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
| 1.7 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.6 |
01-Mar-1998 |
fvdl |
Merge with Lite2 + local changes
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
rearrange a bit for clarity.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.15 |
18-Dec-2021 |
riastradh |
Add some missing includes to uvm_device.h.
- sys/types.h for dev_t - sys/queue.h for LIST_ENTRY - uvm/uvm_object.h for complete struct uvm_object type - uvm/uvm_param.h for voff_t/vsize_t - uvm/uvm_prot.h for vm_prot_t
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.14 |
05-Sep-2020 |
riastradh |
Round of uvm.h cleanup.
The poorly named uvm.h is generally supposed to be for uvm-internal users only.
- Narrow it to files that actually need it -- mostly files that need to query whether curlwp is the pagedaemon, which should maybe be exposed by an external header.
- Use uvm_extern.h where feasible and uvm_*.h for things not exposed by it. We should split up uvm_extern.h but this will serve for now to reduce the uvm.h dependencies.
- Use uvm_stat.h and #ifdef UVMHIST uvm.h for files that use UVMHIST(ubchist), since ubchist is declared in uvm.h but the reference evaporates if UVMHIST is not defined, so we reduce header file dependencies.
- Make uvm_device.h and uvm_swap.h independently includable while here.
ok chs@
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
| 1.13 |
14-Dec-2014 |
chs |
add a new "fo_mmap" fileops method to allow use of arbitrary uvm_objects for mappings of file objects. move vnode-specific details of mmap()ing a vnode from uvm_mmap() to the new vnode-specific vn_mmap(). add new uvm_mmap_dev() and uvm_mmap_anon() convenience functions for mapping character devices and anonymous memory, and replace all other calls to uvm_mmap() with those. use the new fileop in drm2 so that libdrm can use mmap() to map things like on other platforms (instead of the ioctl that we have used so far).
|
|
Revision tags: nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.12 |
02-Feb-2011 |
chuck |
branches: 1.12.14; 1.12.30; 1.12.32; udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase nick-csl-alignment-base5 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base matt-armv6-nbase jmcneill-base netbsd-4-0-RC4 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.11 |
11-Dec-2005 |
christos |
branches: 1.11.98; 1.11.104; 1.11.106; merge ktrace-lwp.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 yamt-readahead-base3 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 yamt-readahead-base2 netbsd-3-0-RC2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base netbsd-3-0-RC1 yamt-vop-base3 netbsd-2-0-3-RELEASE yamt-vop-base2 thorpej-vnode-attr-base netbsd-2-1-RELEASE yamt-vop-base netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base ktrace-lwp-base
|
| 1.10 |
24-Mar-2004 |
junyoung |
Nuke __P().
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_end nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base netbsd-1-5-PATCH003 eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base netbsd-1-5-PATCH002 kqueue-base netbsd-1-5-PATCH001 thorpej_scsipi_beforemerge thorpej_scsipi_nbase netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base thorpej_scsipi_base
|
| 1.9 |
28-May-2000 |
drochner |
branches: 1.9.8; 1.9.26; Don't silently truncate the voff_t offset to vaddr_t when passing it to udv_attach. Pass the whole voff_t instead and do an explicite overflow check before it is passed to the device's mmap handler (as "int", sadly).
|
|
Revision tags: minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.8 |
21-Jun-1999 |
thorpej |
branches: 1.8.2; 1.8.10; Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.7 |
25-Mar-1999 |
mrg |
branches: 1.7.4; remove now >1 year old pre-release message.
|
| 1.6 |
24-Mar-1999 |
cgd |
modify udv_attach() and its caller (uvm_mmap()) so that it's passed the offset and size of the requested region to be mapped, so that the udv_attach() can use the device d_mmap() entry to check mappability of the requested region.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base eeh-paddr_t-base
|
| 1.5 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521
|
| 1.14 |
19-May-2018 |
jdolecek |
Remove emap support. Unfortunately it never got to state where it would be used and usable, due to reliability and limited & complicated MD support.
Going forward, we need to concentrate on interface which do not map anything into kernel in first place (such as direct map or KVA-less I/O), rather than making those mappings cheaper to do.
|
|
Revision tags: pgoyette-compat-0502 pgoyette-compat-0422
|
| 1.13 |
20-Apr-2018 |
jdolecek |
add prot parameter for uvm_emap_enter(), so that it's possible to enter also read/write mappings
|
|
Revision tags: pgoyette-compat-0415 pgoyette-compat-0407
|
| 1.12 |
02-Apr-2018 |
jdolecek |
fix typo in comment
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base
|
| 1.11 |
27-Nov-2014 |
uebayasi |
branches: 1.11.18; Consistently use kpreempt_*() outside scheduler path.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.10 |
15-Sep-2013 |
martin |
Remove unused variable
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4
|
| 1.9 |
13-Apr-2012 |
yamt |
branches: 1.9.2; 1.9.4; comments
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.8 |
02-Sep-2011 |
dyoung |
branches: 1.8.2; 1.8.6; Report vmem(9) errors out-of-band so that we can use vmem(9) to manage ranges that include the least and the greatest vmem_addr_t. Update vmem(9) uses throughout the kernel. Slightly expand on the tests in subr_vmem.c, which still pass. I've been running a kernel with this patch without any trouble.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 rmind-uvmplock-base
|
| 1.7 |
25-Apr-2010 |
ad |
Reduce memory spent on bookkeeping for large values of MAXCPUS.
|
|
Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211
|
| 1.6 |
07-Nov-2009 |
cegger |
branches: 1.6.2; 1.6.4; Add a flags argument to pmap_kenter_pa(9). Patch showed on tech-kern@ http://mail-index.netbsd.org/tech-kern/2009/11/04/msg006434.html No objections.
|
|
Revision tags: yamt-nfs-mp-base8 jym-xensuspend-nbase
|
| 1.5 |
29-Aug-2009 |
rmind |
- Re-enable direct I/O with emap for pipe. - While not used, #ifdef KVA allocation in emap (so it wont burn the space).
|
|
Revision tags: yamt-nfs-mp-base7 jymxensuspend-base
|
| 1.4 |
20-Jul-2009 |
kiyohara |
branches: 1.4.2; Globalize uvm_emap_size. It use to calculate size of kernel page table. http://mail-index.netbsd.org/current-users/2009/07/13/msg009983.html
|
| 1.3 |
19-Jul-2009 |
rmind |
pmap_emap_sync: add an argument, and do not perform pmap_load() during context switch (pmap_destroy() path seems to be unsafe), instead just perform tlbflush(). Slightly inefficient, but good enough for now.
|
|
Revision tags: yamt-nfs-mp-base6
|
| 1.2 |
09-Jul-2009 |
rmind |
branches: 1.2.2; - Fix rare crashe in the intr_lapic_tlb_bcast() handler: save and setup %fs on i386, %gs on amd64 registers, before using them. Otherwise, it might be invalid/garbage, eg. IPI can interrupt userspace.
- Explicitly initialize per-CPU emap generation number.
Thanks <drochner> for reporting and testing of patch.
|
| 1.1 |
28-Jun-2009 |
rmind |
Ephemeral mapping (emap) implementation. Concept is based on the idea that activity of other threads will perform the TLB flush for the processes using emap as a side effect. To track that, global and per-CPU generation numbers are used. This idea was suggested by Andrew Doran; various improvements to it by me. Notes:
- For now, zero-copy on pipe is not yet enabled. - TCP socket code would likely need more work. - Additional UVM loaning improvements are needed.
Proposed on <tech-kern>, silence there. Quickly reviewed by <ad>.
|
| 1.236 |
10-Nov-2025 |
mrg |
avoid integer overflow when calculating inactive target.
on one of my systems, when UVM_PCTPARAM_APPLY() is used to calculate s_inactarg, (s_active + s_inactive) * pct_scaled -- eg, (27484702 + 263661) * 84 == 2330862492, aka overflow in 32-bit signed, and then code to enforce the inactive target to be at least the free target would trigger and inactive target would be a small value.
|
| 1.235 |
14-Sep-2025 |
andvar |
Fix various typos in comments and log message.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| 1.234 |
27-Apr-2025 |
riastradh |
branches: 1.234.2; posix_spawn(2): Allocate a new vmspace at process creation time.
This allocates a new vmspace for the process at the time the new process is created, rather than sharing some other vmspace temporarily. This eliminates any risk of anything bad happening due to temporary sharing, since there isn't any sharing.
Resolves a race to where:
1. we set up the child to share proc0.p_vmspace at first,
2. another process tries to read the new child's psstrings via kern.proc_args.<childpid>.argv or similar with the child's p_reflock held and gets stuck in a uvm fault loop because proc0.p_vmspace doesn't have the child's psstrings address (inherited from the parent) mapped,
3. the child is waiting for p_reflock before it can replace its p_vmspace or psstrings.
By allocating the vmspace up front, with no mappings in it, we avoid exposing the child in this scenario. Minor possible downside is that sysctl kern.proc_args.<childpid>.argv might spuriously fail with EFAULT during this time (rather than fail with EBUSY as it does if p_reflock is held concurrently) but that's not a particularly big deal.
Patch and first paragraph of commit message written by chs@; minor tweaks to comments -- and any mistakes in the analysis -- by me.
PR kern/59037: deadlock in posix_spawn PR kern/59175: posix_spawn hang, hanging other process too
|
|
Revision tags: perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.233 |
26-Feb-2023 |
skrll |
branches: 1.233.6; nkmempages should be size_t
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 thorpej-i2c-spi-conf-base
|
| 1.232 |
31-May-2021 |
riastradh |
branches: 1.232.12; uvm: Make uvm_extern.h (more) self-contained, needs sys/types.h.
|
|
Revision tags: cjep_staticlib_x-base thorpej-cfargs-base thorpej-futex-base
|
| 1.231 |
14-Aug-2020 |
chs |
branches: 1.231.6; 1.231.8; centralize calls from UVM to radixtree into a few functions. in those functions, assert that the object lock is held in the correct mode.
|
| 1.230 |
14-Jun-2020 |
ad |
g/c vm_page_zero_enable
|
| 1.229 |
13-Jun-2020 |
ad |
uvm_pagerealloc(): resurrect the insertion case.
|
| 1.228 |
11-Jun-2020 |
ad |
uvm_availmem(): give it a boolean argument to specify whether a recent cached value will do, or if the very latest total must be fetched. It can be called thousands of times a second and fetching the totals impacts not only the calling LWP but other CPUs doing unrelated activity in the VM system.
|
| 1.227 |
26-May-2020 |
kamil |
Catch up with the usage of struct vmspace::vm_refcnt
Use the dedicated reference counting routines.
Change the type of struct vmspace::vm_refcnt and struct vm_map::ref_count to volatile.
Remove the unnecessary vm->vm_map.misc_lock locking in process_domem().
Reviewed by <ad>
|
| 1.226 |
09-May-2020 |
thorpej |
Make the uvm_voaddr structure more compact, only occupying 2 pointers worth of space, by encoding the type in the lower bits of the object pointer.
|
| 1.225 |
27-Apr-2020 |
rin |
Add missing \ to fix build for PMAP_CACHE_VIVT, i.e., ARMv4 and prior.
|
|
Revision tags: bouyer-xenpvh-base2
|
| 1.224 |
23-Apr-2020 |
ad |
PR kern/54759 (vm.ubc_direct deadlock when read()/write() into mapping of itself)
- Add new flag UBC_ISMAPPED which tells ubc_uiomove() the object is mmap()ed somewhere. Use it to decide whether to do direct-mapped copy, rather than poking around directly in the vnode in ubc_uiomove(), which is ugly and doesn't work for tmpfs. It would be nicer to contain all this in UVM but the filesystem provides the needed locking here (VV_MAPPED) and to reinvent that would suck more.
- Rename UBC_UNMAP_FLAG() to UBC_VNODE_FLAGS(). Pass in UBC_ISMAPPED where appropriate.
|
|
Revision tags: phil-wifi-20200421 bouyer-xenpvh-base1
|
| 1.223 |
18-Apr-2020 |
thorpej |
Add an API to get a reference on the identity of an individual byte of virtual memory, a "virtual object address". This is not a reference to a physical byte of memory, per se, but a reference to a byte residing in a page, owned by a unique UVM object (either a uobj or an anon). Two separate address+addresses space tuples that reference the same byte in an object (such as a location in a shared memory segment) will resolve to equivalent virtual object addresses. Even if the residency status of the page changes, the virtual object address remains unchanged.
struct uvm_voaddr -- a structure that encapsulates this address reference.
uvm_voaddr_acquire() -- a function to acquire this address reference, given a vm_map and a vaddr_t.
uvm_voaddr_release() -- a function to release this address reference.
uvm_voaddr_compare() -- a function to compare two such address references.
uvm_voaddr_acquire() resolves the COW status of the object address before acquiring.
In collaboration with riastradh@ and chs@.
|
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.222 |
22-Mar-2020 |
ad |
branches: 1.222.2; Process concurrent page faults on individual uvm_objects / vm_amaps in parallel, where the relevant pages are already in-core. Proposed on tech-kern.
Temporarily disabled on MP architectures with __HAVE_UNLOCKED_PMAP until adjustments are made to their pmaps.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.221 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
| 1.220 |
18-Feb-2020 |
chs |
remove the aiodoned thread. I originally added this to provide a thread context for doing page cache iodone work, but since then biodone() has changed to hand off all iodone work to a softint thread, so we no longer need the special-purpose aiodoned thread.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.219 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.218 |
31-Dec-2019 |
ad |
branches: 1.218.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.217 |
31-Dec-2019 |
ad |
Rename uvm_free() -> uvm_availmem().
|
| 1.216 |
27-Dec-2019 |
ad |
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
| 1.215 |
21-Dec-2019 |
ad |
Add uvm_free(): returns number of free pages in system.
|
| 1.214 |
16-Dec-2019 |
ad |
- Extend the per-CPU counters matt@ did to include all of the hot counters in UVM, excluding uvmexp.free, which needs special treatment and will be done with a separate commit. Cuts system time for a build by 20-25% on a 48 CPU machine w/DIAGNOSTIC.
- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625
|
| 1.213 |
28-May-2018 |
chs |
branches: 1.213.2; 1.213.6; allow tmpfs files to be larger than 4GB.
|
|
Revision tags: pgoyette-compat-0521
|
| 1.212 |
19-May-2018 |
jdolecek |
Remove emap support. Unfortunately it never got to state where it would be used and usable, due to reliability and limited & complicated MD support.
Going forward, we need to concentrate on interface which do not map anything into kernel in first place (such as direct map or KVA-less I/O), rather than making those mappings cheaper to do.
|
| 1.211 |
08-May-2018 |
christos |
don't store the rssmax in the lwp rusage, it is a per proc property. Instead utilize an unused field in the vmspace struct to store it. Also conditionalize on platforms that have pmap statistics available.
|
|
Revision tags: pgoyette-compat-0502 pgoyette-compat-0422
|
| 1.210 |
20-Apr-2018 |
jdolecek |
add prot parameter for uvm_emap_enter(), so that it's possible to enter also read/write mappings
|
| 1.209 |
20-Apr-2018 |
jdolecek |
make ubc_alloc() and ubc_release() static, they should not be used outside of ubc_uiomove()/ubc_zeropage(); for now mark as noinline to keep them available as breakpoints
|
|
Revision tags: pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
| 1.208 |
15-Dec-2017 |
maya |
branches: 1.208.2; Match locking notes with reality. misc_lock is used to protect vm_refcnt.
ok chuq
|
|
Revision tags: tls-maxphys-base-20171202
|
| 1.207 |
02-Dec-2017 |
mrg |
add two new members to uvmexp_sysctl{}: bootpages and poolpages. bootpages is set to the pages allocated via uvm_pageboot_alloc(). poolpages is calculated from the list of pools nr_pages members.
this brings us closer to having a valid total of pages known by the system, vs actual pages originally managed.
XXX: poolpages needs some handling for PR_RECURSIVE pools still.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
|
| 1.206 |
20-May-2017 |
chs |
MAP_FIXED means something different for mremap() than it does for mmap(), so we cannot use UVM_FLAG_FIXED to specify both behaviors. keep UVM_FLAG_FIXED with its earlier meaning (prior to my previous change) of whether to use uvm_map_findspace() to locate space for the new mapping or to use the hint address that the caller passed in, and add a new flag UVM_FLAG_UNMAP to indicate that any existing entries in the range should be unmapped as part of creating the new mapping. the new UVM_FLAG_UNMAP flag may only be used if UVM_FLAG_FIXED is also specified.
|
|
Revision tags: prg-localcount2-base3
|
| 1.205 |
17-May-2017 |
christos |
snprintb(3) for UVM_FLAGS.
|
|
Revision tags: prg-localcount2-base2
|
| 1.204 |
06-May-2017 |
joerg |
Extend the mmap(2) interface to allow requesting protections for later use with mprotect(2), but without enabling them immediately.
Extend the mremap(2) interface to allow duplicating mappings, i.e. create a second range of virtual addresses references the same physical pages. Duplicated mappings can have different effective protections.
Adjust PAX mprotect logic to disallow effective protections of W&X, but allow one mapping W and another X protections. This obsoletes using temporary files for purposes like JIT.
Adjust PAX logic for mmap(2) and mprotect(2) to fail if W&X is requested and not silently drop the X protection.
Improve test cases to ensure correct operation of the changed interfaces.
|
|
Revision tags: prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.203 |
04-Jan-2017 |
christos |
branches: 1.203.6; don't include uvm_physseg.h for kmem grovellers.
|
| 1.202 |
02-Jan-2017 |
cherry |
Remove a redundant #ifdef _KERNEL/#endif pair.
ok mrg@
|
| 1.201 |
24-Dec-2016 |
cherry |
uvm_extern.h is has both a _KERNEL only, and a non _KERNEL only API.
Since we unconditionally expose the uvm_physseg.h API via uvm_extern.h right now, and since uvm_physseg.h uses a kernel only datatype, viz psize_t, we restrict exposure of uvm_physseg.h API exposure to kernel only.
This is in conformance of its documentation via uvm_hotplug(9) as a kernel internal API.
|
| 1.200 |
22-Dec-2016 |
cherry |
Use uvm_physseg.h:uvm_page_physload() instead of uvm_extern.h
For this, include uvm_physseg.h in the build and include tree, make a cosmetic modification to the prototype for uvm_page_physload().
|
| 1.199 |
22-Dec-2016 |
cherry |
Add a new function called uvm_md_init() that can be called at the appropriate time in the boot path by MD code.
|
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
| 1.198 |
20-Jul-2016 |
maxv |
Introduce uvm_km_protect.
|
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529
|
| 1.197 |
25-May-2016 |
christos |
branches: 1.197.2; Introduce security.pax.mprotect.ptrace sysctl which can be used to bypass mprotect settings so that debuggers can write to the text segment of traced processes so that they can insert breakpoints. Turned off by default. Ok: chuq (for now)
|
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
| 1.196 |
05-Feb-2016 |
christos |
PR/50744: NONAKA Kimihiro: Protect more stuff with _KERNEL && _KMEMUSER to make uvm_extern.h compile standalone again for net-snmp.
|
|
Revision tags: nick-nhusb-base-20151226
|
| 1.195 |
26-Nov-2015 |
martin |
We never exec(2) with a kernel vmspace, so do not test for that, but instead KASSERT() that we don't. When calculating the load address for the interpreter (e.g. ld.elf_so), we need to take into account wether the exec'd process will run with topdown memory or bottom up. We can not use the current vmspace's flags to test for that, as this happens too early. Luckily the execpack already knows what the new state will be later, so instead of testing the current vmspace, pass the info as additional argument to struct emul e_vm_default_addr. Fix all such functions and adopt all callers.
|
|
Revision tags: nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
| 1.194 |
20-Mar-2015 |
riastradh |
Comments explaining UBC_* flags.
|
| 1.193 |
06-Feb-2015 |
maxv |
Kill kmeminit().
|
| 1.192 |
14-Dec-2014 |
chs |
add a new "fo_mmap" fileops method to allow use of arbitrary uvm_objects for mappings of file objects. move vnode-specific details of mmap()ing a vnode from uvm_mmap() to the new vnode-specific vn_mmap(). add new uvm_mmap_dev() and uvm_mmap_anon() convenience functions for mapping character devices and anonymous memory, and replace all other calls to uvm_mmap() with those. use the new fileop in drm2 so that libdrm can use mmap() to map things like on other platforms (instead of the ioctl that we have used so far).
|
|
Revision tags: nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
| 1.191 |
07-Jul-2014 |
riastradh |
branches: 1.191.2; 1.191.4; Initialize ubchist earlier.
|
| 1.190 |
22-May-2014 |
riastradh |
Add uao_set_pgfl to limit a uvm_aobj's pages to a specified freelist.
Brought up on tech-kern:
https://mail-index.netbsd.org/tech-kern/2014/05/20/msg017095.html
|
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
| 1.189 |
21-Feb-2014 |
skrll |
branches: 1.189.2; Remove unnecessary struct simplelock forward declaration.
|
| 1.188 |
03-Jan-2014 |
dsl |
There is no need for uvm_coredump_walkmap() to explicity pass the proc_t pointer to the calller's function. If the code needs the process its address can be placed in the caller's cookie.
|
| 1.187 |
03-Jan-2014 |
dsl |
Minor changes to the process coredump code. - Add some extra comments. - Add some XXX comments because the process state might not be stable, - Add uvm_coredump_count_segs() to simplify the calling code. - uvm code now only returns non-empty sections/segments. - Put the 'iocookie' into the 'cookie' block passed to uvm_coredump_walkmap() instead of passing it through as an additional parameter. amd64 can still generate core dumps that gdb can read.
|
| 1.186 |
01-Jan-2014 |
dsl |
Change the type of the 'cookie' that holds the state of the core dump file from 'void *' to the actual type 'struct coredump_iostate *'. In most of the code the contents of the structure are still unknown. This just stops the wrong type of pointer being passed to the 'void *' parameter. I hope I've found everything, amd64 GENERIC and i386 GENERIC & ALL compile.
|
| 1.185 |
14-Nov-2013 |
martin |
As discussed on tech-kern: make TOPDOWN-VM runtime selectable per process (offer MD code or emulations to override it).
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.184 |
01-Sep-2012 |
matt |
branches: 1.184.2; 1.184.4; Add a __HAVE_CPU_UAREA_IDLELWP hook so that the MD code can allocate special UAREAs for idle lwp's.
|
|
Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4
|
| 1.183 |
08-Apr-2012 |
martin |
Rework posix_spawn locking and memory management: - always provide a vmspace for the new proc, initially borrowing from proc0 (this part fixes PR 46286) - increase parallelism between parent and child if arguments allow this, avoiding a potential deadlock on exec_lock - add a new flag for userland to request old (lockstepped) behaviour for better error reporting - adapt test cases to the previous two and add a new variant to test the diagnostics flag - fix a few memory (and lock) leaks - provide netbsd32 compat
|
|
Revision tags: jmcneill-usbmp-base8
|
| 1.182 |
18-Mar-2012 |
uebayasi |
Move base type definitions from uvm_extern.h to uvm_param.h so that other sources can easily include part of UVM headers without the whole uvm_extern.h (e.g. sys/vnode.h wants only uvm_object.h).
|
|
Revision tags: jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.181 |
02-Feb-2012 |
para |
branches: 1.181.2; - bringing kmeminit_nkmempages back and revert pmaps that called this early - use nkmempages to scale the kmem_arena - reducing diff to pre kmem/vmem change (NKMEMPAGES_MAX_DEFAULT will need adjusting on some archs)
|
| 1.180 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
| 1.179 |
05-Jan-2012 |
reinoud |
Revert MAP_NOSYSCALLS patch.
|
| 1.178 |
22-Dec-2011 |
reinoud |
Redo uvm_map_setattr() to never fail and remove the possible panic. The possibility of failure was a C&P error.
|
| 1.177 |
20-Dec-2011 |
reinoud |
Add a MAP_NOSYSCALLS flag to mmap. This flag prohibits executing of system calls from the mapped region. This can be used for emulation perposed or for extra security in the case of generated code.
Its implemented by adding mapping-attributes to each uvm_map_entry. These can then be queried when needed.
Currently the MAP_NOSYSCALLS is only implemented for x86 but other architectures are easy to adapt; see the sys/arch/x86/x86/syscall.c patch. Port maintainers are encouraged to add them for their processor ports too. When this feature is not yet implemented for an architecture the MAP_NOSYSCALLS is simply ignored with virtually no cpu cost..
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.176 |
01-Sep-2011 |
matt |
branches: 1.176.2; 1.176.6; Forward some UVM from matt-nb5-mips64. Add UVM_KMF_COLORMATCH flag. When uvm_map gets passed UVM_FLAG_COLORMATCH, the align argument contains the color of the starting address to be allocated (0..colormask). When uvm_km_alloc is passed UVM_KMF_COLORMATCH (which can only be used with UVM_KMF_VAONLY), the align argument contain the color of the starting address to be allocated. Change uvm_pagermapin to use this. When mapping user pages in the kernel, if colormatch is used with the color of the starting user page then the kernel mapping will be congruent with the existing user mappings.
|
| 1.175 |
27-Aug-2011 |
christos |
Add an optional pglist argument to uvm_obj_wirepages, to be filled with the list of pages that were wired.
|
| 1.174 |
16-Jun-2011 |
hannken |
Rename uvm_vnp_zerorange(struct vnode *, off_t, size_t) to ubc_zerorange(struct uvm_object *, off_t, size_t, int) changing the first argument to an uvm_object and adding a flags argument.
Modify tmpfs_reg_resize() to zero the backing store (aobj) instead of the vnode. Ubc_purge() no longer panics when unmounting tmpfs.
Keep uvm_vnp_zerorange() until the next kernel version bump.
|
| 1.173 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.172 |
23-Apr-2011 |
rmind |
branches: 1.172.2; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: bouyer-quota2-nbase
|
| 1.171 |
17-Feb-2011 |
matt |
Add support for cpu-specific uarea allocation routines. Allows different allocation for user and system lwps. MIPS will use this to map uareas of system lwp used direct-mapped addresses (to reduce the overhead of switching to kernel threads). ibm4xx could use to map uareas via direct mapped addresses and avoid the problem of having the kernel stack not in the TLB.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-base
|
| 1.170 |
10-Feb-2011 |
pooka |
Make vmapbuf() return success/error and make physio deal with a failure.
|
| 1.169 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base
|
| 1.168 |
04-Jan-2011 |
matt |
branches: 1.168.2; 1.168.4; Add better color matching selecting free pages. KM pages will now allocated so that VA and PA have the same color. On a page fault, choose a physical page that has the same color as the virtual address.
When allocating kernel memory pages, allow the MD to specify a preferred VM_FREELIST from which to choose pages. For machines with large amounts of memory (> 4GB), all kernel memory to come from <4GB to reduce the amount of bounce buffering needed with 32bit DMA devices.
|
|
Revision tags: matt-mips64-premerge-20101231
|
| 1.167 |
20-Dec-2010 |
matt |
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
|
|
Revision tags: uebayasi-xip-base6
|
| 1.166 |
13-Nov-2010 |
uebayasi |
Hide uvm/uvm_page.h again to ensure its internal structures are MD.
GENERIC or at least one kernel compile tested for: acorn26, acorn32, algor, all, alpha, amd64, amiga, amigappc, arc, bebox, bighill, cats, cobalt, dreamcast, ews4800mips, hp300, hp700, hpcarm, hpcmips, hpcsh, i386, ibmnws, integrator, ixm1200, iyonix, landisk, luna68k, mac68k, macppc, mipsco, mmeye, mvme68k, mvmeppc, netwinder, news68k, newsmips, next68k, obs266a, ofppc, pmax, pmppc, prep, rs6000, sandpoint, sbmips, shark, sidebeach, sparc, sparc64, sun2, sun3, usermode, vax, x68k, zaurus
|
| 1.165 |
12-Nov-2010 |
uebayasi |
Put back uvm_page.h for now. Sorry for mess.
|
| 1.164 |
12-Nov-2010 |
uebayasi |
Abstraction fix; don't pull in physical segment/page definitions in UVM external API, uvm_extern.h. Because most users care only virtual memory.
Device drivers use bus_dma(9) to manage physical memory. Device drivers pull in bus_dma(9) API, bus_dma.h. bus_dma(9) implementations pull in UVM internal API, uvm.h.
Tested By: Compiling i386 ALL kernel
|
|
Revision tags: uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1
|
| 1.163 |
16-Apr-2010 |
rmind |
- Merge sched_pstats() and uvm_meter()/uvm_loadav(). Avoids double loop through all LWPs and duplicate locking overhead.
- Move sched_pstats() from soft-interrupt context to process 0 main loop. Avoids blocking effect on real-time threads. Mostly fixes PR/38792.
Note: it might be worth to move the loop above PRI_PGDAEMON. Also, sched_pstats() might be cleaned-up slightly.
|
|
Revision tags: yamt-nfs-mp-base9
|
| 1.162 |
08-Feb-2010 |
joerg |
branches: 1.162.2; Remove separate mb_map. The nmbclusters is computed at boot time based on the amount of physical memory and limited by NMBCLUSTERS if present. Architectures without direct mapping also limit it based on the kmem_map size, which is used as backing store. On i386 and ARM, the maximum KVA used for mbuf clusters is limited to 64MB by default.
The old default limits and limits based on GATEWAY have been removed. key_registered_sb_max is hard-wired to a value derived from 2048 clusters.
|
|
Revision tags: uebayasi-xip-base matt-premerge-20091211
|
| 1.161 |
21-Nov-2009 |
rmind |
branches: 1.161.2; Add uvm_lwp_getuarea() and uvm_lwp_setuarea(). OK matt@.
|
|
Revision tags: jym-xensuspend-nbase
|
| 1.160 |
21-Oct-2009 |
rmind |
Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
| 1.159 |
18-Aug-2009 |
yamt |
whitespace fixes. no functional changes.
|
| 1.158 |
10-Aug-2009 |
haad |
Add uvm_reclaim_hooks support for reclaiming kernel KVA space and memory. This is used only by zfs where uvm_reclaim hook is added from arc cache.
Oked ad@.
|
| 1.157 |
05-Aug-2009 |
pooka |
kill uvm_aio_biodone1(). only user was lfs and that uses nestiobuf now.
|
| 1.156 |
05-Aug-2009 |
pooka |
add some advice symbols we'll eventually need
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6
|
| 1.155 |
28-Jun-2009 |
rmind |
Ephemeral mapping (emap) implementation. Concept is based on the idea that activity of other threads will perform the TLB flush for the processes using emap as a side effect. To track that, global and per-CPU generation numbers are used. This idea was suggested by Andrew Doran; various improvements to it by me. Notes:
- For now, zero-copy on pipe is not yet enabled. - TCP socket code would likely need more work. - Additional UVM loaning improvements are needed.
Proposed on <tech-kern>, silence there. Quickly reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
| 1.154 |
30-Mar-2009 |
yamt |
g/c uvm_aiobuf_pool.
|
| 1.153 |
29-Mar-2009 |
mrg |
- add new RLIMIT_AS (aka RLIMIT_VMEM) resource that limits the total address space available to processes. this limit exists in most other modern unix variants, and like most of them, our defaults are unlimited. remove the old mmap / rlimit.datasize hack.
- adds the VMCMD_STACK flag to all the stack-creation vmcmd callers. it is currently unused, but was added a few years ago.
- add a pair of new process size values to kinfo_proc2{}. one is the total size of the process memory map, and the other is the total size adjusted for unused stack space (since most processes have a lot of this...)
- patch sh, and csh to notice RLIMIT_AS. (in some cases, the alias RLIMIT_VMEM was already present and used if availble.)
- patch ps, top and systat to notice the new k_vm_vsize member of kinfo_proc2{}.
- update irix, svr4, svr4_32, linux and osf1 emulations to support this information. (freebsd could be done, but that it's best left as part of the full-update of compat/freebsd.)
this addresses PR 7897. it also gives correct memory usage values, which have never been entirely correct (since mmap), and have been very incorrect since jemalloc() was enabled.
tested on i386 and sparc64, build tested on several other platforms.
thanks to many folks for feedback and testing but most espcially chuq and yamt for critical suggestions that lead to this patch not having a special ugliness i wasn't happy with anyway :-)
|
| 1.152 |
12-Mar-2009 |
abs |
Clarify free_list usage in uvm_page_physload() regarding faster/slower RAM. Slower RAM should be assigned a higher free_list id. No functional change to code, just comments and manpage
|
|
Revision tags: nick-hppapmap-base2
|
| 1.151 |
18-Feb-2009 |
yamt |
make some functions static.
|
|
Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
| 1.150 |
26-Nov-2008 |
pooka |
branches: 1.150.4; Rototill all remaining file systems to use ubc_uiomove() instead of the ubc_alloc() - uiomove() - ubc_release() dance.
|
| 1.149 |
31-Oct-2008 |
christos |
- allocate 8 pointers on the stack to avoid stack overflow in nfs. - make that 8 a constant - remove bogus panic
|
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
|
| 1.148 |
08-Aug-2008 |
skrll |
branches: 1.148.2; 1.148.4; g/c exec_map
|
|
Revision tags: simonb-wapbl-nbase simonb-wapbl-base
|
| 1.147 |
11-Jul-2008 |
skrll |
English improvement in comments.
"seems good to me :)" from yamt.
|
|
Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 wrstuden-revivesa-base
|
| 1.146 |
04-Jun-2008 |
ad |
branches: 1.146.2; 1.146.4; - vm_page: put listq, pageq into a union alongside a LIST_ENTRY, so we can use both types of list.
- Make page coloring and idle zero state per-CPU.
- Maintain per-CPU page freelists. When freeing, put pages onto the local CPU's lists and the global lists. When allocating, prefer to take pages from the local CPU. If none are available take from the global list as done now. Proposed on tech-kern@.
|
|
Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
| 1.145 |
29-Feb-2008 |
yamt |
branches: 1.145.2; 1.145.4; 1.145.6; uvm_swap_io: if pagedaemon, don't wait for iobuf.
|
|
Revision tags: nick-net80211-sync-base mjf-devfs-base hpcarm-cleanup-base
|
| 1.144 |
28-Jan-2008 |
yamt |
branches: 1.144.2; 1.144.6; remove a special allocator for uareas, which is no longer necessary. use pool_cache instead.
|
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
|
| 1.143 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
| 1.142 |
26-Dec-2007 |
christos |
Add PaX ASLR (Address Space Layout Randomization) [from elad and myself]
For regular (non PIE) executables randomization is enabled for: 1. The data segment 2. The stack
For PIE executables(*) randomization is enabled for: 1. The program itself 2. All shared libraries 3. The data segment 4. The stack
(*) To generate a PIE executable: - compile everything with -fPIC - link with -shared-libgcc -Wl,-pie
This feature is experimental, and might change. To use selectively add options PAX_ASLR=0 in your kernel.
Currently we are using 12 bits for the stack, program, and data segment and 16 or 24 bits for mmap, depending on __LP64__.
|
|
Revision tags: vmlocking2-base3
|
| 1.141 |
24-Dec-2007 |
perry |
Remove __attribute__((__noreturn__)) from things already marked __dead Found by the department of redundancy department.
|
|
Revision tags: yamt-kmem-base3
|
| 1.140 |
13-Dec-2007 |
yamt |
add ddb "whatis" command. inspired from solaris ::whatis dcmd.
|
|
Revision tags: cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.139 |
05-Dec-2007 |
yamt |
branches: 1.139.2; 1.139.4; g/c uvm_vnp_sync
|
| 1.138 |
05-Dec-2007 |
yamt |
fix UBC_WANT_UNMAP. - check PMAP_CACHE_VIVT after pulling pmap.h. - VTEXT -> VI_TEXT.
|
|
Revision tags: vmlocking2-base1 vmlocking-nbase
|
| 1.137 |
30-Nov-2007 |
ad |
branches: 1.137.2; Make {anon,file,exec}pages unsigned.
|
|
Revision tags: jmcneill-base bouyer-xenamd64-base2 bouyer-xenamd64-base
|
| 1.136 |
06-Nov-2007 |
ad |
Merge scheduler changes from the vmlocking branch. All discussed on tech-kern:
- Invert priority space so that zero is the lowest priority. Rearrange number and type of priority levels into bands. Add new bands like 'kernel real time'. - Ignore the priority level passed to tsleep. Compute priority for sleep dynamically. - For SCHED_4BSD, make priority adjustment per-LWP, not per-process.
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base vmlocking-base
|
| 1.135 |
18-Aug-2007 |
ad |
branches: 1.135.2; 1.135.6; 1.135.8; Make the uarea cache per-CPU and drain in batches of 4.
|
|
Revision tags: matt-mips64-base
|
| 1.134 |
27-Jul-2007 |
yamt |
branches: 1.134.4; 1.134.6; ubc_uiomove: add an "advice" argument rather than using UVM_ADV_RANDOM blindly.
|
| 1.133 |
22-Jul-2007 |
pooka |
Retire uvn_attach() - it abuses VXLOCK and its functionality, setting vnode sizes, is handled elsewhere: file system vnode creation or spec_open() for regular files or block special files, respectively.
Add a call to VOP_MMAP() to the pagedvn exec path, since the vnode is being memory mapped.
reviewed by tech-kern & wrstuden
|
|
Revision tags: nick-csl-alignment-base
|
| 1.132 |
17-Jul-2007 |
joerg |
branches: 1.132.2; Add native mremap system call based on the UVM implementation for Linux compat. Add code to enforce alignment of the new location. Special thanks to wizd for helping with the man page.
|
|
Revision tags: mjf-ufs-trans-base
|
| 1.131 |
09-Jul-2007 |
ad |
Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
| 1.130 |
05-Jun-2007 |
yamt |
improve post-ubc file overwrite performance in common cases. ie. when it's safe, actually overwrite blocks rather than doing read-modify-write.
also fixes PR/33152 and PR/36303.
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
|
| 1.129 |
24-Mar-2007 |
rmind |
Export uvm_uarea_free() to the rest. Make things compile again.
|
| 1.128 |
04-Mar-2007 |
christos |
branches: 1.128.2; 1.128.4; 1.128.6; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
|
Revision tags: ad-audiomp-base
|
| 1.127 |
22-Feb-2007 |
thorpej |
TRUE -> true, FALSE -> false
|
| 1.126 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
| 1.125 |
15-Feb-2007 |
ad |
branches: 1.125.2; Add uvm_kick_scheduler() (MP safe) to replace wakeup(&proc0).
|
|
Revision tags: post-newlock2-merge newlock2-nbase newlock2-base
|
| 1.124 |
21-Dec-2006 |
yamt |
merge yamt-splraiseipl branch.
- finish implementing splraiseipl (and makeiplcookie). http://mail-index.NetBSD.org/tech-kern/2006/07/01/0000.html - complete workqueue(9) and fix its ipl problem, which is reported to cause audio skipping. - fix netbt (at least compilation problems) for some ports. - fix PR/33218.
|
|
Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3
|
| 1.123 |
07-Dec-2006 |
elad |
Back out uvm_is_swap_device().
|
|
Revision tags: netbsd-4-base
|
| 1.122 |
01-Dec-2006 |
elad |
branches: 1.122.2; Introduce uvm_is_swap_device(), to check if the passed struct vnode * is used as a swap device or not.
Okay mrg@.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.121 |
12-Oct-2006 |
yamt |
move some knowledge about vnode into uvm_vnode.c.
|
| 1.120 |
12-Oct-2006 |
yamt |
uobj_wirepages and uobj_unwirepages from Mindaugas. PR/34771. (commented out in files.uvm for now because there is no user in tree.)
http://mail-index.netbsd.org/tech-kern/2006/09/24/0000.html http://mail-index.netbsd.org/tech-kern/2006/10/10/0000.html
|
| 1.119 |
05-Oct-2006 |
chs |
add support for O_DIRECT (I/O directly to application memory, bypassing any kernel caching for file data).
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.118 |
15-Sep-2006 |
yamt |
branches: 1.118.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
| 1.117 |
01-Sep-2006 |
cherry |
branches: 1.117.2; bumps kernel aobj to 64 bit. \ See: http://mail-index.netbsd.org/tech-kern/2006/03/07/0007.html
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
| 1.116 |
04-Aug-2006 |
he |
Rearrange included headers and/or add include of <sys/types.h> and <sys/lock.h>, so that the mipsco port can build again, ref. http://mail-index.netbsd.org/port-mips/2006/08/04/0000.html Reviewed by thorpej
|
| 1.115 |
05-Jul-2006 |
drochner |
Introduce a UVM_KMF_EXEC flag for uvm_km_alloc() which enforces an executable mapping. Up to now, only R+W was requested from pmap_kenter_pa. On most CPUs, we get an executable mapping anyway, due to lack of hardware support or due to lazyness in the pmap implementation. Only alpha does obey VM_PROT_EXECUTE, afaics.
|
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
| 1.114 |
19-May-2006 |
yamt |
branches: 1.114.2; 1.114.4; UVM_MAPFLAG: add missing parens.
|
| 1.113 |
14-May-2006 |
elad |
integrate kauth.
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base elad-kernelauth-base
|
| 1.112 |
15-Mar-2006 |
drochner |
branches: 1.112.2; -clean up the interface to uvm_fault: the "fault type" didn't serve any purpose (done by a macro, so we don't save any cycles for now) -kill vm_fault_t; it is not needed for real faults, and for simulated faults (wiring) it can be replaced by UVM internal flags -remove <uvm/uvm_fault.h> from uvm_extern.h again
|
|
Revision tags: yamt-pdpolicy-base2 yamt-pdpolicy-base
|
| 1.111 |
01-Mar-2006 |
yamt |
branches: 1.111.2; 1.111.4; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
|
Revision tags: yamt-uio_vmspace-base5
|
| 1.110 |
10-Feb-2006 |
simonb |
Make a note that some counters should be 64-bit as they wrap far to quickly.
|
| 1.109 |
21-Jan-2006 |
yamt |
branches: 1.109.2; 1.109.4; implement compat_linux mremap.
|
| 1.108 |
21-Dec-2005 |
yamt |
branches: 1.108.2; make length of inactive queue tunable by sysctl. (vm.inactivepct)
|
|
Revision tags: ktrace-lwp-base
|
| 1.107 |
29-Nov-2005 |
yamt |
merge yamt-readahead branch.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.106 |
01-Sep-2005 |
yamt |
branches: 1.106.6; remove one of duplicated forward decl. of vmspace. pointed by Dheeraj S.
|
| 1.105 |
01-Sep-2005 |
yamt |
put back uvm_fault.h for now as it's needed for some ports.
|
| 1.104 |
27-Aug-2005 |
yamt |
don't include uvm_fault.h unnecessarily.
|
| 1.103 |
10-Jun-2005 |
matt |
branches: 1.103.2; Rework the coredump code to have no explicit knownledge of how coredump i/o is done. Instead, pass an opaque cookie which is then passed to a new routine, coredump_write, which does the actual i/o. This allows the method of doing i/o to change without affecting any future MD code. Also, make netbsd32_core.c [re]use core_netbsd.c (in a similar manner that core_elf64.c uses core_elf32.c) and eliminate that code duplication. cpu_coredump{,32} is now called twice, first with a NULL iocookie to fill the core structure and a second to actually write md parts of the coredump. All i/o is nolonger random access and is suitable for shipping over a stream.
|
| 1.102 |
02-Jun-2005 |
matt |
When writing coredumps, don't write zero uninstantiated demand-zero pages. Also, with ELF core dumps, trim trailing zeroes from sections. These two changes can shrink coredumps by over 50% in size.
|
| 1.101 |
15-May-2005 |
yamt |
remove anon related statistics which are no longer used.
|
|
Revision tags: kent-audio2-base
|
| 1.100 |
01-Apr-2005 |
yamt |
merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: yamt-km-base4
|
| 1.99 |
26-Mar-2005 |
fvdl |
Fix some things regarding COMPAT_NETBSD32 and limits/VM addresses.
* For sparc64 and amd64, define *SIZ32 VM constants. * Add a new function pointer to struct emul, pointing at a function that will return the default VM map address. The default function is uvm_map_defaultaddr, which just uses the VM_DEFAULT_ADDRESS macro. This gives emulations control over the default map address, and allows things to be mapped at the right address (in 32bit range) for COMPAT_NETBSD32. * Add code to adjust the data and stack limits when a COMPAT_NETBSD32 or COMPAT_SVR4_32 binary is executed. * Don't use USRSTACK in kern_resource.c, use p_vmspace->vm_minsaddr instead (emulations might have set it differently) * Since this changes struct emul, bump kernel version to 3.99.2
Tested on amd64, compile-tested on sparc64.
|
|
Revision tags: yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base
|
| 1.98 |
13-Jan-2005 |
yamt |
branches: 1.98.2; 1.98.4; 1.98.8; in uvm_unmap_remove, always wakeup va waiters if any. uvm_km_free_wakeup is now a synonym of uvm_km_free.
|
|
Revision tags: kent-audio1-beforemerge
|
| 1.97 |
09-Jan-2005 |
chs |
adjust the UBC mapping code to support non-vnode uvm_objects. this means we can no longer look at the vnode size to determine how many pages to request in a fault, which is good since for NFS the size can change out from under us on the server anyway. there's also a new flag UBC_UNMAP for ubc_release(), so that the file system code can make the decision about whether to cache mappings for files being used as executables.
|
| 1.96 |
01-Jan-2005 |
yamt |
in the case of !PMAP_MAP_POOLPAGE, gather pool backend allocations to large chunks for kernel_map and kmem_map to ease kva fragmentation.
|
| 1.95 |
01-Jan-2005 |
yamt |
introduce vm_map_kernel, a subclass of vm_map, and move some kernel-only members of vm_map to it.
|
| 1.94 |
01-Jan-2005 |
yamt |
for in-kernel maps, - allocate kva for vm_map_entry from the map itsself and remove the static limit, MAX_KMAPENT. - keep merged entries for later splitting to fix allocate-to-free problem. PR/24039.
|
|
Revision tags: kent-audio1-base
|
| 1.93 |
28-Aug-2004 |
thorpej |
Garbage-collect pagemove(); nothing use it anymore (YAY!!!)
|
| 1.92 |
04-May-2004 |
pk |
Since a `vmspace' always includes a `vm_map' we can re-use vm_map's reference count lock to also protect the vmspace's reference count.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.91 |
24-Mar-2004 |
junyoung |
Nuke __P().
|
| 1.90 |
14-Mar-2004 |
jdolecek |
fix typo in comment
|
| 1.89 |
13-Feb-2004 |
yamt |
when breaking a loan from uobj, insert the replacement page into the same position as the original page on the object memq so that genfs_putpages (and lfs) won't be confused.
noted by Stephan Uphoff (PR/24328)
|
| 1.88 |
04-Jan-2004 |
jdolecek |
Rearrange process exit path to avoid need to free resources from different process context ('reaper').
From within the exiting process context: * deactivate pmap and free vmspace while we can still block * introduce MD cpu_lwp_free() - this cleans all MD-specific context (such as FPU state), and is the last potentially blocking operation; all of cpu_wait(), and most of cpu_exit(), is now folded into cpu_lwp_free() * process is now immediatelly marked as zombie and made available for pickup by parent; the remaining last lwp continues the exit as fully detached * MI (rather than MD) code bumps uvmexp.swtch, cpu_exit() is now same for both 'process' and 'lwp' exit
uvm_lwp_exit() is modified to never block; the u-area memory is now always just linked to the list of available u-areas. Introduce (blocking) uvm_uarea_drain(), which is called to release the excessive u-area memory; this is called by parent within wait4(), or by pagedaemon on memory shortage. uvm_uarea_free() is now private function within uvm_glue.c.
MD process/lwp exit code now always calls lwp_exit2() immediatelly after switching away from the exiting lwp.
g/c now unneeded routines and variables, including the reaper kernel thread
|
| 1.87 |
18-Dec-2003 |
pk |
* Introduce uvm_km_kmemalloc1() which allows alignment and preferred offset to be passed to uvm_map().
* Turn all uvm_km_valloc*() macros back into (inlined) functions to retain binary compatibility with any 3rd party modules.
|
| 1.86 |
18-Dec-2003 |
pk |
Condense all existing variants of uvm_km_valloc into a single function: uvm_km_valloc1(), and use it to express all of uvm_km_valloc() uvm_km_valloc_wait() uvm_km_valloc_prefer() uvm_km_valloc_prefer_wait() uvm_km_valloc_align() in terms of it by macro expansion.
|
| 1.85 |
13-Nov-2003 |
chs |
eliminate uvm_useracc() in favor of checking the return value of copyin() or copyout().
uvm_useracc() tells us whether the mapping permissions allow access to the desired part of an address space, and many callers assume that this is the same as knowing whether an attempt to access that part of the address space will succeed. however, access to user space can fail for reasons other than insufficient permission, most notably that paging in any non-resident data can fail due to i/o errors. most of the callers of uvm_useracc() make the above incorrect assumption. the rest are all misguided optimizations, which optimize for the case where an operation will fail. we'd rather optimize for operations succeeding, in which case we should just attempt the access and handle failures due to insufficient permissions the same way we handle i/o errors. since there appear to be no good uses of uvm_useracc(), we'll just remove it.
|
| 1.84 |
11-Aug-2003 |
pk |
Introduce uvm_swapisfull(), which computes the available swap space by taking into account swap devices that are in the process of being removed.
|
| 1.83 |
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
| 1.82 |
29-Jun-2003 |
fvdl |
branches: 1.82.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
| 1.81 |
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
| 1.80 |
10-May-2003 |
thorpej |
Back out the following chagne: http://mail-index.netbsd.org/source-changes/2003/05/08/0068.html
There were some side-effects that I didn't anticipate, and fixing them is proving to be more difficult than I thought, do just eject for now. Maybe one day we can look at this again.
Fixes PR kern/21517.
|
| 1.79 |
08-May-2003 |
thorpej |
Simplify the way the bounds of the managed kernel virtual address space is advertised to UVM by making virtual_avail and virtual_end first-class exported variables by UVM. Machine-dependent code is responsible for initializing them before main() is called. Anything that steals KVA must adjust these variables accordingly.
This reduces the number of instances of this info from 3 to 1, and simplifies the pmap(9) interface by removing the pmap_virtual_space() function call, and removing two arguments from pmap_steal_memory().
This also eliminates some kludges such as having to burn kernel_map entries on space used by the kernel and stolen KVA.
This also eliminates use of VM_{MIN,MAX}_KERNEL_ADDRESS from MI code, this giving MD code greater flexibility over the bounds of the managed kernel virtual address space if a given port's specific platforms can vary in this regard (this is especially true of the evb* ports).
|
| 1.78 |
03-May-2003 |
wiz |
Misc fixes from jmc@openbsd.
|
| 1.77 |
01-Feb-2003 |
thorpej |
Add extensible malloc types, adapted from FreeBSD. This turns malloc types into a structure, a pointer to which is passed around, instead of an int constant. Allow the limit to be adjusted when the malloc type is defined, or with a function call, as suggested by Jonathan Stone.
|
| 1.76 |
18-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.75 |
11-Dec-2002 |
thorpej |
Define a UVM_FLAG_NOWAIT, which indicates that we're not allowed to sleep. Define UVM_KMF_NOWAIT in terms of UVM_FLAG_NOWAIT.
From Manuel Bouyer. Fixes a problem where any mapping with read protection was created in a "nowait" context, causing spurious failures.
|
| 1.74 |
17-Nov-2002 |
chs |
change uvm_uarea_alloc() to indicate whether the returned uarea is already backed by physical pages (ie. because it reused a previously-freed one), so that we can skip a bunch of useless work in that case. this fixes the underlying problem behind PR 18543, and also speeds up fork() quite a bit (eg. 7% on my pc, 1% on my ultra2) when we get a cache hit.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.73 |
22-Sep-2002 |
chs |
encapsulate knowledge of uarea allocation in some new functions.
|
| 1.72 |
15-Sep-2002 |
chs |
add a new km flag UVM_KMF_CANFAIL, which causes uvm_km_kmemalloc() to return failure if swap is full and there are no free physical pages. have malloc() use this flag if M_CANFAIL is passed to it. use M_CANFAIL to allow amap_extend() to fail when memory is scarce. this should prevent most of the remaining hangs in low-memory situations.
|
|
Revision tags: netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
| 1.71 |
17-May-2002 |
enami |
branches: 1.71.2; Make uvn_findpages to return number of pages found so that caller can easily check if all requested pages are found or not.
|
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
| 1.70 |
10-Dec-2001 |
thorpej |
branches: 1.70.8; Move the code that walks the process's VM map during a coredump into uvm_coredump_walkmap(), and use callbacks into the coredump routine to do something with each section.
|
| 1.69 |
09-Dec-2001 |
chs |
add {anon,file,exec}max as a upper bound on the amount of memory that will be allocated for the respective usage types when there is contention for memory.
replace "vnode" and "vtext" with "file" and "exec" in uvmexp field names and sysctl names.
|
| 1.68 |
08-Dec-2001 |
thorpej |
Make the coredump routine exec-format/emulation specific. Split out traditional NetBSD coredump routines into core_netbsd.c and netbsd32_core.c (for COMPAT_NETBSD32).
|
|
Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.67 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.66 |
16-Aug-2001 |
chs |
branches: 1.66.2; user maps are always pageable.
|
| 1.65 |
02-Jun-2001 |
chs |
branches: 1.65.2; replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.64 |
26-May-2001 |
chs |
replace vm_page_t with struct vm_page *.
|
| 1.63 |
25-May-2001 |
chs |
remove trailing whitespace.
|
| 1.62 |
02-May-2001 |
thorpej |
Support dynamic sizing of the page color bins. We also support dynamically re-coloring pages; as machine-dependent code discovers the size of the system's caches, it may call uvm_page_recolor() with the new number of colors to use. If the new mumber of colors is smaller (or equal to) the current number of colors, then uvm_page_recolor() is a no-op.
The system defaults to one bucket if machine-dependent code does not initialize uvmexp.ncolors before uvm_page_init() is called.
Note that the number of color bins should be initialized to something reasonable as early as possible -- for many early memory allocations, we live with the consequences of the page choice for the lifetime of the boot.
|
| 1.61 |
01-May-2001 |
thorpej |
Add the number of page colors to uvmexp.
|
| 1.60 |
29-Apr-2001 |
thorpej |
Implement page coloring, using a round-robin bucket selection algorithm (Solaris calls this "Bin Hopping").
This implementation currently relies on MD code to define a constant defining the number of buckets. This will change reasonably soon (MD code will be able to dynamically size the bucket array).
|
| 1.59 |
25-Apr-2001 |
thorpej |
pmap_resident_count() always exists. Besides, returning the value of vm_rssize is pointless -- it is never initialized to anything other than 0.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.58 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.57 |
09-Mar-2001 |
chs |
add UBC memory-usage balancing. we track the number of pages in use for each of the basic types (anonymous data, executable image, cached files) and prevent the pagedaemon from reusing a given page if that would reduce the count of that type of page below a sysctl-setable minimum threshold. the thresholds are controlled via three new sysctl tunables: vm.anonmin, vm.vnodemin, and vm.vtextmin. these tunables are the percentages of pageable memory reserved for each usage, and we do not allow the sum of the minimums to be more than 95% so that there's always some memory that can be reused.
|
| 1.56 |
06-Feb-2001 |
eeh |
branches: 1.56.2; Specify a process' address space limits for uvmspace_exec().
|
| 1.55 |
30-Nov-2000 |
simonb |
Move uvm_pgcnt_vnode and uvm_pgcnt_anon into uvmexp (as vnodepages and anonpages), and add vtextpages which is currently unused but will be used to trace the number of pages used by vtext vnodes.
|
| 1.54 |
29-Nov-2000 |
simonb |
Add a vm.uvmexp2 sysctl that uses a ABI-safe 'struct uvmexp_sysctl'.
|
| 1.53 |
27-Nov-2000 |
chs |
Initial integration of the Unified Buffer Cache project.
|
| 1.52 |
27-Nov-2000 |
nisimura |
Introduce uvm_km_valloc_align() and use it to glab process's USPACE aligned on USPACE boundary in kernel virutal address. It's benefitial for MIPS R4000's paired TLB entry design.
|
| 1.51 |
28-Sep-2000 |
eeh |
Add support for variable end of user stacks needed to support COMPAT_NETBSD32:
`struct vmspace' has a new field `vm_minsaddr' which is the user TOS.
PS_STRINGS is deprecated in favor of curproc->p_pstr which is derived from `vm_minsaddr'.
Bump the kernel version number.
|
| 1.50 |
21-Sep-2000 |
thorpej |
Make PMAP_PAGEIDLEZERO() return a boolean value. FALSE indidcates that the page being zero'd was not completed and that page zeroing should be aborted. This may be used by machine-dependent code doing slow page access to reduce the latency of running a process that has become runnable while in the middle of doing a slow page zero.
|
| 1.49 |
13-Sep-2000 |
thorpej |
Add an align argument to uvm_map() and some callers of that routine. Works similarly fto pmap_prefer(), but allows callers to specify a minimum power-of-two alignment of the region. How we ever got along without this for so long is beyond me.
|
| 1.48 |
12-Aug-2000 |
thorpej |
Don't bother with a trampoline to start the pagedaemon and reaper threads.
|
| 1.47 |
01-Aug-2000 |
wiz |
Rename VM_INHERIT_* to MAP_INHERIT_* and move them to sys/sys/mman.h as discussed on tech-kern. Retire sys/uvm/uvm_inherit.h, update man page for minherit(2).
|
| 1.46 |
24-Jul-2000 |
jeffs |
Add uvm_km_valloc_prefer_wait(). Used to valloc with the passed in voff_t being passed to PMAP_PREFER(), which results in the propper virtual alignment of the allocated space.
|
| 1.45 |
27-Jun-2000 |
mrg |
move the contents of <vm/vm.h> into <uvm/uvm_extern.h>. <vm/vm.h> is simply an include of <uvm/uvm_extern.h> now.
|
| 1.44 |
27-Jun-2000 |
mrg |
more vm header file changes:
<vm/vm_extern.h> merged into <uvm/uvm_extern.h> <vm/vm_page.h> merged into <uvm/uvm_page.h> <vm/pmap.h> has become <uvm/uvm_pmap.h>
this leaves just <vm/vm.h> in NetBSD.
|
| 1.43 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
|
| 1.42 |
08-Jun-2000 |
thorpej |
Change UVM_UNLOCK_AND_WAIT() to use ltsleep() (it is now atomic, as advertised). Garbage-collect uvm_sleep().
|
| 1.41 |
28-May-2000 |
thorpej |
Rather than starting init and creating kthreads by forking and then doing a cpu_set_kpc(), just pass the entry point and argument all the way down the fork path starting with fork1(). In order to avoid special-casing the normal fork in every cpu_fork(), MI code passes down child_return() and the child process pointer explicitly.
This fixes a race condition on multiprocessor systems; a CPU could grab the newly created processes (which has been placed on a run queue) before cpu_set_kpc() would be performed.
|
|
Revision tags: minoura-xpg4dl-base
|
| 1.40 |
24-Apr-2000 |
thorpej |
branches: 1.40.2; Changes necessary to implement pre-zero'ing of pages in the idle loop: - Make page free lists have two actual queues: known-zero pages and pages with unknown contents. - Implement uvm_pageidlezero(). This function attempts to zero up to the target number of pages until the target has been reached (currently target is `all free pages') or until whichqs becomes non-zero (indicating that a process is ready to run). - Define a new hook for the pmap module for pre-zero'ing pages. This is used to zero the pages using uncached access. This allows us to zero as many pages as we want without polluting the cache.
In order to use this feature, each platform must add the appropropriate glue in their idle loop.
|
| 1.39 |
10-Apr-2000 |
thorpej |
Add UVM_PGA_ZERO which instructs uvm_pagealloc{,_strat}() to return a zero'd, ! PG_CLEAN page, as if it were uvm_pagezero()'d.
|
| 1.38 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase
|
| 1.37 |
11-Feb-2000 |
thorpej |
Add some very simple code to auto-size the kmem_map. We take the amount of physical memory, divide it by 4, and then allow machine dependent code to place upper and lower bounds on the size. Export the computed value to userspace via the new "vm.nkmempages" sysctl.
NKMEMCLUSTERS is now deprecated and will generate an error if you attempt to use it. The new option, should you choose to use it, is called NKMEMPAGES, and two new options NKMEMPAGES_MIN and NKMEMPAGES_MAX allow the user to configure the bounds in the kernel config file.
|
| 1.36 |
11-Jan-2000 |
chs |
add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
| 1.35 |
30-Dec-1999 |
eeh |
I should have made uvm_page_physload() take paddr_t's instead of vaddr_t's. Also, add uvm_coredump32().
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.34 |
22-Jul-1999 |
thorpej |
branches: 1.34.2; Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.33 |
17-Jul-1999 |
thorpej |
Add a set of "lockflags", which can control the locking behavior of some functions. Use these flags in uvm_map_pageable() to determine if the map is locked on entry (replaces an already present boolean_t argument `islocked'), and if the function should return with the map still locked.
|
| 1.32 |
02-Jul-1999 |
thorpej |
Bring in additional uvmexp members from chs-ubc2, so that VM stats can be read no matter which kernel you're running.
|
| 1.31 |
21-Jun-1999 |
thorpej |
Protect prototypes, certain macros, and inlines from userland.
|
| 1.30 |
18-Jun-1999 |
thorpej |
Add the guts of mlockall(MCL_FUTURE). This requires that a process's "memlock" resource limit to uvm_mmap(). Update all calls accordingly.
|
| 1.29 |
17-Jun-1999 |
thorpej |
Make uvm_vslock() return the error code from uvm_fault_wire(). All places which use uvm_vslock() should now test the return value. If it's not KERN_SUCCESS, wiring the pages failed, so the operation which is using uvm_vslock() should error out.
XXX We currently just EFAULT a failed uvm_vslock(). We may want to do more about translating error codes in the future.
|
| 1.28 |
15-Jun-1999 |
thorpej |
Several changes, developed and tested concurrently: * Provide POSIX 1003.1b mlockall(2) and munlockall(2) system calls. MCL_CURRENT is presently implemented. MCL_FUTURE is not fully implemented. Also, the same one-unlock-for-every-lock caveat currently applies here as it does to mlock(2). This will be addressed in a future commit. * Provide the mincore(2) system call, with the same semantics as Solaris. * Clean up the error recovery in uvm_map_pageable(). * Fix a bug where a process would hang if attempting to mlock a zero-fill region where none of the pages in that region are resident. [ This fix has been submitted for inclusion in 1.4.1 ]
|
| 1.27 |
26-May-1999 |
thorpej |
Change the vm_map's "entries_pageable" member to a r/o flags member, which has PAGEABLE and INTRSAFE flags. PAGEABLE now really means "pageable", not "allocate vm_map_entry's from non-static pool", so update all map creations to reflect that. INTRSAFE maps are maps that are used in interrupt context (e.g. kmem_map, mb_map), and thus use the static map entry pool (XXX as does kernel_map, for now). This will eventually change now these maps are locked, as well.
|
| 1.26 |
26-May-1999 |
thorpej |
Pass an access_type to uvm_vslock().
|
| 1.25 |
13-May-1999 |
thorpej |
Allow the caller to specify a stack for the child process. If NULL, the child inherits the stack pointer from the parent (traditional behavior). Like the signal stack, the stack area is secified as a low address and a size; machine-dependent code accounts for stack direction.
This is required for clone(2).
|
| 1.24 |
11-Apr-1999 |
chs |
add a `flags' argument to uvm_pagealloc_strat(). define a flag UVM_PGA_USERESERVE to allow non-kernel object allocations to use pages from the reserve. use the new flag for allocations in pmap modules.
|
|
Revision tags: netbsd-1-4-base
|
| 1.23 |
26-Mar-1999 |
chs |
branches: 1.23.2; add uvmexp.swpgonly and use it to detect out-of-swap conditions.
|
| 1.22 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.21 |
08-Sep-1998 |
thorpej |
branches: 1.21.2; Implement uvm_exit(), which frees VM resources when a process finishes exiting.
|
| 1.20 |
28-Aug-1998 |
thorpej |
Add a waitok boolean argument to the VM system's pool page allocator backend.
|
| 1.19 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
| 1.18 |
01-Aug-1998 |
thorpej |
We need to be able to specify a uvm_object to the pool page allocator, too.
|
| 1.17 |
31-Jul-1998 |
thorpej |
Allow an alternate splimp-protected map to be specified in the pool page allocator routines.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.16 |
24-Jul-1998 |
thorpej |
branches: 1.16.2; Implement uvm_km_{alloc,free}_poolpage(). These functions use pmap hooks to map/unmap pool pages if provided by the pmap layer.
|
| 1.15 |
08-Jul-1998 |
thorpej |
Add support for multiple memory free lists. There is at least one default free list, and 0 - N additional free list, in order of descending priority.
A new page allocation function, uvm_pagealloc_strat(), has been added, providing three page allocation strategies:
- normal: high -> low priority free list walk, taking the page off the first free list that has one.
- only: attempt to allocate a page only from the specified free list, failing if that free list has none available.
- fallback: if `only' fails, fall back on `normal'.
uvm_pagealloc(...) is provided for normal use (and is a synonym for uvm_pagealloc_strat(..., UVM_PGA_STRAT_NORMAL, 0); the free list argument is ignored for the `normal' case).
uvm_page_physload() now specified which free list the pages will be loaded onto. This means that some platforms which have multiple physical memory segments may define additional vm_physsegs if they wish to break individual physical segments into differing priorities.
Machine-dependent code must define _at least_ the following constants in <machine/vmparam.h>:
VM_NFREELIST: the number of free lists the system will have
VM_FREELIST_DEFAULT: the default freelist (should always be 0, but is defined in machdep code so that it's with all of the other free list-related constants).
Additional free list names may be defined by machine-dependent code, but they will only be used by machine-dependent code (e.g. for loading the vm_physsegs).
|
| 1.14 |
04-Jul-1998 |
jonathan |
defopt DDB.
|
| 1.13 |
09-May-1998 |
kleink |
Use size_t to pass the length of the memory region to operate on to chgkprot(), kernacc(), useracc(), vslock() and vsunlock(); (unsigned) ints are not adequate on all platforms.
|
| 1.12 |
30-Apr-1998 |
thorpej |
Pass vslock() and vsunlock() a proc *, rather than implicitly operating on curproc.
|
| 1.11 |
30-Mar-1998 |
mycroft |
Mark scheduler() and uvm_scheduler() as never returning.
|
| 1.10 |
27-Mar-1998 |
thorpej |
Split uvmspace_alloc() into uvmspace_alloc() and uvmspace_init(). The latter can be used for initializing a pre-allocated vmspace.
|
| 1.9 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.8 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.7 |
09-Feb-1998 |
mrg |
keep statistics on pageout/pagein, total pages, and total operations.
|
| 1.6 |
08-Feb-1998 |
thorpej |
Allow callers of uvm_km_suballoc() to specify where the base of the submap _must_ begin, by adding a "fixed" boolean argument.
|
| 1.5 |
07-Feb-1998 |
mrg |
implement counters for pages paged in/out
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
prototype for uvm_map_checkprot() moved here. add uvmexp fields for pagouts-in-progress and kernel-reserved pages.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.237 |
15-Mar-2024 |
andvar |
Fix !VMSWAP build: Added __unused for few local variables, which are used in VMSWAP block only. Adjust !VMSWAP uvm_swap_stats() definition to make it build with compat code. Copied "int (*uvm_swap_stats50)(...)" definition from uvm_swap to uvm_swapstub to avoid missing uvm_swap_stats50 reference on linking.
Fixes INSTALL_CPMBR1400, INSTALL_ZYXELKX evbmips kernel configs as a result.
Reviewed by simon and phone in IRC (thanks).
|
|
Revision tags: thorpej-ifq-base thorpej-altq-separation-base
|
| 1.236 |
19-Sep-2023 |
ad |
Don't needlessly bump a couple of fault counters if upgrading the rwlock failed.
|
| 1.235 |
01-Sep-2023 |
andvar |
s/unnmapped/unmapped/ in comment.
|
| 1.234 |
13-Aug-2023 |
chs |
uvm: prevent TLB invalidation races during COW resolution
When a thread takes a page fault which results in COW resolution, other threads in the same process can be concurrently accessing that same mapping on other CPUs. When the faulting thread updates the pmap entry at the end of COW processing, the resulting TLB invalidations to other CPUs are not done atomically, so another thread can write to the new writable page and then a third thread might still read from the old read-only page, resulting in inconsistent views of the page by the latter two threads. Fix this by removing the pmap entry entirely for the original page before we install the new pmap entry for the new page, so that the new page can only be modified after the old page is no longer accessible.
This fixes PR 56535 as well as the netbsd versions of problems described in various bug trackers:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225584 https://reviews.freebsd.org/D14347 https://github.com/golang/go/issues/34988
|
| 1.233 |
17-Jul-2023 |
riastradh |
uvm(9): One rndsource for faults -- not one per CPU.
All relevant state is per-CPU anyway; the only substantive difference this makes is how many entries appear in `rndctl -l' output and what they are called -- formerly the somewhat confusing `cpuN', meaning `page faults on cpuN', and now just `uvmfault'. I don't think there's any real value in being able to enable or disable measurement or counting of page faults on one CPU vs others, so although this could be a minor compatibility change, it's hard to imagine it matters much.
XXX kernel ABI change in struct cpu_info
|
| 1.232 |
09-Apr-2023 |
riastradh |
uvm(9): KASSERT(A && B) -> KASSERT(A); KASSERT(B)
|
|
Revision tags: netbsd-10-base
|
| 1.231 |
26-Oct-2022 |
riastradh |
branches: 1.231.2; sys/kernel.h: New home for extern start_init_exec.
|
|
Revision tags: bouyer-sunxi-drm-base
|
| 1.230 |
03-Jun-2022 |
dholland |
typo in comment
|
| 1.229 |
05-Dec-2021 |
msaitoh |
s/recusive/recursive/ in comment.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.228 |
09-Jul-2020 |
skrll |
Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.227 |
17-May-2020 |
ad |
Start trying to reduce cache misses on vm_page during fault processing.
- Make PGO_LOCKED getpages imply PGO_NOBUSY and remove the latter. Mark pages busy only when there's actually I/O to do.
- When doing COW on a uvm_object, don't mess with neighbouring pages. In all likelyhood they're already entered.
- Don't mess with neighbouring VAs that have existing mappings as replacing those mappings with same can be quite costly.
- Don't enqueue pages for neighbour faults unless not enqueued already, and don't activate centre pages unless uvmpdpol says its useful.
Also:
- Make PGO_LOCKED getpages on UAOs work more like vnodes: do gang lookup in the radix tree, and don't allocate new pages.
- Fix many assertion failures around faults/loans with tmpfs.
|
| 1.226 |
15-May-2020 |
ad |
Reported-by: syzbot+3e3c7cfa8093f8de047e@syzkaller.appspotmail.com
Comment out an assertion that's now bogus and add a comment.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
| 1.225 |
13-Apr-2020 |
ad |
uvm_fault_check(): if MADV_SEQUENTIAL, change lower lock type to RW_WRITER in case many threads are concurrently doing "sequential" access, to avoid excessive mixing of read/write lock holds.
|
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.224 |
23-Mar-2020 |
skrll |
branches: 1.224.2; Fix UVMHIST build
|
| 1.223 |
23-Mar-2020 |
skrll |
Trailing whitespace
|
| 1.222 |
22-Mar-2020 |
ad |
Process concurrent page faults on individual uvm_objects / vm_amaps in parallel, where the relevant pages are already in-core. Proposed on tech-kern.
Temporarily disabled on MP architectures with __HAVE_UNLOCKED_PMAP until adjustments are made to their pmaps.
|
| 1.221 |
20-Mar-2020 |
ad |
Go back to freeing struct vm_anon one by one. There may have been an advantage circa ~2008 but there isn't now.
|
| 1.220 |
20-Mar-2020 |
ad |
uvm_fault_upper_lookup(): don't call pmap_extract() and pmap_update() more often than needed.
|
| 1.219 |
17-Mar-2020 |
ad |
Tweak the March 14th change to make page waits interlocked by pg->interlock. Remove unneeded changes and only deal with the PQ_WANTED flag, to exclude possible bugs.
|
| 1.218 |
14-Mar-2020 |
ad |
Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.217 |
24-Feb-2020 |
rin |
0x%#x --> %#x for non-external codes. Also, stop mixing up 0x%x and %#x in single files as far as possible.
|
| 1.216 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.215 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.214 |
31-Dec-2019 |
ad |
branches: 1.214.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.213 |
16-Dec-2019 |
ad |
- Extend the per-CPU counters matt@ did to include all of the hot counters in UVM, excluding uvmexp.free, which needs special treatment and will be done with a separate commit. Cuts system time for a build by 20-25% on a 48 CPU machine w/DIAGNOSTIC.
- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
|
| 1.212 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.211 |
01-Dec-2019 |
ad |
Deactivate pages in batch instead of acquiring uvm_pageqlock repeatedly.
|
| 1.210 |
01-Dec-2019 |
martin |
Add missing <sys/atomic.h> include
|
| 1.209 |
01-Dec-2019 |
maxv |
Use atomic_{load,store}_relaxed() on global counters.
|
|
Revision tags: phil-wifi-20191119
|
| 1.208 |
10-Nov-2019 |
chs |
in uvm_fault_lower_io(), fetch all the map entry values that we need before we unlock everything.
Reported-by: syzbot+bb6f0092562222b489a3@syzkaller.appspotmail.com
|
| 1.207 |
05-Aug-2019 |
chs |
fix two bugs reported in https://syzkaller.appspot.com/bug?id=8840dce484094a926e1ec388ffb83acb2fa291c9
- in uvm_fault_check(), if the map entry is wired, handle the fault the same way that we would handle UVM_FAULT_WIRE. faulting on wired mappings is valid if the mapped object was truncated and then later grown again.
- in uvm_fault_unwire_locked(), we must hold the locks for the vm_map_entry while calling pmap_extract() in order to avoid races with the mapped object being truncated while we are unwiring it.
Reported-by: syzbot+2e0ae2fc35ab7301c7b8@syzkaller.appspotmail.com
|
|
Revision tags: netbsd-9-base phil-wifi-20190609
|
| 1.206 |
28-May-2019 |
msaitoh |
branches: 1.206.2; s/recieve/receive/
|
| 1.205 |
21-Apr-2019 |
chs |
If a pager fault method returns ENOMEM but some memory appears to be reclaimable, wake up the pagedaemon and retry the fault. This fixes the problems with Xorg being killed with an "out of swap" message due to a transient memory shortage.
|
|
Revision tags: isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
|
| 1.204 |
08-May-2018 |
christos |
branches: 1.204.2; don't store the rssmax in the lwp rusage, it is a per proc property. Instead utilize an unused field in the vmspace struct to store it. Also conditionalize on platforms that have pmap statistics available.
|
| 1.203 |
07-May-2018 |
christos |
update maxrss (used to always be 0). Patterned after the OpenBSD changes.
|
|
Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.202 |
20-Nov-2017 |
chs |
branches: 1.202.2; In uvm_fault_upper_enter(), if pmap_enter(PMAP_CANFAIL) fails, assert that the pmap did not leave around a now-stale pmap mapping for an old page. If such a pmap mapping still existed after we unlocked the vm_map, the UVM code would not know later that it would need to lock the lower layer object while calling the pmap to remove or replace that stale pmap mapping. See PR 52706 for further details.
|
| 1.201 |
28-Oct-2017 |
pgoyette |
Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
| 1.200 |
09-Jul-2017 |
christos |
PR/52384: make uvm_fault_check() return EFAULT not EACCES, like our man pages (but not OpenGroup which does not document EFAULT for read/write, and only documents EACCES for sockets) say for read/write.
|
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base
|
| 1.199 |
20-Mar-2017 |
skrll |
branches: 1.199.6; Ensure we pass the prot in flags to pmap_enter when creating a wired mapping
|
|
Revision tags: pgoyette-localcount-20170320
|
| 1.198 |
19-Mar-2017 |
riastradh |
__diagused police
|
|
Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
| 1.197 |
22-Jun-2015 |
matt |
branches: 1.197.2; 1.197.4; Use %p, %#xl etc. for pointers and addresses.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base tls-maxphys-base
|
| 1.196 |
10-Aug-2014 |
tls |
branches: 1.196.4; Merge tls-earlyentropy branch into HEAD.
|
|
Revision tags: yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
| 1.195 |
15-Sep-2013 |
martin |
branches: 1.195.2; Mark a variable as potentially unused
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3
|
| 1.194 |
19-Feb-2012 |
rmind |
branches: 1.194.2; 1.194.4; Remove VM_MAP_INTRSAFE and related code. Not used since the "kmem changes".
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.193 |
02-Feb-2012 |
tls |
Entropy-pool implementation move and cleanup.
1) Move core entropy-pool code and source/sink/sample management code to sys/kern from sys/dev.
2) Remove use of NRND as test for presence of entropy-pool code throughout source tree.
3) Remove use of RND_ENABLED in device drivers as microoptimization to avoid expensive operations on disabled entropy sources; make the rnd_add calls do this directly so all callers benefit.
4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might have lead to slight entropy overestimation for some sources.
5) Add new source types for environmental sensors, power sensors, VM system events, and skew between clocks, with a sample implementation for each.
ok releng to go in before the branch due to the difficulty of later pullup (widespread #ifdef removal and moved files). Tested with release builds on amd64 and evbarm and live testing on amd64.
|
| 1.192 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base
|
| 1.191 |
28-Nov-2011 |
yamt |
branches: 1.191.2; comments
|
|
Revision tags: jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.190 |
06-Aug-2011 |
rmind |
branches: 1.190.2; - Rework uvm_anfree() into uvm_anon_freelst(), which always drops the lock. - Free anons in uvm_anon_freelst() without lock held. - Mechanic sync to unused loaning code.
|
| 1.189 |
05-Jul-2011 |
yamt |
reduce the number of atomic ops in common cases. it's exceptional for anons to remain longer than amap.
|
| 1.188 |
24-Jun-2011 |
rmind |
Fix uvmplock regression - a lock against oneself case in amap_swap_off(). Happens since amap is NULL in uvmfault_anonget(), so uvmfault_unlockall() keeps anon locked, when it should unlock it.
|
| 1.187 |
23-Jun-2011 |
rmind |
uvmfault_anonget: clean-up, improve some comments, misc.
|
| 1.186 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.185 |
21-May-2011 |
tsutsui |
branches: 1.185.2; No need to pass UVM_FLAG_COLORMATCH to uvm_pagealloc() if no valid vaddr is specified.
|
| 1.184 |
23-Apr-2011 |
rmind |
Replace "malloc" in comments, remove unnecessary header inclusions.
|
| 1.183 |
08-Apr-2011 |
yamt |
- ensure that the promoted page is on the queue even when later pmap_enter failed. - don't activate a page twice. - remove an argument which is used only for an assertion. - assertions and comments.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.182 |
10-Feb-2011 |
skrll |
Spell uvm_fault_lower_neighbor correctly in UVMHIST_FUNC by using __func__
|
| 1.181 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base
|
| 1.180 |
06-Jan-2011 |
enami |
branches: 1.180.2; 1.180.4; Fix bugs introduced by previous commit; allocated page needs to be bound with the anon, and uvmfault_anonget may be called with ufi NULL.
|
| 1.179 |
04-Jan-2011 |
matt |
Add better color matching selecting free pages. KM pages will now allocated so that VA and PA have the same color. On a page fault, choose a physical page that has the same color as the virtual address.
When allocating kernel memory pages, allow the MD to specify a preferred VM_FREELIST from which to choose pages. For machines with large amounts of memory (> 4GB), all kernel memory to come from <4GB to reduce the amount of bounce buffering needed with 32bit DMA devices.
|
|
Revision tags: matt-mips64-premerge-20101231
|
| 1.178 |
20-Dec-2010 |
matt |
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
|
| 1.177 |
17-Dec-2010 |
yamt |
cosmetics. no functional changes. - constify - wrap long lines - assertions - comments
|
| 1.176 |
15-Dec-2010 |
pooka |
Remove duplicate asserts from when uvm_fault_lower1() was merged into uvm_fault_lower() (the duplicates were there already before, just in different functions).
reported by Alexander Nasonov on tech-kern
|
|
Revision tags: uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.175 |
22-Jun-2010 |
rmind |
Keep the lock around pmap_update() where required. While fixing this in ubc_fault(), rework logic to "remember" the last object of page and reduce locking overhead, since in common case pages belong to one and the same UVM object (but not always, therefore add a comment).
Unlocks before pmap_update(), on removal of mappings, might cause TLB coherency issues, since on architectures like x86 and mips64 invalidation IPIs are deferred to pmap_update(). Hence, VA space might be globally visible before IPIs are sent or while they are still in-flight.
OK ad@.
|
| 1.174 |
28-May-2010 |
rmind |
uvm_fault_{upper,lower}_done: move drop-swap outside the page-queues lock. Assert for object lock being held (or ref count 0) in uao_set_swslot().
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
| 1.173 |
24-Feb-2010 |
uebayasi |
branches: 1.173.2; Merge more indirect functions. Some comments.
|
| 1.172 |
24-Feb-2010 |
uebayasi |
uvm_fault_upper_lookup, uvm_fault_upper_neighbor: There is no point to call pmap_update() without calling pmap_enter().
(Probably calling only once after loop (as done in uvm_fault_lower_lookup()) is enough. If done so, other threads see entered neighbor pages as reflected a little latter.)
|
| 1.171 |
24-Feb-2010 |
uebayasi |
Minor clean up.
|
| 1.170 |
24-Feb-2010 |
uebayasi |
Revert a thinko.
|
| 1.169 |
24-Feb-2010 |
uebayasi |
Slightly clean up uvm_fault() code path after pmap_enter(). Now tasks needed for page cache are concentrated in own functions (uvm_fault_*_done()).
|
| 1.168 |
24-Feb-2010 |
uebayasi |
Record if "promote" is done in UVMHIST. Do it for "upper" fault too.
|
| 1.167 |
24-Feb-2010 |
uebayasi |
Merge some indirect "lower" fault handlers back. Prompted by rmind@.
|
| 1.166 |
08-Feb-2010 |
mlelstv |
branches: 1.166.2; pgo_get needs the page array to be initialized.
|
| 1.165 |
08-Feb-2010 |
mlelstv |
Move assertion to make check more clear.
|
| 1.164 |
07-Feb-2010 |
mlelstv |
Make UVMHIST build again.
|
| 1.163 |
05-Feb-2010 |
uebayasi |
Cosmetic. Shorten some long names.
|
| 1.162 |
05-Feb-2010 |
uebayasi |
Fix !DIAGNOSTIC build. Reported by Geoff Wing.
|
| 1.161 |
04-Feb-2010 |
uebayasi |
Reduce diff between upper/lower neighbor handlers.
|
| 1.160 |
04-Feb-2010 |
uebayasi |
Merge "obfuscating layers" for readability. Inline some functions. Requested by rmind@.
|
| 1.159 |
04-Feb-2010 |
uebayasi |
Move uvm_fault_* static func decls in one place.
|
| 1.158 |
03-Feb-2010 |
uebayasi |
uvm_fault_lower_generic_io: Reduce diff from uvm_loanuobj().
|
| 1.157 |
03-Feb-2010 |
uebayasi |
uvm_fault_lower_generic_io: One missing mutex_exit(vmobjlock). Found while comparing this function with uvm_loanuobj(). (Part of) these should be merged.
|
| 1.156 |
02-Feb-2010 |
uebayasi |
uobj->pgops->pgo_get doing PGO_SYNCIO returns a uobjpage whose uobj backpointer refers to another "uobj" used to call pgo_get. Revert the wrong assertion I made. My bad.
(This and pgo_get's possible ERESTART return value check is the only 2 behavioral changes I made.)
Reported by drochner@, thanks.
|
| 1.155 |
02-Feb-2010 |
uebayasi |
Don't pass an unnecessary reference to uvm_loanbreak_anon().
Requested by rmind@.
|
| 1.154 |
02-Feb-2010 |
uebayasi |
Be consistent to decide if PMAP_WIRED or not.
|
| 1.153 |
02-Feb-2010 |
uebayasi |
Move A->K loan break code to uvm_loan.c.
|
| 1.152 |
02-Feb-2010 |
uebayasi |
Indent.
|
| 1.151 |
02-Feb-2010 |
uebayasi |
uvm_fault: Split "neighbor" fault and loan handling into functions.
|
| 1.150 |
02-Feb-2010 |
uebayasi |
Sort struct uvm_faultctx members for better alignment.
|
| 1.149 |
01-Feb-2010 |
uebayasi |
Indent.
|
| 1.148 |
01-Feb-2010 |
uebayasi |
More split.
|
| 1.147 |
01-Feb-2010 |
uebayasi |
Fix build without DIAGNOSTIC.
|
| 1.146 |
01-Feb-2010 |
uebayasi |
uvm_fault: Clarify when to wire what.
|
| 1.145 |
01-Feb-2010 |
uebayasi |
uvm_fault_upper_lookup: This is totally my personal preference, but can't help adding one goto to reduce one indent.
|
| 1.144 |
01-Feb-2010 |
uebayasi |
uvm_fault: - Lower fault routines don't care the vm_anon array found in upper lookup. Don't pass the pointer down. - The flag "shadowed" is known when we lookup upper layer. Don't need to keep in the fault context struct.
|
| 1.143 |
01-Feb-2010 |
uebayasi |
Indent.
|
| 1.142 |
01-Feb-2010 |
uebayasi |
Rewrite uvm_fault() loop using while () than goto.
|
| 1.141 |
01-Feb-2010 |
uebayasi |
Split uvm_fault() into 2 more functions, uvm_fault_check() and uvm_fault_upper_lookup(). Omit unnecessary arguments passed around.
|
| 1.140 |
01-Feb-2010 |
uebayasi |
uvm_fault: Pack variables shared during fault / re-fault into a struct named uvm_faultctx. Unfortunately ~all of those values are overriden in various ways. Constification doesn't help much...
|
| 1.139 |
01-Feb-2010 |
uebayasi |
ERESTART is already negative. Give up negating error values to not override the original values. Pointed out by rmind@, thanks.
In the lower fault case, if (*pgo_get)() can return ERESTART and we should re-fault for that remains a question. The original code just returned the error, so keep that behaviour for now. In case (*pgo_get)() really returns ERESTART, pass EIO to tell the uvm_fault caller that (*pgo_get)() failed.
(As far as I grep callers don't check if the return value is ERESTART or not. So assuming (*pgo_get)() never returns ERESTART should be a safe bet.)
|
| 1.138 |
31-Jan-2010 |
uebayasi |
Ax uvm_fault_internal() & break it into functions. "Upper" fault and "lower" fault routines are separated now.
|
| 1.137 |
31-Jan-2010 |
uebayasi |
uvm_fault_internal:
Move local variables around to isolate contexts. Note that remaining variables are global in that function, and some hold state across re-fault.
Slilently clean-up the "eoff" mess.
(Superfluous braces will go once things settle down.)
|
| 1.136 |
31-Jan-2010 |
uebayasi |
Indent.
|
| 1.135 |
31-Jan-2010 |
uebayasi |
uvm_fault_internal: In lower fault handling case, put another goto to clarify that we don't care lower neighboring pages for the zero-fill object.
|
| 1.134 |
31-Jan-2010 |
uebayasi |
uvm_fault_internal: Skip another long code segment (lower "neighbor" fault) by a goto.
|
| 1.133 |
31-Jan-2010 |
uebayasi |
uvm_fault_internal: Put a goto label "Case1" as well as "Case2". Clarify that if the faulting page is shadowed, we don't care the lower layer at all.
|
| 1.132 |
31-Jan-2010 |
uebayasi |
Correct previous; fix a miscalculation of offset-into-entry in MADV_SEQUENTIAL case. Pointed out by pooka@.
|
| 1.131 |
30-Jan-2010 |
uebayasi |
Calculate the offset from vm_map_entry's start to vm_page array's start once.
|
| 1.130 |
24-Jan-2010 |
uebayasi |
Clean up an internal flag usage. No functional changes.
|
| 1.129 |
17-Dec-2009 |
rmind |
Replace few USER_TO_UAREA/UAREA_TO_USER uses, reduce sys/user.h inclusions.
|
|
Revision tags: matt-premerge-20091211
|
| 1.128 |
05-Dec-2009 |
pooka |
Convert tsleep(&lbolt) to kpause(). Make ltsleep/mtsleep on lbolt illegal. I examined all places where lbolt is referenced to make sure there were pointer aliases of it passed to tsleep, but put a KASSERT in m/ltsleep() just to be sure.
|
|
Revision tags: jym-xensuspend-nbase
|
| 1.127 |
01-Nov-2009 |
uebayasi |
Consistently call amap / uobj layers as upper / lower, because UVM has only those two layers by design. Approved by Chuck Cranor some time ago.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base nick-hppapmap-base mjf-devfs2-base
|
| 1.126 |
20-Dec-2008 |
ad |
Move a couple of calls to pmap_update().
|
|
Revision tags: netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base simonb-wapbl-nbase simonb-wapbl-base
|
| 1.125 |
04-Jul-2008 |
ad |
branches: 1.125.4; 1.125.6; Update a comment.
|
|
Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base
|
| 1.124 |
27-Mar-2008 |
ad |
branches: 1.124.4; 1.124.6; 1.124.8; Make rusage collection per-LWP and collate in the appropriate places. cloned threads need a little bit more work but the locking needs to be fixed first.
|
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
| 1.123 |
18-Jan-2008 |
yamt |
branches: 1.123.6; push pmap_clear_reference calls into pdpolicy code, where reference bits actually matter.
|
|
Revision tags: matt-armv6-base
|
| 1.122 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
|
| 1.121 |
11-Oct-2007 |
ad |
branches: 1.121.4; 1.121.6; 1.121.10; Remove LOCK_ASSERT(!simple_lock_held(&foo));
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base
|
| 1.120 |
21-Jul-2007 |
ad |
branches: 1.120.4; 1.120.6; 1.120.8; 1.120.10; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base
|
| 1.119 |
22-Feb-2007 |
thorpej |
branches: 1.119.4; 1.119.12; TRUE -> true, FALSE -> false
|
| 1.118 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 newlock2-base
|
| 1.117 |
15-Dec-2006 |
yamt |
branches: 1.117.2; put ->K loaned pages on the page queue, so that page loaning doesn't disturb pagedaemon/pdpolicy.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base yamt-splraiseipl-base3 netbsd-4-base
|
| 1.116 |
01-Dec-2006 |
yamt |
uvm_fault: fix an assertion. PR/35134 from Christos Zoulas. it can be triggered by minherit as well.
|
| 1.115 |
28-Nov-2006 |
yamt |
uvm_fault: unwrap a short line.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.114 |
12-Oct-2006 |
yamt |
move some knowledge about vnode into uvm_vnode.c.
|
| 1.113 |
03-Oct-2006 |
christos |
Coverity CID 3170,3171: Add KASSERT.
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.112 |
15-Sep-2006 |
yamt |
branches: 1.112.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 elad-kernelauth-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.111 |
11-Apr-2006 |
yamt |
branches: 1.111.8; add assertions.
|
|
Revision tags: yamt-pdpolicy-base3 peter-altq-base
|
| 1.110 |
15-Mar-2006 |
drochner |
branches: 1.110.2; -clean up the interface to uvm_fault: the "fault type" didn't serve any purpose (done by a macro, so we don't save any cycles for now) -kill vm_fault_t; it is not needed for real faults, and for simulated faults (wiring) it can be replaced by UVM internal flags -remove <uvm/uvm_fault.h> from uvm_extern.h again
|
|
Revision tags: yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.109 |
22-Feb-2006 |
drochner |
branches: 1.109.2; 1.109.4; kill the "fault_type" argument to pager's pgo_fault() methods it is never used (and using it would comprise an abstraction violation imho)
|
| 1.108 |
15-Feb-2006 |
yamt |
- amap_copy: take a "flags" argument instead of booleans. - add AMAP_COPY_NOMERGE flag, and use it for uvm_map_extract. PR/32806 from Julio M. Merino Vidal.
|
| 1.107 |
31-Jan-2006 |
yamt |
branches: 1.107.2; 1.107.4; handle "strange" filesystems like layered filesystems and tmpfs, where pgo_get returns pages which don't belong to the uobj. also fix an XXX in uvm_loananon and lock-unlock mismatch in uvm_loanuobj.
PR/28372, PR/32665 (Alan Barrett).
|
| 1.106 |
31-Jan-2006 |
yamt |
re-apply uvm_fault.c 1.104. fixes will follow.
|
| 1.105 |
30-Jan-2006 |
yamt |
revert uvm_fault.c 1.104 for now. see PR/28372, PR/32665.
|
| 1.104 |
21-Jan-2006 |
yamt |
- uvm_fault: move a common code of 1B and 2B to a new function. don't attempt to allocate anons with kernel_map locked. PR/32543. - amap_copy: add an assertion.
|
| 1.103 |
24-Dec-2005 |
perry |
branches: 1.103.2; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
| 1.102 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.101 |
13-Sep-2005 |
yamt |
wrap swap related code by #ifdef VMSWAP. always #define VMSWAP for now.
|
| 1.100 |
31-Jul-2005 |
yamt |
revert "defflag VMSWAP" changes for now. there seems to be far more people who don't want to edit their kernel config files than i thought.
|
| 1.99 |
30-Jul-2005 |
yamt |
defflag VMSWAP.
|
| 1.98 |
23-Jul-2005 |
yamt |
update file timestamps for nfsd loaned-read and mmap. PR/25279. discussed on tech-kern@.
|
| 1.97 |
22-Jul-2005 |
yamt |
uvm_fault: check a correct object in the case of layered filesystems. fix PR/30811 from Jukka Salmi.
|
| 1.96 |
17-Jul-2005 |
yamt |
ensure that vnodes with dirty pages are always on syncer's queue.
- genfs_putpages: wait for i/o completion of PG_RELEASED/PG_PAGEOUT pages by setting "wasclean" false when encountering them. suggested by Stephan Uphoff in PR/24596 (1).
- genfs_putpages: write protect pages when cleaning out, if we're going to take the vnode off the syncer's queue. uvm_fault: don't write-map pages unless its vnode is already on the syncer's queue.
fix PR/24596 (3) but in the different way from the suggested fix. (to keep our current behaviour, ie. not to require explicit msync. discussed on tech-kern@.)
- genfs_putpages: don't mistakenly take a vnode off the queue by introducing a generation number in genfs_node. genfs_getpages: increment the generation number. suggested by Stephan Uphoff in PR/24596 (2).
- add some assertions.
|
| 1.95 |
27-Jun-2005 |
thorpej |
branches: 1.95.2; Use ANSI function decls.
|
| 1.94 |
11-May-2005 |
yamt |
allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
|
Revision tags: kent-audio2-base
|
| 1.93 |
27-Apr-2005 |
yamt |
uvmfault_anonget: check uvm_reclaimable() where appropriate.
|
| 1.92 |
12-Apr-2005 |
yamt |
fix unreasonably frequent "killed: out of swap" on systems which have little or no swap. - even on a severe swap shortage, if we have some amount of file-backed pages, don't bother to kill processes. - if all pages in queue will be likely reactivated, just give up page type balancing rather than spinning unnecessarily.
|
|
Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base
|
| 1.91 |
28-Feb-2005 |
chs |
branches: 1.91.2; use TRUE and FALSE instead of 1 and 0 for boolean_t.
|
|
Revision tags: yamt-km-base2
|
| 1.90 |
07-Feb-2005 |
yamt |
uvm_fault: fix integer overflow so that MADV_SEQUENTIAL can work on large files.
|
|
Revision tags: yamt-km-base kent-audio1-beforemerge
|
| 1.89 |
01-Jan-2005 |
yamt |
branches: 1.89.2; 1.89.4; uvm_fault: pass NULL pap to pmap_extract where we don't need paddr.
|
|
Revision tags: kent-audio1-base
|
| 1.88 |
05-May-2004 |
yamt |
fix a amap_wirerange deadlock problem by re-introducing PG_RELEASED for anon pages. PR/23171 from Christian Limpach. for details, see discussion filed in the PR database.
uvm_anon_release: a new function to free anon-owned PG_RELEASED page. uvm_anfree: we can't wait for the page here because the caller might hold amap lock. instead, just mark the page as PG_RELEASED. who unbusy the page should check the PG_RELEASED. uvm_aio_aiodone: uvm_anon_release() instead of uvm_page_unbusy() if appropriate. uvmfault_anonget: check PG_RELEASED.
|
|
Revision tags: netbsd-2-0-base
|
| 1.87 |
24-Mar-2004 |
junyoung |
branches: 1.87.2; Nuke __P().
|
| 1.86 |
02-Mar-2004 |
yamt |
uvm_fault: check loan_count of neighborhood object page properly.
PR/24595 from Stephan Uphoff.
|
| 1.85 |
10-Feb-2004 |
dbj |
s/fauling/faulting/
|
| 1.84 |
11-Aug-2003 |
pk |
Make sure to call uvm_swap_free() and uvm_swap_markbad() with valid (i.e. positive) slot numbers.
|
| 1.83 |
11-Aug-2003 |
pk |
Introduce uvm_swapisfull(), which computes the available swap space by taking into account swap devices that are in the process of being removed.
|
| 1.82 |
03-May-2003 |
yamt |
branches: 1.82.2; use uvm_loanbreak in uvm_fault.
|
| 1.81 |
09-Feb-2003 |
pk |
uvm_fault: case 1B: lock page queue before calling uvm_pageactivate().
|
| 1.80 |
18-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.79 |
30-Oct-2002 |
yamt |
change "uoff" to voff_t from vaddr_t as it's offset within uvm object.
fix PR/18855.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.78 |
02-Sep-2002 |
thorpej |
When breaking an loan due to a page fault, check to see if the other kind of reference-holder (anon or object) is referencing the page. If not, then the page must be removed from the pageq's.
Reviewed by Chuck Silvers.
|
|
Revision tags: gehenna-devsw-base
|
| 1.77 |
29-Aug-2002 |
chs |
be sure that the page we allocate to break a loan is put on a paging queue. fixes PR 18037.
|
|
Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
|
| 1.76 |
25-Mar-2002 |
chs |
branches: 1.76.2; 1.76.4; when processing PG_RDONLY, mask off VM_PROT_WRITE instead of hard-wiring VM_PROT_READ (since we might have VM_PROT_EXEC too). this fixes problems running binaries out of NFS on macppc. yet another fix courtesy of enami.
|
|
Revision tags: eeh-devprop-base newlock-base
|
| 1.75 |
09-Mar-2002 |
chs |
a vm_prot_t is a bit-mask, fix an assertion which was treating one more like an enumerated type.
|
|
Revision tags: ifpoll-base
|
| 1.74 |
02-Jan-2002 |
chs |
in uvm_fault_unwire_locked(), if we find that a pmap entry is missing, just skip that page. this situation can arise legitimately when a file with a wired mapping is truncated so that a wired page is no longer part of the file.
|
| 1.73 |
01-Jan-2002 |
chs |
redo part of the last commit.
|
| 1.72 |
31-Dec-2001 |
chs |
introduce a new UVM fault type, VM_FAULT_WIREMAX. this is different from VM_FAULT_WIRE in that when the pages being wired are faulted in, the simulated fault is at the maximum protection allowed for the mapping instead of the current protection. use this in uvm_map_pageable{,_all}() to fix the problem where writing via ptrace() to shared libraries that are also mapped with wired mappings in another process causes a diagnostic panic when the wired mapping is removed.
this is a really obscure problem so it deserves some more explanation. ptrace() writing to another process ends up down in uvm_map_extract(), which for MAP_PRIVATE mappings (such as shared libraries) will cause the amap to be copied or created. then the amap is made shared (ie. the AMAP_SHARED flag is set) between the kernel and the ptrace()d process so that the kernel can modify pages in the amap and have the ptrace()d process see the changes. then when the page being modified is actually faulted on, the object pages (from the shared library vnode) is copied to a new anon page and inserted into the shared amap. to make all the processes sharing the amap actually see the new anon page instead of the vnode page that was there before, we need to invalidate all the pmap-level mappings of the vnode page in the pmaps of the processes sharing the amap, but we don't have a good way of doing this. the amap doesn't keep track of the vm_maps which map it. so all we can do at this point is to remove all the mappings of the page with pmap_page_protect(), but this has the unfortunate side-effect of removing wired mappings as well. removing wired mappings with pmap_page_protect() is a legitimate operation, it can happen when a file with a wired mapping is truncated. so the pmap has no way of knowing whether a request to remove a wired mapping is normal or when it's due to this weird situation. so the pmap has to remove the weird mapping. the process being ptrace()d goes away and life continues. then, much later when we go to unwire or remove the wired vm_map mapping, we discover that the pmap mapping has been removed when it should still be there, and we panic.
so where did we go wrong? the problem is that we don't have any way to update just the pmap mappings that need to be updated in this scenario. we could invent a mechanism to do this, but that is much more complicated than this change and it doesn't seem like the right way to go in the long run either.
the real underlying problem here is that wired pmap mappings just aren't a good concept. one of the original properties of the pmap design was supposed to be that all the information in the pmap could be thrown away at any time and the VM system could regenerate it all through fault processing, but wired pmap mappings don't allow that. a better design for UVM would not require wired pmap mappings, and Chuck C. and I are talking about this, but it won't be done anytime soon, so this change will do for now.
this change has the effect of causing MAP_PRIVATE mappings to be copied to anonymous memory when they are mlock()d, so that uvm_fault() doesn't need to copy these pages later when called from ptrace(), thus avoiding the call to pmap_page_protect() and the panic that results from this when the mlock()d region is unlocked or freed. note that this change doesn't help the case where the wired mapping is MAP_SHARED.
discussed at great length with Chuck Cranor. fixes PRs 10363, 12554, 12604, 13041, 13487, 14580 and 14853.
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.71 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
|
Revision tags: thorpej-devvp-base3
|
| 1.70 |
03-Oct-2001 |
chs |
branches: 1.70.2; skip the MADV_SEQUENTIAL processing if we refault. fixes PR 14060.
|
|
Revision tags: thorpej-devvp-base2 post-chs-ubcperf
|
| 1.69 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf
|
| 1.68 |
10-Sep-2001 |
chris |
Update pmap_update to now take the updated pmap as an argument. This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.
Currently this is a no-op on most platforms, so they should see no difference.
Reviewed by Jason.
|
|
Revision tags: thorpej-devvp-base
|
| 1.67 |
26-Jun-2001 |
thorpej |
branches: 1.67.2; 1.67.4; Reduce some complexity in the fault path -- Rather than maintaining an spl-protected "interrupt safe map" list, simply require that callers of uvm_fault() never call us in interrupt context (MD code must make the assertion), and check for interrupt-safe maps in uvmfault_lookup() before we lock the map.
|
| 1.66 |
26-Jun-2001 |
thorpej |
Note that uvm_fault() must NEVER EVER EVER be called in interrupt context.
|
| 1.65 |
14-Jun-2001 |
chs |
work around an overflow problem in uvm_fault_wire(). from Eduardo Horvath and Simon Burge.
|
| 1.64 |
02-Jun-2001 |
chs |
replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.63 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge
|
| 1.62 |
25-Apr-2001 |
thorpej |
Add a comment describing a problem.
|
| 1.61 |
24-Apr-2001 |
thorpej |
Sprinkle pmap_update() calls after calls to: - pmap_enter() - pmap_remove() - pmap_protect() - pmap_kenter_pa() - pmap_kremove() as described in pmap(9).
These calls are relatively conservative. It may be possible to optimize these a little more.
|
|
Revision tags: thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.60 |
01-Apr-2001 |
chs |
undo the part of a previous commit which turned a check for faulting on an "intrsafe" map into a KASSERT. this situation can be caused by an application accessing /dev/kmem.
|
| 1.59 |
17-Mar-2001 |
chs |
return the real error from pgo_fault().
|
| 1.58 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.57 |
10-Mar-2001 |
chs |
eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
| 1.56 |
18-Feb-2001 |
chs |
branches: 1.56.2; clean up DIAGNOSTIC checks, use KASSERT().
|
| 1.55 |
28-Jan-2001 |
thorpej |
Page scanner improvements, behavior is actually a bit more like Mach VM's now. Specific changes: - Pages now need not have all of their mappings removed before being put on the inactive list. They only need to have the "referenced" attribute cleared. This makes putting pages onto the inactive list much more efficient. In order to eliminate redundant clearings of "refrenced", callers of uvm_pagedeactivate() must now do this themselves. - When checking the "modified" attribute for a page (for clearing PG_CLEAN), make sure to only do it if PG_CLEAN is currently set on the page (saves a potentially expensive pmap operation). - When scanning the inactive list, if a page is referenced, reactivate it (this part was actually added in uvm_pdaemon.c,v 1.27). This now works properly now that pages on the inactive list are allowed to have mappings. - When scanning the inactive list and considering a page for freeing, remove all mappings, and then check the "modified" attribute if the page is marked PG_CLEAN. - When scanning the active list, if the page was referenced since its last sweep by the scanner, don't deactivate it. (This part was actually added in uvm_pdaemon.c,v 1.28.)
These changes greatly improve interactive performance during moderate to high memory and I/O load.
|
| 1.54 |
23-Jan-2001 |
thorpej |
Change uvm_analloc() to return a locked anon, update all callers, and fix an anon locking protocol error in uvm_loanzero().
|
| 1.53 |
23-Jan-2001 |
thorpej |
Sprinkle some assertions: amap_free(): Assert that the amap is locked. amap_share_protect(): Assert that the amap is locked. amap_wipeout(): Assert that the amap is locked. uvm_anfree(): Assert that the anon has a reference count of 0 and is not locked. uvm_anon_lockloanpg(): Assert that the anon is locked. anon_pagein(): Assert that the anon is locked. uvmfault_anonget(): Assert that the anon is locked. uvm_pagealloc_strat(): Assert that the uobj or the anon is locked
And fix the problems these have uncovered: amap_cow_now(): Lock the new anon after allocating it, and unref and unlock it (rather than lock!) before freeing it in case of an error condition. This should fix a problem reported by Dan Carosone using cdrecord on an i386 MP kernel. uvm_fault(): Case1B -- Lock the new anon afer allocating it, and unlock it later when we unlock the old anon. Case2 -- Lock the new anon after allocating it, and unlock it later by passing it to uvmfault_unlockall() (we set anon to NULL if we're not doing a promote fault).
|
| 1.52 |
27-Nov-2000 |
chs |
Initial integration of the Unified Buffer Cache project.
|
| 1.51 |
06-Aug-2000 |
thorpej |
Update a comment in uvmfault_anonget() to reflect reality, and make uvm_fault() handle uvmfault_anonget() failure properly (i.e. don't unlock a lock that's already unlocked).
|
| 1.50 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.49 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-base minoura-xpg4dl-base
|
| 1.48 |
10-Apr-2000 |
thorpej |
branches: 1.48.4; Use UVM_PGA_ZERO in the promote-zero-fault case of uvm_fault().
|
|
Revision tags: chs-ubc2-newbase
|
| 1.47 |
11-Jan-2000 |
chs |
add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base fvdl-softdep-base
|
| 1.46 |
13-Nov-1999 |
thorpej |
Change the pmap_enter() API slightly; pmap_enter() now returns an error value (KERN_SUCCESS or KERN_RESOURCE_SHORTAGE) indicating if it succeeded or failed. Change the `wired' and `access_type' arguments to a single `flags' argument, which includes the access type, and flags:
PMAP_WIRED the old `wired' boolean PMAP_CANFAIL pmap_enter() is allowed to fail
If PMAP_CANFAIL is not specified, the pmap should behave as it always has in the face of a drastic resource shortage: fall over dead.
Change the fault handler to deal with failure (which indicates resource shortage) by unlocking everything, waiting for the pagedaemon to free more memory, then retrying the fault.
|
|
Revision tags: comdex-fall-1999-base
|
| 1.45 |
12-Sep-1999 |
chs |
branches: 1.45.2; 1.45.4; 1.45.8; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
|
Revision tags: chs-ubc2-base
|
| 1.44 |
22-Jul-1999 |
thorpej |
Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.43 |
19-Jul-1999 |
cgd |
make sure 'wide' fault handling is actually done only once per fault. ('narrow' was mistakenly set to FALSE instead of TRUE.) Committed after discussion with chuq.
|
| 1.42 |
11-Jul-1999 |
thorpej |
Back out the change I made yesterday. It seems to cause some trouble for some folks.
|
| 1.41 |
10-Jul-1999 |
thorpej |
Simplify uvm_fault_unwire_locked() a little.
|
| 1.40 |
08-Jul-1999 |
thorpej |
Change the pmap_extract() interface to: boolean_t pmap_extract(pmap_t, vaddr_t, paddr_t *); This makes it possible for the pmap to map physical address 0.
|
| 1.39 |
17-Jun-1999 |
thorpej |
pmap_change_wiring() -> pmap_unwire().
|
| 1.38 |
17-Jun-1999 |
thorpej |
Remove pmap_pageable(); no pmap implements it, and it is not really useful, because pmap_enter()/pmap_change_wiring() (soon to be pmap_unwire()) communicate the information in greater detail.
|
| 1.37 |
16-Jun-1999 |
thorpej |
When unwiring a range in uvm_fault_unwire_locked(), don't call pmap_change_wiring(...,FALSE) unless the map entry claims the address is unwired. This fixes the following scenario, as described on tech-kern@netbsd.org on Wed 6/16/1999 12:25:23:
- User mlock(2)'s a buffer, to guarantee it will never become non-resident while he is using it.
- User then does physio to that buffer. Physio calls uvm_vslock() to lock down the pages and ensure that page faults do not happen while the I/O is in progress (possibly in interrupt context).
- Physio does the I/O.
- Physio calls uvm_vsunlock(). This calls uvm_fault_unwire().
>>> HERE IS WHERE THE PROBLEM OCCURS <<<
uvm_fault_unwire() calls pmap_change_wiring(..., FALSE), which now gives the pmap free reign to recycle the mapping information for that page, which is illegal; the mapping is still wired (due to the mlock(2)), but now access of the page could cause a non-protection page fault (disallowed).
NOTE: This could eventually lead to a panic when the user subsequently munlock(2)'s the buffer and the mapping info has been recycled for use by another mapping!
|
| 1.36 |
16-Jun-1999 |
thorpej |
* Rename uvm_fault_unwire() to uvm_fault_unwire_locked(), and require that the map be at least read-locked to call this function. This requirement will be taken advantage of in a future commit. * Write a uvm_fault_unwire() wrapper which read-locks the map and calls uvm_fault_unwire_locked(). * Update the comments describing the locking contraints of uvm_fault_wire() and uvm_fault_unwire().
|
| 1.35 |
16-Jun-1999 |
thorpej |
Remove a incorrect-and-no-longer-relevant comment.
|
| 1.34 |
16-Jun-1999 |
thorpej |
Add a macro to test if a map entry is wired.
|
| 1.33 |
04-Jun-1999 |
thorpej |
Keep interrupt-safe maps on an additional queue. In uvm_fault(), if we're looking up a kernel address, check to see if the address is on this "interrupt-safe" list. If so, return failure immediately. This prevents a locking screw if a page fault is taken on an interrupt-safe map in or out of interrupt context.
|
| 1.32 |
02-Jun-1999 |
thorpej |
A page fault on a non-pageable map is always fatal.
|
| 1.31 |
28-May-1999 |
thorpej |
Make uvm_fault_unwire() take a vm_map_t, rather than a pmap_t, for consistency. Use this opportunity for checking for intrsafe map use in this routine (which is illegal).
|
| 1.30 |
26-May-1999 |
thorpej |
Pass an access_type to uvm_fault_wire(), which it forwards on to uvm_fault().
|
| 1.29 |
19-May-1999 |
chs |
when wiring swap-backed pages, clear the PG_CLEAN flag before releasing any swap resources. if we don't do this, we can end up with a clean, swap-backed page, which is illegal. tracked down by Bill Sommerfeld, fixes PR 7578.
|
| 1.28 |
11-Apr-1999 |
chs |
add a `flags' argument to uvm_pagealloc_strat(). define a flag UVM_PGA_USERESERVE to allow non-kernel object allocations to use pages from the reserve. use the new flag for allocations in pmap modules.
|
|
Revision tags: netbsd-1-4-base
|
| 1.27 |
29-Mar-1999 |
mycroft |
branches: 1.27.2; Duuuh. Back and front pages should have an access_type of 0, since we don't know they're going to be used. What was I thinking??
|
| 1.26 |
28-Mar-1999 |
mycroft |
Reduce the access_type for copy-on-write pages in the front and back regions.
|
| 1.25 |
28-Mar-1999 |
mycroft |
Fix a case I missed in the previous.
|
| 1.24 |
28-Mar-1999 |
mycroft |
Only turn off VM_PROT_WRITE for COW pages; not VM_PROT_EXECUTE.
|
| 1.23 |
26-Mar-1999 |
mycroft |
Add a new `access type' argument to pmap_enter(). This indicates what type of memory access a mapping was caused by. This is passed through from uvm_fault() and udv_fault(), and in most other cases is 0. The pmap module may use this to preset R/M information. On MMUs which require R/M emulation, the implementation may preset the bits and avoid taking another fault. On MMUs which keep R/M information in hardware, the implementation may preset its cached bits to speed up the next call to pmap_is_modified() or pmap_is_referenced().
|
| 1.22 |
26-Mar-1999 |
chs |
add uvmexp.swpgonly and use it to detect out-of-swap conditions.
|
| 1.21 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
| 1.20 |
31-Jan-1999 |
mrg |
80 cols.
|
| 1.19 |
24-Jan-1999 |
chuck |
cleanup/reorg: - break anon related functions out of uvm_amap.c and put them in their own file (uvm_anon.c). includes break up uvm_anon_init into an amap and an an anon init function - ensure that only functions within the amap module access amap structure fields (add macros to amap api as needed)
|
|
Revision tags: kenh-if-detach-base
|
| 1.18 |
20-Nov-1998 |
chuck |
update outdated an_swslot comments
|
|
Revision tags: chs-ubc-base
|
| 1.17 |
07-Nov-1998 |
mrg |
branches: 1.17.2; minor KNF nits
|
| 1.16 |
04-Nov-1998 |
chs |
be consistent with locking of amaps and anons when freeing them.
|
| 1.15 |
18-Oct-1998 |
chs |
shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.14 |
16-Oct-1998 |
tv |
Check for gcc the Right way when quashing -Wuninitialized goop.
|
| 1.13 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - simplify uvm_faultinfo in uvm_fault.h (parent map tracking no longer needed) - adjust locking and lookup functions in uvm_fault_i.h to reflect the above - replace ufi.rvaddr with ufi.orig_rvaddr in uvm_fault.c since rvaddr is no longer needed. - no need to worry about share map translations in uvm_fault(). simplify.
|
| 1.12 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.11 |
02-Jun-1998 |
mark |
branches: 1.11.2; Use the sparc's GCC lossage fix for the arm32 port as well. Problem appears to be a compiler bug resulting in an 'variable possibly used uninitialised' warning when optimisation is used.
|
| 1.10 |
05-May-1998 |
kleink |
Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
| 1.9 |
26-Mar-1998 |
chuck |
update per-process rusage fault counters (ru_majflt/ru_minflt) under UVM
|
| 1.8 |
22-Mar-1998 |
chuck |
remove tmpwire arg from uvm_pagewire() -- it isn't needed anymore. noted by chuck s.
|
| 1.7 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.6 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.5 |
07-Feb-1998 |
mrg |
implement counters for pages paged in/out
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
don't try to relock amap if there isn't one.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.20 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase nick-csl-alignment-base5 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base matt-armv6-nbase jmcneill-base netbsd-4-0-RC4 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base elad-kernelauth-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.19 |
15-Mar-2006 |
drochner |
branches: 1.19.88; 1.19.94; 1.19.96; -clean up the interface to uvm_fault: the "fault type" didn't serve any purpose (done by a macro, so we don't save any cycles for now) -kill vm_fault_t; it is not needed for real faults, and for simulated faults (wiring) it can be replaced by UVM internal flags -remove <uvm/uvm_fault.h> from uvm_extern.h again
|
|
Revision tags: yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.18 |
11-Dec-2005 |
christos |
branches: 1.18.4; 1.18.6; 1.18.8; 1.18.10; merge ktrace-lwp.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 yamt-readahead-base3 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 yamt-readahead-base2 netbsd-3-0-RC2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base netbsd-3-0-RC1 yamt-vop-base3 netbsd-2-0-3-RELEASE yamt-vop-base2 thorpej-vnode-attr-base netbsd-2-1-RELEASE yamt-vop-base netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base ktrace-lwp-base
|
| 1.17 |
24-Mar-2004 |
junyoung |
branches: 1.17.16; Nuke __P().
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base kqueue-base
|
| 1.16 |
31-Dec-2001 |
chs |
branches: 1.16.16; introduce a new UVM fault type, VM_FAULT_WIREMAX. this is different from VM_FAULT_WIRE in that when the pages being wired are faulted in, the simulated fault is at the maximum protection allowed for the mapping instead of the current protection. use this in uvm_map_pageable{,_all}() to fix the problem where writing via ptrace() to shared libraries that are also mapped with wired mappings in another process causes a diagnostic panic when the wired mapping is removed.
this is a really obscure problem so it deserves some more explanation. ptrace() writing to another process ends up down in uvm_map_extract(), which for MAP_PRIVATE mappings (such as shared libraries) will cause the amap to be copied or created. then the amap is made shared (ie. the AMAP_SHARED flag is set) between the kernel and the ptrace()d process so that the kernel can modify pages in the amap and have the ptrace()d process see the changes. then when the page being modified is actually faulted on, the object pages (from the shared library vnode) is copied to a new anon page and inserted into the shared amap. to make all the processes sharing the amap actually see the new anon page instead of the vnode page that was there before, we need to invalidate all the pmap-level mappings of the vnode page in the pmaps of the processes sharing the amap, but we don't have a good way of doing this. the amap doesn't keep track of the vm_maps which map it. so all we can do at this point is to remove all the mappings of the page with pmap_page_protect(), but this has the unfortunate side-effect of removing wired mappings as well. removing wired mappings with pmap_page_protect() is a legitimate operation, it can happen when a file with a wired mapping is truncated. so the pmap has no way of knowing whether a request to remove a wired mapping is normal or when it's due to this weird situation. so the pmap has to remove the weird mapping. the process being ptrace()d goes away and life continues. then, much later when we go to unwire or remove the wired vm_map mapping, we discover that the pmap mapping has been removed when it should still be there, and we panic.
so where did we go wrong? the problem is that we don't have any way to update just the pmap mappings that need to be updated in this scenario. we could invent a mechanism to do this, but that is much more complicated than this change and it doesn't seem like the right way to go in the long run either.
the real underlying problem here is that wired pmap mappings just aren't a good concept. one of the original properties of the pmap design was supposed to be that all the information in the pmap could be thrown away at any time and the VM system could regenerate it all through fault processing, but wired pmap mappings don't allow that. a better design for UVM would not require wired pmap mappings, and Chuck C. and I are talking about this, but it won't be done anytime soon, so this change will do for now.
this change has the effect of causing MAP_PRIVATE mappings to be copied to anonymous memory when they are mlock()d, so that uvm_fault() doesn't need to copy these pages later when called from ptrace(), thus avoiding the call to pmap_page_protect() and the panic that results from this when the mlock()d region is unlocked or freed. note that this change doesn't help the case where the wired mapping is MAP_SHARED.
discussed at great length with Chuck Cranor. fixes PRs 10363, 12554, 12604, 13041, 13487, 14580 and 14853.
|
|
Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
| 1.15 |
02-Jun-2001 |
chs |
branches: 1.15.2; replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.14 |
26-Jun-2000 |
mrg |
branches: 1.14.2; remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.13 |
21-Jun-1999 |
thorpej |
branches: 1.13.2; Protect prototypes, certain macros, and inlines from userland.
|
| 1.12 |
16-Jun-1999 |
thorpej |
* Rename uvm_fault_unwire() to uvm_fault_unwire_locked(), and require that the map be at least read-locked to call this function. This requirement will be taken advantage of in a future commit. * Write a uvm_fault_unwire() wrapper which read-locks the map and calls uvm_fault_unwire_locked(). * Update the comments describing the locking contraints of uvm_fault_wire() and uvm_fault_unwire().
|
| 1.11 |
04-Jun-1999 |
thorpej |
Keep interrupt-safe maps on an additional queue. In uvm_fault(), if we're looking up a kernel address, check to see if the address is on this "interrupt-safe" list. If so, return failure immediately. This prevents a locking screw if a page fault is taken on an interrupt-safe map in or out of interrupt context.
|
| 1.10 |
28-May-1999 |
thorpej |
Make uvm_fault_unwire() take a vm_map_t, rather than a pmap_t, for consistency. Use this opportunity for checking for intrsafe map use in this routine (which is illegal).
|
| 1.9 |
26-May-1999 |
thorpej |
Pass an access_type to uvm_fault_wire(), which it forwards on to uvm_fault().
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.8 |
25-Mar-1999 |
mrg |
branches: 1.8.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.7 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - simplify uvm_faultinfo in uvm_fault.h (parent map tracking no longer needed) - adjust locking and lookup functions in uvm_fault_i.h to reflect the above - replace ufi.rvaddr with ufi.orig_rvaddr in uvm_fault.c since rvaddr is no longer needed. - no need to worry about share map translations in uvm_fault(). simplify.
|
| 1.6 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.5 |
09-Mar-1998 |
mrg |
branches: 1.5.2; KNF.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.33 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.32 |
16-Dec-2019 |
ad |
branches: 1.32.2; - Extend the per-CPU counters matt@ did to include all of the hot counters in UVM, excluding uvmexp.free, which needs special treatment and will be done with a separate commit. Cuts system time for a build by 20-25% on a 48 CPU machine w/DIAGNOSTIC.
- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
|
| 1.31 |
08-May-2018 |
christos |
branches: 1.31.2; don't store the rssmax in the lwp rusage, it is a per proc property. Instead utilize an unused field in the vmspace struct to store it. Also conditionalize on platforms that have pmap statistics available.
|
| 1.30 |
07-May-2018 |
christos |
update maxrss (used to always be 0). Patterned after the OpenBSD changes.
|
|
Revision tags: pgoyette-compat-0502 pgoyette-compat-0422
|
| 1.29 |
19-Apr-2018 |
christos |
s/static inline/static __inline/g for consistency.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-7-2-RELEASE netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3
|
| 1.28 |
19-Feb-2012 |
rmind |
branches: 1.28.38; Remove VM_MAP_INTRSAFE and related code. Not used since the "kmem changes".
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.27 |
12-Jun-2011 |
rmind |
branches: 1.27.2; 1.27.6; Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.26 |
02-Feb-2011 |
chuck |
branches: 1.26.2; udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
| 1.25 |
06-Feb-2010 |
uebayasi |
branches: 1.25.4; 1.25.6; 1.25.8; __inline -> inline
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.24 |
02-Jan-2008 |
ad |
branches: 1.24.10; Merge vmlocking2 to head.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.23 |
22-Feb-2007 |
thorpej |
branches: 1.23.4; 1.23.18; 1.23.24; 1.23.26; 1.23.30; TRUE -> true, FALSE -> false
|
| 1.22 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.21 |
16-Feb-2006 |
perry |
branches: 1.21.20; Change "inline" back to "__inline" in .h files -- C99 is still too new, and some apps compile things in C89 mode. C89 keywords stay.
As per core@.
|
| 1.20 |
24-Dec-2005 |
perry |
branches: 1.20.2; 1.20.4; 1.20.6; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
| 1.19 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.18 |
27-Jun-2005 |
thorpej |
branches: 1.18.2; Use ANSI function decls.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.17 |
24-Mar-2004 |
junyoung |
Nuke __P().
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.16 |
02-Nov-2002 |
perry |
branches: 1.16.6; /*CONSTCOND*/
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf kqueue-base
|
| 1.15 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.14 |
26-Jun-2001 |
thorpej |
branches: 1.14.2; 1.14.4; Reduce some complexity in the fault path -- Rather than maintaining an spl-protected "interrupt safe map" list, simply require that callers of uvm_fault() never call us in interrupt context (MD code must make the assertion), and check for interrupt-safe maps in uvmfault_lookup() before we lock the map.
|
| 1.13 |
02-Jun-2001 |
chs |
replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.12 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.11 |
26-Jun-2000 |
mrg |
branches: 1.11.2; remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase
|
| 1.10 |
11-Jan-2000 |
chs |
add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.9 |
04-Jun-1999 |
thorpej |
branches: 1.9.2; Keep interrupt-safe maps on an additional queue. In uvm_fault(), if we're looking up a kernel address, check to see if the address is on this "interrupt-safe" list. If so, return failure immediately. This prevents a locking screw if a page fault is taken on an interrupt-safe map in or out of interrupt context.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.8 |
25-Mar-1999 |
mrg |
branches: 1.8.4; remove now >1 year old pre-release message.
|
| 1.7 |
24-Jan-1999 |
chuck |
cleanup/reorg: - break anon related functions out of uvm_amap.c and put them in their own file (uvm_anon.c). includes break up uvm_anon_init into an amap and an an anon init function - ensure that only functions within the amap module access amap structure fields (add macros to amap api as needed)
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.6 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - simplify uvm_faultinfo in uvm_fault.h (parent map tracking no longer needed) - adjust locking and lookup functions in uvm_fault_i.h to reflect the above - replace ufi.rvaddr with ufi.orig_rvaddr in uvm_fault.c since rvaddr is no longer needed. - no need to worry about share map translations in uvm_fault(). simplify.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.5 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.182 |
04-Oct-2023 |
ad |
Remove unneeded test of ci->ci_want_resched.
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.181 |
14-Jun-2020 |
ad |
Remove PG_ZERO. It worked brilliantly on x86 machines from the mid-90s but having spent an age experimenting with it over the last 6 months on various machines and with different use cases it's always either break-even or a slight net loss for me.
|
| 1.180 |
11-Jun-2020 |
ad |
uvm_availmem(): give it a boolean argument to specify whether a recent cached value will do, or if the very latest total must be fetched. It can be called thousands of times a second and fetching the totals impacts not only the calling LWP but other CPUs doing unrelated activity in the VM system.
|
| 1.179 |
22-May-2020 |
ad |
Remove the ubc_direct hack.
|
|
Revision tags: bouyer-xenpvh-base2
|
| 1.178 |
23-Apr-2020 |
ad |
Enable ubc_direct by default, but only on systems with no more than 2 CPUs for now.
|
|
Revision tags: phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.177 |
05-Mar-2020 |
rin |
branches: 1.177.2; Part of PR kern/54994:
Memory allocated in the fast path of uarea_poolpage_alloc() is a page itself. Therefore, it is obviously page-aligned.
Pointed out by skrll.
|
|
Revision tags: is-mlppp-base ad-namecache-base3 ad-namecache-base2 ad-namecache-base1
|
| 1.176 |
12-Jan-2020 |
ad |
l->l_emap_gen isn't used any more.
|
|
Revision tags: ad-namecache-base
|
| 1.175 |
31-Dec-2019 |
ad |
branches: 1.175.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.174 |
31-Dec-2019 |
ad |
Rename uvm_free() -> uvm_availmem().
|
| 1.173 |
27-Dec-2019 |
ad |
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
| 1.172 |
21-Dec-2019 |
ad |
uvmexp.free -> uvm_free()
|
| 1.171 |
16-Dec-2019 |
ad |
- Extend the per-CPU counters matt@ did to include all of the hot counters in UVM, excluding uvmexp.free, which needs special treatment and will be done with a separate commit. Cuts system time for a build by 20-25% on a 48 CPU machine w/DIAGNOSTIC.
- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
|
| 1.170 |
21-Nov-2019 |
ad |
Use lwp_changepri().
|
|
Revision tags: phil-wifi-20191119
|
| 1.169 |
14-Nov-2019 |
maxv |
Don't include "opt_kasan.h" when there's already <sys/asan.h> included.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
| 1.168 |
08-May-2019 |
chs |
uvm_pagealloc() uses UVM_PGA_* flags, not UVM_KMF_* flags, and it is always nowait. fix uarea_poolpage_alloc() to not use flags from the wrong collection for calling uvm_pagealloc() and to wait itself if a page is not immediately available.
|
|
Revision tags: isaki-audio2-base
|
| 1.167 |
07-Apr-2019 |
maxv |
Provide a code argument in kasan_mark(), and give a code to each caller. Five codes used: GenericRedZone, MallocRedZone, KmemRedZone, PoolRedZone, and PoolUseAfterFree.
This can greatly help debugging complex memory corruptions.
|
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
|
| 1.166 |
23-Dec-2018 |
maxv |
Simplify the KASAN API, use only kasan_mark() and explain briefly. The alloc/free naming was too confusing.
|
|
Revision tags: pgoyette-compat-1126
|
| 1.165 |
04-Nov-2018 |
mlelstv |
PMAP_MAP_POOLPAGE must not fail. Trigger assertion here instead of panic later from failing PR_WAITOK memory allocations.
|
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
| 1.164 |
22-Aug-2018 |
maxv |
Add support for monitoring the stack with kASan. This allows us to detect illegal memory accesses occuring there.
The compiler inlines a piece of code in each function that adds redzones around the local variables and poisons them. The illegal accesses are then detected using the usual kASan machinery.
The stack size is doubled, from 4 pages to 8 pages.
Several boot functions are marked with the __noasan flag, to prevent the compiler from adding redzones in them (because we haven't yet initialized kASan). The kasan_early_init function is called early at boot time to quickly create the shadow for the current stack; after this is done, we don't need __noasan anymore in the boot path.
We pass -fasan-shadow-offset=0xDFFF900000000000, because the compiler wants to do shad = shadow-offset + (addr >> 3) and we do, in kasan_addr_to_shad shad = KASAN_SHADOW_START + ((addr - CANONICAL_BASE) >> 3) hence shad = KASAN_SHADOW_START + (addr >> 3) - (CANONICAL_BASE >> 3) = [KASAN_SHADOW_START - (CANONICAL_BASE >> 3)] + (addr >> 3) implies shadow-offset = KASAN_SHADOW_START - (CANONICAL_BASE >> 3) = 0xFFFF800000000000 - (0xFFFF800000000000 >> 3) = 0xDFFF900000000000
In UVM, we add a kasan_free (that is not preceded by a kasan_alloc). We don't add poisoned redzones ourselves, but all the functions we execute do, so we need to manually clear the poison before freeing the stack.
With the help of Kamil for the makefile stuff.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529
|
| 1.163 |
22-May-2016 |
maxv |
branches: 1.163.16; 1.163.18; Revert my previous change. I missed an entry on NXR.
|
| 1.162 |
21-May-2016 |
maxv |
USPACE and USPACE_ALIGN are constants. Use a #if instead. Probably saves some instructions.
|
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base
|
| 1.161 |
27-Nov-2014 |
uebayasi |
branches: 1.161.2; Consistently use kpreempt_*() outside scheduler path.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base
|
| 1.160 |
01-Sep-2012 |
matt |
branches: 1.160.2; Add a __HAVE_CPU_UAREA_IDLELWP hook so that the MD code can allocate special UAREAs for idle lwp's.
|
|
Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4
|
| 1.159 |
08-Apr-2012 |
martin |
Rework posix_spawn locking and memory management: - always provide a vmspace for the new proc, initially borrowing from proc0 (this part fixes PR 46286) - increase parallelism between parent and child if arguments allow this, avoiding a potential deadlock on exec_lock - add a new flag for userland to request old (lockstepped) behaviour for better error reporting - adapt test cases to the previous two and add a new variant to test the diagnostics flag - fix a few memory (and lock) leaks - provide netbsd32 compat
|
| 1.158 |
06-Apr-2012 |
chs |
fix uarea_system_poolpage_free() to handle freeing a uarea that was not allocated by cpu_uarea_alloc() (ie. on plaforms where cpu_uarea_alloc() failing is not fatal). fixes PR 46284.
|
|
Revision tags: jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3
|
| 1.157 |
20-Feb-2012 |
martin |
Solve previous fix (for early posix_spawn children exiting on error) differently.
|
|
Revision tags: jmcneill-usbmp-base2 netbsd-6-base
|
| 1.156 |
12-Feb-2012 |
martin |
branches: 1.156.2; In uvm_proc_exit bail out early if we have no vmspace yet (as it happens for failing posix_spawn child processes). Fixes PR kern/45991.
|
| 1.155 |
11-Feb-2012 |
martin |
Add a posix_spawn syscall, as discussed on tech-kern. Based on the summer of code project by Charles Zhang, heavily reworked later by me - all bugs are likely mine. Ok: core, releng.
|
| 1.154 |
01-Feb-2012 |
para |
allocate uareas and buffers from kernel_map again add code to drain pools if kmem_arena runs out of space
|
| 1.153 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base
|
| 1.152 |
23-Nov-2011 |
matt |
branches: 1.152.2; When allocating a page for a kernel stack and PMAP_ALLOC_POOLPAGE is defined, use it. (allows a MIPS N32 kernel to boot when there is memory outside of KSEG0).
|
|
Revision tags: jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.151 |
02-Jul-2011 |
matt |
branches: 1.151.2; Allow the MD code to decide to panic if cpu_uarea_alloc would return NULL. If NULL is returned, just allocate the standard way.
|
| 1.150 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base bouyer-quota2-nbase rmind-uvmplock-base
|
| 1.149 |
18-Feb-2011 |
drochner |
branches: 1.149.2; make this build w/o HAVE_CPU_UAREA_ROUTINES
|
| 1.148 |
17-Feb-2011 |
matt |
Add support for cpu-specific uarea allocation routines. Allows different allocation for user and system lwps. MIPS will use this to map uareas of system lwp used direct-mapped addresses (to reduce the overhead of switching to kernel threads). ibm4xx could use to map uareas via direct mapped addresses and avoid the problem of having the kernel stack not in the TLB.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-base
|
| 1.147 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on second diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base
|
| 1.146 |
14-Jan-2011 |
rmind |
branches: 1.146.2; 1.146.4; Retire struct user, remove sys/user.h inclusions. Note sys/user.h header as obsolete. Remove USER_TO_UAREA/UAREA_TO_USER macros.
Various #include fixes and review by matt@.
|
|
Revision tags: matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1
|
| 1.145 |
16-Apr-2010 |
rmind |
- Merge sched_pstats() and uvm_meter()/uvm_loadav(). Avoids double loop through all LWPs and duplicate locking overhead.
- Move sched_pstats() from soft-interrupt context to process 0 main loop. Avoids blocking effect on real-time threads. Mostly fixes PR/38792.
Note: it might be worth to move the loop above PRI_PGDAEMON. Also, sched_pstats() might be cleaned-up slightly.
|
|
Revision tags: yamt-nfs-mp-base9
|
| 1.144 |
25-Feb-2010 |
jym |
branches: 1.144.2; Change RSS (resident set size) limit. Instead of setting it arbitrarily to the total free memory available to the system, use the smallest value between VM_MAXUSER_ADDRESS and total free memory (having a RSS limit bigger than VM_MAXUSER_ADDRESS has no real meaning).
Fix a possible int overflow when ptoa(uvmexp.free) is bigger than 4GB with a 32 bits vaddr_t.
Reviewed by bouyer@.
See also http://mail-index.netbsd.org/tech-kern/2010/02/24/msg007395.html
|
|
Revision tags: uebayasi-xip-base
|
| 1.143 |
17-Dec-2009 |
rmind |
branches: 1.143.2; Replace few USER_TO_UAREA/UAREA_TO_USER uses, reduce sys/user.h inclusions.
|
|
Revision tags: matt-premerge-20091211
|
| 1.142 |
21-Nov-2009 |
rmind |
Add uvm_lwp_getuarea() and uvm_lwp_setuarea(). OK matt@.
|
|
Revision tags: jym-xensuspend-nbase
|
| 1.141 |
21-Oct-2009 |
rmind |
Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
| 1.140 |
10-Aug-2009 |
matt |
Revent change to printf. (why can't __func__ concat with other string?)
|
| 1.139 |
09-Aug-2009 |
matt |
Only swapout uareas if VMSWAP_UAREA is defined (which is should be by default). If it's not defined and PMAP_MAP_POOLPAGE is defined and USPACE == PAGE_SIZE, then allocate/map USPACE via uvm_pagealloc/PMAP_MAP_POOLPAGE.
On platforms like MIPS with 16KB pages, this means that uareas (and hence lwp kernel stacks) will be always be accessible since they will be KSEG0.
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6
|
| 1.138 |
28-Jun-2009 |
rmind |
Ephemeral mapping (emap) implementation. Concept is based on the idea that activity of other threads will perform the TLB flush for the processes using emap as a side effect. To track that, global and per-CPU generation numbers are used. This idea was suggested by Andrew Doran; various improvements to it by me. Notes:
- For now, zero-copy on pipe is not yet enabled. - TCP socket code would likely need more work. - Additional UVM loaning improvements are needed.
Proposed on <tech-kern>, silence there. Quickly reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
| 1.137 |
16-Apr-2009 |
rmind |
Avoid few #ifdef KSTACK_CHECK_MAGIC.
|
| 1.136 |
29-Mar-2009 |
mrg |
- add new RLIMIT_AS (aka RLIMIT_VMEM) resource that limits the total address space available to processes. this limit exists in most other modern unix variants, and like most of them, our defaults are unlimited. remove the old mmap / rlimit.datasize hack.
- adds the VMCMD_STACK flag to all the stack-creation vmcmd callers. it is currently unused, but was added a few years ago.
- add a pair of new process size values to kinfo_proc2{}. one is the total size of the process memory map, and the other is the total size adjusted for unused stack space (since most processes have a lot of this...)
- patch sh, and csh to notice RLIMIT_AS. (in some cases, the alias RLIMIT_VMEM was already present and used if availble.)
- patch ps, top and systat to notice the new k_vm_vsize member of kinfo_proc2{}.
- update irix, svr4, svr4_32, linux and osf1 emulations to support this information. (freebsd could be done, but that it's best left as part of the full-update of compat/freebsd.)
this addresses PR 7897. it also gives correct memory usage values, which have never been entirely correct (since mmap), and have been very incorrect since jemalloc() was enabled.
tested on i386 and sparc64, build tested on several other platforms.
thanks to many folks for feedback and testing but most espcially chuq and yamt for critical suggestions that lead to this patch not having a special ugliness i wasn't happy with anyway :-)
|
|
Revision tags: nick-hppapmap-base2
|
| 1.135 |
31-Jan-2009 |
yamt |
branches: 1.135.2; uvm_swapin: uncomment an assertion which is now ok.
|
|
Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
| 1.134 |
19-Nov-2008 |
ad |
Make the emulations, exec formats, coredump, NFS, and the NFS server into modules. By and large this commit:
- shuffles header files and ifdefs - splits code out where necessary to be modular - adds module glue for each of the components - adds/replaces hooks for things that can be installed at runtime
|
|
Revision tags: netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
|
| 1.133 |
25-Jun-2008 |
ad |
branches: 1.133.2; 1.133.4; 1.133.6; Don't swap kernel stacks of realtime threads.
|
|
Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 wrstuden-revivesa-base
|
| 1.132 |
16-Jun-2008 |
ad |
uvm_swapout: try to lock the vm_map before calling pmap_collect.
|
| 1.131 |
09-Jun-2008 |
ad |
branches: 1.131.2; swappable: invert previous so we check for SACTIVE or SSTOP.
|
| 1.130 |
09-Jun-2008 |
ad |
swappable: return false if l->l_proc->p_stat == SDYING.
|
| 1.129 |
09-Jun-2008 |
ad |
uvm_proc_exit: use macros to disable preemption.
|
| 1.128 |
04-Jun-2008 |
ad |
- vm_page: put listq, pageq into a union alongside a LIST_ENTRY, so we can use both types of list.
- Make page coloring and idle zero state per-CPU.
- Maintain per-CPU page freelists. When freeing, put pages onto the local CPU's lists and the global lists. When allocating, prefer to take pages from the local CPU. If none are available take from the global list as done now. Proposed on tech-kern@.
|
|
Revision tags: yamt-pf42-base3
|
| 1.127 |
31-May-2008 |
ad |
PR kern/38812 race between lwp_exit_switchaway and exit1/coredump
Move the LWP RUNNING and TIMEINTR flags into the thread-private flag word.
|
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base
|
| 1.126 |
27-Apr-2008 |
ad |
branches: 1.126.2; 1.126.4; Disable preemption while swapping pmap.
|
| 1.125 |
24-Apr-2008 |
ad |
Network protocol interrupts can now block on locks, so merge the globals proclist_mutex and proclist_lock into a single adaptive mutex (proc_lock). Implications:
- Inspecting process state requires thread context, so signals can no longer be sent from a hardware interrupt handler. Signal activity must be deferred to a soft interrupt or kthread.
- As the proc state locking is simplified, it's now safe to take exit() and wait() out from under kernel_lock.
- The system spends less time at IPL_SCHED, and there is less lock activity.
|
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
| 1.124 |
11-Apr-2008 |
yamt |
branches: 1.124.2; fix the order of printf arguments.
|
| 1.123 |
11-Apr-2008 |
christos |
- use uarea_swapin, rather than duplicating the code. - use __func__ where appropriate.
|
| 1.122 |
29-Mar-2008 |
christos |
make this compile
|
| 1.121 |
29-Mar-2008 |
dholland |
Fix broken build. hi skrll :-)
|
| 1.120 |
29-Mar-2008 |
skrll |
Fix unsed variable when DEBUG isn't defined.
|
| 1.119 |
27-Mar-2008 |
ad |
Make rusage collection per-LWP and collate in the appropriate places. cloned threads need a little bit more work but the locking needs to be fixed first.
|
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
| 1.118 |
29-Feb-2008 |
yamt |
update comment
|
|
Revision tags: nick-net80211-sync-base mjf-devfs-base hpcarm-cleanup-base
|
| 1.117 |
08-Feb-2008 |
yamt |
branches: 1.117.2; 1.117.6; uvm_uarea_init: fix compilation where PAGE_SIZE is not a constant. (sparc) reported by Tom Spindler.
|
| 1.116 |
07-Feb-2008 |
yamt |
uvm_uarea_init: make #if about PR_NOALIGN clearer and add a comment to explain it.
|
| 1.115 |
28-Jan-2008 |
yamt |
remove a special allocator for uareas, which is no longer necessary. use pool_cache instead.
|
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
|
| 1.114 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.113 |
06-Nov-2007 |
ad |
branches: 1.113.2; 1.113.6; Merge scheduler changes from the vmlocking branch. All discussed on tech-kern:
- Invert priority space so that zero is the lowest priority. Rearrange number and type of priority levels into bands. Add new bands like 'kernel real time'. - Ignore the priority level passed to tsleep. Compute priority for sleep dynamically. - For SCHED_4BSD, make priority adjustment per-LWP, not per-process.
|
|
Revision tags: yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base vmlocking-base
|
| 1.112 |
21-Sep-2007 |
ad |
branches: 1.112.4; 1.112.6; uvm_swapin: disable the swaplock assertion. uvm_lwp_hold() can't take the lock yet.
|
|
Revision tags: nick-csl-alignment-base5
|
| 1.111 |
18-Aug-2007 |
ad |
branches: 1.111.2; Include sys/cpu.h for CPU_INFO_FOREACH.
|
| 1.110 |
18-Aug-2007 |
ad |
Fix error in previous.
|
| 1.109 |
18-Aug-2007 |
ad |
Make the uarea cache per-CPU and drain in batches of 4.
|
|
Revision tags: matt-mips64-base nick-csl-alignment-base
|
| 1.108 |
14-Jul-2007 |
ad |
branches: 1.108.2; 1.108.6; Revert unintentially committed change.
|
|
Revision tags: mjf-ufs-trans-base
|
| 1.107 |
09-Jul-2007 |
ad |
Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
| 1.106 |
17-May-2007 |
yamt |
merge yamt-idlelwp branch. asked by core@. some ports still needs work.
from doc/BRANCHES:
idle lwp, and some changes depending on it.
1. separate context switching and thread scheduling. (cf. gmcgarry_ctxsw) 2. implement idle lwp. 3. clean up related MD/MI interfaces. 4. make scheduler(s) modular.
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
|
| 1.105 |
24-Mar-2007 |
rmind |
Export uvm_uarea_free() to the rest. Make things compile again.
|
| 1.104 |
04-Mar-2007 |
christos |
branches: 1.104.2; 1.104.4; 1.104.6; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
|
Revision tags: ad-audiomp-base
|
| 1.103 |
22-Feb-2007 |
thorpej |
TRUE -> true, FALSE -> false
|
| 1.102 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
| 1.101 |
19-Feb-2007 |
ad |
uvm_kick_scheduler(): do nothing until the swap subsystem is initialized.
|
| 1.100 |
17-Feb-2007 |
pavel |
Change the process/lwp flags seen by userland via sysctl back to the P_*/L_* naming convention, and rename the in-kernel flags to avoid conflict. (P_ -> PK_, L_ -> LW_ ). Add back the (now unused) LSDEAD constant.
Restores source compatibility with pre-newlock2 tools like ps or top.
Reviewed by Andrew Doran.
|
| 1.99 |
15-Feb-2007 |
ad |
branches: 1.99.2; Add uvm_kick_scheduler() (MP safe) to replace wakeup(&proc0).
|
|
Revision tags: post-newlock2-merge
|
| 1.98 |
09-Feb-2007 |
ad |
Merge newlock2 to head.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 newlock2-base netbsd-4-base
|
| 1.97 |
05-Oct-2006 |
chs |
add support for O_DIRECT (I/O directly to application memory, bypassing any kernel caching for file data).
|
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 rpaulo-netinet-merge-pcb-base
|
| 1.96 |
29-Aug-2006 |
matt |
branches: 1.96.2; 1.96.4; Make PTRACE and COREDUMP optional. Make the default (status quo) by putting them in conf/std.
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base chap-midi-base
|
| 1.95 |
13-Jun-2006 |
yamt |
uvm_swapin: process -> lwp in a comment.
|
|
Revision tags: yamt-pdpolicy-base5 simonb-timecounters-base
|
| 1.94 |
22-May-2006 |
yamt |
introduce macros, UAREA_TO_USER and USER_TO_UAREA, to convert uarea VA into a pointer to struct user and vice versa, so that MD code can change the layout in uarea.
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base elad-kernelauth-base
|
| 1.93 |
15-Mar-2006 |
drochner |
branches: 1.93.2; 1.93.4; -clean up the interface to uvm_fault: the "fault type" didn't serve any purpose (done by a macro, so we don't save any cycles for now) -kill vm_fault_t; it is not needed for real faults, and for simulated faults (wiring) it can be replaced by UVM internal flags -remove <uvm/uvm_fault.h> from uvm_extern.h again
|
|
Revision tags: yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.92 |
24-Dec-2005 |
perry |
branches: 1.92.4; 1.92.6; 1.92.8; 1.92.10; __inline__ -> inline
|
| 1.91 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 ktrace-lwp-base
|
| 1.90 |
24-Oct-2005 |
chs |
remove the assertion in uvm_swapout_threads() about LSONPROC lwps not running on the same CPU as the swapper. l_stat is protected by sched_lock, which isn't held here, so we can race with that lwp starting to run and see its l_cpu not updated yet, as in PR 31870. we check l_stat again in uvm_swapout() while holding sched_lock, so the race itself is harmless.
|
|
Revision tags: thorpej-vnode-attr-base yamt-vop-base
|
| 1.89 |
27-Jun-2005 |
thorpej |
branches: 1.89.2; 1.89.4; Use ANSI function decls.
|
| 1.88 |
10-Jun-2005 |
matt |
Rework the coredump code to have no explicit knownledge of how coredump i/o is done. Instead, pass an opaque cookie which is then passed to a new routine, coredump_write, which does the actual i/o. This allows the method of doing i/o to change without affecting any future MD code. Also, make netbsd32_core.c [re]use core_netbsd.c (in a similar manner that core_elf64.c uses core_elf32.c) and eliminate that code duplication. cpu_coredump{,32} is now called twice, first with a NULL iocookie to fill the core structure and a second to actually write md parts of the coredump. All i/o is nolonger random access and is suitable for shipping over a stream.
|
| 1.87 |
07-Jun-2005 |
matt |
Make sure state.end has a valid initial value.
|
| 1.86 |
02-Jun-2005 |
matt |
When writing coredumps, don't write zero uninstantiated demand-zero pages. Also, with ELF core dumps, trim trailing zeroes from sections. These two changes can shrink coredumps by over 50% in size.
|
| 1.85 |
06-May-2005 |
nathanw |
uvm_coredump_walkmap(): Set UVM_COREDUMP_NODUMP on regions whose protection does not include VM_PROT_READ, so that the core dumping doesn't error out with EFAULT when trying to write that region.
Addresses PR kern/30143; approach suggested by chs@.
|
|
Revision tags: kent-audio2-base
|
| 1.84 |
01-Apr-2005 |
yamt |
merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2
|
| 1.83 |
08-Feb-2005 |
yamt |
branches: 1.83.4; update a comment; malloc doesn't use uvm_kernacc anymore.
|
|
Revision tags: yamt-km-base
|
| 1.82 |
21-Jan-2005 |
chs |
branches: 1.82.2; reduce the size of user coredump files by not dumping regions of the address space that have never been touched (such as much of the virtual space allocated for pthread stacks).
|
|
Revision tags: kent-audio1-beforemerge kent-audio1-base
|
| 1.81 |
12-May-2004 |
yamt |
branches: 1.81.4; add assertions.
|
| 1.80 |
02-May-2004 |
pk |
Make uvm_uarea_free an inline function.
|
| 1.79 |
04-Apr-2004 |
pk |
Use maxdmap and maxsmap instead of MAXDSIZ and MAXSSIZ.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.78 |
24-Mar-2004 |
junyoung |
branches: 1.78.2; 1.78.4; 1.78.6; - Nuke __P(). - Drop trailing spaces.
|
| 1.77 |
09-Feb-2004 |
yamt |
- borrow vmspace0 in uvm_proc_exit instead of uvmspace_free. the latter is not a appropriate place to do so and it broke vfork. - deactivate pmap before calling cpu_exit() to keep a balance of pmap_activate/deactivate.
|
| 1.76 |
16-Jan-2004 |
yamt |
uvm_coredump_walkmap: use UVM_OBJ_IS_DEVICE macro.
|
| 1.75 |
04-Jan-2004 |
jdolecek |
Rearrange process exit path to avoid need to free resources from different process context ('reaper').
From within the exiting process context: * deactivate pmap and free vmspace while we can still block * introduce MD cpu_lwp_free() - this cleans all MD-specific context (such as FPU state), and is the last potentially blocking operation; all of cpu_wait(), and most of cpu_exit(), is now folded into cpu_lwp_free() * process is now immediatelly marked as zombie and made available for pickup by parent; the remaining last lwp continues the exit as fully detached * MI (rather than MD) code bumps uvmexp.swtch, cpu_exit() is now same for both 'process' and 'lwp' exit
uvm_lwp_exit() is modified to never block; the u-area memory is now always just linked to the list of available u-areas. Introduce (blocking) uvm_uarea_drain(), which is called to release the excessive u-area memory; this is called by parent within wait4(), or by pagedaemon on memory shortage. uvm_uarea_free() is now private function within uvm_glue.c.
MD process/lwp exit code now always calls lwp_exit2() immediatelly after switching away from the exiting lwp.
g/c now unneeded routines and variables, including the reaper kernel thread
|
| 1.74 |
30-Dec-2003 |
pk |
Replace the traditional buffer memory management -- based on fixed per buffer virtual memory reservation and a private pool of memory pages -- by a scheme based on memory pools.
This allows better utilization of memory because buffers can now be allocated with a granularity finer than the system's native page size (useful for filesystems with e.g. 1k or 2k fragment sizes). It also avoids fragmentation of virtual to physical memory mappings (due to the former fixed virtual address reservation) resulting in better utilization of MMU resources on some platforms. Finally, the scheme is more flexible by allowing run-time decisions on the amount of memory to be used for buffers.
On the other hand, the effectiveness of the LRU queue for buffer recycling may be somewhat reduced compared to the traditional method since, due to the nature of the pool based memory allocation, the actual least recently used buffer may release its memory to a pool different from the one needed by a newly allocated buffer. However, this effect will kick in only if the system is under memory pressure.
|
| 1.73 |
13-Nov-2003 |
chs |
eliminate uvm_useracc() in favor of checking the return value of copyin() or copyout().
uvm_useracc() tells us whether the mapping permissions allow access to the desired part of an address space, and many callers assume that this is the same as knowing whether an attempt to access that part of the address space will succeed. however, access to user space can fail for reasons other than insufficient permission, most notably that paging in any non-resident data can fail due to i/o errors. most of the callers of uvm_useracc() make the above incorrect assumption. the rest are all misguided optimizations, which optimize for the case where an operation will fail. we'd rather optimize for operations succeeding, in which case we should just attempt the access and handle failures due to insufficient permissions the same way we handle i/o errors. since there appear to be no good uses of uvm_useracc(), we'll just remove it.
|
| 1.72 |
03-Nov-2003 |
yamt |
revert rev.1.70 as it was not needed. uvm_map_lookup_entry() should handle addresses out of the map.
|
| 1.71 |
02-Nov-2003 |
jdolecek |
kill unneded SYSVSHM includes use ANSI C function definition for uvm_lwp_exit()
|
| 1.70 |
01-Nov-2003 |
yamt |
don't try to lookup addresses out of the map in uvm_coredump_walkmap().
|
| 1.69 |
24-Oct-2003 |
cl |
simplify tests: The case where l_stat == LSONPROC and l_cpu == curcpu cannot happen because the pagedaemon is the LWP on curcpu and the pagedaemon is a kernel thread and the code is only used by the pagedaemon.
See also updated patch in PR kern/23095, which I ment to checkin originally.
|
| 1.68 |
19-Oct-2003 |
cl |
don't uvm_swapout LWPs which are LSONPROC on another cpu.
uvm_swapout_threads will swapout LWPs which are running on another CPU: - uvm_swapout_threads considers LWPs running on another CPU for swapout if their l_swtime is high - uvm_swapout_threads considers LWPs on the runqueue for swapout if their l_swtime is high but these LWPs might be running by the time uvm_swapout is called
symptoms of failure: panic in setrunqueue
fixes PR kern/23095
|
| 1.67 |
13-Oct-2003 |
scw |
In uvm_lwp_fork(), check if PMAP_UAREA() is defined and if so, invoke it with the KVA of the newly-wired uarea.
This is useful on some architectures (e.g. xscale) where the uarea mapping can be tweaked to use the mini-data cache instead of the main cache.
|
| 1.66 |
29-Jun-2003 |
fvdl |
branches: 1.66.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
| 1.65 |
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
| 1.64 |
14-Feb-2003 |
atatat |
Rework the way in which the map is traversed when dumping core. Now we read-lock the map and call uvm_map_lookup_entry() instead of simply walking from the header to the next and to the next, etc.
Dumping from sparsely populated amaps could cause faults that would result in amaps being split, which (in turn) resulted in the core dumping routines dumping some regions of memory twice. This makes the core file too large, the headers not match, gdb not work properly, and so on.
Addresses PR 19260.
|
| 1.63 |
22-Jan-2003 |
yamt |
make KSTACK_CHECK_* compile after sa merge.
|
| 1.62 |
18-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.61 |
17-Nov-2002 |
chs |
change uvm_uarea_alloc() to indicate whether the returned uarea is already backed by physical pages (ie. because it reused a previously-freed one), so that we can skip a bunch of useless work in that case. this fixes the underlying problem behind PR 18543, and also speeds up fork() quite a bit (eg. 7% on my pc, 1% on my ultra2) when we get a cache hit.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.60 |
22-Sep-2002 |
chs |
encapsulate knowledge of uarea allocation in some new functions.
|
|
Revision tags: gehenna-devsw-base
|
| 1.59 |
02-Jul-2002 |
yamt |
add KSTACK_CHECK_MAGIC. discussed on tech-kern.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
|
| 1.58 |
15-May-2002 |
matt |
branches: 1.58.2; When core dumping a process, don't dump maps backed up by the device pager. (move the pagerops externs to uvm_object.h and out the C files).
|
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
| 1.57 |
31-Dec-2001 |
chs |
introduce a new UVM fault type, VM_FAULT_WIREMAX. this is different from VM_FAULT_WIRE in that when the pages being wired are faulted in, the simulated fault is at the maximum protection allowed for the mapping instead of the current protection. use this in uvm_map_pageable{,_all}() to fix the problem where writing via ptrace() to shared libraries that are also mapped with wired mappings in another process causes a diagnostic panic when the wired mapping is removed.
this is a really obscure problem so it deserves some more explanation. ptrace() writing to another process ends up down in uvm_map_extract(), which for MAP_PRIVATE mappings (such as shared libraries) will cause the amap to be copied or created. then the amap is made shared (ie. the AMAP_SHARED flag is set) between the kernel and the ptrace()d process so that the kernel can modify pages in the amap and have the ptrace()d process see the changes. then when the page being modified is actually faulted on, the object pages (from the shared library vnode) is copied to a new anon page and inserted into the shared amap. to make all the processes sharing the amap actually see the new anon page instead of the vnode page that was there before, we need to invalidate all the pmap-level mappings of the vnode page in the pmaps of the processes sharing the amap, but we don't have a good way of doing this. the amap doesn't keep track of the vm_maps which map it. so all we can do at this point is to remove all the mappings of the page with pmap_page_protect(), but this has the unfortunate side-effect of removing wired mappings as well. removing wired mappings with pmap_page_protect() is a legitimate operation, it can happen when a file with a wired mapping is truncated. so the pmap has no way of knowing whether a request to remove a wired mapping is normal or when it's due to this weird situation. so the pmap has to remove the weird mapping. the process being ptrace()d goes away and life continues. then, much later when we go to unwire or remove the wired vm_map mapping, we discover that the pmap mapping has been removed when it should still be there, and we panic.
so where did we go wrong? the problem is that we don't have any way to update just the pmap mappings that need to be updated in this scenario. we could invent a mechanism to do this, but that is much more complicated than this change and it doesn't seem like the right way to go in the long run either.
the real underlying problem here is that wired pmap mappings just aren't a good concept. one of the original properties of the pmap design was supposed to be that all the information in the pmap could be thrown away at any time and the VM system could regenerate it all through fault processing, but wired pmap mappings don't allow that. a better design for UVM would not require wired pmap mappings, and Chuck C. and I are talking about this, but it won't be done anytime soon, so this change will do for now.
this change has the effect of causing MAP_PRIVATE mappings to be copied to anonymous memory when they are mlock()d, so that uvm_fault() doesn't need to copy these pages later when called from ptrace(), thus avoiding the call to pmap_page_protect() and the panic that results from this when the mlock()d region is unlocked or freed. note that this change doesn't help the case where the wired mapping is MAP_SHARED.
discussed at great length with Chuck Cranor. fixes PRs 10363, 12554, 12604, 13041, 13487, 14580 and 14853.
|
| 1.56 |
10-Dec-2001 |
thorpej |
Move the code that walks the process's VM map during a coredump into uvm_coredump_walkmap(), and use callbacks into the coredump routine to do something with each section.
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.55 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.54 |
06-Nov-2001 |
chs |
in uvm_exit(), don't bother to unwire the uarea before we free it, the pages will be freed anyway.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2
|
| 1.53 |
23-Sep-2001 |
chs |
branches: 1.53.2; bump the rusage counter for "swaps" when we swap out a process. addresses PR 6170.
|
|
Revision tags: post-chs-ubcperf
|
| 1.52 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf
|
| 1.51 |
10-Sep-2001 |
chris |
Update pmap_update to now take the updated pmap as an argument. This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.
Currently this is a no-op on most platforms, so they should see no difference.
Reviewed by Jason.
|
|
Revision tags: thorpej-devvp-base
|
| 1.50 |
02-Jun-2001 |
chs |
branches: 1.50.2; 1.50.4; replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.49 |
30-May-2001 |
lukem |
add missing #include "opt_kgdb.h"
|
| 1.48 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge
|
| 1.47 |
24-Apr-2001 |
thorpej |
Sprinkle pmap_update() calls after calls to: - pmap_enter() - pmap_remove() - pmap_protect() - pmap_kenter_pa() - pmap_kremove() as described in pmap(9).
These calls are relatively conservative. It may be possible to optimize these a little more.
|
|
Revision tags: thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.46 |
21-Apr-2001 |
thorpej |
The pmap_update() call at the end of uvm_swapout_threads() is completely useless. Nuke it.
|
| 1.45 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.44 |
06-Feb-2001 |
eeh |
branches: 1.44.2; Move maxdmap and maxsmap where they belong and make them big enough.
|
| 1.43 |
25-Nov-2000 |
chs |
lots of cleanup: use queue.h macros and KASSERT(). address amap offsets in pages instead of bytes. make amap_ref() and amap_unref() take an amap, offset and length instead of a vm_map_entry_t. improve whitespace and comments.
|
| 1.42 |
11-Oct-2000 |
thorpej |
- uvmspace_share(): If p2 has a vmspace already, make sure to deactivate it and free it as appropriate. Activate p2's new address space once it references p1's. - uvm_fork(): Make sure the child's vmspace is NULL before calling uvmspace_share() (the child doens't have one already in this case).
These changes do not change the behavior for the current use of uvmspace_share() (vfork(2)), but make it possible for an already running process (such as a kernel thread) to properly attach to another process's address space.
|
| 1.41 |
23-Sep-2000 |
enami |
splstatclock is insufficient to protect run queues. Acquire scheduler lock instead.
|
| 1.40 |
21-Aug-2000 |
thorpej |
Remove a totally unnecessary splhigh/spl0 pair.
|
| 1.39 |
12-Aug-2000 |
sommerfeld |
add comment warning about possible unlock/sleep race
|
| 1.38 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.37 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
|
| 1.36 |
18-Jun-2000 |
simonb |
Set p->p_addr to NULL after it gets freed.
|
| 1.35 |
08-Jun-2000 |
thorpej |
Change UVM_UNLOCK_AND_WAIT() to use ltsleep() (it is now atomic, as advertised). Garbage-collect uvm_sleep().
|
| 1.34 |
28-May-2000 |
thorpej |
Rather than starting init and creating kthreads by forking and then doing a cpu_set_kpc(), just pass the entry point and argument all the way down the fork path starting with fork1(). In order to avoid special-casing the normal fork in every cpu_fork(), MI code passes down child_return() and the child process pointer explicitly.
This fixes a race condition on multiprocessor systems; a CPU could grab the newly created processes (which has been placed on a run queue) before cpu_set_kpc() would be performed.
|
|
Revision tags: minoura-xpg4dl-base
|
| 1.33 |
26-May-2000 |
thorpej |
branches: 1.33.2; Introduce a new process state distinct from SRUN called SONPROC which indicates that the process is actually running on a processor. Test against SONPROC as appropriate rather than combinations of SRUN and curproc. Update all context switch code to properly set SONPROC when the process becomes the current process on the CPU.
|
| 1.32 |
30-Mar-2000 |
augustss |
Remove more register declarations.
|
| 1.31 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base fvdl-softdep-base
|
| 1.30 |
13-Nov-1999 |
thorpej |
Change the pmap_enter() API slightly; pmap_enter() now returns an error value (KERN_SUCCESS or KERN_RESOURCE_SHORTAGE) indicating if it succeeded or failed. Change the `wired' and `access_type' arguments to a single `flags' argument, which includes the access type, and flags:
PMAP_WIRED the old `wired' boolean PMAP_CANFAIL pmap_enter() is allowed to fail
If PMAP_CANFAIL is not specified, the pmap should behave as it always has in the face of a drastic resource shortage: fall over dead.
Change the fault handler to deal with failure (which indicates resource shortage) by unlocking everything, waiting for the pagedaemon to free more memory, then retrying the fault.
|
|
Revision tags: comdex-fall-1999-base chs-ubc2-base
|
| 1.29 |
25-Jul-1999 |
thorpej |
branches: 1.29.2; 1.29.4; 1.29.8; Turn the proclist lock into a read/write spinlock. Update proclist locking calls to reflect this. Also, block statclock rather than softclock during in the proclist locking functions, to address a problem reported on current-users by Sean Doran.
|
| 1.28 |
22-Jul-1999 |
thorpej |
Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.27 |
08-Jul-1999 |
thorpej |
Change the pmap_extract() interface to: boolean_t pmap_extract(pmap_t, vaddr_t, paddr_t *); This makes it possible for the pmap to map physical address 0.
|
| 1.26 |
17-Jun-1999 |
thorpej |
Make uvm_vslock() return the error code from uvm_fault_wire(). All places which use uvm_vslock() should now test the return value. If it's not KERN_SUCCESS, wiring the pages failed, so the operation which is using uvm_vslock() should error out.
XXX We currently just EFAULT a failed uvm_vslock(). We may want to do more about translating error codes in the future.
|
| 1.25 |
17-Jun-1999 |
thorpej |
In uvm_useracc(), make sure we have a read lock on the map before calling uvm_map_checkprot().
|
| 1.24 |
17-Jun-1999 |
thorpej |
The i386 and pc532 pmaps are officially fixed.
|
| 1.23 |
28-May-1999 |
thorpej |
Make uvm_fault_unwire() take a vm_map_t, rather than a pmap_t, for consistency. Use this opportunity for checking for intrsafe map use in this routine (which is illegal).
|
| 1.22 |
26-May-1999 |
thorpej |
Pass an access_type to uvm_vslock().
|
| 1.21 |
26-May-1999 |
thorpej |
- uvm_fork()/uvm_swapin(): pass VM_PROT_READ|VM_PROT_WRITE access_type to uvm_fault_wire(), to guarantee that the kernel stacks will not cause even a mod/ref emulation fault. - uvm_vslock(): pass VM_PROT_NONE until this function is updated.
|
| 1.20 |
13-May-1999 |
thorpej |
Allow the caller to specify a stack for the child process. If NULL, the child inherits the stack pointer from the parent (traditional behavior). Like the signal stack, the stack area is secified as a low address and a size; machine-dependent code accounts for stack direction.
This is required for clone(2).
|
| 1.19 |
30-Apr-1999 |
thorpej |
Pull signal actions out of struct user, make them a separate proc substructure, and allow them to be shared.
Required for clone(2).
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.18 |
26-Mar-1999 |
mycroft |
branches: 1.18.4; Add a new `access type' argument to pmap_enter(). This indicates what type of memory access a mapping was caused by. This is passed through from uvm_fault() and udv_fault(), and in most other cases is 0. The pmap module may use this to preset R/M information. On MMUs which require R/M emulation, the implementation may preset the bits and avoid taking another fault. On MMUs which keep R/M information in hardware, the implementation may preset its cached bits to speed up the next call to pmap_is_modified() or pmap_is_referenced().
|
| 1.17 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
| 1.16 |
15-Mar-1999 |
chs |
remove a debugging printf.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.15 |
19-Oct-1998 |
tron |
Defopt SYSVMSG, SYSVSEM and SYSVSHM.
|
| 1.14 |
08-Sep-1998 |
thorpej |
Implement uvm_exit(), which frees VM resources when a process finishes exiting.
|
| 1.13 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
| 1.12 |
09-Aug-1998 |
perry |
bzero->memset, bcopy->memcpy, bcmp->memcmp
|
|
Revision tags: eeh-paddr_t-base
|
| 1.11 |
09-May-1998 |
kleink |
branches: 1.11.2; Use size_t to pass the length of the memory region to operate on to chgkprot(), kernacc(), useracc(), vslock() and vsunlock(); (unsigned) ints are not adequate on all platforms.
|
| 1.10 |
08-May-1998 |
kleink |
Make uvm_vsunlock() actually use the proc * passed to it; per discussion with Jason Thorpe.
|
| 1.9 |
30-Apr-1998 |
thorpej |
Pass vslock() and vsunlock() a proc *, rather than implicitly operating on curproc.
|
| 1.8 |
09-Apr-1998 |
thorpej |
Oops, fix a typo.
|
| 1.7 |
09-Apr-1998 |
thorpej |
Allocate kernel virtual address space for the U-area before allocating the new proc structure when performing a fork. This makes it much easier to abort a fork operation and return an error if we run out of KVA space.
The U-area pages are still wired down in {,u}vm_fork(), as before.
|
| 1.6 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
add locking of kernel_map in uvm_kernacc(). check return value of uvm_fault_wire() in uvm_fork(). enable swappings.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.10 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
| 1.9 |
28-Jan-2008 |
yamt |
branches: 1.9.32; 1.9.38; 1.9.40; remove a special allocator for uareas, which is no longer necessary. use pool_cache instead.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase nick-csl-alignment-base5 bouyer-xeni386-merge1 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base jmcneill-base netbsd-4-0-RC4 bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-armv6-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.8 |
11-Dec-2005 |
christos |
branches: 1.8.46; 1.8.52; merge ktrace-lwp.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 yamt-readahead-base3 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 yamt-readahead-base2 netbsd-3-0-RC2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base netbsd-3-0-RC1 yamt-vop-base3 netbsd-2-0-3-RELEASE yamt-vop-base2 thorpej-vnode-attr-base netbsd-2-1-RELEASE yamt-vop-base netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base ktrace-lwp-base
|
| 1.7 |
24-Mar-2004 |
junyoung |
branches: 1.7.16; Nuke __P().
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_end nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base netbsd-1-5-PATCH003 eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base netbsd-1-5-PATCH002 kqueue-base netbsd-1-5-PATCH001 thorpej_scsipi_beforemerge thorpej_scsipi_nbase netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base thorpej_scsipi_base chs-ubc2-base
|
| 1.6 |
21-Jun-1999 |
thorpej |
branches: 1.6.36; Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.5 |
25-Mar-1999 |
mrg |
branches: 1.5.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base eeh-paddr_t-base
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE yamt-pagecache-base9 yamt-pagecache-tag8 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE rmind-smpnet-nbase rmind-smpnet-base agc-symver-base tls-maxphys-base yamt-pagecache-base8 yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-nb5-pq3-base netbsd-5-1-RELEASE yamt-nfs-mp-base11 netbsd-5-1-RC4 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE yamt-nfs-mp-base8 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base haad-dm-base1 haad-dm-base simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base jmcneill-pm-base hpcarm-cleanup-base mjf-ufs-trans-base yamt-idlelwp-base8 reinoud-bufcleanup-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 elad-kernelauth-nbase yamt-pdpolicy-base4 yamt-pdpolicy-base3 yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base yamt-km-base4 yamt-km-base3 yamt-km-base2 yamt-km-base kent-audio2-base ktrace-lwp-base nathanw_sa_before_merge gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base kqueue-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.2 |
01-Aug-2000 |
wiz |
Rename VM_INHERIT_* to MAP_INHERIT_* and move them to sys/sys/mman.h as discussed on tech-kern. Retire sys/uvm/uvm_inherit.h, update man page for minherit(2).
|
| 1.1 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
| 1.60 |
05-Nov-2025 |
thorpej |
Make it safe for uvm_md_init() to be called multiple times.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.59 |
23-Sep-2023 |
ad |
Repply this change with a couple of bugs fixed:
- Do away with separate pool_cache for some kernel objects that have no special requirements and use the general purpose allocator instead. On one of my test systems this makes for a small (~1%) but repeatable reduction in system time during builds presumably because it decreases the kernel's cache / memory bandwidth footprint a little. - vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
|
| 1.58 |
12-Sep-2023 |
ad |
Back out recent change to replace pool_cache with then general allocator. Will return to this when I have time again.
|
| 1.57 |
10-Sep-2023 |
ad |
- Do away with separate pool_cache for some kernel objects that have no special requirements and use the general purpose allocator instead. On one of my test systems this makes for a small (~1%) but repeatable reduction in system time during builds presumably because it decreases the kernel's cache / memory bandwidth footprint a little. - vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
|
| 1.56 |
17-Jul-2023 |
riastradh |
uvm(9): One rndsource for faults -- not one per CPU.
All relevant state is per-CPU anyway; the only substantive difference this makes is how many entries appear in `rndctl -l' output and what they are called -- formerly the somewhat confusing `cpuN', meaning `page faults on cpuN', and now just `uvmfault'. I don't think there's any real value in being able to enable or disable measurement or counting of page faults on one CPU vs others, so although this could be a minor compatibility change, it's hard to imagine it matters much.
XXX kernel ABI change in struct cpu_info
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.55 |
04-Nov-2020 |
chs |
In uvmpd_tryownerlock(), if the initial try-lock of the owner lock fails then rather than do more try-locks and eventually sleep for a tick, take a hold on the current owner's lock, drop the page interlock, and acquire the lock that we took the hold on in a blocking fashion. After we get the lock, check if the lock that we acquired is still the lock for the owner of the page that we're interested in. If the owner hasn't changed then can proceed with this page, otherwise we will skip this page and move on to a different page. This dramatically reduces the amount of time that the pagedaemon sleeps trying to get locks, since even 1 tick is an eternity to sleep in this context and it was easy to trigger that case in practice, and with this new method the pagedaemon only very rarely actually blocks to acquire the lock that it wants since the object locks are adaptive, and when the pagedaemon does block then the amount of time it spends sleeping will be generally be much less than 1 tick.
|
| 1.54 |
07-Oct-2020 |
chs |
branches: 1.54.2; Add a new, more aggressive allocator for uvm_pglistalloc() to allocate contiguous physical pages, and try this new allocator if the existing one fails. The existing contig allocator only tries to allocate pages that are already free, which works fine shortly after boot but rarely works after the system has been up for a while. The new allocator uses the pagedaemon to evict pages from memory in the hope that this will free up a range of pages that satisfies the constraits of the request. This should help with things like plugging in a USB device, which often fails for some USB controllers because they can't get contigous memory.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.53 |
06-Mar-2020 |
ad |
Fix a comment.
|
|
Revision tags: is-mlppp-base ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.52 |
27-Dec-2019 |
ad |
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
| 1.51 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.50 |
01-Dec-2019 |
ad |
Give each of the page queue locks their own cache line.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
|
| 1.49 |
19-May-2018 |
jdolecek |
branches: 1.49.2; Remove emap support. Unfortunately it never got to state where it would be used and usable, due to reliability and limited & complicated MD support.
Going forward, we need to concentrate on interface which do not map anything into kernel in first place (such as direct map or KVA-less I/O), rather than making those mappings cheaper to do.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.48 |
23-Dec-2016 |
cherry |
branches: 1.48.14; "Make NetBSD great again!"
Introduce uvm_hotplug(9) to the kernel.
Many thanks, in no particular order to:
TNF, for funding the project.
Chuck Silvers - for multiple API reviews and feedback. Nick Hudson - for testing on multiple architectures and bugfix patches. Everyone who helped with boot testing.
KeK (http://www.kek.org.in) for hosting the primary developers.
|
| 1.47 |
22-Dec-2016 |
cherry |
Add a new function called uvm_md_init() that can be called at the appropriate time in the boot path by MD code.
|
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
| 1.46 |
03-Apr-2015 |
riastradh |
branches: 1.46.2; Initialize P->V tracking for unmanaged device pages in uvm_init.
Conditional on __HAVE_PMAP_PV_TRACK until we add it to all pmaps.
MI part of pmap_pv(9) change proposed on tech-kern:
https://mail-index.netbsd.org/tech-kern/2015/03/26/msg018561.html
|
|
Revision tags: nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base tls-maxphys-base
|
| 1.45 |
29-Jan-2013 |
para |
branches: 1.45.12; 1.45.14; improve on comments
|
|
Revision tags: yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2
|
| 1.44 |
17-Feb-2012 |
matt |
branches: 1.44.2; Make sure to export uvmexp_* if MODULAR is defined. Make the uvmexp_page* be a pointer to a const int as well as having the pointer be const as well.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 netbsd-6-base
|
| 1.43 |
28-Jan-2012 |
rmind |
pool_page_alloc, pool_page_alloc_meta: avoid extra compare, use const. ffs_mountfs,sys_swapctl: replace memset with kmem_zalloc. sys_swapctl: move kmem_free outside the lock path. uvm_init: fix comment, remove pointless numeration of steps. uvm_map_enter: remove meflagval variable. Fix some indentation.
|
| 1.42 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.41 |
24-Apr-2011 |
rmind |
branches: 1.41.4; 1.41.8; Initialize UVM loaning subsystem a bit later, after kmem(9). Makes UVMHIST work again.
|
| 1.40 |
23-Apr-2011 |
rmind |
Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.39 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6
|
| 1.38 |
14-Nov-2010 |
uebayasi |
branches: 1.38.2; 1.38.4; Oops. Fix thinko.
|
| 1.37 |
14-Nov-2010 |
uebayasi |
Platforms that dynamically set PAGE_{SIZE,MASK,SHIFT}, those values are saved in struct uvmexp. Expose only the relevant part for symbol users, so that they don't need to include the whole uvm(9) API.
|
|
Revision tags: uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
| 1.36 |
21-Oct-2009 |
rmind |
branches: 1.36.2; 1.36.4; Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6
|
| 1.35 |
28-Jun-2009 |
rmind |
Ephemeral mapping (emap) implementation. Concept is based on the idea that activity of other threads will perform the TLB flush for the processes using emap as a side effect. To track that, global and per-CPU generation numbers are used. This idea was suggested by Andrew Doran; various improvements to it by me. Notes:
- For now, zero-copy on pipe is not yet enabled. - TCP socket code would likely need more work. - Additional UVM loaning improvements are needed.
Proposed on <tech-kern>, silence there. Quickly reviewed by <ad>.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 haad-dm-base mjf-devfs2-base
|
| 1.34 |
18-Oct-2008 |
rmind |
branches: 1.34.8; 1.34.12; - Initialize pool subsystem and kmem(9) earlier, when UVM is up enough. - Remove uao_hashinit() workaround used for anon-objects. - Replace malloc with kmem.
OK by <yamt>.
|
|
Revision tags: wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base
|
| 1.33 |
04-Jun-2008 |
ad |
branches: 1.33.4; Replace the global vm_page hash with a per vm_object rbtree. Proposed on tech-kern@.
|
|
Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
| 1.32 |
28-Jan-2008 |
yamt |
branches: 1.32.6; 1.32.8; 1.32.10; 1.32.12; remove a special allocator for uareas, which is no longer necessary. use pool_cache instead.
|
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
|
| 1.31 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.30 |
14-Nov-2007 |
yamt |
branches: 1.30.2; 1.30.6; call debug_init earlier. ie. before malloc is used.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking jmcneill-base yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base vmlocking-base
|
| 1.29 |
18-Aug-2007 |
ad |
branches: 1.29.2; 1.29.6; 1.29.8; Make the uarea cache per-CPU and drain in batches of 4.
|
|
Revision tags: matt-mips64-base
|
| 1.28 |
21-Jul-2007 |
ad |
branches: 1.28.4; 1.28.6; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base mjf-ufs-trans-base
|
| 1.27 |
09-Jul-2007 |
ad |
branches: 1.27.2; Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base netbsd-4-base
|
| 1.26 |
15-Sep-2006 |
yamt |
branches: 1.26.10; 1.26.12; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base chap-midi-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.25 |
25-May-2006 |
yamt |
branches: 1.25.6; move wait points for kva from upper layers to vm_map. PR/33185 #1.
XXX there is a concern about interaction with kva fragmentation. see: http://mail-index.NetBSD.org/tech-kern/2006/05/11/0000.html
|
|
Revision tags: yamt-pdpolicy-base5 yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.24 |
11-Dec-2005 |
christos |
branches: 1.24.4; 1.24.6; 1.24.8; 1.24.14; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.23 |
27-Jun-2005 |
thorpej |
branches: 1.23.2; Use ANSI function decls.
|
| 1.22 |
11-May-2005 |
yamt |
allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base
|
| 1.21 |
23-Jan-2005 |
chs |
move the call to link_pool_init() to the end of uvm_init(). needed for sun3.
|
|
Revision tags: kent-audio1-beforemerge kent-audio1-base
|
| 1.20 |
25-Apr-2004 |
simonb |
branches: 1.20.4; Initialise (most) pools from a link set instead of explicit calls to pool_init. Untouched pools are ones that either in arch-specific code, or aren't initialiased during initial system startup.
Convert struct session, ucred and lockf to pools.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.19 |
26-Oct-2003 |
jdolecek |
update comment - kmem_map is created in kmeminit(), not uvm_km_init()
|
| 1.18 |
10-May-2003 |
thorpej |
branches: 1.18.2; Back out the following chagne: http://mail-index.netbsd.org/source-changes/2003/05/08/0068.html
There were some side-effects that I didn't anticipate, and fixing them is proving to be more difficult than I thought, do just eject for now. Maybe one day we can look at this again.
Fixes PR kern/21517.
|
| 1.17 |
08-May-2003 |
thorpej |
Simplify the way the bounds of the managed kernel virtual address space is advertised to UVM by making virtual_avail and virtual_end first-class exported variables by UVM. Machine-dependent code is responsible for initializing them before main() is called. Anything that steals KVA must adjust these variables accordingly.
This reduces the number of instances of this info from 3 to 1, and simplifies the pmap(9) interface by removing the pmap_virtual_space() function call, and removing two arguments from pmap_steal_memory().
This also eliminates some kludges such as having to burn kernel_map entries on space used by the kernel and stolen KVA.
This also eliminates use of VM_{MIN,MAX}_KERNEL_ADDRESS from MI code, this giving MD code greater flexibility over the bounds of the managed kernel virtual address space if a given port's specific platforms can vary in this regard (this is especially true of the evb* ports).
|
| 1.16 |
04-Mar-2003 |
thorpej |
Fix the following pathological scanario: * User allocates ZFOD region, but does not actually touch the buffer to fault in the pages. * In a loop, user writes this buffer to a network socket, triggering sosend_loan(). * uvm_loan() calls uvm_loanzero() once for each page in the loaned region (since the pages have not yet faulted in). This causes a page to be allocated and zero'd. The result is the kernel spends a lot of time allocating and zero'ing pages.
This fixes creates a special object which owns a single zero'd page. This single zero'd page is used to satisfy all loans of non-resident ZFOD mappings.
Thanks to Allen Briggs for discovering the problem and for providing an initial patch.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base kqueue-base
|
| 1.15 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.14 |
27-Jun-2000 |
mrg |
branches: 1.14.2; 1.14.4; 1.14.8; remove include of <vm/vm.h>
|
| 1.13 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.12 |
29-Mar-2000 |
simonb |
Don't need to include <sys/conf.h> here.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base kame_141_19991130 comdex-fall-1999-base fvdl-softdep-base netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 chs-ubc2-base netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.11 |
25-Mar-1999 |
mrg |
branches: 1.11.8; remove now >1 year old pre-release message.
|
| 1.10 |
24-Jan-1999 |
chuck |
cleanup/reorg: - break anon related functions out of uvm_amap.c and put them in their own file (uvm_anon.c). includes break up uvm_anon_init into an amap and an an anon init function - ensure that only functions within the amap module access amap structure fields (add macros to amap api as needed)
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.9 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
| 1.8 |
09-Aug-1998 |
perry |
bzero->memset, bcopy->memcpy, bcmp->memcmp
|
|
Revision tags: eeh-paddr_t-base
|
| 1.7 |
05-May-1998 |
kleink |
branches: 1.7.2; Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
| 1.6 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
enable paging of kernel_object.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.30 |
03-May-2024 |
skrll |
KNF
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.29 |
21-Sep-2020 |
chs |
the previous fix for PR 55366 in uvm_amap.c 1.124 was incomplete: - amap_adjref_anons() must also ignore AMAP_REFALL when updating the ppref, not just when deciding whether or not to initialize ppref. - UVM_EXTRACT_QREF relies on AMAP_REFALL to work properly, and since we can't use AMAP_REFALL then we can't use QREF either.
|
|
Revision tags: netbsd-8-3-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529
|
| 1.28 |
25-May-2016 |
christos |
branches: 1.28.22; Introduce security.pax.mprotect.ptrace sysctl which can be used to bypass mprotect settings so that debuggers can write to the text segment of traced processes so that they can insert breakpoints. Turned off by default. Ok: chuq (for now)
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.27 |
27-Jan-2012 |
para |
branches: 1.27.6; 1.27.24; extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.26 |
23-Apr-2011 |
rmind |
branches: 1.26.4; 1.26.8; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.25 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 nick-csl-alignment-base5 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
| 1.24 |
04-Mar-2007 |
christos |
branches: 1.24.64; 1.24.70; 1.24.72; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.23 |
20-Dec-2005 |
skrll |
branches: 1.23.26; Whitespace
|
|
Revision tags: ktrace-lwp-base
|
| 1.22 |
06-Dec-2005 |
chs |
Avoid leaking memory if uiomove fails. from openbsd via PR 32251.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.21 |
27-Jun-2005 |
thorpej |
branches: 1.21.2; Use ANSI function decls.
|
|
Revision tags: kent-audio2-base
|
| 1.20 |
01-Apr-2005 |
yamt |
merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
| 1.19 |
01-Jan-2005 |
yamt |
branches: 1.19.2; 1.19.4; for in-kernel maps, - allocate kva for vm_map_entry from the map itsself and remove the static limit, MAX_KMAPENT. - keep merged entries for later splitting to fix allocate-to-free problem. PR/24039.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.18 |
23-Apr-2003 |
tls |
branches: 1.18.2; Correct use of MAXBSIZE where MAXPHYS was intended. This is a necessary first step towards per-device MAXPHYS, and has the beneficial side effect of allowing clustering to MAXPHYS even on systems that need to run with a reduced MAXBSIZE to get more metadata buffers.
|
|
Revision tags: netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base kqueue-base
|
| 1.17 |
10-Nov-2001 |
lukem |
branches: 1.17.10; add RCSIDs, and in some cases, slightly cleanup #include order
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.16 |
15-Sep-2001 |
chs |
branches: 1.16.2; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.15 |
02-Jun-2001 |
chs |
branches: 1.15.2; 1.15.4; replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.14 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.13 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.12 |
27-Jun-2000 |
mrg |
branches: 1.12.2; remove include of <vm/vm.h>
|
| 1.11 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
|
| 1.10 |
02-Jun-2000 |
pk |
Let uvm_map_extract() set the lower bound on the kernel address range itself, in stead of having its callers do that.
|
| 1.9 |
02-Jun-2000 |
pk |
Shouldn't pass garbage to uvm_map_extract().
|
|
Revision tags: netbsd-1-4-PATCH003 minoura-xpg4dl-base netbsd-1-4-PATCH002 chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base kame_141_19991130 comdex-fall-1999-base fvdl-softdep-base netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 chs-ubc2-base netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.8 |
25-Mar-1999 |
mrg |
branches: 1.8.8; 1.8.16; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.7 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - update calls to uvm_unmap_remove/uvm_unmap (mainonly boolean arg has been removed) - replace UVM_ET_ISMAP checks with UVM_ET_ISSUBMAP checks
|
| 1.6 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.5 |
05-May-1998 |
kleink |
branches: 1.5.2; Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
| 1.4 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| 1.166 |
07-Dec-2024 |
chs |
kmem: improve behavior when using all of physical memory as kmem
On systems where kmem does not need to be limited by kernel virtual space (essentially 64-bit platforms), we currently try to size the "kmem" space to be big enough for all of physical memory to be allocated as kmem, which really means that we will always run short of physical memory before we run out of kernel virtual space. However this does not take into account that uvm_km_va_starved_p() starts reporting that we are low on kmem virtual space when we have used 90% of it, in an attempt to avoid kmem space becoming too fragmented, which means on large memory systems we will still start reacting to being short of virtual space when there is plenty of physical memory still available. Fix this by overallocating the kmem space by a factor of 10/9 so that we always run low on physical memory first, as we want.
|
|
Revision tags: perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.165 |
09-Apr-2023 |
riastradh |
branches: 1.165.6; uvm(9): KASSERT(A && B) -> KASSERT(A); KASSERT(B)
|
| 1.164 |
26-Feb-2023 |
skrll |
nkmempages should be size_t
|
| 1.163 |
12-Feb-2023 |
andvar |
s/strucure/structure/ and s/structues/structures/ in comments.
|
|
Revision tags: netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.162 |
06-Aug-2022 |
chs |
branches: 1.162.4; allow KMSAN to work again by restoring the limiting of kva even with NKMEMPAGES_MAX_UNLIMITED. we used to limit kva to 1/8 of physmem but limiting to 1/4 should be enough, and 1/4 still gives the kernel enough kva to map all of the RAM that KMSAN has not stolen.
Reported-by: syzbot+ca3710b4c40cdd61aa72@syzkaller.appspotmail.com
|
| 1.161 |
03-Aug-2022 |
chs |
for platforms which define NKMEMPAGES_MAX_UNLIMITED, set nkmempages high enough to allow the kernel to map all of RAM into kmem, so that free physical pages rather than kernel virtual space is the limiting factor in allocating kernel memory. this gives ZFS more flexibility in tuning how much memory to use for its ARC cache.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.160 |
13-Mar-2021 |
skrll |
Consistently use %#jx instead of 0x%jx or just %jx in UVMHIST_LOG formats
|
| 1.159 |
09-Jul-2020 |
skrll |
branches: 1.159.2; Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.158 |
08-Jul-2020 |
skrll |
Trailing whitespace
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.157 |
14-Mar-2020 |
ad |
Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.156 |
24-Feb-2020 |
rin |
0x%#x --> %#x for non-external codes. Also, stop mixing up 0x%x and %#x in single files as far as possible.
|
| 1.155 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
| 1.154 |
08-Feb-2020 |
maxv |
Retire KLEAK.
KLEAK was a nice feature and served its purpose; it allowed us to detect dozens of info leaks on the kernel->userland boundary, and thanks to it we tackled a good part of the infoleak problem 1.5 years ago.
Nowadays however, we have kMSan, which can detect uninitialized memory in the kernel. kMSan supersedes KLEAK: it can detect what KLEAK was able to detect, but in addition, (1) it operates in all of the kernel and not just the kernel->userland boundary, (2) it requires no user interaction, and (3) it is deterministic and not statistical.
That makes kMSan the feature of choice to detect info leaks nowadays; people interested in detecting info leaks should boot a kMSan kernel and just wait for the magic to happen.
KLEAK was a good ride, and a fun project, but now is time for it to go.
Discussed with several people, including Thomas Barabosch.
|
|
Revision tags: ad-namecache-base2
|
| 1.153 |
20-Jan-2020 |
skrll |
Another #define protection.
PMAP_ALLOC_POOLPAGE expects PMAP_{,UN}MAP_POOLPAGE to be defined
|
|
Revision tags: ad-namecache-base1 ad-namecache-base
|
| 1.152 |
14-Dec-2019 |
ad |
branches: 1.152.2; Merge from yamt-pagecache: use radixtree for page lookup.
rbtree page lookup was introduced during the NetBSD 5.0 development cycle to bypass lock contention problems with the (then) global page hash, and was a temporary solution to allow us to make progress. radixtree is the intended replacement.
Ok yamt@.
|
| 1.151 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.150 |
01-Dec-2019 |
uwe |
Add missing #include <sys/atomic.h>
|
| 1.149 |
01-Dec-2019 |
ad |
Minor correction to previous.
|
| 1.148 |
01-Dec-2019 |
ad |
- Adjust uvmexp.swpgonly with atomics, and make uvm_swap_data_lock static. - A bit more __cacheline_aligned on mutexes.
|
|
Revision tags: phil-wifi-20191119
|
| 1.147 |
14-Nov-2019 |
maxv |
Add support for Kernel Memory Sanitizer (kMSan). It detects uninitialized memory used by the kernel at run time, and just like kASan and kCSan, it is an excellent feature. It has already detected 38 uninitialized variables in the kernel during my testing, which I have since discreetly fixed.
We use two shadows: - "shad", to track uninitialized memory with a bit granularity (1:1). Each bit set to 1 in the shad corresponds to one uninitialized bit of real kernel memory. - "orig", to track the origin of the memory with a 4-byte granularity (1:1). Each uint32_t cell in the orig indicates the origin of the associated uint32_t of real kernel memory.
The memory consumption of these shadows is consequent, so at least 4GB of RAM is recommended to run kMSan.
The compiler inserts calls to specific __msan_* functions on each memory access, to manage both the shad and the orig and detect uninitialized memory accesses that change the execution flow (like an "if" on an uninitialized variable).
We mark as uninit several types of memory buffers (stack, pools, kmem, malloc, uvm_km), and check each buffer passed to copyout, copyoutstr, bwrite, if_transmit_lock and DMA operations, to detect uninitialized memory that leaves the system. This allows us to detect kernel info leaks in a way that is more efficient and also more user-friendly than KLEAK.
Contrary to kASan, kMSan requires comprehensive coverage, ie we cannot tolerate having one non-instrumented function, because this could cause false positives. kMSan cannot instrument ASM functions, so I converted most of them to __asm__ inlines, which kMSan is able to instrument. Those that remain receive special treatment.
Contrary to kASan again, kMSan uses a TLS, so we must context-switch this TLS during interrupts. We use different contexts depending on the interrupt level.
The orig tracks precisely the origin of a buffer. We use a special encoding for the orig values, and pack together in each uint32_t cell of the orig: - a code designating the type of memory (Stack, Pool, etc), and - a compressed pointer, which points either (1) to a string containing the name of the variable associated with the cell, or (2) to an area in the kernel .text section which we resolve to a symbol name + offset.
This encoding allows us not to consume extra memory for associating information with each cell, and produces a precise output, that can tell for example the name of an uninitialized variable on the stack, the function in which it was pushed on the stack, and the function where we accessed this uninitialized variable.
kMSan is available with LLVM, but not with GCC.
The code is organized in a way that is similar to kASan and kCSan, so it means that other architectures than amd64 can be supported.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
|
| 1.146 |
02-Dec-2018 |
maxv |
Introduce KLEAK, a new feature that can detect kernel information leaks.
It works by tainting memory sources with marker values, letting the data travel through the kernel, and scanning the kernel<->user frontier for these marker values. Combined with compiler instrumentation and rotation of the markers, it is able to yield relevant results with little effort.
We taint the pools and the stack, and scan copyout/copyoutstr. KLEAK is supported on amd64 only for now, but it is not complicated to add more architectures (just a matter of having the address of .text, and a stack unwinder).
A userland tool is provided, that allows to execute a command in rounds and monitor the leaks generated all the while.
KLEAK already detected directly 12 kernel info leaks, and prompted changes that in total fixed 25+ leaks.
Based on an idea developed jointly with Thomas Barabosch (of Fraunhofer FKIE).
|
|
Revision tags: pgoyette-compat-1126
|
| 1.145 |
04-Nov-2018 |
mlelstv |
PMAP_MAP_POOLPAGE must not fail. Trigger assertion here instead of panic later from failing PR_WAITOK memory allocations.
|
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.144 |
28-Oct-2017 |
pgoyette |
branches: 1.144.2; 1.144.4; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
|
| 1.143 |
01-Jun-2017 |
chs |
branches: 1.143.2; remove checks for failure after memory allocation calls that cannot fail:
kmem_alloc() with KM_SLEEP kmem_zalloc() with KM_SLEEP percpu_alloc() pserialize_create() psref_class_create()
all of these paths include an assertion that the allocation has not failed, so callers should not assert that again.
|
|
Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
|
| 1.142 |
19-Mar-2017 |
riastradh |
__diagused police
|
|
Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806
|
| 1.141 |
27-Jul-2016 |
maxv |
branches: 1.141.2; Use UVM_PROT_ALL only if UVM_KMF_EXEC is given as argument. Otherwise, if UVM_KMF_PAGEABLE is also given as argument, only the VA is allocated and UVM waits for the page to fault before kentering it. When kentering it, it will use the UVM_PROT_ flag that was passed to uvm_map; which means that it will kenter it as RWX.
With this change, the number of RWX pages in the amd64 kernel reaches strictly zero.
|
|
Revision tags: pgoyette-localcount-20160726
|
| 1.140 |
20-Jul-2016 |
maxv |
Introduce uvm_km_protect.
|
|
Revision tags: pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
| 1.139 |
06-Feb-2015 |
maxv |
branches: 1.139.2; Kill kmeminit().
|
|
Revision tags: nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base tls-maxphys-base
|
| 1.138 |
29-Jan-2013 |
para |
branches: 1.138.12; 1.138.14; bring file up to date for previous vmem changes.
|
| 1.137 |
26-Jan-2013 |
para |
revert previous commit not yet fully functional, sorry
|
| 1.136 |
26-Jan-2013 |
para |
make vmem(9) ready to be used early during bootstrap to replace extent(9). pass memory for vmem structs into the initialization functions and do away with the static pools for this. factor out the vmem internal structures into a private header. remove special bootstrapping of the kmem_va_arena as all necessary memory comes from pool_allocator_meta wich is fully operational at this point.
|
|
Revision tags: yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.135 |
07-Sep-2012 |
para |
branches: 1.135.2; call pmap_growkernel once after the kmem_arena is created to make the pmap cover it's address space assert on the growth in uvm_km_kmem_alloc
for the 3rd uvm_map_entry uvm_map_prepare will grow the kernel, but we might call into uvm_km_kmem_alloc through imports to the kmem_meta_arena earlier
while here guard uvm_km_va_starved_p from kmem_arena not yet created
thanks for tracking this down to everyone involved
|
| 1.134 |
04-Sep-2012 |
matt |
Remove locking since it isn't needed. As soon as the 2nd uvm_map_entry in kernel_map is created, uvm_map_prepare will call pmap_growkernel and the pmap_growkernel call in uvm_km_mem_alloc will never be called again.
|
| 1.133 |
03-Sep-2012 |
matt |
Switch to a spin lock (uvm_kentry_lock) which, fortunately, was sitting there unused.
|
| 1.132 |
03-Sep-2012 |
matt |
Cleanup comment. Change panic to KASSERTMSG. Use kernel_map->misc_lock to make sure we don't call pmap_growkernel concurrently and possibly mess up uvm_maxkaddr.
|
| 1.131 |
03-Sep-2012 |
matt |
Shut up gcc printf warning.
|
| 1.130 |
03-Sep-2012 |
matt |
Don't try grow the entire kmem space but just do as needed in uvm_km_kmem_alloc
|
| 1.129 |
03-Sep-2012 |
matt |
Fix a bug where the kernel was never grown to accomodate the kmem VA space since that happens before the kernel_map is set.
|
| 1.128 |
09-Jul-2012 |
matt |
Convert a KASSERT to a KASSERTMSG. Expand one KASSERTSG a little bit.
|
| 1.127 |
03-Jun-2012 |
rmind |
Improve the wording slightly.
|
|
Revision tags: jmcneill-usbmp-base10
|
| 1.126 |
02-Jun-2012 |
para |
add some description about the vmem arenas, how they stack up and their purpose
|
|
Revision tags: yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4
|
| 1.125 |
13-Apr-2012 |
yamt |
uvm_km_kmem_alloc: don't hardcode kmem_va_arena
|
|
Revision tags: jmcneill-usbmp-base8
|
| 1.124 |
12-Mar-2012 |
bouyer |
uvm_km_pgremove_intrsafe(): properly compute the size to pmap_kremove() (do not trucate it to the first __PGRM_BATCH pages per batch): if we were given a sparse mapping, we could leave mappings in place. Note that this doesn't seem to be a problem right now: I added a KASSERT in my private tree to see if uvm_km_pgremove_intrsafe() would use a too short size, and it didn't fire.
|
|
Revision tags: jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4
|
| 1.123 |
25-Feb-2012 |
rmind |
uvm_km_kmem_alloc: return ENOMEM on failure in PMAP_MAP_POOLPAGE case.
|
|
Revision tags: jmcneill-usbmp-base3
|
| 1.122 |
20-Feb-2012 |
bouyer |
When using uvm_km_pgremove_intrsafe() make sure mappings are removed before returning the pages to the free pool. Otherwise, under Xen, a page which still has a writable mapping could be allocated for a PDP by another CPU and the hypervisor would refuse it (this is PR port-xen/45975). For this, move the pmap_kremove() calls inside uvm_km_pgremove_intrsafe(), and do pmap_kremove()/uvm_pagefree() in batch of (at most) 16 entries (as suggested by Chuck Silvers on tech-kern@, see also http://mail-index.netbsd.org/tech-kern/2012/02/17/msg012727.html and followups).
|
| 1.121 |
19-Feb-2012 |
rmind |
Remove VM_MAP_INTRSAFE and related code. Not used since the "kmem changes".
|
|
Revision tags: jmcneill-usbmp-base2 netbsd-6-base
|
| 1.120 |
10-Feb-2012 |
para |
branches: 1.120.2; proper sizing of kmem_arena on different ports
PR port-i386/45946: Kernel locks up in VMEM system
|
| 1.119 |
04-Feb-2012 |
para |
improve sizing of kmem_arena now that more allocations are made from it don't enforce limits if not required
ok: riz@
|
| 1.118 |
03-Feb-2012 |
matt |
Always allocate the kmem region. Add UVMHIST support. Approved by releng.
|
| 1.117 |
02-Feb-2012 |
para |
- bringing kmeminit_nkmempages back and revert pmaps that called this early - use nkmempages to scale the kmem_arena - reducing diff to pre kmem/vmem change (NKMEMPAGES_MAX_DEFAULT will need adjusting on some archs)
|
| 1.116 |
01-Feb-2012 |
para |
allocate uareas and buffers from kernel_map again add code to drain pools if kmem_arena runs out of space
|
| 1.115 |
01-Feb-2012 |
matt |
Use right UVM_xxx_COLORMATCH flag (even both use the same value).
|
| 1.114 |
31-Jan-2012 |
matt |
Deal with case when kmembase == kmemstart. Use KASSERTMSG for a few KASSERTs Make sure to match the color of the VA when we are allocating a physical page.
|
| 1.113 |
29-Jan-2012 |
para |
size kmem_arena more sanely for small memory machines
|
| 1.112 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.111 |
01-Sep-2011 |
matt |
branches: 1.111.2; 1.111.6; Forward some UVM from matt-nb5-mips64. Add UVM_KMF_COLORMATCH flag. When uvm_map gets passed UVM_FLAG_COLORMATCH, the align argument contains the color of the starting address to be allocated (0..colormask). When uvm_km_alloc is passed UVM_KMF_COLORMATCH (which can only be used with UVM_KMF_VAONLY), the align argument contain the color of the starting address to be allocated. Change uvm_pagermapin to use this. When mapping user pages in the kernel, if colormatch is used with the color of the starting user page then the kernel mapping will be congruent with the existing user mappings.
|
| 1.110 |
05-Jul-2011 |
yamt |
- fix a use-after-free bug in uvm_km_free. (after uvm_km_pgremove frees pages, the following pmap_remove touches them.) - acquire the object lock for operations on pmap_kernel as it can actually be raced with P->V operations. eg. pagedaemon.
|
| 1.109 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.108 |
02-Feb-2011 |
chuck |
branches: 1.108.2; udpate license clauses on my code to match the new-style BSD licenses. based on second diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base
|
| 1.107 |
04-Jan-2011 |
matt |
branches: 1.107.2; 1.107.4; Add better color matching selecting free pages. KM pages will now allocated so that VA and PA have the same color. On a page fault, choose a physical page that has the same color as the virtual address.
When allocating kernel memory pages, allow the MD to specify a preferred VM_FREELIST from which to choose pages. For machines with large amounts of memory (> 4GB), all kernel memory to come from <4GB to reduce the amount of bounce buffering needed with 32bit DMA devices.
|
|
Revision tags: matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.106 |
14-May-2010 |
cegger |
Move PMAP_KMPAGE to be used in pmap_kenter_pa flags argument. 'Looks good to me' gimpy@
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9
|
| 1.105 |
08-Feb-2010 |
joerg |
branches: 1.105.2; Remove separate mb_map. The nmbclusters is computed at boot time based on the amount of physical memory and limited by NMBCLUSTERS if present. Architectures without direct mapping also limit it based on the kmem_map size, which is used as backing store. On i386 and ARM, the maximum KVA used for mbuf clusters is limited to 64MB by default.
The old default limits and limits based on GATEWAY have been removed. key_registered_sb_max is hard-wired to a value derived from 2048 clusters.
|
|
Revision tags: uebayasi-xip-base matt-premerge-20091211
|
| 1.104 |
07-Nov-2009 |
cegger |
branches: 1.104.2; Add a flags argument to pmap_kenter_pa(9). Patch showed on tech-kern@ http://mail-index.netbsd.org/tech-kern/2009/11/04/msg006434.html No objections.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base nick-hppapmap-base mjf-devfs2-base
|
| 1.103 |
13-Dec-2008 |
ad |
It's easier for kernel reserve pages to be consumed because the pagedaemon serves as less of a barrier these days. Restrict provision of kernel reserve pages to kmem and one of these cases:
- doing a NOWAIT allocation - caller is a realtime thread - caller is a kernel thread - explicitly requested, for example by the pmap
|
|
Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base
|
| 1.102 |
01-Dec-2008 |
ad |
PR port-amd64/32816 amd64 can not load lkms
Change some assertions to partially allow for VM_MAP_IS_KERNEL(map) where map is outside the range of kernel_map.
|
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
|
| 1.101 |
04-Aug-2008 |
pooka |
branches: 1.101.2; 1.101.4; the most karmic commit of all: fix tyop in comment
|
|
Revision tags: simonb-wapbl-nbase simonb-wapbl-base
|
| 1.100 |
16-Jul-2008 |
matt |
Add PMAP_KMPAGE flag for pmap_kenter_pa. This allows pmaps to know that the page being entered is being for the kernel memory allocator. Such pages should have no references and don't need bookkeeping.
|
|
Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
| 1.99 |
24-Mar-2008 |
yamt |
branches: 1.99.4; 1.99.6; 1.99.8; 1.99.10; remove a redundant pmap_update and add a comment instead.
|
|
Revision tags: keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase hpcarm-cleanup-base
|
| 1.98 |
23-Feb-2008 |
chris |
Add some more missing pmap_update()s following pmap_kremove()s.
|
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-nbase bouyer-xeni386-base mjf-devfs-base matt-armv6-base
|
| 1.97 |
02-Jan-2008 |
ad |
branches: 1.97.2; 1.97.6; Merge vmlocking2 to head.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
|
| 1.96 |
21-Jul-2007 |
ad |
branches: 1.96.6; 1.96.12; 1.96.14; 1.96.16; 1.96.18; 1.96.22; Fix DEBUG build.
|
| 1.95 |
21-Jul-2007 |
ad |
Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base
|
| 1.94 |
12-Mar-2007 |
ad |
branches: 1.94.8; Pass an ipl argument to pool_init/POOL_INIT to be used when initializing the pool's lock.
|
|
Revision tags: ad-audiomp-base
|
| 1.93 |
21-Feb-2007 |
thorpej |
branches: 1.93.4; Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
| 1.92 |
01-Nov-2006 |
yamt |
branches: 1.92.4; remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.91 |
12-Oct-2006 |
uwe |
More __unused (in cpp conditionals not touched by i386).
|
| 1.90 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 rpaulo-netinet-merge-pcb-base
|
| 1.89 |
05-Jul-2006 |
drochner |
branches: 1.89.4; 1.89.6; Introduce a UVM_KMF_EXEC flag for uvm_km_alloc() which enforces an executable mapping. Up to now, only R+W was requested from pmap_kenter_pa. On most CPUs, we get an executable mapping anyway, due to lack of hardware support or due to lazyness in the pmap implementation. Only alpha does obey VM_PROT_EXECUTE, afaics.
|
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base chap-midi-base simonb-timecounters-base
|
| 1.88 |
25-May-2006 |
yamt |
branches: 1.88.2; move wait points for kva from upper layers to vm_map. PR/33185 #1.
XXX there is a concern about interaction with kva fragmentation. see: http://mail-index.NetBSD.org/tech-kern/2006/05/11/0000.html
|
|
Revision tags: yamt-pdpolicy-base5 elad-kernelauth-base
|
| 1.87 |
03-May-2006 |
yamt |
branches: 1.87.2; uvm_km_suballoc: consider kva overhead of "kmapent". fixes PR/31275 (me) and PR/32287 (Christian Biere).
|
|
Revision tags: yamt-pdpolicy-base4
|
| 1.86 |
05-Apr-2006 |
yamt |
uvm_km_pgremove/uvm_km_pgremove_intrsafe: fix assertions.
|
|
Revision tags: yamt-pdpolicy-base3
|
| 1.85 |
17-Mar-2006 |
yamt |
uvm_km_check_empty: fix an assertion.
|
|
Revision tags: peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.84 |
11-Dec-2005 |
christos |
branches: 1.84.4; 1.84.6; 1.84.8; 1.84.10; 1.84.12; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.83 |
27-Jun-2005 |
thorpej |
branches: 1.83.2; Use ANSI function decls.
|
| 1.82 |
29-May-2005 |
christos |
avoid shadow variables. remove unneeded casts.
|
|
Revision tags: kent-audio2-base
|
| 1.81 |
20-Apr-2005 |
simonb |
Use a cast to (long long) and 0x%llx to print out a paddr_t instead of casting to (void *). Fixes compile problems with 64-bit paddr_t on 32-bit platforms.
|
| 1.80 |
12-Apr-2005 |
yamt |
fix unreasonably frequent "killed: out of swap" on systems which have little or no swap. - even on a severe swap shortage, if we have some amount of file-backed pages, don't bother to kill processes. - if all pages in queue will be likely reactivated, just give up page type balancing rather than spinning unnecessarily.
|
| 1.79 |
01-Apr-2005 |
yamt |
unwrap short lines.
|
| 1.78 |
01-Apr-2005 |
yamt |
merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base
|
| 1.77 |
26-Feb-2005 |
perry |
branches: 1.77.2; nuke trailing whitespace
|
|
Revision tags: yamt-km-base2 yamt-km-base
|
| 1.76 |
13-Jan-2005 |
yamt |
branches: 1.76.2; 1.76.4; in uvm_unmap_remove, always wakeup va waiters if any. uvm_km_free_wakeup is now a synonym of uvm_km_free.
|
| 1.75 |
12-Jan-2005 |
yamt |
don't reserve (uvm_mapent_reserve) entries for malloc/pool backends because it isn't necessary or safe. reported and tested by Denis Lagno. PR/28897.
|
|
Revision tags: kent-audio1-beforemerge
|
| 1.74 |
05-Jan-2005 |
yamt |
km_vacache_alloc: UVM_PROT_ALL rather than UVM_PROT_NONE so that uvm_kernacc works. PR/28861. (FUKAUMI Naoki)
|
| 1.73 |
03-Jan-2005 |
yamt |
km_vacache_alloc: specify va hint correctly rather than using stack garbage. PR/28845.
|
| 1.72 |
01-Jan-2005 |
yamt |
in the case of !PMAP_MAP_POOLPAGE, gather pool backend allocations to large chunks for kernel_map and kmem_map to ease kva fragmentation.
|
| 1.71 |
01-Jan-2005 |
yamt |
introduce vm_map_kernel, a subclass of vm_map, and move some kernel-only members of vm_map to it.
|
| 1.70 |
01-Jan-2005 |
yamt |
for in-kernel maps, - allocate kva for vm_map_entry from the map itsself and remove the static limit, MAX_KMAPENT. - keep merged entries for later splitting to fix allocate-to-free problem. PR/24039.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.69 |
24-Mar-2004 |
junyoung |
Drop trailing spaces.
|
| 1.68 |
10-Feb-2004 |
matt |
Back out the changes in http://mail-index.netbsd.org/source-changes/2004/01/29/0027.html since they don't really fix the problem.
Incorpate one fix: Mark uvm_map_entry's that were created with UVM_FLAG_NOMERGE so that they will not be used as future merge candidates.
|
| 1.67 |
29-Jan-2004 |
yamt |
- split uvm_map() into two functions for the followings. - for in-kernel maps, disable map entry merging so that unmap operations won't block. (workaround for PR/24039) - for in-kernel maps, allocate kva for vm_map_entry from the map itsself and eliminate MAX_KMAPENT and uvm_map_entry_kmem_pool.
|
| 1.66 |
18-Dec-2003 |
pk |
* Introduce uvm_km_kmemalloc1() which allows alignment and preferred offset to be passed to uvm_map().
* Turn all uvm_km_valloc*() macros back into (inlined) functions to retain binary compatibility with any 3rd party modules.
|
| 1.65 |
18-Dec-2003 |
pk |
Condense all existing variants of uvm_km_valloc into a single function: uvm_km_valloc1(), and use it to express all of uvm_km_valloc() uvm_km_valloc_wait() uvm_km_valloc_prefer() uvm_km_valloc_prefer_wait() uvm_km_valloc_align() in terms of it by macro expansion.
|
| 1.64 |
28-Aug-2003 |
pk |
When retiring a swap device with marked bad blocks on it we should update the `# swap page in use' and `# swap page only' counters. However, at the time of swap device removal we can no longer figure out how many of the bad swap pages are actually also `swap only' pages.
So, on swap I/O errors arrange things to not include the bad swap pages in the `swpgonly' counter as follows: uvm_swap_markbad() decrements `swpgonly' by the number of bad pages, and the various VM object deallocation routines do not decrement `swpgonly' for swap slots marked as SWSLOT_BAD.
|
| 1.63 |
11-Aug-2003 |
pk |
Introduce uvm_swapisfull(), which computes the available swap space by taking into account swap devices that are in the process of being removed.
|
| 1.62 |
10-May-2003 |
thorpej |
branches: 1.62.2; Back out the following chagne: http://mail-index.netbsd.org/source-changes/2003/05/08/0068.html
There were some side-effects that I didn't anticipate, and fixing them is proving to be more difficult than I thought, do just eject for now. Maybe one day we can look at this again.
Fixes PR kern/21517.
|
| 1.61 |
08-May-2003 |
thorpej |
Simplify the way the bounds of the managed kernel virtual address space is advertised to UVM by making virtual_avail and virtual_end first-class exported variables by UVM. Machine-dependent code is responsible for initializing them before main() is called. Anything that steals KVA must adjust these variables accordingly.
This reduces the number of instances of this info from 3 to 1, and simplifies the pmap(9) interface by removing the pmap_virtual_space() function call, and removing two arguments from pmap_steal_memory().
This also eliminates some kludges such as having to burn kernel_map entries on space used by the kernel and stolen KVA.
This also eliminates use of VM_{MIN,MAX}_KERNEL_ADDRESS from MI code, this giving MD code greater flexibility over the bounds of the managed kernel virtual address space if a given port's specific platforms can vary in this regard (this is especially true of the evb* ports).
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.60 |
30-Nov-2002 |
bouyer |
Change uvm_km_kmemalloc() to accept flag UVM_KMF_NOWAIT and pass it to uvm_map(). Change uvm_map() to honnor UVM_KMF_NOWAIT. For this, change amap_extend() to take a flags parameter instead of just boolean for direction, and introduce AMAP_EXTEND_FORWARDS and AMAP_EXTEND_NOWAIT flags (AMAP_EXTEND_BACKWARDS is still defined as 0x0, to keep the code easier to read). Add a flag parameter to uvm_mapent_alloc(). This solves a problem a pool_get(PR_NOWAIT) could trigger a pool_get(PR_WAITOK) in uvm_mapent_alloc(). Thanks to Chuck Silvers, enami tsugutomo, Andrew Brown and Jason R Thorpe for feedback.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge
|
| 1.59 |
05-Oct-2002 |
oster |
Garbage collect some leftover (and unneeded) code. OK'ed by chs.
|
|
Revision tags: kqueue-base
|
| 1.58 |
15-Sep-2002 |
chs |
add a new km flag UVM_KMF_CANFAIL, which causes uvm_km_kmemalloc() to return failure if swap is full and there are no free physical pages. have malloc() use this flag if M_CANFAIL is passed to it. use M_CANFAIL to allow amap_extend() to fail when memory is scarce. this should prevent most of the remaining hangs in low-memory situations.
|
|
Revision tags: gehenna-devsw-base
|
| 1.57 |
14-Aug-2002 |
thorpej |
Don't pass VM_PROT_EXEC to pmap_kenter_pa().
|
|
Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base newlock-base
|
| 1.56 |
07-Mar-2002 |
thorpej |
branches: 1.56.2; 1.56.6; 1.56.8; If the bootstrapping process didn't actually use any KVA space, don't reserve size of 0 in kernel_map.
From OpenBSD.
|
|
Revision tags: ifpoll-base thorpej-mips-cache-base
|
| 1.55 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.54 |
07-Nov-2001 |
chs |
only acquire the lock for swpgonly if we actually need to adjust it.
|
| 1.53 |
06-Nov-2001 |
chs |
several changes prompted by loaning problems: - fix the loaned case in uvm_pagefree(). - redo uvmexp.swpgonly accounting to work with page loaning. add an assertion before each place we adjust uvmexp.swpgonly. - fix uvm_km_pgremove() to always free any swap space associated with the range being removed. - get rid of UVM_LOAN_WIRED flag. instead, we just make sure that pages loaned to the kernel are never on the page queues. this allows us to assert that pages are not loaned and wired at the same time. - add yet more assertions.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.52 |
15-Sep-2001 |
chs |
branches: 1.52.2; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf
|
| 1.51 |
10-Sep-2001 |
chris |
Update pmap_update to now take the updated pmap as an argument. This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.
Currently this is a no-op on most platforms, so they should see no difference.
Reviewed by Jason.
|
|
Revision tags: thorpej-devvp-base
|
| 1.50 |
26-Jun-2001 |
thorpej |
branches: 1.50.2; 1.50.4; Reduce some complexity in the fault path -- Rather than maintaining an spl-protected "interrupt safe map" list, simply require that callers of uvm_fault() never call us in interrupt context (MD code must make the assertion), and check for interrupt-safe maps in uvmfault_lookup() before we lock the map.
|
| 1.49 |
02-Jun-2001 |
chs |
replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.48 |
26-May-2001 |
chs |
replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
|
| 1.47 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge
|
| 1.46 |
24-Apr-2001 |
thorpej |
Sprinkle pmap_update() calls after calls to: - pmap_enter() - pmap_remove() - pmap_protect() - pmap_kenter_pa() - pmap_kremove() as described in pmap(9).
These calls are relatively conservative. It may be possible to optimize these a little more.
|
|
Revision tags: thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.45 |
12-Apr-2001 |
thorpej |
Add a __predict_true() to an extremely common case.
|
| 1.44 |
12-Apr-2001 |
thorpej |
In uvm_km_kmemalloc(), use the correct size for the uvm_unmap() call if the allocation fails.
Problem pointed out by Alfred Perlstein <bright@wintelcom.net>, who found a similar bug in FreeBSD.
|
| 1.43 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.42 |
14-Jan-2001 |
thorpej |
branches: 1.42.2; splimp() -> splvm()
|
| 1.41 |
27-Nov-2000 |
nisimura |
Introduce uvm_km_valloc_align() and use it to glab process's USPACE aligned on USPACE boundary in kernel virutal address. It's benefitial for MIPS R4000's paired TLB entry design.
|
| 1.40 |
24-Nov-2000 |
chs |
cleanup: use queue.h macros and KASSERT().
|
| 1.39 |
13-Sep-2000 |
thorpej |
Add an align argument to uvm_map() and some callers of that routine. Works similarly fto pmap_prefer(), but allows callers to specify a minimum power-of-two alignment of the region. How we ever got along without this for so long is beyond me.
|
| 1.38 |
24-Jul-2000 |
jeffs |
Add uvm_km_valloc_prefer_wait(). Used to valloc with the passed in voff_t being passed to PMAP_PREFER(), which results in the propper virtual alignment of the allocated space.
|
| 1.37 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.36 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.35 |
08-May-2000 |
thorpej |
branches: 1.35.4; __predict_false() out-of-resource conditions and DIAGNOSTIC error checks.
|
|
Revision tags: chs-ubc2-newbase
|
| 1.34 |
11-Jan-2000 |
chs |
add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base fvdl-softdep-base
|
| 1.33 |
13-Nov-1999 |
thorpej |
Change the pmap_enter() API slightly; pmap_enter() now returns an error value (KERN_SUCCESS or KERN_RESOURCE_SHORTAGE) indicating if it succeeded or failed. Change the `wired' and `access_type' arguments to a single `flags' argument, which includes the access type, and flags:
PMAP_WIRED the old `wired' boolean PMAP_CANFAIL pmap_enter() is allowed to fail
If PMAP_CANFAIL is not specified, the pmap should behave as it always has in the face of a drastic resource shortage: fall over dead.
Change the fault handler to deal with failure (which indicates resource shortage) by unlocking everything, waiting for the pagedaemon to free more memory, then retrying the fault.
|
|
Revision tags: comdex-fall-1999-base
|
| 1.32 |
12-Sep-1999 |
chs |
branches: 1.32.2; 1.32.4; 1.32.8; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
|
Revision tags: chs-ubc2-base
|
| 1.31 |
22-Jul-1999 |
thorpej |
Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.30 |
22-Jul-1999 |
thorpej |
0 -> FALSE in a few places.
|
| 1.29 |
18-Jul-1999 |
chs |
allow uvm_km_alloc_poolpage1() to use kernel-reserve pages.
|
| 1.28 |
17-Jul-1999 |
thorpej |
Garbage-collect uvm_km_get(); nothing actually uses it.
|
| 1.27 |
04-Jun-1999 |
thorpej |
Keep interrupt-safe maps on an additional queue. In uvm_fault(), if we're looking up a kernel address, check to see if the address is on this "interrupt-safe" list. If so, return failure immediately. This prevents a locking screw if a page fault is taken on an interrupt-safe map in or out of interrupt context.
|
| 1.26 |
26-May-1999 |
thorpej |
Wired kernel mappings are wired; pass VM_PROT_READ|VM_PROT_WRITE for access_type to pmap_enter() to ensure that when these mappings are accessed, possibly in interrupt context, that they won't cause mod/ref emulation page faults.
|
| 1.25 |
26-May-1999 |
thorpej |
Change the vm_map's "entries_pageable" member to a r/o flags member, which has PAGEABLE and INTRSAFE flags. PAGEABLE now really means "pageable", not "allocate vm_map_entry's from non-static pool", so update all map creations to reflect that. INTRSAFE maps are maps that are used in interrupt context (e.g. kmem_map, mb_map), and thus use the static map entry pool (XXX as does kernel_map, for now). This will eventually change now these maps are locked, as well.
|
| 1.24 |
25-May-1999 |
thorpej |
Define a new kernel object type, "intrsafe", which are used for objects which can be used in an interrupt context. Use pmap_kenter*() and pmap_kremove() only for mappings owned by these objects.
Fixes some locking protocol issues related to MP support, and eliminates all of the pmap_enter vs. pmap_kremove inconsistencies.
|
| 1.23 |
11-Apr-1999 |
chs |
add a `flags' argument to uvm_pagealloc_strat(). define a flag UVM_PGA_USERESERVE to allow non-kernel object allocations to use pages from the reserve. use the new flag for allocations in pmap modules.
|
|
Revision tags: netbsd-1-4-base
|
| 1.22 |
26-Mar-1999 |
mycroft |
branches: 1.22.2; Add a new `access type' argument to pmap_enter(). This indicates what type of memory access a mapping was caused by. This is passed through from uvm_fault() and udv_fault(), and in most other cases is 0. The pmap module may use this to preset R/M information. On MMUs which require R/M emulation, the implementation may preset the bits and avoid taking another fault. On MMUs which keep R/M information in hardware, the implementation may preset its cached bits to speed up the next call to pmap_is_modified() or pmap_is_referenced().
|
| 1.21 |
26-Mar-1999 |
chs |
add uvmexp.swpgonly and use it to detect out-of-swap conditions.
|
| 1.20 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
| 1.19 |
24-Mar-1999 |
cgd |
after discussion with chuck, nuke pgo_attach from uvm_pagerops
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.18 |
18-Oct-1998 |
chs |
branches: 1.18.2; shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.17 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - update calls to uvm_unmap_remove/uvm_unmap (mainonly boolean arg has been removed) - replace UVM_ET_ISMAP checks with UVM_ET_ISSUBMAP checks
|
| 1.16 |
28-Aug-1998 |
thorpej |
Add a couple of comments about how the pool page allocator functions can be called with a map that doens't require spl protection.
|
| 1.15 |
28-Aug-1998 |
thorpej |
Add a waitok boolean argument to the VM system's pool page allocator backend.
|
| 1.14 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
| 1.13 |
09-Aug-1998 |
perry |
bzero->memset, bcopy->memcpy, bcmp->memcmp
|
| 1.12 |
01-Aug-1998 |
thorpej |
We need to be able to specify a uvm_object to the pool page allocator, too.
|
| 1.11 |
31-Jul-1998 |
thorpej |
Allow an alternate splimp-protected map to be specified in the pool page allocator routines.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.10 |
24-Jul-1998 |
thorpej |
branches: 1.10.2; Implement uvm_km_{alloc,free}_poolpage(). These functions use pmap hooks to map/unmap pool pages if provided by the pmap layer.
|
| 1.9 |
09-Jun-1998 |
chs |
correct counting for uvmexp.wired: only pages explicitly wired by a user process should be counted.
|
| 1.8 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.7 |
24-Feb-1998 |
chuck |
be consistent about offsets in kernel objects. vm_map_min(kernel_map) should always be the base [fixes problem on m68k detected by jason thorpe]
add comments to uvm_km.c explaining kernel memory management in more detail
|
| 1.6 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.5 |
08-Feb-1998 |
thorpej |
Allow callers of uvm_km_suballoc() to specify where the base of the submap _must_ begin, by adding a "fixed" boolean argument.
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
convert kernel_object to an aobj. in uvm_km_pgremove(), free swapslots if the object is an aobj. in uvm_km_kmemalloc(), mark pages as wired and count them.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.20 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.19 |
02-Feb-2011 |
chuck |
branches: 1.19.4; 1.19.8; udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base haad-dm-base2 haad-nbase2 ad-audiomp2-base nick-hppapmap-base haad-dm-base mjf-devfs2-base
|
| 1.18 |
01-Dec-2008 |
ad |
branches: 1.18.6; 1.18.8; 1.18.10; 1.18.12; PR port-amd64/32816 amd64 can not load lkms
Change some assertions to partially allow for VM_MAP_IS_KERNEL(map) where map is outside the range of kernel_map.
|
|
Revision tags: netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 nick-csl-alignment-base5 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.17 |
21-Feb-2007 |
thorpej |
branches: 1.17.38; 1.17.42; 1.17.48; 1.17.52; 1.17.54; Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base chap-midi-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.16 |
25-May-2006 |
yamt |
branches: 1.16.12; move wait points for kva from upper layers to vm_map. PR/33185 #1.
XXX there is a concern about interaction with kva fragmentation. see: http://mail-index.NetBSD.org/tech-kern/2006/05/11/0000.html
|
|
Revision tags: yamt-pdpolicy-base5 yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.15 |
11-Dec-2005 |
christos |
branches: 1.15.4; 1.15.6; 1.15.8; 1.15.14; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base kent-audio2-base ktrace-lwp-base
|
| 1.14 |
01-Apr-2005 |
yamt |
branches: 1.14.2; merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.13 |
24-Mar-2004 |
junyoung |
branches: 1.13.8; 1.13.10; Nuke __P().
|
| 1.12 |
10-May-2003 |
thorpej |
branches: 1.12.2; Back out the following chagne: http://mail-index.netbsd.org/source-changes/2003/05/08/0068.html
There were some side-effects that I didn't anticipate, and fixing them is proving to be more difficult than I thought, do just eject for now. Maybe one day we can look at this again.
Fixes PR kern/21517.
|
| 1.11 |
08-May-2003 |
thorpej |
Simplify the way the bounds of the managed kernel virtual address space is advertised to UVM by making virtual_avail and virtual_end first-class exported variables by UVM. Machine-dependent code is responsible for initializing them before main() is called. Anything that steals KVA must adjust these variables accordingly.
This reduces the number of instances of this info from 3 to 1, and simplifies the pmap(9) interface by removing the pmap_virtual_space() function call, and removing two arguments from pmap_steal_memory().
This also eliminates some kludges such as having to burn kernel_map entries on space used by the kernel and stolen KVA.
This also eliminates use of VM_{MIN,MAX}_KERNEL_ADDRESS from MI code, this giving MD code greater flexibility over the bounds of the managed kernel virtual address space if a given port's specific platforms can vary in this regard (this is especially true of the evb* ports).
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf kqueue-base
|
| 1.10 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: netbsd-1-5-PATCH003 pre-chs-ubcperf thorpej-devvp-base netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 thorpej_scsipi_beforemerge thorpej_scsipi_nbase netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base thorpej_scsipi_base chs-ubc2-base
|
| 1.9 |
21-Jun-1999 |
thorpej |
branches: 1.9.14; 1.9.16; 1.9.18; Protect prototypes, certain macros, and inlines from userland.
|
| 1.8 |
25-May-1999 |
thorpej |
Define a new kernel object type, "intrsafe", which are used for objects which can be used in an interrupt context. Use pmap_kenter*() and pmap_kremove() only for mappings owned by these objects.
Fixes some locking protocol issues related to MP support, and eliminates all of the pmap_enter vs. pmap_kremove inconsistencies.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.7 |
25-Mar-1999 |
mrg |
branches: 1.7.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.6 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.5 |
10-Feb-1998 |
mrg |
branches: 1.5.2; - add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
| 1.12 |
27-Jul-2015 |
maxv |
Several changes and improvements in KMEM_GUARD: - merge uvm_kmguard.{c,h} into subr_kmem.c. It is only user there, and makes it more consistent. Also, it allows us to enable KMEM_GUARD without enabling DEBUG. - rename uvm_kmguard_XXX to kmem_guard_XXX, for consistency - improve kmem_guard_alloc() so that it supports allocations bigger than PAGE_SIZE - remove the canary value, and use directly the kmem header as underflow pattern. - fix some comments
(The UAF fifo is disabled for the moment; we actually need to register the va and its size, and add a weight support not to consume too much memory.)
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.11 |
25-Feb-2014 |
martin |
branches: 1.11.6; Mark a variable used only in diagnostics
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3
|
| 1.10 |
20-Feb-2012 |
bouyer |
branches: 1.10.2; 1.10.4; When using uvm_km_pgremove_intrsafe() make sure mappings are removed before returning the pages to the free pool. Otherwise, under Xen, a page which still has a writable mapping could be allocated for a PDP by another CPU and the hypervisor would refuse it (this is PR port-xen/45975). For this, move the pmap_kremove() calls inside uvm_km_pgremove_intrsafe(), and do pmap_kremove()/uvm_pagefree() in batch of (at most) 16 entries (as suggested by Chuck Silvers on tech-kern@, see also http://mail-index.netbsd.org/tech-kern/2012/02/17/msg012727.html and followups).
|
|
Revision tags: jmcneill-usbmp-base2 netbsd-6-base
|
| 1.9 |
05-Feb-2012 |
rmind |
branches: 1.9.2; uvm_kmguard_alloc: use vmem_addr_t, instead of vaddr_t. Fixes the build on ports where vaddr_t is of different size.
|
| 1.8 |
05-Feb-2012 |
rmind |
- Make KMGUARD interrupt-safe. - kmem_intr_{alloc,free}: remove workaround.
Changes affect KMGUARD-enabled debug kernels only.
|
| 1.7 |
28-Jan-2012 |
rmind |
pool_page_alloc, pool_page_alloc_meta: avoid extra compare, use const. ffs_mountfs,sys_swapctl: replace memset with kmem_zalloc. sys_swapctl: move kmem_free outside the lock path. uvm_init: fix comment, remove pointless numeration of steps. uvm_map_enter: remove meflagval variable. Fix some indentation.
|
| 1.6 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.5 |
23-Apr-2011 |
rmind |
branches: 1.5.4; 1.5.8; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4
|
| 1.4 |
02-Nov-2010 |
skrll |
branches: 1.4.2; Spell immediately correctly.
|
|
Revision tags: uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.3 |
14-May-2010 |
cegger |
Move PMAP_KMPAGE to be used in pmap_kenter_pa flags argument. 'Looks good to me' gimpy@
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211
|
| 1.2 |
07-Nov-2009 |
cegger |
branches: 1.2.2; 1.2.4; Add a flags argument to pmap_kenter_pa(9). Patch showed on tech-kern@ http://mail-index.netbsd.org/tech-kern/2009/11/04/msg006434.html No objections.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-base jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base nick-hppapmap-base3
|
| 1.1 |
29-Mar-2009 |
ad |
branches: 1.1.2; 1.1.4; 1.1.6; kernel memory guard for DEBUG kernels, proposed on tech-kern. See kmem_alloc(9) for details.
|
|
Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
| 1.3 |
27-Jul-2015 |
maxv |
Several changes and improvements in KMEM_GUARD: - merge uvm_kmguard.{c,h} into subr_kmem.c. It is only user there, and makes it more consistent. Also, it allows us to enable KMEM_GUARD without enabling DEBUG. - rename uvm_kmguard_XXX to kmem_guard_XXX, for consistency - improve kmem_guard_alloc() so that it supports allocations bigger than PAGE_SIZE - remove the canary value, and use directly the kmem header as underflow pattern. - fix some comments
(The UAF fifo is disabled for the moment; we actually need to register the va and its size, and add a weight support not to consume too much memory.)
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.2 |
05-Feb-2012 |
rmind |
branches: 1.2.6; 1.2.24; - Make KMGUARD interrupt-safe. - kmem_intr_{alloc,free}: remove workaround.
Changes affect KMGUARD-enabled debug kernels only.
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-base jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base nick-hppapmap-base3
|
| 1.1 |
29-Mar-2009 |
ad |
branches: 1.1.2; 1.1.4; 1.1.6; 1.1.18; 1.1.22; kernel memory guard for DEBUG kernels, proposed on tech-kern. See kmem_alloc(9) for details.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.104 |
11-Jun-2020 |
ad |
Counter tweaks:
- Don't need to count anonpages+filepages any more; clean+unknown+dirty for each kind of page can be summed to get the totals.
- Track the number of free pages with a counter so that it's one less thing for the allocator to do, which opens up further options there.
- Remove cpu_count_sync_one(). It has no users and doesn't save a whole lot. For the cheap option, give cpu_count_sync() a boolean parameter indicating that a cached value is okay, and rate limit the updates for cached values to hz.
|
| 1.103 |
20-May-2020 |
ad |
uvm_loanuobjpages():
- there are no pages to unbusy in the error case - always clear the caller's page array
|
| 1.102 |
19-May-2020 |
ad |
uvm_loanuobjpages():
- vmobjlock is shared between tmpfs vnodes and UAOs now - split into two routines, to simplify - fix error recovery
|
| 1.101 |
17-May-2020 |
ad |
Start trying to reduce cache misses on vm_page during fault processing.
- Make PGO_LOCKED getpages imply PGO_NOBUSY and remove the latter. Mark pages busy only when there's actually I/O to do.
- When doing COW on a uvm_object, don't mess with neighbouring pages. In all likelyhood they're already entered.
- Don't mess with neighbouring VAs that have existing mappings as replacing those mappings with same can be quite costly.
- Don't enqueue pages for neighbour faults unless not enqueued already, and don't activate centre pages unless uvmpdpol says its useful.
Also:
- Make PGO_LOCKED getpages on UAOs work more like vnodes: do gang lookup in the radix tree, and don't allocate new pages.
- Fix many assertion failures around faults/loans with tmpfs.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.100 |
22-Mar-2020 |
ad |
Process concurrent page faults on individual uvm_objects / vm_amaps in parallel, where the relevant pages are already in-core. Proposed on tech-kern.
Temporarily disabled on MP architectures with __HAVE_UNLOCKED_PMAP until adjustments are made to their pmaps.
|
| 1.99 |
20-Mar-2020 |
ad |
Go back to freeing struct vm_anon one by one. There may have been an advantage circa ~2008 but there isn't now.
|
| 1.98 |
17-Mar-2020 |
ad |
Tweak the March 14th change to make page waits interlocked by pg->interlock. Remove unneeded changes and only deal with the PQ_WANTED flag, to exclude possible bugs.
|
| 1.97 |
14-Mar-2020 |
ad |
Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.96 |
24-Feb-2020 |
ad |
uvm_unloanpage(): fix a screwup in previous. slock must be set NULL if it can't be acquired.
|
| 1.95 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.94 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.93 |
31-Dec-2019 |
ad |
branches: 1.93.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.92 |
18-Dec-2019 |
ad |
PR kern/54783: t_mmap crahes the kernel
- Fix various locking & sequencing errors with breaking loans.
- Don't call uvm_pageremove_tree() while holding pg->interlock as radixtree can take further locks when freeing nodes.
|
| 1.91 |
15-Dec-2019 |
ad |
Merge from yamt-pagecache:
- do gang lookup of pages using radixtree. - remove now unused uvm_object::uo_memq and vm_page::listq.queue.
|
| 1.90 |
14-Dec-2019 |
ad |
Don't call uvm_pagedequeue() while holding pg->interlock.
|
| 1.89 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.88 |
01-Dec-2019 |
ad |
- Adjust uvmexp.swpgonly with atomics, and make uvm_swap_data_lock static. - A bit more __cacheline_aligned on mutexes.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625
|
| 1.87 |
25-May-2018 |
jdolecek |
branches: 1.87.2; add the KASSERT() for loan_count wrap-around to all places which increase it
|
|
Revision tags: pgoyette-compat-0521
|
| 1.86 |
19-May-2018 |
jdolecek |
detect wraparound when bumping page wire_count and loan_count
|
|
Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.85 |
28-Oct-2017 |
pgoyette |
branches: 1.85.2; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
|
| 1.84 |
19-Mar-2017 |
riastradh |
branches: 1.84.6; __diagused police
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base
|
| 1.83 |
30-Jul-2012 |
matt |
branches: 1.83.2; 1.83.16; 1.83.20; 1.83.24; -fno-common broke kernhist since it used commons. Add a KERNHIST_DEFINE which is define the kernel history. Change UVM to deal with the new usage.
|
|
Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3
|
| 1.82 |
19-Feb-2012 |
rmind |
Remove VM_MAP_INTRSAFE and related code. Not used since the "kmem changes".
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.81 |
06-Aug-2011 |
rmind |
branches: 1.81.2; 1.81.6; - Rework uvm_anfree() into uvm_anon_freelst(), which always drops the lock. - Free anons in uvm_anon_freelst() without lock held. - Mechanic sync to unused loaning code.
|
| 1.80 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.79 |
23-Apr-2011 |
rmind |
branches: 1.79.2; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.78 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
| 1.77 |
03-Feb-2010 |
uebayasi |
branches: 1.77.2; 1.77.4; 1.77.6; 1.77.8; A few assertions & comments.
|
| 1.76 |
02-Feb-2010 |
uebayasi |
Don't pass an unnecessary reference to uvm_loanbreak_anon().
Requested by rmind@.
|
| 1.75 |
02-Feb-2010 |
uebayasi |
Move A->K loan break code to uvm_loan.c.
|
|
Revision tags: matt-premerge-20091211
|
| 1.74 |
05-Dec-2009 |
pooka |
Convert tsleep(&lbolt) to kpause(). Make ltsleep/mtsleep on lbolt illegal. I examined all places where lbolt is referenced to make sure there were pointer aliases of it passed to tsleep, but put a KASSERT in m/ltsleep() just to be sure.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base haad-dm-base2 haad-nbase2 ad-audiomp2-base nick-hppapmap-base haad-dm-base mjf-devfs2-base
|
| 1.73 |
03-Dec-2008 |
pooka |
uvm_loanuobjpages(): "nfsread" -> "loanuopg" in tsleep wmesg
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base
|
| 1.72 |
17-Jun-2008 |
yamt |
branches: 1.72.2; 1.72.4; 1.72.10; initialize uvm_loanzero_object correctly after page-cache rbtree changes.
|
| 1.71 |
04-Jun-2008 |
ad |
branches: 1.71.2; listq -> listq.queue
|
|
Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.70 |
02-Jan-2008 |
ad |
branches: 1.70.6; 1.70.8; 1.70.10; 1.70.12; Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.69 |
01-Dec-2007 |
yamt |
branches: 1.69.2; 1.69.6; constify pagerops.
|
| 1.68 |
01-Dec-2007 |
yamt |
use designated initiaizers for uvm_pagerops.
|
|
Revision tags: jmcneill-base bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base
|
| 1.67 |
11-Oct-2007 |
ad |
branches: 1.67.4; Remove LOCK_ASSERT(!simple_lock_held(&foo));
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base
|
| 1.66 |
21-Jul-2007 |
ad |
branches: 1.66.4; 1.66.6; 1.66.8; 1.66.10; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base
|
| 1.65 |
22-Feb-2007 |
thorpej |
branches: 1.65.4; 1.65.12; TRUE -> true, FALSE -> false
|
| 1.64 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 newlock2-base
|
| 1.63 |
15-Dec-2006 |
yamt |
branches: 1.63.2; put ->K loaned pages on the page queue, so that page loaning doesn't disturb pagedaemon/pdpolicy.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base yamt-splraiseipl-base3 netbsd-4-base
|
| 1.62 |
01-Nov-2006 |
yamt |
remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.61 |
14-Oct-2006 |
yamt |
uvm_loanbreak: transfer dirtiness of the old page to the new page, rather than blindly mark it dirty. fix a part of PR/33513.
|
| 1.60 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.59 |
18-Apr-2006 |
yamt |
branches: 1.59.8; 1.59.10; from Christian Ehrhardt: * uvm_loanzero may call uvm_analloc which will return with anon->an_lock locked. This lock is never dropped by uvm_loanzero and AFAICS the caller doesn't drop it either.
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.58 |
31-Jan-2006 |
yamt |
branches: 1.58.2; 1.58.4; 1.58.6; 1.58.8; 1.58.10; handle "strange" filesystems like layered filesystems and tmpfs, where pgo_get returns pages which don't belong to the uobj. also fix an XXX in uvm_loananon and lock-unlock mismatch in uvm_loanuobj.
PR/28372, PR/32665 (Alan Barrett).
|
| 1.57 |
24-Dec-2005 |
perry |
branches: 1.57.2; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
| 1.56 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.55 |
28-Jun-2005 |
thorpej |
branches: 1.55.2; Make a note about why a large function like uvm_loanentry() can be an inline in this case.
|
| 1.54 |
27-Jun-2005 |
thorpej |
Use ANSI function decls.
|
| 1.53 |
11-May-2005 |
yamt |
allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
| 1.52 |
23-Nov-2004 |
yamt |
introduce UVMHIST_LOANHIST and sprinkle UVMHIST_LOGs.
|
| 1.51 |
21-Nov-2004 |
yamt |
- prevent wired pages from being loaned, rather than just panicking. caller should take care of failure by eg. falling back to dumb copy. PR/23285. - add some related assertions.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.50 |
24-Mar-2004 |
junyoung |
- Nuke __P(). - Drop trailing spaces.
|
| 1.49 |
13-Feb-2004 |
drochner |
make this compile whether DIAGNOSTIC is defined or not
|
| 1.48 |
13-Feb-2004 |
yamt |
when breaking a loan from uobj, insert the replacement page into the same position as the original page on the object memq so that genfs_putpages (and lfs) won't be confused.
noted by Stephan Uphoff (PR/24328)
|
| 1.47 |
13-Feb-2004 |
yamt |
uvm_loanentry: add a missing uvmfault_unlockall.
|
| 1.46 |
30-Jan-2004 |
yamt |
uvm_loanuobjpages: fix a comment.
|
| 1.45 |
07-Jan-2004 |
yamt |
- get pages to loan out in uvm_loanuobjpages() rather than having caller (nfsd, in this case) do so. - tweak locking so that nfs loaned READ works on layered filesystems.
|
| 1.44 |
27-Oct-2003 |
yamt |
uvm_loanzero: - after sleeping for memory, re-check if we have a page. - put the allocated page to pageq to appease UVM_PAGE_TRKOWN. - dequeue the page when doing ->K loan.
|
| 1.43 |
26-Oct-2003 |
yamt |
whitespace.
|
| 1.42 |
03-May-2003 |
yamt |
branches: 1.42.2; - export raw page loan out routine as uvm_loanuobjpages. (for nfsd) - put code for loan-breaking into a function, uvm_loanbreak.
|
| 1.41 |
05-Mar-2003 |
thorpej |
Implement a minimal pager for the uvm_loanzero_object, which simply has a "put" method which reactivates or dequeues the page.
Need for pager pointed out by enami tsugutomo.
|
| 1.40 |
04-Mar-2003 |
thorpej |
Fix the following pathological scanario: * User allocates ZFOD region, but does not actually touch the buffer to fault in the pages. * In a loop, user writes this buffer to a network socket, triggering sosend_loan(). * uvm_loan() calls uvm_loanzero() once for each page in the loaned region (since the pages have not yet faulted in). This causes a page to be allocated and zero'd. The result is the kernel spends a lot of time allocating and zero'ing pages.
This fixes creates a special object which owns a single zero'd page. This single zero'd page is used to satisfy all loans of non-resident ZFOD mappings.
Thanks to Allen Briggs for discovering the problem and for providing an initial patch.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge gehenna-devsw-base kqueue-base
|
| 1.39 |
14-Jul-2002 |
chs |
when dropping a kernel loan, if this was the last loan-to-kernel but the page is still loaned to an anon, we should put the page back on a paging queue. this is because while pages loaned to the kernel really do need to stay resident (since the kernel is accessing the physical memory directly), pages loaned to anons can be paged out just fine. (the page will be paged out twice, first to the object and then again to the anon, but after that the page can be reused.)
|
| 1.38 |
29-May-2002 |
enami |
Add missing pageq lock while uvm_pagefree() is called (either directly or indirectly). Reviewed by chuq.
|
|
Revision tags: netbsd-1-6-base
|
| 1.37 |
07-May-2002 |
enami |
branches: 1.37.2; 1.37.4; Fetch the right page from a file even if it is mapped from middle of it. This makes `tail -<N> <FILE> | cat > file' correctly, where <FILE> is a regular file larger than 10Mbytes (makes tail to map part of file) and <N> is big enough to produce output larger than 8kbytes (makes pipe to use page loan facility). Problem reported by FUKAUMI Naoki on japanese local mailing list.
|
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
| 1.36 |
31-Dec-2001 |
chs |
fix locking for loaning. in general we should be looking at the page's uobject and uanon pointers rather than at the PQ_ANON flag to determine which lock to hold, since PQ_ANON can be clear even when the anon's lock is the one which we should hold (if the page was loaned from an object and then freed by the object).
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.35 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.34 |
06-Nov-2001 |
chs |
several changes prompted by loaning problems: - fix the loaned case in uvm_pagefree(). - redo uvmexp.swpgonly accounting to work with page loaning. add an assertion before each place we adjust uvmexp.swpgonly. - fix uvm_km_pgremove() to always free any swap space associated with the range being removed. - get rid of UVM_LOAN_WIRED flag. instead, we just make sure that pages loaned to the kernel are never on the page queues. this allows us to assert that pages are not loaned and wired at the same time. - add yet more assertions.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2
|
| 1.33 |
22-Sep-2001 |
jdolecek |
branches: 1.33.2; add new UVM_LOAN_WIRED flag - the memory pages loaned in TOPAGE case are only wired if this flag is present (i.e. they are not wired by default now) loaned pages are unloaned via new uvm_unloan(), uvm_unloananon() and uvm_unloanpage() are no longer exported adjust uvm_unloanpage() to unwire the pages if UVM_LOAN_WIRED is specified mark uvm_loanuobj() and uvm_loanzero() static also in function implementation
kern/sys_pipe.c: uvm_unloanpage() --> uvm_unloan()
|
|
Revision tags: post-chs-ubcperf
|
| 1.32 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.31 |
27-Aug-2001 |
chuck |
branches: 1.31.2; handle a locking problem where the second (or later) call in the loanentry loop returns 0. loanentry was returning >0, but was unlocking the maps (because of the zero). reworked to avoid this. problem reported by chuck silvers. also clarify a comment that jdolecek asked about.
|
| 1.30 |
18-Aug-2001 |
chs |
when fetching an object page to loan out, do so synchronously.
|
| 1.29 |
25-May-2001 |
chs |
branches: 1.29.2; remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.28 |
10-Apr-2001 |
chuck |
fix locking problem noted by Jaromir Dolecek. also, add more comments on locking rules to make code easier to understand. locking in uvm_loananon still needs some work on fringe cases where anon's page is actually on loan from a uobj.
|
| 1.27 |
09-Apr-2001 |
jdolecek |
Upon Chuck Cranor request, revert rev. 1.26. There is indeed a bug in way locking is done, but this fix is not the right way to fix it.
|
| 1.26 |
08-Apr-2001 |
jdolecek |
Remove superflous uvmfault_unlockmaps() in uvm_loan(), only call it if uvm_loanentry() returned 0; otherwise, the unlocking would already have been done by uvmfault_unlockall() call in uvm_loanentry(). Okay'ed by Chuck Silvers
|
| 1.25 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.24 |
10-Mar-2001 |
chs |
eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
| 1.23 |
23-Jan-2001 |
thorpej |
branches: 1.23.2; Change uvm_analloc() to return a locked anon, update all callers, and fix an anon locking protocol error in uvm_loanzero().
|
| 1.22 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.21 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.20 |
10-Apr-2000 |
thorpej |
Use UVM_PGA_ZERO in a few (easy) places.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base
|
| 1.19 |
12-Sep-1999 |
chs |
branches: 1.19.2; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
|
Revision tags: chs-ubc2-base
|
| 1.18 |
22-Jul-1999 |
thorpej |
Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.17 |
03-Jun-1999 |
thorpej |
Just say no to interrupt-safe maps.
|
| 1.16 |
27-May-1999 |
thorpej |
Change the main comment block to indicate why PMAP_NEW (specifically, pmap_kenter*()) is not required for {O,A}->K page loans.
|
| 1.15 |
11-Apr-1999 |
chs |
add a `flags' argument to uvm_pagealloc_strat(). define a flag UVM_PGA_USERESERVE to allow non-kernel object allocations to use pages from the reserve. use the new flag for allocations in pmap modules.
|
|
Revision tags: netbsd-1-4-base
|
| 1.14 |
25-Mar-1999 |
mrg |
branches: 1.14.2; remove now >1 year old pre-release message.
|
| 1.13 |
24-Jan-1999 |
chuck |
cleanup/reorg: - break anon related functions out of uvm_amap.c and put them in their own file (uvm_anon.c). includes break up uvm_anon_init into an amap and an an anon init function - ensure that only functions within the amap module access amap structure fields (add macros to amap api as needed)
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.12 |
04-Nov-1998 |
chs |
branches: 1.12.2; be consistent with locking of amaps and anons when freeing them.
|
| 1.11 |
18-Oct-1998 |
chs |
shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.10 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - update uvm_faultinfo's rvaddr to orig_rvaddr to match changes from uvm_fault.h
|
| 1.9 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.8 |
05-May-1998 |
kleink |
branches: 1.8.2; Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
| 1.7 |
22-Mar-1998 |
chuck |
remove tmpwire arg from uvm_pagewire() -- it isn't needed anymore. noted by chuck s.
|
| 1.6 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
fix typoes in locking.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.17 |
02-Feb-2011 |
chuck |
branches: 1.17.4; udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
| 1.16 |
02-Feb-2010 |
uebayasi |
branches: 1.16.4; 1.16.6; 1.16.8; Don't pass an unnecessary reference to uvm_loanbreak_anon().
Requested by rmind@.
|
| 1.15 |
02-Feb-2010 |
uebayasi |
Move A->K loan break code to uvm_loan.c.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase nick-csl-alignment-base5 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base matt-armv6-nbase jmcneill-base netbsd-4-0-RC4 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.14 |
11-Dec-2005 |
christos |
branches: 1.14.74; merge ktrace-lwp.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 yamt-readahead-base3 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 yamt-readahead-base2 netbsd-3-0-RC2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base netbsd-3-0-RC1 yamt-vop-base3 netbsd-2-0-3-RELEASE yamt-vop-base2 thorpej-vnode-attr-base netbsd-2-1-RELEASE yamt-vop-base netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base ktrace-lwp-base
|
| 1.13 |
24-Mar-2004 |
junyoung |
Nuke __P().
|
| 1.12 |
07-Jan-2004 |
yamt |
- get pages to loan out in uvm_loanuobjpages() rather than having caller (nfsd, in this case) do so. - tweak locking so that nfs loaned READ works on layered filesystems.
|
| 1.11 |
03-May-2003 |
yamt |
branches: 1.11.2; - export raw page loan out routine as uvm_loanuobjpages. (for nfsd) - put code for loan-breaking into a function, uvm_loanbreak.
|
| 1.10 |
04-Mar-2003 |
thorpej |
Fix the following pathological scanario: * User allocates ZFOD region, but does not actually touch the buffer to fault in the pages. * In a loop, user writes this buffer to a network socket, triggering sosend_loan(). * uvm_loan() calls uvm_loanzero() once for each page in the loaned region (since the pages have not yet faulted in). This causes a page to be allocated and zero'd. The result is the kernel spends a lot of time allocating and zero'ing pages.
This fixes creates a special object which owns a single zero'd page. This single zero'd page is used to satisfy all loans of non-resident ZFOD mappings.
Thanks to Allen Briggs for discovering the problem and for providing an initial patch.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base kqueue-base
|
| 1.9 |
06-Nov-2001 |
chs |
several changes prompted by loaning problems: - fix the loaned case in uvm_pagefree(). - redo uvmexp.swpgonly accounting to work with page loaning. add an assertion before each place we adjust uvmexp.swpgonly. - fix uvm_km_pgremove() to always free any swap space associated with the range being removed. - get rid of UVM_LOAN_WIRED flag. instead, we just make sure that pages loaned to the kernel are never on the page queues. this allows us to assert that pages are not loaned and wired at the same time. - add yet more assertions.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2
|
| 1.8 |
22-Sep-2001 |
jdolecek |
branches: 1.8.2; add new UVM_LOAN_WIRED flag - the memory pages loaned in TOPAGE case are only wired if this flag is present (i.e. they are not wired by default now) loaned pages are unloaned via new uvm_unloan(), uvm_unloananon() and uvm_unloanpage() are no longer exported adjust uvm_unloanpage() to unwire the pages if UVM_LOAN_WIRED is specified mark uvm_loanuobj() and uvm_loanzero() static also in function implementation
kern/sys_pipe.c: uvm_unloanpage() --> uvm_unloan()
|
|
Revision tags: netbsd-1-5-PATCH003 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 thorpej_scsipi_beforemerge thorpej_scsipi_nbase netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base thorpej_scsipi_base chs-ubc2-base
|
| 1.7 |
21-Jun-1999 |
thorpej |
branches: 1.7.14; 1.7.16; 1.7.18; Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.6 |
25-Mar-1999 |
mrg |
branches: 1.6.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.5 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.4 |
10-Feb-1998 |
perry |
branches: 1.4.2; add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
| 1.429 |
11-Dec-2025 |
andvar |
Fix various typos in comments.
|
| 1.428 |
19-Nov-2025 |
andvar |
remove an extra whitespace before else keyword.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| 1.427 |
27-Apr-2025 |
riastradh |
posix_spawn(2): Allocate a new vmspace at process creation time.
This allocates a new vmspace for the process at the time the new process is created, rather than sharing some other vmspace temporarily. This eliminates any risk of anything bad happening due to temporary sharing, since there isn't any sharing.
Resolves a race to where:
1. we set up the child to share proc0.p_vmspace at first,
2. another process tries to read the new child's psstrings via kern.proc_args.<childpid>.argv or similar with the child's p_reflock held and gets stuck in a uvm fault loop because proc0.p_vmspace doesn't have the child's psstrings address (inherited from the parent) mapped,
3. the child is waiting for p_reflock before it can replace its p_vmspace or psstrings.
By allocating the vmspace up front, with no mappings in it, we avoid exposing the child in this scenario. Minor possible downside is that sysctl kern.proc_args.<childpid>.argv might spuriously fail with EFAULT during this time (rather than fail with EBUSY as it does if p_reflock is held concurrently) but that's not a particularly big deal.
Patch and first paragraph of commit message written by chs@; minor tweaks to comments -- and any mistakes in the analysis -- by me.
PR kern/59037: deadlock in posix_spawn PR kern/59175: posix_spawn hang, hanging other process too
|
| 1.426 |
16-Aug-2024 |
riastradh |
uvm_map(9): Make KASSERTMSG unconditional for findspace invariants.
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.425 |
15-Aug-2024 |
riastradh |
uvm_map(9): Apply the same orig_hint clamp again to the same entry.
Previous change dealt with case like length=0x1000 and:
[0x7defb000,0x7defc000) entry above orig_hint (entry->next) 0x77895000 orig_hint [0x77894000,0x77895000) entry below orig_hint (entry)
by changing
entry->next->start - length
to
MIN(orig_hint, entry->next->start - length)
in order to enforce monotonicity of search.
In this case, if the tree search for a gap has failed, we retry with a list search with exactly the same orig_hint and entry -- nothing has changed them (only hint and tmp). So apply the same clamping.
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.424 |
14-Aug-2024 |
rin |
uvm_map: Fix build failure with DIAGNOSTIC for rev 1.422
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.423 |
14-Aug-2024 |
riastradh |
uvm_map(9): Make sure search in the nearest gap is monotonic.
The algorithm, on a hint clamped to the VM bounds, works as follows (assuming topdown VM):
1. Make sure the hint is aligned, by subtracting the remainderin uvm_map_align_va.
2. If the hint is equal to the VM max, try the first free gap.
3. If the hint is not equal to the VM max, but is already in use, try the next gap _below_ the entry covering hint.
4. If the hint is not equal to the VM max and is not already in use, try gap between the entry below hint and the next entry after it, above hint.
In the last case, `entry' is the one below hint, and `entry->next' is the one above it. We would take
entry->next->start - length
as the next candidate hint.
However, this algorithm is supposed to be a monotonic search through the address space, and we might wind up with something like:
[0x7defb000,0x7defc000) entry above hint (entry->next) 0x77895000 hint [0x77894000,0x77895000) entry below hint (entry)
In this case, if length=0x1000, we would take
0x7defb000 - 0x1000 = 0x7defa000
as the next candidate hint, but this violates monotonicity of the search.
Instead, take the _smallest_ of orig_hint or entry->next->start - length, to avoid violating monotonicity, so hint <= orig_hint.
I didn't commit this change before because it didn't seem to fix all the manifestations of the problem, but we have more diagnostics now so maybe we will find there is a _different_ violation of the same invariants once this is committed -- and I'm pretty sure this change is necessary to guarantee monotonicity in some cases (but I'm still not sure why we're only hitting the problem on sh3).
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.422 |
14-Aug-2024 |
riastradh |
uvm_map(9): Show the next entry when findspace invariants fail too.
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.421 |
14-Aug-2024 |
riastradh |
uvm_map(9): Take vm map lock around uvm_unmap_remove.
This was tripping one of the assertions I added. While it is safe here not to hold the lock -- caller has exclusive access to the map at this point -- it is better if we can annotate the functions in question with executable notes about locking rules, and taking a single uncontended lock in the vm map destruction path is probably a tiny cost worth those executable notes.
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.420 |
14-Aug-2024 |
riastradh |
uvm_map(9): Show the entry in findspace invariants.
No functional change intended in the non-crash3 case.
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.419 |
14-Aug-2024 |
riastradh |
uvm_map(9): Avoid potential arithmetic overflow.
Should be harmless in this case because vaddr_t is unsigned, so there's no undefined behaviour here, but let's make it unnecessary to wonder whether overflow is a problem.
No functional change intended.
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.418 |
14-Aug-2024 |
riastradh |
uvm_map(9): Assert another loop invariant in entry lookup.
No functional change intended.
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.417 |
13-Aug-2024 |
riastradh |
Redo uvm_map.c 1.414 without the null pointer dereference.
uvm_map(9): Sprinkle assertions and interface contract comments.
No functional change intended.
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.416 |
13-Aug-2024 |
riastradh |
Revert uvm_map.c 1.414.
This was:
uvm_map(9): Sprinkle assertions and interface contract comments.
Apparently, you have to actually test changes, not just prove they are correct. Who knew??
(And the incantation `No functional change intended.' didn't work either!)
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.415 |
13-Aug-2024 |
riastradh |
uvm_map(9): Sprinkle invariant assertions into uvm_map_space_avail.
No functional change intended.
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.414 |
13-Aug-2024 |
riastradh |
uvm_map(9): Sprinkle assertions and interface contract comments.
No functional change intended.
PR kern/51254: uvm assertion "!topdown || hint <= orig_hint" failed
|
| 1.413 |
16-Jul-2024 |
uwe |
uvm_findspace_invariants: don't repeat the message three times
The topdown and bottomup messages were exactly the same and sh3 printf hack added the third copy. Restructure the code so that there's only one message and make the message more obvious - the topdown condition in the assertions was confusing b/c it's inverted (!topdown || ... means it's the topdown map).
PR 51254
|
| 1.412 |
15-Jul-2024 |
riastradh |
uvm_map.c: Fix kassertmsg/printf newline mismatch in PR 51254 note.
|
|
Revision tags: perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.411 |
09-Feb-2024 |
andvar |
branches: 1.411.2; fix spelling mistakes, mainly in comments and log messages.
|
|
Revision tags: thorpej-ifq-base thorpej-altq-separation-base
|
| 1.410 |
23-Sep-2023 |
ad |
Repply this change with a couple of bugs fixed:
- Do away with separate pool_cache for some kernel objects that have no special requirements and use the general purpose allocator instead. On one of my test systems this makes for a small (~1%) but repeatable reduction in system time during builds presumably because it decreases the kernel's cache / memory bandwidth footprint a little. - vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
|
| 1.409 |
12-Sep-2023 |
ad |
Back out recent change to replace pool_cache with then general allocator. Will return to this when I have time again.
|
| 1.408 |
10-Sep-2023 |
ad |
- Do away with separate pool_cache for some kernel objects that have no special requirements and use the general purpose allocator instead. On one of my test systems this makes for a small (~1%) but repeatable reduction in system time during builds presumably because it decreases the kernel's cache / memory bandwidth footprint a little. - vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
|
| 1.407 |
03-Aug-2023 |
rin |
uvm_findspace(): For sh3, convert a KASSERTMSG(9) into printf(9)
XXX Work around for PR kern/51254 until it gets fixed.
With this change, landisk survives full ATF with DIAGNOSTIC enabled.
|
| 1.406 |
15-May-2023 |
chs |
uvm: avoid a deadlock in uvm_map_clean()
The locking order between map locks and page "busy" locks is that the page "busy" lock comes first, but uvm_map_clean() breaks this rule by holding a map locked (as reader) while waiting for page "busy" locks.
If another thread is in the page-fault path holding a page "busy" lock while waiting for the map lock (as a reader) and at the same time a third thread is blocked waiting for the map lock as a writer (which blocks the page-fault thread), then these three threads will all deadlock with each other.
Fix this by marking the map "busy" (to block any modifications) and unlocking the map lock before possibly waiting for any page "busy" locks.
Martin Pieuchot reported that the same problem existed in OpenBSD he applied this fix there after several people tested it.
fixes PR 56952
|
| 1.405 |
24-Mar-2023 |
skrll |
Unwrap. NFCI.
|
| 1.404 |
27-Feb-2023 |
riastradh |
uvm(9): KASSERT(A && B) -> KASSERT(A); KASSERT(B)
While here, print some of the inputs with KASSERTMSG.
|
|
Revision tags: netbsd-10-base
|
| 1.403 |
23-Nov-2022 |
riastradh |
branches: 1.403.2; mmap(2): Avoid arithmetic overflow in search for free space.
PR kern/56900
Reported-by: syzbot+3833ae1d38037a263d05@syzkaller.appspotmail.com https://syzkaller.appspot.com/bug?id=e542bcf59b2564cca1cb38c12f076fb08dcac37e
|
|
Revision tags: bouyer-sunxi-drm-base
|
| 1.402 |
08-Jun-2022 |
macallan |
initialize a variable to appease clang
|
| 1.401 |
06-Jun-2022 |
rin |
PR kern/51254 uvm_map_findspace(): Output current value of "entry" when KASSERT fires.
|
| 1.400 |
05-Jun-2022 |
riastradh |
uvm(9): Sprinkle assertions into uvm_map_findspace.
May help to diagnose PR kern/51254.
|
| 1.399 |
05-Jun-2022 |
riastradh |
uvm(9): Don't duplicate vm_map_min/max in `show map' output.
Didn't notice these were already there, oops!
|
| 1.398 |
04-Jun-2022 |
riastradh |
uvm(9): Sprinkle more info into hint/orig_hint assertions.
May help to diagnose PR kern/51254.
|
| 1.397 |
04-Jun-2022 |
riastradh |
uvm(9): Print min/max address and first_free entry in ddb `show map'.
May help to diagnose PR kern/51254.
|
| 1.396 |
04-Jun-2022 |
riastradh |
uvm(9): Fix mmap optimization for topdown case.
PR kern/51393
|
| 1.395 |
04-Jun-2022 |
riastradh |
uvm(9): Fix 19-year-old bug in assertion about mmap hint.
Previously this would _first_ remember the original hint, and _then_ clamp the hint to the VM map's range:
orig_hint = hint; if (hint < vm_map_min(map)) { /* check ranges ... */ if (flags & UVM_FLAG_FIXED) { UVMHIST_LOG(maphist,"<- VA below map range",0,0,0,0); return (NULL); } hint = vm_map_min(map); ... KASSERTMSG(!topdown || hint <= orig_hint, "hint: %#jx, orig_hint: %#jx", (uintmax_t)hint, (uintmax_t)orig_hint);
Even if nothing else happens in the ellipsis, taking the branch guarantees the assertion will fail in the topdown case.
|
| 1.394 |
10-Apr-2022 |
andvar |
fix various typos in comments and output/log messages.
|
| 1.393 |
09-Apr-2022 |
riastradh |
sys: Use membar_release/acquire around reference drop.
This just goes through my recent reference count membar audit and changes membar_exit to membar_release and membar_enter to membar_acquire -- this should make everything cheaper on most CPUs without hurting correctness, because membar_acquire is generally cheaper than membar_enter.
|
| 1.392 |
12-Mar-2022 |
riastradh |
sys: Membar audit around reference count releases.
If two threads are using an object that is freed when the reference count goes to zero, we need to ensure that all memory operations related to the object happen before freeing the object.
Using an atomic_dec_uint_nv(&refcnt) == 0 ensures that only one thread takes responsibility for freeing, but it's not enough to ensure that the other thread's memory operations happen before the freeing.
Consider:
Thread A Thread B obj->foo = 42; obj->baz = 73; mumble(&obj->bar); grumble(&obj->quux); /* membar_exit(); */ /* membar_exit(); */ atomic_dec -- not last atomic_dec -- last /* membar_enter(); */ KASSERT(invariant(obj->foo, obj->bar)); free_stuff(obj);
The memory barriers ensure that
obj->foo = 42; mumble(&obj->bar);
in thread A happens before
KASSERT(invariant(obj->foo, obj->bar)); free_stuff(obj);
in thread B. Without them, this ordering is not guaranteed.
So in general it is necessary to do
membar_exit(); if (atomic_dec_uint_nv(&obj->refcnt) != 0) return; membar_enter();
to release a reference, for the `last one out hit the lights' style of reference counting. (This is in contrast to the style where one thread blocks new references and then waits under a lock for existing ones to drain with a condvar -- no membar needed thanks to mutex(9).)
I searched for atomic_dec to find all these. Obviously we ought to have a better abstraction for this because there's so much copypasta. This is a stop-gap measure to fix actual bugs until we have that. It would be nice if an abstraction could gracefully handle the different styles of reference counting in use -- some years ago I drafted an API for this, but making it cover everything got a little out of hand (particularly with struct vnode::v_usecount) and I ended up setting it aside to work on psref/localcount instead for better scalability.
I got bored of adding #ifdef __HAVE_ATOMIC_AS_MEMBAR everywhere, so I only put it on things that look performance-critical on 5sec review. We should really adopt membar_enter_preatomic/membar_exit_postatomic or something (except they are applicable only to atomic r/m/w, not to atomic_load/store_*, making the naming annoying) and get rid of all the ifdefs.
|
| 1.391 |
25-Nov-2021 |
skrll |
More / improved debug
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base
|
| 1.390 |
01-Jul-2021 |
chs |
in uvm_mapent_forkzero(), if the old entry was an object mapping, appease a debug check by setting the new entry offset to zero along with setting the new entry object pointer to NULL.
Reported-by: syzbot+de8e4b223a3838c7307b@syzkaller.appspotmail.com Reported-by: syzbot+efaea991addfdcc5abd4@syzkaller.appspotmail.com Reported-by: syzbot+15d1e19dff9209c2e40b@syzkaller.appspotmail.com
|
| 1.389 |
20-Jun-2021 |
mrg |
remove diag-only printf() that fires when an unlinked file is mmapped and someone runs ps(1) or similar.
|
|
Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base
|
| 1.388 |
17-Apr-2021 |
mrg |
branches: 1.388.2; fix error in previous: UVMHIST_PDHIST_SIZE needs to stay next to pdhistbuf[].
|
|
Revision tags: thorpej-cfargs-base
|
| 1.387 |
17-Apr-2021 |
mrg |
remove KERNHIST_INIT_STATIC(). it stradles the line between usable early in boot and broken early in boot by requiring a partly static structure with another structure that must be present by the time any uses are performed. theoretically platform code could allocate a chunk while seting up memory and assign it here, giving a dynamic sizing for the entry list, but the reality is that all users have a statically allocated entry list as well.
the existing KERNHIST_LINK_STATIC() is used in conjunction with KERNHIST_INITIALIZER() instead.
this stops a NULL pointer deref when the _LOG() macro is called before the storage is linked in, which happens with GCC 10 on OCTEON with UVMHIST enabled, crashing in very early kernel init.
|
|
Revision tags: thorpej-futex-base
|
| 1.386 |
13-Mar-2021 |
skrll |
branches: 1.386.2; Consistently use %#jx instead of 0x%jx or just %jx in UVMHIST_LOG formats
|
| 1.385 |
09-Jul-2020 |
skrll |
branches: 1.385.2; Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.384 |
30-May-2020 |
maxv |
Avoid passing file paths in panic strings, this results in extra long output that is annoying and that syzbot classifies as independent reports due to the instances having different build paths.
|
| 1.383 |
09-May-2020 |
thorpej |
Make the uvm_voaddr structure more compact, only occupying 2 pointers worth of space, by encoding the type in the lower bits of the object pointer.
|
| 1.382 |
30-Apr-2020 |
thorpej |
- In uvm_voaddr_acquire(), take an extra hold on the anon lock obj. - In uvm_voaddr_release(), if the anon ref count drops to 0, call uvm_anfree() rather than uvm_anon_release(). Unconditionally drop the anon lock, and release the extra hold on the anon lock obj.
Fixes a panic that occurs if the backing store for a futex backed by an anon memory location is unmapped while a thread is waiting in the futex.
Add a test case that reproduced the panic to verify that it's fixed.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
| 1.381 |
19-Apr-2020 |
skrll |
Fix UVMHIST_LOG compile on 32bit platforms
|
| 1.380 |
18-Apr-2020 |
riastradh |
Fix trailing whitespace.
|
| 1.379 |
18-Apr-2020 |
thorpej |
Add an API to get a reference on the identity of an individual byte of virtual memory, a "virtual object address". This is not a reference to a physical byte of memory, per se, but a reference to a byte residing in a page, owned by a unique UVM object (either a uobj or an anon). Two separate address+addresses space tuples that reference the same byte in an object (such as a location in a shared memory segment) will resolve to equivalent virtual object addresses. Even if the residency status of the page changes, the virtual object address remains unchanged.
struct uvm_voaddr -- a structure that encapsulates this address reference.
uvm_voaddr_acquire() -- a function to acquire this address reference, given a vm_map and a vaddr_t.
uvm_voaddr_release() -- a function to release this address reference.
uvm_voaddr_compare() -- a function to compare two such address references.
uvm_voaddr_acquire() resolves the COW status of the object address before acquiring.
In collaboration with riastradh@ and chs@.
|
|
Revision tags: phil-wifi-20200411
|
| 1.378 |
10-Apr-2020 |
ad |
uvmspace_exec(): set VM_MAP_DYING for the duration, so pmap_update() is not called until the pmap has been totally cleared out after pmap_remove_all(), or it can confuse some pmap implementations.
|
|
Revision tags: bouyer-xenpvh-base phil-wifi-20200406
|
| 1.377 |
04-Apr-2020 |
ad |
branches: 1.377.2; Mark uvm_map_entry_cache with PR_LARGECACHE.
|
| 1.376 |
22-Mar-2020 |
ad |
Process concurrent page faults on individual uvm_objects / vm_amaps in parallel, where the relevant pages are already in-core. Proposed on tech-kern.
Temporarily disabled on MP architectures with __HAVE_UNLOCKED_PMAP until adjustments are made to their pmaps.
|
| 1.375 |
20-Mar-2020 |
ad |
Go back to freeing struct vm_anon one by one. There may have been an advantage circa ~2008 but there isn't now.
|
| 1.374 |
14-Mar-2020 |
ad |
uvm_map_lookup_entry(): save the hint even on failure, since code elsewhere relies on it pointing to the previous entry.
|
| 1.373 |
14-Mar-2020 |
ad |
- uvmspace_exec(), uvmspace_free(): if pmap_remove_all() returns true the pmap is emptied. Pass UVM_FLAG_VAONLY when clearing out the map and avoid needless extra work to tear down each mapping individually.
- uvm_map_lookup_entry(): remove the code to do a linear scan of map entries for small maps, in preference to using the RB tree. It's questionable, and I think the code is almost never triggered because the average number of map entries has probably exceeded the hard-coded threshold for quite some time.
- vm_map_entry: get it aligned on a cacheline boundary, and cluster fields used during rbtree lookup at the beginning.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.372 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.371 |
12-Jan-2020 |
ad |
- uvm_unmap_remove(): need to call pmap_update() with the object still locked, otherwise the page could gain a new identity and still be visible via a stale mapping.
- Adjust reference counts with atomics.
|
|
Revision tags: ad-namecache-base
|
| 1.370 |
05-Jan-2020 |
para |
branches: 1.370.2; remove unused predicate function
likely unused since kmem changes
|
| 1.369 |
31-Dec-2019 |
ad |
- Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.368 |
27-Dec-2019 |
msaitoh |
s/referece/reference/ in comment.
|
| 1.367 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
|
Revision tags: phil-wifi-20191119
|
| 1.366 |
01-Nov-2019 |
rin |
Fix previous; semantics of align argument of uvm_map() is different when UVM_FLAG_COLORMATCH is specified.
Should fix PR kern/54669.
|
| 1.365 |
01-Nov-2019 |
rin |
PR kern/54395
- Align hint for virtual address at the beginning of uvm_map() if required. Otherwise, it will be rounded up/down in an unexpected way by uvm_map_space_avail(), which results in assertion failure.
Fix kernel panic when executing earm binary (8KB pages) on aarch64 (4KB pages), which relies on mmap(2) with MAP_ALIGNED flag.
- Use inline functions/macros consistently.
- Add some more KASSERT's.
For more details, see the PR as well as discussion on port-kern: http://mail-index.netbsd.org/tech-kern/2019/10/27/msg025629.html
|
| 1.364 |
10-Aug-2019 |
mrg |
KASSERT -> KASSERTMSG so we actually display the overflowed values.
|
| 1.363 |
01-Aug-2019 |
riastradh |
Remove last trace of never-used map_attrib.
|
|
Revision tags: netbsd-9-base
|
| 1.362 |
12-Jul-2019 |
mlelstv |
branches: 1.362.2; Add missing lock around pmap_protect. ok, chs@
Reported-by: syzbot+6bfd0be70896fc9e9a3d@syzkaller.appspotmail.com
|
| 1.361 |
11-Jul-2019 |
maxv |
Fix info leak: 'map_attrib' is not used in UVM, and contains uninitialized heap garbage. Return zero. Maybe we should remove the field completely.
|
|
Revision tags: phil-wifi-20190609
|
| 1.360 |
08-Jun-2019 |
chs |
in uvm_map_protect(), do a pmap_update() before possibly switching from removing pmap entries to creating them. this fixes the problem reported in https://syzkaller.appspot.com/bug?id=cc89e47f05e4eea2fd69bcccb5e837f8d1ab4d60
|
|
Revision tags: isaki-audio2-base
|
| 1.359 |
14-Mar-2019 |
kre |
Avoid a panic from the sequence
mlock(buf, 0); munlock(buf, 0); mlock(buf, page); munlock(buf, page);
where buf is page aligned, and page is actually anything > 0 (but not too big) which will get rounded up to the next multiple of the page size.
In that sequence, it is possible that the 1st munlock() is optional.
Add a KASSERT() (or two) to detect the first effects of the problem (without that, or in !DIAGNOSTIC kernels) the problem eventually causes some kind of problem or other (most often still a panic.)
After this, mlock(anything, 0) (or munlock) validates "anything" but is otherwise a no-op (regardless of the alignment of anything).
Also, don't treat mlock(buf, verybig) as equivalent to mlock(buf, 0) which is (more or less) what we had been doing.
XXX pullup -8 (maybe -7 as well, need to check).
|
| 1.358 |
03-Mar-2019 |
maxv |
Fix bug, the entry we're iterating on is 'current', not 'entry'. Here only the first entry gets wired in.
|
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
|
| 1.357 |
17-Dec-2018 |
kamil |
Raise the fill_vmentries() E2BIG limit from 1MB to 10MB
The previous limit was not enough for libFuzzer as it requires up to 2.5MB in test-suite.
Alternative approaches to retrieve larger address map during happened to be worse during the evaluation due to difficulties in locking and atomicity.
Discussed with <christos>
|
|
Revision tags: pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930
|
| 1.356 |
12-Sep-2018 |
maxv |
Remove this check, it has never protected against mmap on page zero, and has since been replaced by the code in exec_vm_minaddr.
|
|
Revision tags: pgoyette-compat-0906
|
| 1.355 |
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
|
Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
| 1.354 |
06-Feb-2018 |
mrg |
branches: 1.354.2; 1.354.4; uvm_map_extract() has an indentation issue.
|
|
Revision tags: tls-maxphys-base-20171202
|
| 1.353 |
28-Oct-2017 |
pgoyette |
Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
| 1.352 |
01-Oct-2017 |
pgoyette |
Fix user-triggerable kernel crash as reported in PR kern/52573 (from Bruno Haible).
XXX Pull-up to netbsd-8
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
|
| 1.351 |
30-May-2017 |
chs |
branches: 1.351.2; add assertions that would have caught the recent audio mmap bugs.
|
| 1.350 |
23-May-2017 |
christos |
sprinkle __diagused to fix the powerpc build, which is not DIAGNOSTIC.
|
| 1.349 |
20-May-2017 |
chs |
MAP_FIXED means something different for mremap() than it does for mmap(), so we cannot use UVM_FLAG_FIXED to specify both behaviors. keep UVM_FLAG_FIXED with its earlier meaning (prior to my previous change) of whether to use uvm_map_findspace() to locate space for the new mapping or to use the hint address that the caller passed in, and add a new flag UVM_FLAG_UNMAP to indicate that any existing entries in the range should be unmapped as part of creating the new mapping. the new UVM_FLAG_UNMAP flag may only be used if UVM_FLAG_FIXED is also specified.
|
| 1.348 |
19-May-2017 |
kamil |
Add missing , to fix syntax
Unbreaks build after recent change adding a message for vm.user_va0_disable
|
| 1.347 |
19-May-2017 |
chs |
make MAP_FIXED mapping operations atomic. fixes PR 52239. previously, unmapping any entries being replaced was done separately from entering the new mapping, which allowed another thread doing a non-MAP_FIXED mapping to allocate the range out from under the MAP_FIXED thread.
|
| 1.346 |
19-May-2017 |
christos |
mention the man page instead of the command.
|
| 1.345 |
19-May-2017 |
christos |
Provide a helpful message to the user trying to run an birary that needs page 0 access.
|
|
Revision tags: prg-localcount2-base3 prg-localcount2-base2
|
| 1.344 |
06-May-2017 |
joerg |
Extend the mmap(2) interface to allow requesting protections for later use with mprotect(2), but without enabling them immediately.
Extend the mremap(2) interface to allow duplicating mappings, i.e. create a second range of virtual addresses references the same physical pages. Duplicated mappings can have different effective protections.
Adjust PAX mprotect logic to disallow effective protections of W&X, but allow one mapping W and another X protections. This obsoletes using temporary files for purposes like JIT.
Adjust PAX logic for mmap(2) and mprotect(2) to fail if W&X is requested and not silently drop the X protection.
Improve test cases to ensure correct operation of the changed interfaces.
|
|
Revision tags: prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
|
| 1.343 |
15-Mar-2017 |
christos |
branches: 1.343.4; PR/52078: Don't panic on 0 allocation, check more bounds.
|
|
Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
| 1.342 |
01-Dec-2016 |
mrg |
branches: 1.342.2; allow the sizes of the maphist and pdhist to be set in the config file via UVMHIST_MAPHIST_SIZE and UVMHIST_PDHIST_SIZE.
|
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914
|
| 1.341 |
06-Aug-2016 |
maxv |
The way the kernel tries to prevent a userland process from allocating page zero is hugely flawed. It is easy to demonstrate that one can trick UVM into chosing a NULL hint after the user_va0_disable check from uvm_map. Such a bypass allows kernel NULL pointer dereferences to be exploitable on architectures with a shared userland<->kernel VA, like amd64.
Fix this by increasing the limit of the vm space made available for userland processes. This way, UVM will never chose a NULL hint, since it would be outside of the vm space.
The user_va0_disable sysctl still controls this feature.
|
|
Revision tags: pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
| 1.340 |
07-Jul-2016 |
msaitoh |
branches: 1.340.2; KNF. Remove extra spaces. No functional change.
|
| 1.339 |
18-Jun-2016 |
martin |
Change two KASSERT to KASSERTMSG to provide better diagnostics.
|
| 1.338 |
01-Jun-2016 |
christos |
Avoid locking issues when copying out requires taking a fault and we are finding out our own maps, by allocating a buffer and copying out after we collected the information.
|
|
Revision tags: nick-nhusb-base-20160529
|
| 1.337 |
25-May-2016 |
christos |
Introduce security.pax.mprotect.ptrace sysctl which can be used to bypass mprotect settings so that debuggers can write to the text segment of traced processes so that they can insert breakpoints. Turned off by default. Ok: chuq (for now)
|
|
Revision tags: nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
|
| 1.336 |
05-Nov-2015 |
pgoyette |
Now that SYSVSHM is modularized, reattach the linkages from uvm so that we can correctly clean up on process exit or fork.
Without this, firefox attaches to a shared memory segment but doesn't detach before exit. Thus once firefox causes an autoload for sysv_ipc it cannot be unloaded since the segment still retains references.
|
| 1.335 |
24-Sep-2015 |
christos |
implement VM_PROC_MAP
|
|
Revision tags: nick-nhusb-base-20150921
|
| 1.334 |
22-Jun-2015 |
matt |
Use %p, %#xl etc. for pointers and addresses.
|
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
| 1.333 |
01-Feb-2015 |
christos |
The diagnostic function uvm_km_check_empty() takes a mutex, so don't call it if we are using UVM_FLAG_NOWAIT.
|
| 1.332 |
23-Jan-2015 |
chs |
skip busy anon pages in uvm_map_clean(). we shouldn't be messing with pages that someone else has busy, and uvm_map_clean() is just advisory for amap mappings.
|
|
Revision tags: nick-nhusb-base
|
| 1.331 |
26-Oct-2014 |
christos |
branches: 1.331.2; Define UVMDEBUG for expensive debugging operations. Idea from chuq.
|
|
Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
| 1.330 |
18-Jul-2014 |
christos |
branches: 1.330.2; Add MAP_INHERIT_ZERO
|
| 1.329 |
18-Jul-2014 |
christos |
Split out the minherit code into separate functions for readability (allows us to indent them properly), and merge the new vm_map_entry creation into a common function to avoid code duplication. No functional change.
|
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
| 1.328 |
05-Mar-2014 |
matt |
branches: 1.328.2; Use UVMHIST_INITIALIZER (KERNHIST_INITIALIZER) to statically initialize maphist. This allows maphist to used very very early in boot well before uvm has been initialized.
|
| 1.327 |
14-Nov-2013 |
martin |
As discussed on tech-kern: make TOPDOWN-VM runtime selectable per process (offer MD code or emulations to override it).
|
| 1.326 |
25-Oct-2013 |
martin |
Mark diagnostic-only variables
|
| 1.325 |
25-Oct-2013 |
martin |
Some pmaps may not consume all arguments of pmap_copy()
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
|
| 1.324 |
02-Nov-2012 |
matt |
branches: 1.324.2; When uvm_io reserves kernel address space, make sure it's starts with the same color as the user address space being copied.
|
|
Revision tags: yamt-pagecache-base6
|
| 1.323 |
29-Oct-2012 |
para |
get rid of not used uvm_map flag (UVM_MAP_KMAPENT)
|
| 1.322 |
04-Sep-2012 |
matt |
branches: 1.322.2; Remove locking since it isn't needed. As soon as the 2nd uvm_map_entry in kernel_map is created, uvm_map_prepare will call pmap_growkernel and the pmap_growkernel call in uvm_km_mem_alloc will never be called again.
|
| 1.321 |
03-Sep-2012 |
matt |
Switch to a spin lock (uvm_kentry_lock) which, fortunately, was sitting there unused.
|
| 1.320 |
03-Sep-2012 |
matt |
Cleanup comment. Change panic to KASSERTMSG. Use kernel_map->misc_lock to make sure we don't call pmap_growkernel concurrently and possibly mess up uvm_maxkaddr.
|
| 1.319 |
18-Aug-2012 |
chs |
avoid leaking a uvm_object reference when merging a new map entry with the entries on both sides. fixes PR 46807.
|
| 1.318 |
30-Jul-2012 |
matt |
-fno-common broke kernhist since it used commons. Add a KERNHIST_DEFINE which is define the kernel history. Change UVM to deal with the new usage.
|
|
Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4
|
| 1.317 |
08-Apr-2012 |
martin |
Rework posix_spawn locking and memory management: - always provide a vmspace for the new proc, initially borrowing from proc0 (this part fixes PR 46286) - increase parallelism between parent and child if arguments allow this, avoiding a potential deadlock on exec_lock - add a new flag for userland to request old (lockstepped) behaviour for better error reporting - adapt test cases to the previous two and add a new variant to test the diagnostics flag - fix a few memory (and lock) leaks - provide netbsd32 compat
|
|
Revision tags: jmcneill-usbmp-base8
|
| 1.316 |
13-Mar-2012 |
elad |
Replace the remaining KAUTH_GENERIC_ISSUSER authorization calls with something meaningful. All relevant documentation has been updated or written.
Most of these changes were brought up in the following messages:
http://mail-index.netbsd.org/tech-kern/2012/01/18/msg012490.html http://mail-index.netbsd.org/tech-kern/2012/01/19/msg012502.html http://mail-index.netbsd.org/tech-kern/2012/02/17/msg012728.html
Thanks to christos, manu, njoly, and jmmv for input.
Huge thanks to pgoyette for spinning these changes through some build cycles and ATF.
|
|
Revision tags: jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3
|
| 1.315 |
20-Feb-2012 |
bouyer |
When using uvm_km_pgremove_intrsafe() make sure mappings are removed before returning the pages to the free pool. Otherwise, under Xen, a page which still has a writable mapping could be allocated for a PDP by another CPU and the hypervisor would refuse it (this is PR port-xen/45975). For this, move the pmap_kremove() calls inside uvm_km_pgremove_intrsafe(), and do pmap_kremove()/uvm_pagefree() in batch of (at most) 16 entries (as suggested by Chuck Silvers on tech-kern@, see also http://mail-index.netbsd.org/tech-kern/2012/02/17/msg012727.html and followups).
|
| 1.314 |
19-Feb-2012 |
rmind |
Remove VM_MAP_INTRSAFE and related code. Not used since the "kmem changes".
|
|
Revision tags: jmcneill-usbmp-base2 netbsd-6-base
|
| 1.313 |
12-Feb-2012 |
martin |
branches: 1.313.2; Fix another merge botch - bracket vm space assignement with kpreempt- disable/enable.
|
| 1.312 |
28-Jan-2012 |
rmind |
pool_page_alloc, pool_page_alloc_meta: avoid extra compare, use const. ffs_mountfs,sys_swapctl: replace memset with kmem_zalloc. sys_swapctl: move kmem_free outside the lock path. uvm_init: fix comment, remove pointless numeration of steps. uvm_map_enter: remove meflagval variable. Fix some indentation.
|
| 1.311 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
| 1.310 |
05-Jan-2012 |
reinoud |
Revert MAP_NOSYSCALLS patch.
|
| 1.309 |
22-Dec-2011 |
reinoud |
Redo uvm_map_setattr() to never fail and remove the possible panic. The possibility of failure was a C&P error.
|
| 1.308 |
20-Dec-2011 |
reinoud |
Add a MAP_NOSYSCALLS flag to mmap. This flag prohibits executing of system calls from the mapped region. This can be used for emulation perposed or for extra security in the case of generated code.
Its implemented by adding mapping-attributes to each uvm_map_entry. These can then be queried when needed.
Currently the MAP_NOSYSCALLS is only implemented for x86 but other architectures are easy to adapt; see the sys/arch/x86/x86/syscall.c patch. Port maintainers are encouraged to add them for their processor ports too. When this feature is not yet implemented for an architecture the MAP_NOSYSCALLS is simply ignored with virtually no cpu cost..
|
| 1.307 |
20-Dec-2011 |
yamt |
comment and assertion
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base
|
| 1.306 |
23-Nov-2011 |
matt |
branches: 1.306.2; When allocating pages for kernel map entries and PMAP_ALLOC_POOLPAGE is defined, use it. (allows a MIPS N32 kernel to boot when there is memory outside of KSEG0).
|
|
Revision tags: jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.305 |
27-Sep-2011 |
jym |
branches: 1.305.2; Modify *ASSERTMSG() so they are now used as variadic macros. The main goal is to provide routines that do as KASSERT(9) says: append a message to the panic format string when the assertion triggers, with optional arguments.
Fix call sites to reflect the new definition.
Discussed on tech-kern@. See http://mail-index.netbsd.org/tech-kern/2011/09/07/msg011427.html
|
| 1.304 |
01-Sep-2011 |
matt |
Forward some UVM from matt-nb5-mips64. Add UVM_KMF_COLORMATCH flag. When uvm_map gets passed UVM_FLAG_COLORMATCH, the align argument contains the color of the starting address to be allocated (0..colormask). When uvm_km_alloc is passed UVM_KMF_COLORMATCH (which can only be used with UVM_KMF_VAONLY), the align argument contain the color of the starting address to be allocated. Change uvm_pagermapin to use this. When mapping user pages in the kernel, if colormatch is used with the color of the starting user page then the kernel mapping will be congruent with the existing user mappings.
|
| 1.303 |
06-Aug-2011 |
rmind |
- Rework uvm_anfree() into uvm_anon_freelst(), which always drops the lock. - Free anons in uvm_anon_freelst() without lock held. - Mechanic sync to unused loaning code.
|
| 1.302 |
30-Jul-2011 |
martin |
Make uvmspace_exec() deal with procs that have no vmspace (yet) at all. Greatly simplifies the upcoming posix_spawn implementation.
|
| 1.301 |
30-Jul-2011 |
martin |
Get rid of #ifdef __sparc__ in uvm code - as noted by cgd back 1996, now that we have __HAVE_CPU_VMSPACE_EXEC/cpu_vmspace_exec().
|
| 1.300 |
05-Jul-2011 |
yamt |
- fix a use-after-free bug in uvm_km_free. (after uvm_km_pgremove frees pages, the following pmap_remove touches them.) - acquire the object lock for operations on pmap_kernel as it can actually be raced with P->V operations. eg. pagedaemon.
|
| 1.299 |
13-Jun-2011 |
rmind |
uvm_map_lock_entry: fix the order of locking. Spotted by yamt@. Also, keep uvm_map_unlock_entry() symmetric.
|
| 1.298 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.297 |
17-May-2011 |
mrg |
branches: 1.297.2; move and rename the uvm history code out of uvm_stat to "kernhist".
rename "UVMHIST" option to enable the uvm histories.
TODO: - make UVMHIST properly depend upon KERNHIST - enable dynamic registration of histories. this is mostly just allocating something in a bitmap, and is only for viewing multiple histories in a merged form.
tested on amd64 and sparc64.
|
| 1.296 |
08-Apr-2011 |
yamt |
comment
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.295 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on second diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base
|
| 1.294 |
04-Jan-2011 |
matt |
branches: 1.294.2; 1.294.4; Add a MD hook to indicate a change of vmspace due to exec. (This is useful to update any cpu flag due to a change to/from a 64bit and a 32bit address space). This can set the state needed for copyout/copyin before setregs is invoked.
|
|
Revision tags: matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
|
| 1.293 |
24-Sep-2010 |
rmind |
Fixes/improvements to RB-tree implementation: 1. Fix inverted node order, so that negative value from comparison operator would represent lower (left) node, and positive - higher (right) node. 2. Add an argument (i.e. "context"), passed to comparison operators. 3. Change rb_tree_insert_node() to return a node - either inserted one or already existing one. 4. Amend the interface to manipulate the actual object, instead of the rb_node (in a similar way as Patricia-tree interface does). 5. Update all RB-tree users accordingly.
XXX: Perhaps rename rb.h to rbtree.h, since cleaning-up..
1-3 address the PR/43488 by Jeremy Huddleston.
Passes RB-tree regression tests. Reviewed by: matt@, christos@
|
|
Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.292 |
22-Jun-2010 |
rmind |
Keep the lock around pmap_update() where required. While fixing this in ubc_fault(), rework logic to "remember" the last object of page and reduce locking overhead, since in common case pages belong to one and the same UVM object (but not always, therefore add a comment).
Unlocks before pmap_update(), on removal of mappings, might cause TLB coherency issues, since on architectures like x86 and mips64 invalidation IPIs are deferred to pmap_update(). Hence, VA space might be globally visible before IPIs are sent or while they are still in-flight.
OK ad@.
|
| 1.291 |
14-May-2010 |
cegger |
Move PMAP_KMPAGE to be used in pmap_kenter_pa flags argument. 'Looks good to me' gimpy@
Forgot to commit this piece in previous commit
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9
|
| 1.290 |
21-Feb-2010 |
drochner |
branches: 1.290.2; rename the va0_disabled option and cpp conditional to "disable" as well, for consistency, and document option and sysctl flag
|
| 1.289 |
20-Feb-2010 |
drochner |
rename the new sysctl to "vm.user_va0_disable", for consistency with the majority of existing sysctl flags, suggested by yamt
|
| 1.288 |
18-Feb-2010 |
drochner |
Disable mapping of virtual address 0 by user programs per default. This blocks an easy exploit of kernel bugs leading to dereference of a NULL pointer on some architectures (eg i386). The check can be disabled in various ways: -by CPP definitions in machine/types.h (portmaster's choice) -by a kernel config option USER_VA0_DISABLED_DEFAULT=0 -at runtime by sysctl vm.user_va0_disabled (cannot be cleared at securelevel>0)
|
| 1.287 |
08-Feb-2010 |
joerg |
Remove separate mb_map. The nmbclusters is computed at boot time based on the amount of physical memory and limited by NMBCLUSTERS if present. Architectures without direct mapping also limit it based on the kmem_map size, which is used as backing store. On i386 and ARM, the maximum KVA used for mbuf clusters is limited to 64MB by default.
The old default limits and limits based on GATEWAY have been removed. key_registered_sb_max is hard-wired to a value derived from 2048 clusters.
|
|
Revision tags: uebayasi-xip-base
|
| 1.286 |
15-Dec-2009 |
matt |
branches: 1.286.2; Use PRIxVADDR... (change a printf/panic -> panic)
|
| 1.285 |
14-Dec-2009 |
matt |
Use PRIxVADDR ...
|
|
Revision tags: matt-premerge-20091211
|
| 1.284 |
07-Nov-2009 |
cegger |
Add a flags argument to pmap_kenter_pa(9). Patch showed on tech-kern@ http://mail-index.netbsd.org/tech-kern/2009/11/04/msg006434.html No objections.
|
|
Revision tags: jym-xensuspend-nbase
|
| 1.283 |
01-Nov-2009 |
uebayasi |
Consistently call amap / uobj layers as upper / lower, because UVM has only those two layers by design. Approved by Chuck Cranor some time ago.
|
|
Revision tags: yamt-nfs-mp-base8
|
| 1.282 |
06-Sep-2009 |
rmind |
uvmspace_unshare: #if 0-out this function. Q: perhaps remove? AFAIK it was not used for 11 years.
|
|
Revision tags: yamt-nfs-mp-base7
|
| 1.281 |
19-Aug-2009 |
matt |
In uvm_kmapent_alloc, Make sure entry is initialized. Spotted by msaitoh.
|
| 1.280 |
18-Aug-2009 |
thorpej |
Move uvm_object-related DDB hooks into uvm_object.c. Put all of the uvm_map-related DDB stuff in one spot in the file.
|
| 1.279 |
18-Aug-2009 |
thorpej |
Move uvm_page-related DDB hooks into uvm_page.c.
|
| 1.278 |
13-Aug-2009 |
matt |
Fix KASSERT() failure reported by Geoff Wing.
|
| 1.277 |
10-Aug-2009 |
matt |
Compare vaddr_t against 0, not NULL.
|
| 1.276 |
09-Aug-2009 |
matt |
If PMAP_MAP_POOLPAGE is defined, use it to map kernel map entries. This avoids TLB pollution on those platforms that define it.
|
| 1.275 |
01-Aug-2009 |
yamt |
- uvm_map_extract: update map->size correctly for !UVM_EXTRACT_CONTIG. - uvm_map_extract: panic on zero-sized entries. - make uvm_map_replace static.
|
| 1.274 |
01-Aug-2009 |
yamt |
don't call uvm_map_check with map unlocked.
|
| 1.273 |
01-Aug-2009 |
yamt |
_uvm_tree_sanity: fix an assertion.
|
| 1.272 |
01-Aug-2009 |
yamt |
_uvm_map_sanity: fix a race which causes "stale hint".
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5
|
| 1.271 |
10-Jun-2009 |
yamt |
on MADV_WILLNEED, start prefetching backing object's pages.
|
|
Revision tags: yamt-nfs-mp-base4 yamt-nfs-mp-base3 jym-xensuspend-base
|
| 1.270 |
03-May-2009 |
pooka |
Include some debug print routines if DEBUGPRINT is defined. This way they can be included without having to include DDB. (arguably all print routines should be behind #ifdef DEBUGPRINT and options DDB should define that macro, but I'll tackle that later)
|
|
Revision tags: nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 nick-hppapmap-base mjf-devfs2-base
|
| 1.269 |
13-Jan-2009 |
yamt |
branches: 1.269.2; vm_map_locked_p: add comments
|
| 1.268 |
20-Dec-2008 |
ad |
Move a couple of calls to pmap_update().
|
| 1.267 |
17-Dec-2008 |
cegger |
kill MALLOC and FREE macros.
|
| 1.266 |
16-Dec-2008 |
christos |
replace bitmask_snprintf(9) with snprintb(3)
|
| 1.265 |
13-Dec-2008 |
ad |
It's easier for kernel reserve pages to be consumed because the pagedaemon serves as less of a barrier these days. Restrict provision of kernel reserve pages to kmem and one of these cases:
- doing a NOWAIT allocation - caller is a realtime thread - caller is a kernel thread - explicitly requested, for example by the pmap
|
|
Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base
|
| 1.264 |
01-Dec-2008 |
ad |
PR port-amd64/32816 amd64 can not load lkms
Change some assertions to partially allow for VM_MAP_IS_KERNEL(map) where map is outside the range of kernel_map.
|
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
|
| 1.263 |
29-Jul-2008 |
matt |
branches: 1.263.2; 1.263.4; Make uvm_map.? use <sys/rb.h> instead of <sys/tree.h>. Change the ambiguous members ownspace/space to gap/maxgap. Add some evcnt for evaluation of lookups using tree/list. Drop threshold of using tree for lookups from > 30 to > 15.
Bump kernel version to 4.99.71
|
| 1.262 |
16-Jul-2008 |
matt |
Add PMAP_KMPAGE flag for pmap_kenter_pa. This allows pmaps to know that the page being entered is being for the kernel memory allocator. Such pages should have no references and don't need bookkeeping.
|
| 1.261 |
11-Jul-2008 |
skrll |
English improvement in comments.
"seems good to me :)" from yamt.
|
|
Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 wrstuden-revivesa-base
|
| 1.260 |
06-Jun-2008 |
ad |
branches: 1.260.2; 1.260.4; Back out previous.
|
| 1.259 |
06-Jun-2008 |
ad |
Wrap an expensive check in DIAGNOSTIC.
|
| 1.258 |
04-Jun-2008 |
ad |
- Switch off the map evcnts by default. - SAVE_HINT() doesn't need to be atomic.
|
| 1.257 |
04-Jun-2008 |
ad |
vm_page: put TAILQ_ENTRY into a union with LIST_ENTRY, so we can use both.
|
|
Revision tags: yamt-pf42-base3
|
| 1.256 |
02-Jun-2008 |
ad |
Don't needlessly acquire v_interlock.
|
| 1.255 |
31-May-2008 |
ad |
Missing cv_destroy().
|
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base
|
| 1.254 |
27-Apr-2008 |
ad |
branches: 1.254.2; 1.254.4; Disable preemption while swapping pmap.
|
| 1.253 |
26-Apr-2008 |
yamt |
fix a locking botch. PR/38415 from Wolfgang Solfrank.
|
|
Revision tags: yamt-pf42-baseX yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
| 1.252 |
04-Mar-2008 |
yamt |
branches: 1.252.2; fix "stale map" assertions. PR/38153 from Sarton O'Brien.
|
|
Revision tags: hpcarm-cleanup-base
|
| 1.251 |
23-Feb-2008 |
chris |
Add some more missing pmap_update()s following pmap_kremove()s.
|
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-nbase bouyer-xeni386-base mjf-devfs-base
|
| 1.250 |
18-Jan-2008 |
yamt |
branches: 1.250.2; 1.250.6; push pmap_clear_reference calls into pdpolicy code, where reference bits actually matter.
|
|
Revision tags: matt-armv6-base
|
| 1.249 |
08-Jan-2008 |
yamt |
simplify locking and remove vm_map_upgrade/downgrade. this fixes a deadlock due to read-lock recursion of map->lock.
|
| 1.248 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3
|
| 1.247 |
13-Dec-2007 |
yamt |
add ddb "whatis" command. inspired from solaris ::whatis dcmd.
|
|
Revision tags: cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.246 |
26-Nov-2007 |
xtraeme |
branches: 1.246.2; 1.246.4; 1.246.6; Make this build without LOCKDEBUG (the if statement that uses LOCKDEBUG_MEM_CHECK).
|
| 1.245 |
26-Nov-2007 |
yamt |
uvm_map_extract: for UVM_EXTRACT_QREF, mark entries UVM_MAP_NOMERGE.
|
| 1.244 |
26-Nov-2007 |
yamt |
uvm_unmap1: LOCKDEBUG_MEM_CHECK for kernel_map.
|
|
Revision tags: jmcneill-base bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base
|
| 1.243 |
15-Oct-2007 |
yamt |
branches: 1.243.4; uvm_map_reserve: don't ignore alignment. fixes mremap.
|
|
Revision tags: yamt-x86pmap-base3 vmlocking-base
|
| 1.242 |
12-Oct-2007 |
skrll |
Don't restrict the offset when allocating a map entry for in-kernel map - use UVM_UNKNOWN_OFFSET in the call to uvm_map_prepare.
This fixes a '"panic: malloc: out of space in kmem_map" when it's not really' testcase of mine, and one reported to me by chuq. This is likely to fix PR/35587 as well.
Looks/seems fine to me from chuq and yamt. Thanks.
|
| 1.241 |
10-Oct-2007 |
ad |
Merge from vmlocking:
- Split vnode::v_flag into three fields, depending on field locking. - simple_lock -> kmutex in a few places. - Fix some simple locking problems.
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base2 yamt-x86pmap-base
|
| 1.240 |
20-Aug-2007 |
ad |
branches: 1.240.2; 1.240.4; Also initialize map->lock for INTRSAFE maps.
|
| 1.239 |
20-Aug-2007 |
ad |
uvmspace_free: destroy locks.
|
|
Revision tags: matt-mips64-base
|
| 1.238 |
21-Jul-2007 |
ad |
branches: 1.238.4; 1.238.6; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base mjf-ufs-trans-base
|
| 1.237 |
09-Jul-2007 |
ad |
branches: 1.237.2; Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
|
| 1.236 |
12-Mar-2007 |
ad |
branches: 1.236.2; Pass an ipl argument to pool_init/POOL_INIT to be used when initializing the pool's lock.
|
| 1.235 |
04-Mar-2007 |
christos |
branches: 1.235.2; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
|
Revision tags: ad-audiomp-base
|
| 1.234 |
22-Feb-2007 |
thorpej |
TRUE -> true, FALSE -> false
|
| 1.233 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-RC2 netbsd-4-0-RC1 post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
| 1.232 |
01-Nov-2006 |
yamt |
branches: 1.232.2; 1.232.4; 1.232.6; remove some __unused from function parameters.
|
| 1.231 |
26-Oct-2006 |
uwe |
uvm_page_printall: With new PQ_* flags pg->pqflags no longer fits and makes the output of "show all pages" ragged. Widen the field to 4 chars.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.230 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.229 |
16-Sep-2006 |
yamt |
branches: 1.229.2; revert a change which was unintentionally slipped in via yamt-pdpolicy branch.
|
| 1.228 |
15-Sep-2006 |
yamt |
merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 rpaulo-netinet-merge-pcb-base
|
| 1.227 |
25-Jun-2006 |
yamt |
branches: 1.227.4; make amap use kmem_alloc, rather than malloc. (ie. make it use kernel_map, rather than kmem_map.) kmem_map is more restricted than kernel_map, and there's no point for amap to use it.
|
|
Revision tags: chap-midi-nbase gdamore-uart-base chap-midi-base simonb-timecounters-base
|
| 1.226 |
25-May-2006 |
yamt |
branches: 1.226.2; move wait points for kva from upper layers to vm_map. PR/33185 #1.
XXX there is a concern about interaction with kva fragmentation. see: http://mail-index.NetBSD.org/tech-kern/2006/05/11/0000.html
|
|
Revision tags: yamt-pdpolicy-base5
|
| 1.225 |
20-May-2006 |
elad |
Better implementation of PaX MPROTECT, after looking some more into the code and not trying to use temporary solutions.
Lots of comments and help from YAMAMOTO Takashi, also thanks to the PaX author for being quick to recognize that something fishy's going on. :)
Hook up in mmap/vmcmd rather than (ugh!) uvm_map_protect().
Next time I suggest to commit a temporary solution just revoke my commit bit.
|
| 1.224 |
16-May-2006 |
elad |
branches: 1.224.2; Introduce PaX MPROTECT -- mprotect(2) restrictions used to strengthen W^X mappings.
Disabled by default.
First proposed in:
http://mail-index.netbsd.org/tech-security/2005/12/18/0000.html
More information in:
http://pax.grsecurity.net/docs/mprotect.txt
Read relevant parts of options(4) and sysctl(3) before using!
Lots of thanks to the PaX author and Matt Thomas.
|
| 1.223 |
14-May-2006 |
elad |
integrate kauth.
|
| 1.222 |
14-May-2006 |
yamt |
- rename uvm_tree_sanity to uvm_map_check and add some (non tree related) checks. - remove treesanity_label. instead, just panic if any corruption is detected.
|
| 1.221 |
14-May-2006 |
yamt |
- uvm_mapent_trymerge: don't forget to update hints. - clear_hints: new function. - uvm_map_replace: use clear_hints. no functional change. - add some assertions.
|
| 1.220 |
14-May-2006 |
yamt |
update first_free correctly.
|
|
Revision tags: elad-kernelauth-base
|
| 1.219 |
03-May-2006 |
yamt |
uvm_km_suballoc: consider kva overhead of "kmapent". fixes PR/31275 (me) and PR/32287 (Christian Biere).
|
| 1.218 |
21-Apr-2006 |
yamt |
- share some code between uvm_map_clip_end and uvm_map_clip_start. - add a map entry sanity-check function, uvm_mapent_check().
discussed on source-changes@.
|
| 1.217 |
13-Apr-2006 |
christos |
Coverity CID 762: Protect against NULL dereferencing entry->object.uvm_obj like we do a few lines before. Maybe all the tests should be changed to UVM_ET_ISOBJ(), or the macro should do it internally?
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base
|
| 1.216 |
15-Mar-2006 |
drochner |
branches: 1.216.2; -clean up the interface to uvm_fault: the "fault type" didn't serve any purpose (done by a macro, so we don't save any cycles for now) -kill vm_fault_t; it is not needed for real faults, and for simulated faults (wiring) it can be replaced by UVM internal flags -remove <uvm/uvm_fault.h> from uvm_extern.h again
|
|
Revision tags: yamt-pdpolicy-base2 yamt-pdpolicy-base
|
| 1.215 |
01-Mar-2006 |
yamt |
branches: 1.215.2; 1.215.4; merge yamt-uio_vmspace branch.
- use vmspace rather than proc or lwp where appropriate. the latter is more natural to specify an address space. (and less likely to be abused for random purposes.) - fix a swdmover race.
|
|
Revision tags: yamt-uio_vmspace-base5
|
| 1.214 |
22-Feb-2006 |
bjh21 |
Include page ownership information in the output of the DDB "show all pages" command if UVM_PAGE_TRKOWN is enabled.
|
| 1.213 |
19-Feb-2006 |
bjh21 |
Add a "show all pages" command to DDB which prints one line per physical page in the system. Useful for getting some idea where all your memory's gone, at least on a sufficiently small system.
|
| 1.212 |
15-Feb-2006 |
yamt |
- amap_copy: take a "flags" argument instead of booleans. - add AMAP_COPY_NOMERGE flag, and use it for uvm_map_extract. PR/32806 from Julio M. Merino Vidal.
|
| 1.211 |
11-Feb-2006 |
yamt |
remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.210 |
21-Jan-2006 |
yamt |
branches: 1.210.2; 1.210.4; implement compat_linux mremap.
|
| 1.209 |
21-Jan-2006 |
yamt |
uvm_map_replace: remove a wrong comment.
|
| 1.208 |
15-Jan-2006 |
yamt |
make some debug statistics evcnt.
|
| 1.207 |
08-Jan-2006 |
yamt |
clean up uvm_map evcnt code. no functional changes.
|
| 1.206 |
24-Dec-2005 |
perry |
branches: 1.206.2; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
| 1.205 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.204 |
28-Jun-2005 |
thorpej |
branches: 1.204.2; Clean up the cpp macro used to say "we're compiling this specific C file".
|
| 1.203 |
28-Jun-2005 |
thorpej |
Clean up the use of __inline in this file. In particular, don't inline really big chunks of code. This saves almost 2.5K on a GENERIC i386 kernel, and has the added benefit of not polluting the I$ so much.
|
| 1.202 |
13-Jun-2005 |
jmc |
Change signature of uvm_kmapent_map defintiion to __INLINE to match prototype
|
| 1.201 |
10-Jun-2005 |
dsl |
If we are builging a small kernel [1], don't inline all these functions. Saves over 2k and lets i386 rescue_tiny build again. [1] if MALLOC_NOINLINE is defined - not ideal but...
|
| 1.200 |
02-Jun-2005 |
matt |
When writing coredumps, don't write zero uninstantiated demand-zero pages. Also, with ELF core dumps, trim trailing zeroes from sections. These two changes can shrink coredumps by over 50% in size.
|
| 1.199 |
29-May-2005 |
christos |
avoid shadow variables. remove unneeded casts.
|
| 1.198 |
22-May-2005 |
yamt |
uvm_kmapent_free: add missing vm_map_lock/unlock.
|
| 1.197 |
18-May-2005 |
yamt |
uvm_mapent_trymerge: adjust object offset when necessary.
|
| 1.196 |
18-May-2005 |
yamt |
redo the previous (uvm_map.c rev.1.195) correctly.
|
| 1.195 |
17-May-2005 |
yamt |
uvm_mapent_trymerge: add missing checks.
|
| 1.194 |
17-May-2005 |
yamt |
(try to) merge map entries in fault handler.
|
| 1.193 |
17-May-2005 |
yamt |
revert uvm_map.c rev.1.190 in favor of merging in fault handler.
|
| 1.192 |
11-May-2005 |
yamt |
allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
| 1.191 |
05-May-2005 |
yamt |
- amap_extend: don't extend amap beyond UVM_AMAP_LARGE. - uvm_map_enter: if we fail to extend amap, just give up merging instead of bailing out immediately.
|
|
Revision tags: kent-audio2-base
|
| 1.190 |
29-Apr-2005 |
yamt |
uvm_map_enter: don't bother to defer amap allocation if there's a mergable existing entry. although there're merits and demerits, i think it benefits common cases.
|
| 1.189 |
28-Apr-2005 |
yamt |
uvm_map: don't leak a preallocated map entry on error.
|
| 1.188 |
07-Apr-2005 |
dbj |
use voff_t instead of vaddr_t to hold file offset passed to pgo_put
|
| 1.187 |
01-Apr-2005 |
yamt |
merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: yamt-km-base4 yamt-km-base3 netbsd-3-base
|
| 1.186 |
28-Feb-2005 |
chs |
branches: 1.186.2; add back rev. 1.29 of vm/vm_map.c, which was apparently lost in the UVM merge: msync(MS_INVALIDATE) should fail if any part of the region is wired.
|
| 1.185 |
26-Feb-2005 |
perry |
nuke trailing whitespace
|
|
Revision tags: yamt-km-base2
|
| 1.184 |
11-Feb-2005 |
chs |
use vm_map_{min,max}() instead of dereferencing the vm_map pointer directly. define and use vm_map_set{min,max}() for modifying these values. remove the {min,max}_offset aliases for these vm_map fields to be more namespace-friendly. PR 26475.
|
|
Revision tags: yamt-km-base
|
| 1.183 |
23-Jan-2005 |
chs |
branches: 1.183.2; pmap_wired_count() is now available on all platforms, remove the code for the case where it's not defined.
|
| 1.182 |
17-Jan-2005 |
atatat |
Convert the PMAP_PREFER() macro from two arguments (offset and hint) to four (adding size and direction).
In order for topdown uvm to be an option on ports using PMAP_PREFER, they will need to "prefer" lower addresses if topdown is being used. Additionally, at least one port also needs to know the size.
|
| 1.181 |
14-Jan-2005 |
yamt |
branches: 1.181.2; don't use uvm_kmapent_alloc for non-intrsafe kernel submaps (namely exec_map and phys_map) becuase: - normal vmmpepl is fine for them. - some of them are tightly sized. eg. size of exec_map on vax is just NCARGS.
should fix vax boot failure reported by Johnny Billquist on current-users@.
|
| 1.180 |
13-Jan-2005 |
yamt |
in uvm_unmap_remove, always wakeup va waiters if any. uvm_km_free_wakeup is now a synonym of uvm_km_free.
|
| 1.179 |
12-Jan-2005 |
yamt |
don't reserve (uvm_mapent_reserve) entries for malloc/pool backends because it isn't necessary or safe. reported and tested by Denis Lagno. PR/28897.
|
|
Revision tags: kent-audio1-beforemerge
|
| 1.178 |
03-Jan-2005 |
yamt |
reapply uvm_map.c rev.1.156 (use a zero-sized array instead of c99 flexible array member) for ports which still use gcc 2.95. from Havard Eidnes.
|
| 1.177 |
01-Jan-2005 |
yamt |
uvm_unmap_remove: debug check to ensure that unmapped regions doesn't have any remaining page mappings.
|
| 1.176 |
01-Jan-2005 |
yamt |
don't merge incompatible map entries. eg. private and shared.
|
| 1.175 |
01-Jan-2005 |
yamt |
introduce vm_map_kernel, a subclass of vm_map, and move some kernel-only members of vm_map to it.
|
| 1.174 |
01-Jan-2005 |
yamt |
for in-kernel maps, - allocate kva for vm_map_entry from the map itsself and remove the static limit, MAX_KMAPENT. - keep merged entries for later splitting to fix allocate-to-free problem. PR/24039.
|
|
Revision tags: kent-audio1-base
|
| 1.173 |
25-Sep-2004 |
yamt |
uvm_map_printit: - print wired_count if available. - fix a printf format.
|
| 1.172 |
19-May-2004 |
he |
Move variable declaration up before the code. Fixes compile error for vax, and also conforms better to KNF.
|
| 1.171 |
04-May-2004 |
pk |
Since a `vmspace' always includes a `vm_map' we can re-use vm_map's reference count lock to also protect the vmspace's reference count.
|
| 1.170 |
03-May-2004 |
petrov |
Revert default uvm counters, rename UVMMAP_COUNTERS to UVMMAP_NOCOUNTERS.
|
| 1.169 |
01-May-2004 |
petrov |
Replace uvm counters with evcnt, initialize them through __link_set (from Matt Thomas), disable counters by default and add configuration option UVMMAP_COUNTERS.
|
| 1.168 |
27-Apr-2004 |
junyoung |
Fix typo in comments.
|
| 1.167 |
27-Apr-2004 |
junyoung |
FINDSPACE_FIXED -> UVM_FLAG_FIXED in comment.
|
| 1.166 |
25-Apr-2004 |
simonb |
Initialise (most) pools from a link set instead of explicit calls to pool_init. Untouched pools are ones that either in arch-specific code, or aren't initialiased during initial system startup.
Convert struct session, ucred and lockf to pools.
|
| 1.165 |
30-Mar-2004 |
yamt |
uvm_map_findspace: don't return unaligned address if alignment is specified. discussed on tech-kern@.
|
|
Revision tags: netbsd-2-0-base
|
| 1.164 |
24-Mar-2004 |
junyoung |
branches: 1.164.2; Drop trailing spaces.
|
| 1.163 |
17-Mar-2004 |
mycroft |
Something I posted to tech-kern a long time ago... Slightly simplify uvm_map_extract() slightly by eliminating "oldstart".
|
| 1.162 |
11-Mar-2004 |
pooka |
Reflect dropping mappings in map_size. Avoids panic on DIAGNOSTIC kernels.
ok by chs
|
| 1.161 |
10-Feb-2004 |
matt |
Back out the changes in http://mail-index.netbsd.org/source-changes/2004/01/29/0027.html since they don't really fix the problem.
Incorpate one fix: Mark uvm_map_entry's that were created with UVM_FLAG_NOMERGE so that they will not be used as future merge candidates.
|
| 1.160 |
09-Feb-2004 |
yamt |
- borrow vmspace0 in uvm_proc_exit instead of uvmspace_free. the latter is not a appropriate place to do so and it broke vfork. - deactivate pmap before calling cpu_exit() to keep a balance of pmap_activate/deactivate.
|
| 1.159 |
07-Feb-2004 |
yamt |
introduce a new patchable variable, uvm_debug_check_rbtree, which is zero by default. perform rbtree sanity checks only when it isn't zero because the check is very heavy weight especially when there're many entries.
|
| 1.158 |
07-Feb-2004 |
yamt |
don't deactivate pmap in exit1 because we'll touch the pmap later. instead, borrow vmspace0 immediately before destroying the pmap in uvmspace_free.
|
| 1.157 |
07-Feb-2004 |
yamt |
uvm_kmapent_alloc: in the case that there's no cached entries, if kmem_map is already up, allocate a entry from it so that we won't try to vm_map_lock recursively. XXX assuming usage pattern of kmem_map.
|
| 1.156 |
02-Feb-2004 |
he |
Since the playstation2 port still uses a variant of gcc 2.95.2, change to use a zero-sized array instead of c99 flexible array member in a struct.
OK'ed by yamt.
|
| 1.155 |
30-Jan-2004 |
yamt |
remove wrong assertions. sparc's alloc_cpuinfo_global_va() partially unmaps kva range in kernel_map.
noted by Juergen Hannken-Illjes on current-users@.
|
| 1.154 |
29-Jan-2004 |
yamt |
some English fixes from Soren Jacobsen.
|
| 1.153 |
29-Jan-2004 |
yamt |
- split uvm_map() into two functions for the followings. - for in-kernel maps, disable map entry merging so that unmap operations won't block. (workaround for PR/24039) - for in-kernel maps, allocate kva for vm_map_entry from the map itsself and eliminate MAX_KMAPENT and uvm_map_entry_kmem_pool.
|
| 1.152 |
19-Dec-2003 |
simonb |
Unindent a code block that doens't need to be indented.
|
| 1.151 |
13-Nov-2003 |
chs |
two changes in improve scalability:
(1) split the single list of pages allocated to a pool into three lists: completely full, partially full, and completely empty. there is no longer any need to traverse any list looking for a certain type of page.
(2) replace the 8-element hash table for out-of-page page headers with a splay tree.
these two changes (together with the recent enhancements to the wait code) give us linear scaling for a fork+exit microbenchmark.
|
| 1.150 |
06-Nov-2003 |
yamt |
fix wrong assertions. they can be false due to alignment requiments (and PMAP_PREFER).
|
| 1.149 |
05-Nov-2003 |
yamt |
don't move hint backward.
|
| 1.148 |
05-Nov-2003 |
yamt |
- fix a reversed comparison. - fix "nextgap" case. - make sure don't get addresses behind hint. - deal with integer wraparounds better. - assertions.
|
| 1.147 |
02-Nov-2003 |
yamt |
fix a wrong assertion. pointed by Christian Limpach.
|
| 1.146 |
01-Nov-2003 |
yamt |
- update uvm_map::size fewer places. - add related assertions.
|
| 1.145 |
01-Nov-2003 |
yamt |
commit rest of the previous (rbtree).
(i should check .rej files before commit, sorry)
|
| 1.144 |
01-Nov-2003 |
yamt |
track map entries and free spaces using red-black tree to improve scalability of operations on the map.
originally done by Niels Provos for OpenBSD. tweaked for NetBSD by me with some advices from enami tsugutomo. discussed on tech-kern@ and tech-perform@.
|
| 1.143 |
25-Oct-2003 |
junyoung |
KNF.
|
| 1.142 |
09-Oct-2003 |
enami |
Fix indent.
|
| 1.141 |
09-Oct-2003 |
atatat |
When pulling back an amap to cover the new allocation along with the previous entry, don't add the size to the extension -- it's already been added to the end of the previous entry.
|
| 1.140 |
02-Oct-2003 |
enami |
Rewrite uvm_map_findspace() to improve readability and to fix a bug that it may return space already in use as free space under some condition. The symptom of the bug is that exec fails if stack is unlimited on topdown VM kernel.
|
| 1.139 |
01-Oct-2003 |
enami |
Some whitespace fixes.
|
| 1.138 |
01-Oct-2003 |
enami |
ansi'fy.
|
| 1.137 |
26-Aug-2003 |
yamt |
use VM_PAGE_TO_PHYS macro instead of using phys_addr directly.
|
| 1.136 |
09-Apr-2003 |
thorpej |
branches: 1.136.2; In uvm_map_clean(), only call pgo_put if the object has one. From Quentin Garnier <quatriemek.com!netbsd>.
|
| 1.135 |
02-Mar-2003 |
matt |
In uvm_map_space, if the current entry is above the new space use the previous entry. (not if the current entry starts at the end of the new space; that case doesn't take into account if the new space had a specified alignment).
|
| 1.134 |
02-Mar-2003 |
matt |
When finding an aligned block, we need to truncate in topdown, not roundup.
|
| 1.133 |
23-Feb-2003 |
simonb |
Remove assigned-to but not used variable.
|
| 1.132 |
21-Feb-2003 |
matt |
fix a tpyo in a comment.
|
| 1.131 |
20-Feb-2003 |
atatat |
Introduce "top down" memory management for mmap()ed allocations. This means that the dynamic linker gets mapped in at the top of available user virtual memory (typically just below the stack), shared libraries get mapped downwards from that point, and calls to mmap() that don't specify a preferred address will get mapped in below those.
This means that the heap and the mmap()ed allocations will grow towards each other, allowing one or the other to grow larger than before. Previously, the heap was limited to MAXDSIZ by the placement of the dynamic linker (and the process's rlimits) and the space available to mmap was hobbled by this reservation.
This is currently only enabled via an *option* for the i386 platform (though other platforms are expected to follow). Add "options USE_TOPDOWN_VM" to your kernel config file, rerun config, and rebuild your kernel to take advantage of this.
Note that the pmap_prefer() interface has not yet been modified to play nicely with this, so those platforms require a bit more work (most notably the sparc) before they can use this new memory arrangement.
This change also introduces a VM_DEFAULT_ADDRESS() macro that picks the appropriate default address based on the size of the allocation or the size of the process's text segment accordingly. Several drivers and the SYSV SHM address assignment were changed to use this instead of each one picking their own "default".
|
| 1.130 |
01-Feb-2003 |
thorpej |
Add extensible malloc types, adapted from FreeBSD. This turns malloc types into a structure, a pointer to which is passed around, instead of an int constant. Allow the limit to be adjusted when the malloc type is defined, or with a function call, as suggested by Jonathan Stone.
|
| 1.129 |
21-Jan-2003 |
christos |
finally: step 5: disable a KASSERT() if we are doing_shutdown. now sync from ddb should work as badly as before the nathanw_sa merge.
|
| 1.128 |
18-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.127 |
11-Dec-2002 |
thorpej |
UVM_KMF_NOWAIT -> UVM_FLAG_NOWAIT
|
| 1.126 |
30-Nov-2002 |
bouyer |
Change uvm_km_kmemalloc() to accept flag UVM_KMF_NOWAIT and pass it to uvm_map(). Change uvm_map() to honnor UVM_KMF_NOWAIT. For this, change amap_extend() to take a flags parameter instead of just boolean for direction, and introduce AMAP_EXTEND_FORWARDS and AMAP_EXTEND_NOWAIT flags (AMAP_EXTEND_BACKWARDS is still defined as 0x0, to keep the code easier to read). Add a flag parameter to uvm_mapent_alloc(). This solves a problem a pool_get(PR_NOWAIT) could trigger a pool_get(PR_WAITOK) in uvm_mapent_alloc(). Thanks to Chuck Silvers, enami tsugutomo, Andrew Brown and Jason R Thorpe for feedback.
|
| 1.125 |
14-Nov-2002 |
atatat |
Implement backwards extension of amaps. There are three cases to deal with:
Case #1 -- adjust offset: The slot offset in the aref can be decremented to cover the required size addition.
Case #2 -- move pages and adjust offset: The slot offset is not large enough, but the amap contains enough inactive space *after* the mapped pages to make up the difference, so active slots are slid to the "end" of the amap, and the slot offset is, again, adjusted to cover the required size addition. This optimizes for hitting case #1 again on the next small extension.
Case #3 -- reallocate, move pages, and adjust offset: There is not enough inactive space in the amap, so the arrays are reallocated, and the active pages are copied again to the "end" of the amap, and the slot offset is adjusted to cover the required size. This also optimizes for hitting case #1 on the next backwards extension.
This provides the missing piece in the "forward extension of vm_map_entries" logic, so the merge failure counters have been removed.
Not many applications will make any use of this at this time (except for jvms and perhaps gcc3), but a "top-down" memory allocator will use it extensively.
|
| 1.124 |
02-Nov-2002 |
perry |
/*CONTCOND*/ while (0)'ed macros
|
| 1.123 |
24-Oct-2002 |
atatat |
In the case of a double amap_extend() (during a forward merge after a back merge), don't abort the allocation if the second extend fails, just abort the forward merge and finish the allocation.
Code reviewed by thorpej.
|
| 1.122 |
24-Oct-2002 |
atatat |
Call amap_extend() a second time in the case of a bimerge (both backwards and forwards) if the previous entry was backed by an amap.
Fixes pr kern/18789, where netscape 7 + a java applet actually manage to incur forward and bimerges in userspace.
Code reviewed by fvdl and thorpej.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge
|
| 1.121 |
18-Oct-2002 |
atatat |
Add an implementation of forward merging of new map entries. Most new allocations can be merged either forwards or backwards, meaning no new entries will be added to the list, and some can even be merged in both directions, resulting in a surplus entry.
This code typically reduces the number of map entries in the kernel_map by an order of magnitude or more. It also makes possible recovery from the pathological case of "5000 processes created and then killed", which leaves behind a large number of map entries.
The only forward merge case not covered is the instance of an amap that has to be extended backwards (WIP). Note that this only affects processes, not the kernel (the kernel doesn't use amaps), and that merge opportunities like this come up *very* rarely, if at all. Eg, after being up for eight days, I see only three failures in this regard, and even those are most likely due to programs I'm developing to exercise this case.
Code reviewed by thorpej, matt, christos, mrg, chuq, chuck, perry, tls, and probably others. I'd like to thank my mother, the Hollywood Foreign Press...
|
|
Revision tags: kqueue-base
|
| 1.120 |
22-Sep-2002 |
chs |
add a new flag VM_MAP_DYING, which is set before we start tearing down a vm_map. use this to skip the pmap_update() at the end of all the removes, which allows pmaps to optimize pmap tear-down. also, use the new pmap_remove_all() hook to let the pmap implemenation know what we're up to.
|
| 1.119 |
15-Sep-2002 |
chs |
add a new km flag UVM_KMF_CANFAIL, which causes uvm_km_kmemalloc() to return failure if swap is full and there are no free physical pages. have malloc() use this flag if M_CANFAIL is passed to it. use M_CANFAIL to allow amap_extend() to fail when memory is scarce. this should prevent most of the remaining hangs in low-memory situations.
|
|
Revision tags: netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base
|
| 1.118 |
08-Mar-2002 |
thorpej |
branches: 1.118.2; 1.118.8; Pool deals fairly well with physical memory shortage, but it doesn't deal with shortages of the VM maps where the backing pages are mapped (usually kmem_map). Try to deal with this:
* Group all information about the backend allocator for a pool in a separate structure. The pool references this structure, rather than the individual fields. * Change the pool_init() API accordingly, and adjust all callers. * Link all pools using the same backend allocator on a list. * The backend allocator is responsible for waiting for physical memory to become available, but will still fail if it cannot callocate KVA space for the pages. If this happens, carefully drain all pools using the same backend allocator, so that some KVA space can be freed. * Change pool_reclaim() to indicate if it actually succeeded in freeing some pages, and use that information to make draining easier and more efficient. * Get rid of PR_URGENT. There was only one use of it, and it could be dealt with by the caller.
From art@openbsd.org.
|
|
Revision tags: ifpoll-base
|
| 1.117 |
31-Dec-2001 |
chs |
introduce a new UVM fault type, VM_FAULT_WIREMAX. this is different from VM_FAULT_WIRE in that when the pages being wired are faulted in, the simulated fault is at the maximum protection allowed for the mapping instead of the current protection. use this in uvm_map_pageable{,_all}() to fix the problem where writing via ptrace() to shared libraries that are also mapped with wired mappings in another process causes a diagnostic panic when the wired mapping is removed.
this is a really obscure problem so it deserves some more explanation. ptrace() writing to another process ends up down in uvm_map_extract(), which for MAP_PRIVATE mappings (such as shared libraries) will cause the amap to be copied or created. then the amap is made shared (ie. the AMAP_SHARED flag is set) between the kernel and the ptrace()d process so that the kernel can modify pages in the amap and have the ptrace()d process see the changes. then when the page being modified is actually faulted on, the object pages (from the shared library vnode) is copied to a new anon page and inserted into the shared amap. to make all the processes sharing the amap actually see the new anon page instead of the vnode page that was there before, we need to invalidate all the pmap-level mappings of the vnode page in the pmaps of the processes sharing the amap, but we don't have a good way of doing this. the amap doesn't keep track of the vm_maps which map it. so all we can do at this point is to remove all the mappings of the page with pmap_page_protect(), but this has the unfortunate side-effect of removing wired mappings as well. removing wired mappings with pmap_page_protect() is a legitimate operation, it can happen when a file with a wired mapping is truncated. so the pmap has no way of knowing whether a request to remove a wired mapping is normal or when it's due to this weird situation. so the pmap has to remove the weird mapping. the process being ptrace()d goes away and life continues. then, much later when we go to unwire or remove the wired vm_map mapping, we discover that the pmap mapping has been removed when it should still be there, and we panic.
so where did we go wrong? the problem is that we don't have any way to update just the pmap mappings that need to be updated in this scenario. we could invent a mechanism to do this, but that is much more complicated than this change and it doesn't seem like the right way to go in the long run either.
the real underlying problem here is that wired pmap mappings just aren't a good concept. one of the original properties of the pmap design was supposed to be that all the information in the pmap could be thrown away at any time and the VM system could regenerate it all through fault processing, but wired pmap mappings don't allow that. a better design for UVM would not require wired pmap mappings, and Chuck C. and I are talking about this, but it won't be done anytime soon, so this change will do for now.
this change has the effect of causing MAP_PRIVATE mappings to be copied to anonymous memory when they are mlock()d, so that uvm_fault() doesn't need to copy these pages later when called from ptrace(), thus avoiding the call to pmap_page_protect() and the panic that results from this when the mlock()d region is unlocked or freed. note that this change doesn't help the case where the wired mapping is MAP_SHARED.
discussed at great length with Chuck Cranor. fixes PRs 10363, 12554, 12604, 13041, 13487, 14580 and 14853.
|
| 1.116 |
31-Dec-2001 |
chs |
in uvm_map_clean(), add PGO_CLEANIT to the flags passed to an object's pager. we need to make sure that vnode pages are written to disk at least once, otherwise processes could gain access to whatever data was previously stored in disk blocks which are freshly allocated to a file.
|
| 1.115 |
31-Dec-2001 |
chs |
fix locking for loaning. in general we should be looking at the page's uobject and uanon pointers rather than at the PQ_ANON flag to determine which lock to hold, since PQ_ANON can be clear even when the anon's lock is the one which we should hold (if the page was loaned from an object and then freed by the object).
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.114 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.113 |
06-Nov-2001 |
chs |
don't call pmap_copy() from uvmspace_fork(). a new process is very likely to call execve() immediately after fork(), so most of the time copying the pmap mappings is wasted effort.
|
| 1.112 |
30-Oct-2001 |
thorpej |
uvm_map_protect(): Don't allow VM_PROT_EXECUTE to be set on entries (either the current protection or the max protection) that reference vnodes associated with a file system mounted with the NOEXEC option.
uvm_mmap(): Don't allow PROT_EXEC mappings to be established of vnodes which are associated with a file system mounted with the NOEXEC option.
|
| 1.111 |
30-Oct-2001 |
thorpej |
Correct a comment.
|
| 1.110 |
30-Oct-2001 |
thorpej |
- Add a new vnode flag VEXECMAP, which indicates that a vnode has executable mappings. Stop overloading VTEXT for this purpose (VTEXT also has another meaning). - Rename vn_marktext() to vn_markexec(), and use it when executable mappings of a vnode are established. - In places where we want to set VTEXT, set it in v_flag directly, rather than making a function call to do this (it no longer makes sense to use a function call, since we no longer overload VTEXT with VEXECMAP's meaning).
VEXECMAP suggested by Chuq Silvers.
|
| 1.109 |
29-Oct-2001 |
thorpej |
uvm_mmap(): If a vnode mapping is established with PROT_EXEC, mark the vnode as VTEXT.
uvm_map_protect(): When VM_PROT_EXECUTE is added to a VA range, mark all the vnodes mapped by the range as VTEXT.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2
|
| 1.108 |
23-Sep-2001 |
chs |
branches: 1.108.2; make pmap_resident_count() non-optional.
|
| 1.107 |
21-Sep-2001 |
chs |
add an assert.
|
|
Revision tags: post-chs-ubcperf
|
| 1.106 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf
|
| 1.105 |
10-Sep-2001 |
chris |
Update pmap_update to now take the updated pmap as an argument. This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.
Currently this is a no-op on most platforms, so they should see no difference.
Reviewed by Jason.
|
| 1.104 |
09-Sep-2001 |
chs |
create a new pool for map entries, allocated from kmem_map instead of kernel_map. use this instead of the static map entries when allocating map entries for kernel_map. this greatly reduces the number of static map entries used and should eliminate the problems with running out.
|
|
Revision tags: thorpej-devvp-base
|
| 1.103 |
07-Sep-2001 |
lukem |
branches: 1.103.2; let user know current value of MAX_KMAPENT in panic
|
| 1.102 |
20-Aug-2001 |
wiz |
"wierd" is weird.
|
| 1.101 |
16-Aug-2001 |
chs |
user maps are always pageable.
|
| 1.100 |
22-Jul-2001 |
wiz |
seperate -> separate
|
| 1.99 |
02-Jun-2001 |
chs |
branches: 1.99.2; replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.98 |
25-May-2001 |
chs |
remove trailing whitespace.
|
| 1.97 |
22-May-2001 |
ross |
Merge the swap-backed and object-backed inactive lists.
|
| 1.96 |
29-Apr-2001 |
thorpej |
Implement page coloring, using a round-robin bucket selection algorithm (Solaris calls this "Bin Hopping").
This implementation currently relies on MD code to define a constant defining the number of buckets. This will change reasonably soon (MD code will be able to dynamically size the bucket array).
|
|
Revision tags: thorpej_scsipi_beforemerge
|
| 1.95 |
24-Apr-2001 |
thorpej |
Sprinkle pmap_update() calls after calls to: - pmap_enter() - pmap_remove() - pmap_protect() - pmap_kenter_pa() - pmap_kremove() as described in pmap(9).
These calls are relatively conservative. It may be possible to optimize these a little more.
|
|
Revision tags: thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.94 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.93 |
11-Feb-2001 |
eeh |
branches: 1.93.2; When recycling a vm_map, resize it to the new process address space limits.
|
| 1.92 |
10-Feb-2001 |
thorpej |
Don't uvm_deallocate() the address space in exit1(). The address space is already torn down in uvmspace_free() when the vmspace refrence count reaches 0. Move the shmexit() call into uvmspace_free().
Note that there is a beneficial side-effect of deferring the unmap to uvmspace_free() -- on systems where TLB invalidations are particularly expensive, the unmapping of the address space won't have to cause TLB invalidations; uvmspace_free() is going to be run in a context other than the exiting process's, so the "pmap is active" test will evaluate to FALSE in the pmap module.
|
| 1.91 |
06-Feb-2001 |
eeh |
Specify a process' address space limits for uvmspace_exec().
|
| 1.90 |
05-Feb-2001 |
chs |
in uvm_map_clean(), fix the case where the start offset is within the last entry in the map. the old code would walk around the end of the linked list, through the header entry, and keep going from the first map entry until it found a gap in the map, at which point it would return an error. if the map had no gaps then it would loop forever. reported by k-abe@cs.utah.edu. while I'm here, clean up this function a bit.
also, use MIN() instead of min(), since the latter takes arguments of type "int" but we're passing it values of type "vaddr_t", which can be a larger size.
|
| 1.89 |
28-Jan-2001 |
thorpej |
Page scanner improvements, behavior is actually a bit more like Mach VM's now. Specific changes: - Pages now need not have all of their mappings removed before being put on the inactive list. They only need to have the "referenced" attribute cleared. This makes putting pages onto the inactive list much more efficient. In order to eliminate redundant clearings of "refrenced", callers of uvm_pagedeactivate() must now do this themselves. - When checking the "modified" attribute for a page (for clearing PG_CLEAN), make sure to only do it if PG_CLEAN is currently set on the page (saves a potentially expensive pmap operation). - When scanning the inactive list, if a page is referenced, reactivate it (this part was actually added in uvm_pdaemon.c,v 1.27). This now works properly now that pages on the inactive list are allowed to have mappings. - When scanning the inactive list and considering a page for freeing, remove all mappings, and then check the "modified" attribute if the page is marked PG_CLEAN. - When scanning the active list, if the page was referenced since its last sweep by the scanner, don't deactivate it. (This part was actually added in uvm_pdaemon.c,v 1.28.)
These changes greatly improve interactive performance during moderate to high memory and I/O load.
|
| 1.88 |
14-Jan-2001 |
thorpej |
splimp() -> splvm()
|
| 1.87 |
13-Dec-2000 |
enami |
Use single const char array instead of over 200 string constant.
|
| 1.86 |
27-Nov-2000 |
chs |
Initial integration of the Unified Buffer Cache project.
|
| 1.85 |
25-Nov-2000 |
chs |
lots of cleanup: use queue.h macros and KASSERT(). address amap offsets in pages instead of bytes. make amap_ref() and amap_unref() take an amap, offset and length instead of a vm_map_entry_t. improve whitespace and comments.
|
| 1.84 |
16-Oct-2000 |
thorpej |
Back out rev. 1.83 -- it's causing problems with some pmap implementations, so we'll have to spend a little more time working on the problem.
|
| 1.83 |
11-Oct-2000 |
thorpej |
- uvmspace_share(): If p2 has a vmspace already, make sure to deactivate it and free it as appropriate. Activate p2's new address space once it references p1's. - uvm_fork(): Make sure the child's vmspace is NULL before calling uvmspace_share() (the child doens't have one already in this case).
These changes do not change the behavior for the current use of uvmspace_share() (vfork(2)), but make it possible for an already running process (such as a kernel thread) to properly attach to another process's address space.
|
| 1.82 |
11-Oct-2000 |
thorpej |
- Change SAVE_HINT() to take a "check" value. This value is compared to the contents of the hint in the map, and the hint saved in the map only if the two values match. When an unconditional save is required, the "check" value passed should be map->hint (and the compiler will optimize the test away). When deleting a map entry, the new SAVE_HINT() will only change the hint if the entry being deleted was the hint value (thus preserving any meaningful hint that may have been there previously, rather than stomping on it). - Add a missing hint update when deleting the map entry in uvm_map_entry_unlink(). This is the fix for kern/11125, from ITOH Yasufumi <itohy@netbsd.org>.
|
| 1.81 |
13-Sep-2000 |
thorpej |
Add an align argument to uvm_map() and some callers of that routine. Works similarly fto pmap_prefer(), but allows callers to specify a minimum power-of-two alignment of the region. How we ever got along without this for so long is beyond me.
|
| 1.80 |
01-Aug-2000 |
wiz |
Rename VM_INHERIT_* to MAP_INHERIT_* and move them to sys/sys/mman.h as discussed on tech-kern. Retire sys/uvm/uvm_inherit.h, update man page for minherit(2).
|
| 1.79 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.78 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-base
|
| 1.77 |
13-Jun-2000 |
chs |
branches: 1.77.2; initialize aref.ar_pageoff even if there's no amap.
|
| 1.76 |
05-Jun-2000 |
pk |
Change previous to use `vm_map_min(dstmap)' instead of hard-coding VM_MIN_KERNEL_ADDRESS.
|
| 1.75 |
02-Jun-2000 |
pk |
Let uvm_map_extract() set the lower bound on the kernel address range itself, in stead of having its callers do that.
|
|
Revision tags: minoura-xpg4dl-base
|
| 1.74 |
19-May-2000 |
thorpej |
branches: 1.74.2; Clean up some indentation lossage in uvm_map_extract().
|
| 1.73 |
24-Apr-2000 |
thorpej |
Changes necessary to implement pre-zero'ing of pages in the idle loop: - Make page free lists have two actual queues: known-zero pages and pages with unknown contents. - Implement uvm_pageidlezero(). This function attempts to zero up to the target number of pages until the target has been reached (currently target is `all free pages') or until whichqs becomes non-zero (indicating that a process is ready to run). - Define a new hook for the pmap module for pre-zero'ing pages. This is used to zero the pages using uncached access. This allows us to zero as many pages as we want without polluting the cache.
In order to use this feature, each platform must add the appropropriate glue in their idle loop.
|
| 1.72 |
16-Apr-2000 |
chs |
undo rev 1.13, which is to say, don't block interrupts while deactivating one pmap and activating another. this isn't actually necessary (since pmap_activate() and pmap_deactivate() affect only user-level mappings, which cannot be accessed from interrupts anyway), and pmap_activate() is very slow on old sun4c sparcs so we can't block interrupts for this long. this fixes PR 8322.
|
| 1.71 |
10-Apr-2000 |
chs |
sparc -> __sparc__ print lock status in uvm_object_printit().
|
| 1.70 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base
|
| 1.69 |
12-Sep-1999 |
chs |
branches: 1.69.2; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
| 1.68 |
21-Aug-1999 |
thorpej |
When handling the MADV_FREE case, if the amap or aobj has more than one reference, go through the deactivate path; the page may actually be in use by another process.
Fixes kern/8239.
|
| 1.67 |
03-Aug-1999 |
thorpej |
Fix the error recovery in uvm_map_pageable_all().
|
|
Revision tags: chs-ubc2-base
|
| 1.66 |
19-Jul-1999 |
thorpej |
Fix PR #8023 from Bernd Ernesti: when MADV_FREE'ing a region which spanned more than one VM map entry, a typo caused amap_unadd() to attempt to remove anons from the wrong amap. Fix that typo.
|
| 1.65 |
18-Jul-1999 |
thorpej |
Rework uvm_map_protect(): - Fix some locking bugs; a couple of places would return an error condition without unlocking the map. - Deal with maps marked WIREFUTURE; if making an entry VM_PROT_NONE -> anything else, and it is not already marked as wired, wire it.
|
| 1.64 |
17-Jul-1999 |
thorpej |
Add a set of "lockflags", which can control the locking behavior of some functions. Use these flags in uvm_map_pageable() to determine if the map is locked on entry (replaces an already present boolean_t argument `islocked'), and if the function should return with the map still locked.
|
| 1.63 |
07-Jul-1999 |
thorpej |
Fix a thinko which could cause a NULL pointer deref, in the PGO_FREE case.
|
| 1.62 |
07-Jul-1999 |
thorpej |
In the PGO_FREE case of uvm_map_clean()'s amap cleaning, skip wired pages.
XXX This should be handled better in the future, probably by marking the XXX page as released, and making uvm_pageunwire() free the page when XXX the wire count on a released page reaches zero.
|
| 1.61 |
07-Jul-1999 |
thorpej |
Add some more meat to madvise(2): * Implement MADV_DONTNEED: deactivate pages in the specified range, semantics similar to Solaris's MADV_DONTNEED. * Add MADV_FREE: free pages and swap resources associated with the specified range, causing the range to be reloaded from backing store (vnodes) or zero-fill (anonymous), semantics like FreeBSD's MADV_FREE and like Digital UNIX's MADV_DONTNEED (isn't it SO GREAT that madvise(2) isn't standardized!?)
As part of this, move the non-map-modifying advice handling out of uvm_map_advise(), and into sys_madvise().
As another part, implement general amap cleaning in uvm_map_clean(), and change uvm_map_clean() to only push dirty pages to disk if PGO_CLEANIT is set in its flags (and update sys___msync13() accordingly). XXX Add a patchable global "amap_clean_works", defaulting to 1, which can disable the amap cleaning code, just in case problems are unearthed; this gives a developer/user a quick way to recover and send a bug report (e.g. boot into DDB and change the value).
XXX Still need to implement a real uao_flush().
XXX Need to update the manual page.
With these changes, rebuilding libc will automatically cause the new malloc(3) to use MADV_FREE to actually release pages and swap resources when it decides that can be done.
|
| 1.60 |
01-Jul-1999 |
thorpej |
Fix a corner case locking error, which could lead to map corruption in SMP environments. See comments in <vm/vm_map.h> for details.
|
| 1.59 |
18-Jun-1999 |
thorpej |
Add the guts of mlockall(MCL_FUTURE). This requires that a process's "memlock" resource limit to uvm_mmap(). Update all calls accordingly.
|
| 1.58 |
17-Jun-1999 |
thorpej |
The i386 and pc532 pmaps are officially fixed.
|
| 1.57 |
16-Jun-1999 |
thorpej |
* Rename uvm_fault_unwire() to uvm_fault_unwire_locked(), and require that the map be at least read-locked to call this function. This requirement will be taken advantage of in a future commit. * Write a uvm_fault_unwire() wrapper which read-locks the map and calls uvm_fault_unwire_locked(). * Update the comments describing the locking contraints of uvm_fault_wire() and uvm_fault_unwire().
|
| 1.56 |
16-Jun-1999 |
thorpej |
Modify uvm_map_pageable() and uvm_map_pageable_all() to follow POSIX 1003.1b semantics. That is, regardless of the number of mlock/mlockall calls, an munlock/munlockall actually unlocks the region (i.e. sets wiring count to 0).
Add a comment describing why uvm_map_pageable() should not be used for transient page wirings (e.g. for physio) -- note, it's currently only (ab)used in this way by a few pieces of code which are known to be broken, i.e. the Amiga and Atari pmaps, and i386 and pc532 if PMAP_NEW is not used. The i386 GDT code uses uvm_map_pageable(), but in a safe way, and could be trivially converted to use uvm_fault_wire() instead.
|
| 1.55 |
16-Jun-1999 |
thorpej |
Add a macro to test if a map entry is wired.
|
| 1.54 |
15-Jun-1999 |
thorpej |
Several changes, developed and tested concurrently: * Provide POSIX 1003.1b mlockall(2) and munlockall(2) system calls. MCL_CURRENT is presently implemented. MCL_FUTURE is not fully implemented. Also, the same one-unlock-for-every-lock caveat currently applies here as it does to mlock(2). This will be addressed in a future commit. * Provide the mincore(2) system call, with the same semantics as Solaris. * Clean up the error recovery in uvm_map_pageable(). * Fix a bug where a process would hang if attempting to mlock a zero-fill region where none of the pages in that region are resident. [ This fix has been submitted for inclusion in 1.4.1 ]
|
| 1.53 |
07-Jun-1999 |
thorpej |
Print the maps flags in "show map" from DDB.
|
| 1.52 |
02-Jun-1999 |
thorpej |
Simplify the last even more; We downgraded to a shared (read) lock, so setting recursive has no effect! The kernel lock manager doesn't allow an exclusive recursion into a shared lock. This situation must simply be avoided. The only place where this might be a problem is the (ab)use of uvm_map_pageable() in the Utah-derived pmaps for m68k (they should either toss the iffy scheme they use completely, or use something like uvm_fault_wire()).
In addition, once we have looped over uvm_fault_wire(), only upgrade to an exclusive (write) lock if we need to modify the map again (i.e. wiring a page failed).
|
| 1.51 |
02-Jun-1999 |
thorpej |
Clean up the locking mess in uvm_map_pageable() a little... Most importantly, don't unlock a kernel map (!!!) and then relock it later; a recursive lock, as it used in the user map case, is fine. Also, don't change map entries while only holding a read lock on the map. Instead, if we fail to wire a page, clear recursive locking, and upgrade back to a write lock before dropping the wiring count on the remaining map entries.
|
| 1.50 |
31-May-1999 |
mrg |
unlock the map for unknown arguments to uvm_map_advise. from Soren S. Jorvang in PR kern/7681
|
| 1.49 |
28-May-1999 |
thorpej |
A little spring cleaning in the unwire case of uvm_map_pageable().
|
| 1.48 |
28-May-1999 |
thorpej |
Make uvm_fault_unwire() take a vm_map_t, rather than a pmap_t, for consistency. Use this opportunity for checking for intrsafe map use in this routine (which is illegal).
|
| 1.47 |
28-May-1999 |
thorpej |
Make "intrsafe" maps locked only by exclusive spin locks, never sleep locks (and thus, never shared locks). Move the "set/clear recursive" functions to uvm_map.c, which is the only placed they're used (and they should go away anyhow). Delete some unused cruft.
|
| 1.46 |
26-May-1999 |
thorpej |
Upon further investigation, in uvm_map_pageable(), entry->protection is the right access_type to pass to uvm_fault_wire(). This way, if the entry has VM_PROT_WRITE, and the entry is marked COW, the copy will happen immediately in uvm_fault(), as if the access were performed.
|
| 1.45 |
26-May-1999 |
thorpej |
Change the vm_map's "entries_pageable" member to a r/o flags member, which has PAGEABLE and INTRSAFE flags. PAGEABLE now really means "pageable", not "allocate vm_map_entry's from non-static pool", so update all map creations to reflect that. INTRSAFE maps are maps that are used in interrupt context (e.g. kmem_map, mb_map), and thus use the static map entry pool (XXX as does kernel_map, for now). This will eventually change now these maps are locked, as well.
|
| 1.44 |
26-May-1999 |
thorpej |
In uvm_map_pageable(), pass VM_PROT_NONE as access type to uvm_fault_wire() for now. XXX This needs to be reexamined.
|
| 1.43 |
25-May-1999 |
thorpej |
Define a new kernel object type, "intrsafe", which are used for objects which can be used in an interrupt context. Use pmap_kenter*() and pmap_kremove() only for mappings owned by these objects.
Fixes some locking protocol issues related to MP support, and eliminates all of the pmap_enter vs. pmap_kremove inconsistencies.
|
| 1.42 |
25-May-1999 |
thorpej |
Macro'ize the test for "object is a kernel object".
|
| 1.41 |
23-May-1999 |
mrg |
implement madvice() for MADV_{NORMAL,RANDOM,SEQUENTIAL}, others are not yet done.
|
| 1.40 |
20-May-1999 |
thorpej |
Make a slight modification of pmap_growkernel() -- it now returns the end of the mappable kernel virtual address space. Previously, it would get called more often than necessary, because the caller only new what was requested.
Also, export uvm_maxkaddr so that uvm_pageboot_alloc() can grow the kernel pmap if necessary, as well. Note that pmap_growkernel() must now be able to handle being called before pmap_init().
|
| 1.39 |
12-May-1999 |
thorpej |
Add an optional pmap hook, pmap_fork(), to be called at the end of uvmspace_fork().
pmap_fork() is used to "fork a pmap", that is copy data from one pmap to the other that is NOT related to actual mappings in the pmap, but is otherwise logically coupled to the address space.
|
| 1.38 |
03-May-1999 |
mrg |
remove now-wrong comments. formatting nits.
|
| 1.37 |
19-Apr-1999 |
chs |
in uvm_map_extract(), handle the case where the map entry being extracted is large enough to cause the end address of the new entry to overflow.
|
|
Revision tags: netbsd-1-4-base
|
| 1.36 |
28-Mar-1999 |
mycroft |
branches: 1.36.2; Only turn off VM_PROT_WRITE for COW pages; not VM_PROT_EXECUTE.
|
| 1.35 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
| 1.34 |
24-Jan-1999 |
chuck |
cleanup/reorg: - break anon related functions out of uvm_amap.c and put them in their own file (uvm_anon.c). includes break up uvm_anon_init into an amap and an an anon init function - ensure that only functions within the amap module access amap structure fields (add macros to amap api as needed)
|
|
Revision tags: kenh-if-detach-base
|
| 1.33 |
15-Nov-1998 |
chuck |
remove bogus permission check in uvm_map_clean(). fixes mmap/msync problem discussed/reported by jonathan and Andreas Wrede <andreas@planix.com>.
|
|
Revision tags: chs-ubc-base
|
| 1.32 |
24-Oct-1998 |
mrg |
branches: 1.32.2; KNF a missing bit. remove register.
|
| 1.31 |
19-Oct-1998 |
tron |
Defopt SYSVMSG, SYSVSEM and SYSVSHM.
|
| 1.30 |
18-Oct-1998 |
chs |
shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.29 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - replace map checks with submap checks - get rid of unused 'mainonly' arg in uvm_unmap/uvm_unmap_remove, simplify code. update all calls to reflect this. - don't worry about unmapping or changing the protection of shared share map mappings (is_main_map no longer used). - remove unused uvm_map_sharemapcopy() function from fork code.
|
| 1.28 |
31-Aug-1998 |
thorpej |
Back out previous; I should have instrumented the benefit of this one first.
|
| 1.27 |
31-Aug-1998 |
thorpej |
Use the pool allocator and the "nointr" pool page allocator for vm_map's.
|
| 1.26 |
31-Aug-1998 |
thorpej |
Use the pool allocator and the "nointr" pool page allocator for dynamically allocated vm_map_entry's.
|
| 1.25 |
31-Aug-1998 |
thorpej |
Use the pool allocator and the "nointr" pool page allocator for vmspace structures.
|
| 1.24 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
| 1.23 |
09-Aug-1998 |
perry |
bzero->memset, bcopy->memcpy, bcmp->memcmp
|
|
Revision tags: eeh-paddr_t-base
|
| 1.22 |
08-Jul-1998 |
thorpej |
branches: 1.22.2; Add support for multiple memory free lists. There is at least one default free list, and 0 - N additional free list, in order of descending priority.
A new page allocation function, uvm_pagealloc_strat(), has been added, providing three page allocation strategies:
- normal: high -> low priority free list walk, taking the page off the first free list that has one.
- only: attempt to allocate a page only from the specified free list, failing if that free list has none available.
- fallback: if `only' fails, fall back on `normal'.
uvm_pagealloc(...) is provided for normal use (and is a synonym for uvm_pagealloc_strat(..., UVM_PGA_STRAT_NORMAL, 0); the free list argument is ignored for the `normal' case).
uvm_page_physload() now specified which free list the pages will be loaded onto. This means that some platforms which have multiple physical memory segments may define additional vm_physsegs if they wish to break individual physical segments into differing priorities.
Machine-dependent code must define _at least_ the following constants in <machine/vmparam.h>:
VM_NFREELIST: the number of free lists the system will have
VM_FREELIST_DEFAULT: the default freelist (should always be 0, but is defined in machdep code so that it's with all of the other free list-related constants).
Additional free list names may be defined by machine-dependent code, but they will only be used by machine-dependent code (e.g. for loading the vm_physsegs).
|
| 1.21 |
04-Jul-1998 |
jonathan |
defopt DDB.
|
| 1.20 |
22-May-1998 |
chuck |
fix bug in uvm_map_extract, remove case. make sure we update the loop variable before removing the entry from the map. [bug was not causing problems because the remove case isn't currently being used ...]
|
| 1.19 |
09-May-1998 |
kleink |
Minor KNF.
|
| 1.18 |
05-May-1998 |
kleink |
Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
| 1.17 |
25-Apr-1998 |
matthias |
port-pc532 now has pmap_new just like port-i386.
|
| 1.16 |
30-Mar-1998 |
chuck |
have ddb show map print resident page count
|
| 1.15 |
27-Mar-1998 |
thorpej |
Split uvmspace_alloc() into uvmspace_alloc() and uvmspace_init(). The latter can be used for initializing a pre-allocated vmspace.
|
| 1.14 |
19-Mar-1998 |
chuck |
rework the copy inheritance case of fork. the old way did not handle the very rare case of shared mappings that have amap's attached in a reasonable way -- this is not currently causing any problems, but i fixed it anyway. update the comment in this section of code and also be smarter about avoiding needless calls to pmap_protect().
|
| 1.13 |
19-Mar-1998 |
thorpej |
Make the previous change `atomic'.
|
| 1.12 |
19-Mar-1998 |
thorpej |
When unsharing or execing, deactivate the old vmspace before reassigning and activating the new one. Pointed out by Chris Demetriou.
|
| 1.11 |
17-Mar-1998 |
mrg |
oops, missed a bit of KNF here.
|
| 1.10 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.9 |
01-Mar-1998 |
fvdl |
Merge with Lite2 + local changes
|
| 1.8 |
24-Feb-1998 |
chuck |
be consistent about offsets in kernel objects. vm_map_min(kernel_map) should always be the base [fixes problem on m68k detected by jason thorpe]
add comments to uvm_km.c explaining kernel memory management in more detail
|
| 1.7 |
18-Feb-1998 |
drochner |
fix map range boundary check
|
| 1.6 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.5 |
08-Feb-1998 |
mrg |
move pdhist initialisation to the same place as maphist. also, declare the history buffers are "struct uvm_history_ent" to ensure proper alignment (eg, alpha). this fixes a boottime panic when the pdhist was used before it had been initialised.
|
| 1.4 |
07-Feb-1998 |
mrg |
bzero the entire vmspace, like the old vm does. makes ps report sane values of VSZ for swapper/pagedaemon
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.80 |
26-May-2020 |
kamil |
Catch up with the usage of struct vmspace::vm_refcnt
Use the dedicated reference counting routines.
Change the type of struct vmspace::vm_refcnt and struct vm_map::ref_count to volatile.
Remove the unnecessary vm->vm_map.misc_lock locking in process_domem().
Reviewed by <ad>
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.79 |
14-Mar-2020 |
ad |
- uvmspace_exec(), uvmspace_free(): if pmap_remove_all() returns true the pmap is emptied. Pass UVM_FLAG_VAONLY when clearing out the map and avoid needless extra work to tear down each mapping individually.
- uvm_map_lookup_entry(): remove the code to do a linear scan of map entries for small maps, in preference to using the RB tree. It's questionable, and I think the code is almost never triggered because the average number of map entries has probably exceeded the hard-coded threshold for quite some time.
- vm_map_entry: get it aligned on a cacheline boundary, and cluster fields used during rbtree lookup at the beginning.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.78 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.77 |
12-Jan-2020 |
ad |
- uvm_unmap_remove(): need to call pmap_update() with the object still locked, otherwise the page could gain a new identity and still be visible via a stale mapping.
- Adjust reference counts with atomics.
|
|
Revision tags: ad-namecache-base
|
| 1.76 |
05-Jan-2020 |
para |
branches: 1.76.2; remove unused predicate function
likely unused since kmem changes
|
|
Revision tags: phil-wifi-20191119
|
| 1.75 |
01-Aug-2019 |
riastradh |
Remove last trace of never-used map_attrib.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3
|
| 1.74 |
18-May-2017 |
christos |
branches: 1.74.10; more snprintb bits
|
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529
|
| 1.73 |
25-May-2016 |
christos |
branches: 1.73.8; Introduce security.pax.mprotect.ptrace sysctl which can be used to bypass mprotect settings so that debuggers can write to the text segment of traced processes so that they can insert breakpoints. Turned off by default. Ok: chuq (for now)
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base
|
| 1.72 |
29-Oct-2012 |
para |
branches: 1.72.14; get rid of not used uvm_map flag (UVM_MAP_KMAPENT)
|
|
Revision tags: jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3
|
| 1.71 |
19-Feb-2012 |
rmind |
branches: 1.71.2; Remove VM_MAP_INTRSAFE and related code. Not used since the "kmem changes".
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.70 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
| 1.69 |
21-Jan-2012 |
chs |
fix UVM_MAP_CLIP_* to only clip if the clip address is within the entry (which would only not be true if the clip address is at one of the boundaries of the entry). fixes PR 44788.
|
| 1.68 |
20-Dec-2011 |
reinoud |
Ooops forgot the uvm_map.h
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.67 |
12-Jun-2011 |
rmind |
branches: 1.67.2; 1.67.6; Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.66 |
02-Feb-2011 |
chuck |
branches: 1.66.2; udpate license clauses on my code to match the new-style BSD licenses. based on second diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
|
| 1.65 |
25-Sep-2010 |
matt |
branches: 1.65.2; 1.65.4; Rename rb.h to rbtree.h, as it is more appropriate (c.f. ptree.h). Also helps find code that hasn't been updated to use the new rbtree API.
|
|
Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jym-xensuspend-nbase
|
| 1.64 |
01-Aug-2009 |
yamt |
branches: 1.64.2; 1.64.4; - uvm_map_extract: update map->size correctly for !UVM_EXTRACT_CONTIG. - uvm_map_extract: panic on zero-sized entries. - make uvm_map_replace static.
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5
|
| 1.63 |
10-Jun-2009 |
yamt |
on MADV_WILLNEED, start prefetching backing object's pages.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base simonb-wapbl-nbase simonb-wapbl-base mjf-devfs2-base
|
| 1.62 |
29-Jul-2008 |
matt |
branches: 1.62.8; Make uvm_map.? use <sys/rb.h> instead of <sys/tree.h>. Change the ambiguous members ownspace/space to gap/maxgap. Add some evcnt for evaluation of lookups using tree/list. Drop threshold of using tree for lookups from > 30 to > 15.
Bump kernel version to 4.99.71
|
|
Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base
|
| 1.61 |
26-Apr-2008 |
yamt |
branches: 1.61.2; 1.61.4; 1.61.6; 1.61.8; fix a locking botch. PR/38415 from Wolfgang Solfrank.
|
|
Revision tags: yamt-pf42-baseX yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.60 |
08-Jan-2008 |
yamt |
branches: 1.60.6; 1.60.8; simplify locking and remove vm_map_upgrade/downgrade. this fixes a deadlock due to read-lock recursion of map->lock.
|
| 1.59 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
|
| 1.58 |
22-Jul-2007 |
he |
branches: 1.58.6; 1.58.12; 1.58.14; 1.58.16; 1.58.18; 1.58.22; When _KERNEL is defined, we have now grown a dependency on <sys/proc.h>, since one of the inline functions now refer to curlwp. Fix this by including <sys/proc.h> when _KERNEL is defined.
|
| 1.57 |
21-Jul-2007 |
ad |
Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base
|
| 1.56 |
22-Feb-2007 |
thorpej |
branches: 1.56.4; 1.56.12; TRUE -> true, FALSE -> false
|
| 1.55 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base chap-midi-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.54 |
25-May-2006 |
yamt |
branches: 1.54.12; move wait points for kva from upper layers to vm_map. PR/33185 #1.
XXX there is a concern about interaction with kva fragmentation. see: http://mail-index.NetBSD.org/tech-kern/2006/05/11/0000.html
|
|
Revision tags: yamt-pdpolicy-base5 elad-kernelauth-base
|
| 1.53 |
03-May-2006 |
yamt |
branches: 1.53.2; uvm_km_suballoc: consider kva overhead of "kmapent". fixes PR/31275 (me) and PR/32287 (Christian Biere).
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.52 |
16-Feb-2006 |
perry |
branches: 1.52.2; 1.52.4; 1.52.6; Change "inline" back to "__inline" in .h files -- C99 is still too new, and some apps compile things in C89 mode. C89 keywords stay.
As per core@.
|
| 1.51 |
11-Feb-2006 |
yamt |
remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.50 |
21-Jan-2006 |
yamt |
branches: 1.50.2; 1.50.4; implement compat_linux mremap.
|
| 1.49 |
24-Dec-2005 |
perry |
branches: 1.49.2; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
| 1.48 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.47 |
17-May-2005 |
yamt |
branches: 1.47.2; (try to) merge map entries in fault handler.
|
|
Revision tags: kent-audio2-base
|
| 1.46 |
01-Apr-2005 |
yamt |
merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2
|
| 1.45 |
11-Feb-2005 |
chs |
use vm_map_{min,max}() instead of dereferencing the vm_map pointer directly. define and use vm_map_set{min,max}() for modifying these values. remove the {min,max}_offset aliases for these vm_map fields to be more namespace-friendly. PR 26475.
|
|
Revision tags: yamt-km-base
|
| 1.44 |
13-Jan-2005 |
yamt |
branches: 1.44.2; 1.44.4; in uvm_unmap_remove, always wakeup va waiters if any. uvm_km_free_wakeup is now a synonym of uvm_km_free.
|
| 1.43 |
12-Jan-2005 |
yamt |
don't reserve (uvm_mapent_reserve) entries for malloc/pool backends because it isn't necessary or safe. reported and tested by Denis Lagno. PR/28897.
|
|
Revision tags: kent-audio1-beforemerge
|
| 1.42 |
01-Jan-2005 |
yamt |
in the case of !PMAP_MAP_POOLPAGE, gather pool backend allocations to large chunks for kernel_map and kmem_map to ease kva fragmentation.
|
| 1.41 |
01-Jan-2005 |
yamt |
introduce vm_map_kernel, a subclass of vm_map, and move some kernel-only members of vm_map to it.
|
| 1.40 |
01-Jan-2005 |
yamt |
for in-kernel maps, - allocate kva for vm_map_entry from the map itsself and remove the static limit, MAX_KMAPENT. - keep merged entries for later splitting to fix allocate-to-free problem. PR/24039.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.39 |
10-Feb-2004 |
matt |
Back out the changes in http://mail-index.netbsd.org/source-changes/2004/01/29/0027.html since they don't really fix the problem.
Incorpate one fix: Mark uvm_map_entry's that were created with UVM_FLAG_NOMERGE so that they will not be used as future merge candidates.
|
| 1.38 |
29-Jan-2004 |
yamt |
- split uvm_map() into two functions for the followings. - for in-kernel maps, disable map entry merging so that unmap operations won't block. (workaround for PR/24039) - for in-kernel maps, allocate kva for vm_map_entry from the map itsself and eliminate MAX_KMAPENT and uvm_map_entry_kmem_pool.
|
| 1.37 |
01-Nov-2003 |
yamt |
track map entries and free spaces using red-black tree to improve scalability of operations on the map.
originally done by Niels Provos for OpenBSD. tweaked for NetBSD by me with some advices from enami tsugutomo. discussed on tech-kern@ and tech-perform@.
|
| 1.36 |
01-Oct-2003 |
enami |
ansi'fy.
|
| 1.35 |
10-Sep-2003 |
enami |
Swap where the vm map's max and min offset are stored so that they can be used during map traversal.
|
| 1.34 |
20-Feb-2003 |
atatat |
branches: 1.34.2; Introduce "top down" memory management for mmap()ed allocations. This means that the dynamic linker gets mapped in at the top of available user virtual memory (typically just below the stack), shared libraries get mapped downwards from that point, and calls to mmap() that don't specify a preferred address will get mapped in below those.
This means that the heap and the mmap()ed allocations will grow towards each other, allowing one or the other to grow larger than before. Previously, the heap was limited to MAXDSIZ by the placement of the dynamic linker (and the process's rlimits) and the space available to mmap was hobbled by this reservation.
This is currently only enabled via an *option* for the i386 platform (though other platforms are expected to follow). Add "options USE_TOPDOWN_VM" to your kernel config file, rerun config, and rebuild your kernel to take advantage of this.
Note that the pmap_prefer() interface has not yet been modified to play nicely with this, so those platforms require a bit more work (most notably the sparc) before they can use this new memory arrangement.
This change also introduces a VM_DEFAULT_ADDRESS() macro that picks the appropriate default address based on the size of the allocation or the size of the process's text segment accordingly. Several drivers and the SYSV SHM address assignment were changed to use this instead of each one picking their own "default".
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.33 |
02-Nov-2002 |
perry |
/*CONTCOND*/ while (0)'ed macros
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.32 |
22-Sep-2002 |
chs |
add a new flag VM_MAP_DYING, which is set before we start tearing down a vm_map. use this to skip the pmap_update() at the end of all the removes, which allows pmaps to optimize pmap tear-down. also, use the new pmap_remove_all() hook to let the pmap implemenation know what we're up to.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3
|
| 1.31 |
03-Oct-2001 |
christos |
protect against traditional macro expansion.
|
|
Revision tags: thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf
|
| 1.30 |
09-Sep-2001 |
chs |
create a new pool for map entries, allocated from kmem_map instead of kernel_map. use this instead of the static map entries when allocating map entries for kernel_map. this greatly reduces the number of static map entries used and should eliminate the problems with running out.
|
|
Revision tags: thorpej-devvp-base
|
| 1.29 |
26-Jun-2001 |
thorpej |
branches: 1.29.2; 1.29.4; Reduce some complexity in the fault path -- Rather than maintaining an spl-protected "interrupt safe map" list, simply require that callers of uvm_fault() never call us in interrupt context (MD code must make the assertion), and check for interrupt-safe maps in uvmfault_lookup() before we lock the map.
|
| 1.28 |
02-Jun-2001 |
chs |
replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.27 |
26-May-2001 |
chs |
replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
|
| 1.26 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.25 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.24 |
18-Feb-2001 |
chs |
branches: 1.24.2; clean up DIAGNOSTIC checks, use KASSERT().
|
| 1.23 |
13-Dec-2000 |
enami |
Use single const char array instead of over 200 string constant.
|
| 1.22 |
13-Sep-2000 |
thorpej |
Add an align argument to uvm_map() and some callers of that routine. Works similarly fto pmap_prefer(), but allows callers to specify a minimum power-of-two alignment of the region. How we ever got along without this for so long is beyond me.
|
| 1.21 |
16-Aug-2000 |
thorpej |
Garbage-collect a constant that nothing uses.
|
| 1.20 |
12-Aug-2000 |
sommerfeld |
Use ltsleep in a loop instead of simple_unlock/tsleep/goto try_again
|
| 1.19 |
26-Jun-2000 |
mrg |
restore a dropped #ifdef _KERNEL
|
| 1.18 |
26-Jun-2000 |
mrg |
<vm/vm_map.h> gets merged into <uvm/uvm_map.h>
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.17 |
29-Mar-2000 |
simonb |
Remove redundant decl for uvmspace_fork() - it's in <uvm/uvm_extern.h>.
|
| 1.16 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.15 |
21-Jun-1999 |
thorpej |
branches: 1.15.2; Protect prototypes, certain macros, and inlines from userland.
|
| 1.14 |
26-May-1999 |
thorpej |
Change the vm_map's "entries_pageable" member to a r/o flags member, which has PAGEABLE and INTRSAFE flags. PAGEABLE now really means "pageable", not "allocate vm_map_entry's from non-static pool", so update all map creations to reflect that. INTRSAFE maps are maps that are used in interrupt context (e.g. kmem_map, mb_map), and thus use the static map entry pool (XXX as does kernel_map, for now). This will eventually change now these maps are locked, as well.
|
| 1.13 |
23-May-1999 |
mrg |
implement madvice() for MADV_{NORMAL,RANDOM,SEQUENTIAL}, others are not yet done.
|
| 1.12 |
20-May-1999 |
thorpej |
Make a slight modification of pmap_growkernel() -- it now returns the end of the mappable kernel virtual address space. Previously, it would get called more often than necessary, because the caller only new what was requested.
Also, export uvm_maxkaddr so that uvm_pageboot_alloc() can grow the kernel pmap if necessary, as well. Note that pmap_growkernel() must now be able to handle being called before pmap_init().
|
|
Revision tags: kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.11 |
25-Mar-1999 |
mrg |
branches: 1.11.2; 1.11.4; 1.11.6; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.10 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - replace map checks with submap checks - get rid of unused 'mainonly' arg in uvm_unmap/uvm_unmap_remove, simplify code. update all calls to reflect this. - don't worry about unmapping or changing the protection of shared share map mappings (is_main_map no longer used). - remove unused uvm_map_sharemapcopy() function from fork code.
|
| 1.9 |
31-Aug-1998 |
thorpej |
Back out previous; I should have instrumented the benefit of this one first.
|
| 1.8 |
31-Aug-1998 |
thorpej |
Use the pool allocator and the "nointr" pool page allocator for vm_map's.
|
| 1.7 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.6 |
10-Feb-1998 |
mrg |
branches: 1.6.2; - add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.5 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
prototype for uvm_map_checkprot() moved to uvm_extern.h.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE yamt-pagecache-base9 yamt-pagecache-tag8 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE rmind-smpnet-nbase rmind-smpnet-base agc-symver-base tls-maxphys-base yamt-pagecache-base8 yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-nb5-pq3-base netbsd-5-1-RELEASE yamt-nfs-mp-base11 netbsd-5-1-RC4 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE yamt-nfs-mp-base8 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base haad-dm-base1 haad-dm-base simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base jmcneill-pm-base hpcarm-cleanup-base mjf-ufs-trans-base yamt-idlelwp-base8 reinoud-bufcleanup-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 gdamore-uart-base yamt-pdpolicy-base5 elad-kernelauth-nbase yamt-pdpolicy-base4 yamt-pdpolicy-base3 yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.37 |
11-Feb-2006 |
yamt |
remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.36 |
11-Dec-2005 |
christos |
branches: 1.36.2; 1.36.4; 1.36.6; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.35 |
28-Jun-2005 |
thorpej |
branches: 1.35.2; Clean up the cpp macro used to say "we're compiling this specific C file".
|
| 1.34 |
29-May-2005 |
christos |
avoid shadow variables. remove unneeded casts.
|
|
Revision tags: kent-audio2-base
|
| 1.33 |
01-Apr-2005 |
yamt |
merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2
|
| 1.32 |
11-Feb-2005 |
chs |
use vm_map_{min,max}() instead of dereferencing the vm_map pointer directly. define and use vm_map_set{min,max}() for modifying these values. remove the {min,max}_offset aliases for these vm_map fields to be more namespace-friendly. PR 26475.
|
|
Revision tags: yamt-km-base
|
| 1.31 |
12-Jan-2005 |
yamt |
branches: 1.31.2; 1.31.4; don't reserve (uvm_mapent_reserve) entries for malloc/pool backends because it isn't necessary or safe. reported and tested by Denis Lagno. PR/28897.
|
|
Revision tags: kent-audio1-beforemerge
|
| 1.30 |
01-Jan-2005 |
yamt |
introduce vm_map_kernel, a subclass of vm_map, and move some kernel-only members of vm_map to it.
|
| 1.29 |
01-Jan-2005 |
yamt |
for in-kernel maps, - allocate kva for vm_map_entry from the map itsself and remove the static limit, MAX_KMAPENT. - keep merged entries for later splitting to fix allocate-to-free problem. PR/24039.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.28 |
10-Feb-2004 |
matt |
Back out the changes in http://mail-index.netbsd.org/source-changes/2004/01/29/0027.html since they don't really fix the problem.
Incorpate one fix: Mark uvm_map_entry's that were created with UVM_FLAG_NOMERGE so that they will not be used as future merge candidates.
|
| 1.27 |
29-Jan-2004 |
yamt |
- split uvm_map() into two functions for the followings. - for in-kernel maps, disable map entry merging so that unmap operations won't block. (workaround for PR/24039) - for in-kernel maps, allocate kva for vm_map_entry from the map itsself and eliminate MAX_KMAPENT and uvm_map_entry_kmem_pool.
|
| 1.26 |
01-Nov-2003 |
yamt |
track map entries and free spaces using red-black tree to improve scalability of operations on the map.
originally done by Niels Provos for OpenBSD. tweaked for NetBSD by me with some advices from enami tsugutomo. discussed on tech-kern@ and tech-perform@.
|
| 1.25 |
01-Oct-2003 |
enami |
ansi'fy.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.24 |
01-Dec-2002 |
matt |
branches: 1.24.6; Reorder things so that with multiple inclusion protection that optional definitions are outside the protection checks.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.23 |
22-Sep-2002 |
chs |
add a new flag VM_MAP_DYING, which is set before we start tearing down a vm_map. use this to skip the pmap_update() at the end of all the removes, which allows pmaps to optimize pmap tear-down. also, use the new pmap_remove_all() hook to let the pmap implemenation know what we're up to.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
| 1.22 |
26-Jun-2001 |
thorpej |
branches: 1.22.2; Reduce some complexity in the fault path -- Rather than maintaining an spl-protected "interrupt safe map" list, simply require that callers of uvm_fault() never call us in interrupt context (MD code must make the assertion), and check for interrupt-safe maps in uvmfault_lookup() before we lock the map.
|
| 1.21 |
02-Jun-2001 |
chs |
replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.20 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.19 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.18 |
27-Nov-2000 |
chs |
branches: 1.18.2; Initial integration of the Unified Buffer Cache project.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.17 |
08-May-2000 |
thorpej |
branches: 1.17.4; uvm_map_setup(): We almost ever set up an interrupt-safe map, but we set up quite a few regular ones (at every fork!), so put interrupt- safe map setup in the slow path with a __predict_false().
uvm_map_reference(): __predict_false() the check for NULL map. uvm_map_deallocate(): Likewise.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.16 |
01-Jul-1999 |
thorpej |
branches: 1.16.2; Fix a corner case locking error, which could lead to map corruption in SMP environments. See comments in <vm/vm_map.h> for details.
|
| 1.15 |
14-Jun-1999 |
thorpej |
Use a more descriptive wait message for VM map locks.
|
| 1.14 |
04-Jun-1999 |
thorpej |
Keep interrupt-safe maps on an additional queue. In uvm_fault(), if we're looking up a kernel address, check to see if the address is on this "interrupt-safe" list. If so, return failure immediately. This prevents a locking screw if a page fault is taken on an interrupt-safe map in or out of interrupt context.
|
| 1.13 |
26-May-1999 |
thorpej |
Change the vm_map's "entries_pageable" member to a r/o flags member, which has PAGEABLE and INTRSAFE flags. PAGEABLE now really means "pageable", not "allocate vm_map_entry's from non-static pool", so update all map creations to reflect that. INTRSAFE maps are maps that are used in interrupt context (e.g. kmem_map, mb_map), and thus use the static map entry pool (XXX as does kernel_map, for now). This will eventually change now these maps are locked, as well.
|
| 1.12 |
03-May-1999 |
mrg |
remove now-wrong comment. formatting nit.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.11 |
25-Mar-1999 |
mrg |
branches: 1.11.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.10 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - replace map checks with submap checks - get rid of unused 'mainonly' arg in uvm_unmap/uvm_unmap_remove, simplify code. update all calls to reflect this. - don't worry about unmapping or changing the protection of shared share map mappings (is_main_map no longer used). - remove unused uvm_map_sharemapcopy() function from fork code.
|
| 1.9 |
31-Aug-1998 |
thorpej |
Back out previous; I should have instrumented the benefit of this one first.
|
| 1.8 |
31-Aug-1998 |
thorpej |
Use the pool allocator and the "nointr" pool page allocator for vm_map's.
|
| 1.7 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.6 |
09-Mar-1998 |
mrg |
branches: 1.6.2; KNF.
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.80 |
14-Jun-2020 |
ad |
Remove PG_ZERO. It worked brilliantly on x86 machines from the mid-90s but having spent an age experimenting with it over the last 6 months on various machines and with different use cases it's always either break-even or a slight net loss for me.
|
| 1.79 |
11-Jun-2020 |
ad |
Counter tweaks:
- Don't need to count anonpages+filepages any more; clean+unknown+dirty for each kind of page can be summed to get the totals.
- Track the number of free pages with a counter so that it's one less thing for the allocator to do, which opens up further options there.
- Remove cpu_count_sync_one(). It has no users and doesn't save a whole lot. For the cheap option, give cpu_count_sync() a boolean parameter indicating that a cached value is okay, and rate limit the updates for cached values to hz.
|
| 1.78 |
11-Jun-2020 |
ad |
uvm_availmem(): give it a boolean argument to specify whether a recent cached value will do, or if the very latest total must be fetched. It can be called thousands of times a second and fetching the totals impacts not only the calling LWP but other CPUs doing unrelated activity in the VM system.
|
| 1.77 |
23-May-2020 |
ad |
Move proc_lock into the data segment. It was dynamically allocated because at the time we had mutex_obj_alloc() but not __cacheline_aligned.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.76 |
22-Mar-2020 |
ad |
Process concurrent page faults on individual uvm_objects / vm_amaps in parallel, where the relevant pages are already in-core. Proposed on tech-kern.
Temporarily disabled on MP architectures with __HAVE_UNLOCKED_PMAP until adjustments are made to their pmaps.
|
| 1.75 |
19-Mar-2020 |
ad |
sysctl_vm_uvmexp2(): some counters were needlessly truncated.
|
|
Revision tags: is-mlppp-base ad-namecache-base3 ad-namecache-base2 ad-namecache-base1
|
| 1.74 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.73 |
31-Dec-2019 |
ad |
branches: 1.73.2; Rename uvm_free() -> uvm_availmem().
|
| 1.72 |
21-Dec-2019 |
ad |
Counter tweaks:
"zeroaborts" + "free" don't need to be per-CPU counters, and "bucketmiss" wasn't used. Remove those and cluster by usage.
|
| 1.71 |
21-Dec-2019 |
ad |
uvmexp.free -> uvm_free()
|
| 1.70 |
16-Dec-2019 |
ad |
- Extend the per-CPU counters matt@ did to include all of the hot counters in UVM, excluding uvmexp.free, which needs special treatment and will be done with a separate commit. Cuts system time for a build by 20-25% on a 48 CPU machine w/DIAGNOSTIC.
- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118
|
| 1.69 |
07-Jan-2019 |
jdolecek |
add sysctl to easily set ubc_direct
PR kern/53124
|
|
Revision tags: pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
| 1.68 |
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
|
Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.67 |
02-Dec-2017 |
mrg |
branches: 1.67.2; 1.67.4; add two new members to uvmexp_sysctl{}: bootpages and poolpages. bootpages is set to the pages allocated via uvm_pageboot_alloc(). poolpages is calculated from the list of pools nr_pages members.
this brings us closer to having a valid total of pages known by the system, vs actual pages originally managed.
XXX: poolpages needs some handling for PR_RECURSIVE pools still.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
| 1.66 |
02-Jul-2017 |
joerg |
Export the guard size of the main thread via vm.guard_size. Add a complementary writable sysctl for the initial guard size of threads created via pthread_create. Let the existing attribut accessors do the right thing. Raise the default guard size for threads to 64KB.
|
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
| 1.65 |
01-Dec-2014 |
msaitoh |
branches: 1.65.10; Sort in uvmexp_sysctl's order for readability. No functional change.
|
| 1.64 |
01-Dec-2014 |
msaitoh |
Fix a bug that "vmstat -s" print uvmexp.ncolors incorrectly.
|
|
Revision tags: nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.63 |
26-Feb-2014 |
martin |
branches: 1.63.4; 1.63.6; Fix copy & pasto
|
| 1.62 |
26-Feb-2014 |
matt |
Add vm.min_address and vm.max_address which return VM_MIN_ADDRESS and VM_MAXUSER_ADDRESS.
|
| 1.61 |
25-Feb-2014 |
pooka |
Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before the sysctl link sets are processed, and remove redundancy.
Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate lines of code.
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.60 |
02-Jun-2012 |
dsl |
branches: 1.60.2; 1.60.4; Add some pre-processor magic to verify that the type of the data item passed to sysctl_createv() actually matches the declared type for the item itself. In the places where the caller specifies a function and a structure address (typically the 'softc') an explicit (void *) cast is now needed. Fixes bugs in sys/dev/acpi/asus_acpi.c sys/dev/bluetooth/bcsp.c sys/kern/vfs_bio.c sys/miscfs/syncfs/sync_subr.c and setting AcpiGbl_EnableAmlDebugObject. (mostly passing the address of a uint64_t when typed as CTLTYPE_INT). I've test built quite a few kernels, but there may be some unfixed MD fallout. Most likely passing &char[] to char *. Also add CTLFLAG_UNSIGNED for unsiged decimals - not set yet.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.59 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
| 1.58 |
30-Dec-2011 |
christos |
prevent kernel from writing more than userland passed.
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base
|
| 1.57 |
13-Nov-2011 |
christos |
branches: 1.57.4; if you are going to dereference a variable, check the variable itself, not it cousin.
|
|
Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.56 |
02-Feb-2011 |
chuck |
branches: 1.56.4; udpate license clauses on my code to match the new-style BSD licenses. based on second diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231
|
| 1.55 |
20-Dec-2010 |
matt |
branches: 1.55.2; 1.55.4; Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
|
| 1.54 |
16-Nov-2010 |
enami |
Nowadays, comparing priority against PZERO doesn't make any sense. Instead, see if a process waits uninterruptibly like ps does, so that the second column (`b') of default vmstat output prints some useful value (-t is still broken though).
|
|
Revision tags: uebayasi-xip-base6 uebayasi-xip-base5
|
| 1.53 |
06-Nov-2010 |
uebayasi |
Include uvm/uvm.h because this is part of UVM.
|
|
Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1
|
| 1.52 |
16-Apr-2010 |
rmind |
- Merge sched_pstats() and uvm_meter()/uvm_loadav(). Avoids double loop through all LWPs and duplicate locking overhead.
- Move sched_pstats() from soft-interrupt context to process 0 main loop. Avoids blocking effect on real-time threads. Mostly fixes PR/38792.
Note: it might be worth to move the loop above PRI_PGDAEMON. Also, sched_pstats() might be cleaned-up slightly.
|
| 1.51 |
11-Apr-2010 |
mrg |
now that CTLTYPE_BOOL actually works, use it to export vm_page_zero_enable as vm.idlezero in a way that actually works on big endian systems.
|
|
Revision tags: yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
| 1.50 |
21-Oct-2009 |
rmind |
branches: 1.50.2; 1.50.4; Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
|
| 1.49 |
04-Jun-2008 |
ad |
branches: 1.49.8; 1.49.14; 1.49.16; 1.49.18; - vm_page: put listq, pageq into a union alongside a LIST_ENTRY, so we can use both types of list.
- Make page coloring and idle zero state per-CPU.
- Maintain per-CPU page freelists. When freeing, put pages onto the local CPU's lists and the global lists. When allocating, prefer to take pages from the local CPU. If none are available take from the global list as done now. Proposed on tech-kern@.
|
|
Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base
|
| 1.48 |
24-Apr-2008 |
ad |
branches: 1.48.2; 1.48.4; Network protocol interrupts can now block on locks, so merge the globals proclist_mutex and proclist_lock into a single adaptive mutex (proc_lock). Implications:
- Inspecting process state requires thread context, so signals can no longer be sent from a hardware interrupt handler. Signal activity must be deferred to a soft interrupt or kthread.
- As the proc state locking is simplified, it's now safe to take exit() and wait() out from under kernel_lock.
- The system spends less time at IPL_SCHED, and there is less lock activity.
|
|
Revision tags: nick-csl-alignment-base5 yamt-pf42-baseX yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.47 |
26-Feb-2007 |
yamt |
branches: 1.47.38; 1.47.40; implement priority inheritance.
|
| 1.46 |
17-Feb-2007 |
pavel |
Change the process/lwp flags seen by userland via sysctl back to the P_*/L_* naming convention, and rename the in-kernel flags to avoid conflict. (P_ -> PK_, L_ -> LW_ ). Add back the (now unused) LSDEAD constant.
Restores source compatibility with pre-newlock2 tools like ps or top.
Reviewed by Andrew Doran.
|
| 1.45 |
15-Feb-2007 |
ad |
branches: 1.45.2; Fix load average calculation:
- Don't consider kernel threads when calculating the load average. Their priorities are no longer adjusted by the scheduler, and their level of activity is dependent upon running user processes. - Change the (l->l_priority > PZERO) check in uvm_meter() to (l->l_flag & L_SINTR). I think this check was originally intended to weed out processes sleeping interruptably.
|
|
Revision tags: post-newlock2-merge
|
| 1.44 |
09-Feb-2007 |
ad |
Merge newlock2 to head.
|
|
Revision tags: netbsd-4-0-RC2 netbsd-4-0-RC1 newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base netbsd-4-base
|
| 1.43 |
01-Nov-2006 |
yamt |
branches: 1.43.2; 1.43.4; remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.42 |
12-Oct-2006 |
dogcow |
even more __unused.
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.41 |
15-Sep-2006 |
yamt |
branches: 1.41.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base chap-midi-base rpaulo-netinet-merge-pcb-base
|
| 1.40 |
07-Jun-2006 |
kardel |
branches: 1.40.6; merge FreeBSD timecounters from branch simonb-timecounters - struct timeval time is gone time.tv_sec -> time_second - struct timeval mono_time is gone mono_time.tv_sec -> time_uptime - access to time via {get,}{micro,nano,bin}time() get* versions are fast but less precise - support NTP nanokernel implementation (NTP API 4) - further reading: Timecounter Paper: http://phk.freebsd.dk/pubs/timecounter.pdf NTP Nanokernel: http://www.eecis.udel.edu/~mills/ntp/html/kern.html
|
|
Revision tags: yamt-pdpolicy-base5 yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base
|
| 1.39 |
21-Dec-2005 |
yamt |
branches: 1.39.4; 1.39.6; 1.39.8; 1.39.14; whitespace in SYSCTL_DESCR.
|
| 1.38 |
21-Dec-2005 |
yamt |
make length of inactive queue tunable by sysctl. (vm.inactivepct)
|
| 1.37 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base ktrace-lwp-base
|
| 1.36 |
09-Nov-2005 |
simonb |
Whitespace nit.
|
|
Revision tags: yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.35 |
27-Jun-2005 |
thorpej |
branches: 1.35.2; Use ANSI function decls.
|
| 1.34 |
15-May-2005 |
yamt |
remove anon related statistics which are no longer used.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
| 1.33 |
10-Oct-2004 |
yamt |
expose vm_page_zero_enable as vm.idlezero sysctl. XXX assuming boolean_t == int.
|
| 1.32 |
25-May-2004 |
atatat |
Sysctl descriptions under vm subtree
|
|
Revision tags: netbsd-2-0-base
|
| 1.31 |
24-Mar-2004 |
atatat |
branches: 1.31.2; Tango on sysctl_createv() and flags. The flags have all been renamed, and sysctl_createv() now uses more arguments.
|
| 1.30 |
24-Mar-2004 |
junyoung |
- Nuke __P(). - Drop trailing spaces.
|
| 1.29 |
11-Jan-2004 |
yamt |
sysctl_vm_updateminmax: fix swapped filemin and execmin. the problem reported by Vesbula on current-users@.
|
| 1.28 |
07-Dec-2003 |
tsutsui |
Allow sysctl(8) to update vm.{anon,exec,file}{min,max}.
XXX needs sysctl(9) man page to confirm this change..
|
| 1.27 |
04-Dec-2003 |
atatat |
Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(), vfs_sysctl(), etc, routines, along with sysctl_int() et al. Now all nodes are registered with the tree, and nodes can be added (or removed) easily, and I/O to and from the tree is handled generically.
Since the nodes are registered with the tree, the mapping from name to number (and back again) can now be discovered, instead of having to be hard coded. Adding new nodes to the tree is likewise much simpler -- the new infrastructure handles almost all the work for simple types, and just about anything else can be done with a small helper function.
All existing nodes are where they were before (numerically speaking), so all existing consumers of sysctl information should notice no difference.
PS - I'm sorry, but there's a distinct lack of documentation at the moment. I'm working on sysctl(3/8/9) right now, and I promise to watch out for buses.
|
| 1.26 |
29-Jun-2003 |
fvdl |
branches: 1.26.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
| 1.25 |
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
| 1.24 |
18-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base kqueue-base
|
| 1.23 |
09-Dec-2001 |
chs |
add {anon,file,exec}max as a upper bound on the amount of memory that will be allocated for the respective usage types when there is contention for memory.
replace "vnode" and "vtext" with "file" and "exec" in uvmexp field names and sysctl names.
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.22 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
| 1.21 |
14-Jul-2001 |
matt |
branches: 1.21.4; Add support for kern.maxphys, vm.maxslp, vm.uspace (the later two for ps).
|
| 1.20 |
02-Jun-2001 |
chs |
branches: 1.20.2; replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.19 |
25-May-2001 |
chs |
remove trailing whitespace.
|
| 1.18 |
29-Apr-2001 |
thorpej |
Implement page coloring, using a round-robin bucket selection algorithm (Solaris calls this "Bin Hopping").
This implementation currently relies on MD code to define a constant defining the number of buckets. This will change reasonably soon (MD code will be able to dynamically size the bucket array).
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.17 |
09-Mar-2001 |
chs |
add UBC memory-usage balancing. we track the number of pages in use for each of the basic types (anonymous data, executable image, cached files) and prevent the pagedaemon from reusing a given page if that would reduce the count of that type of page below a sysctl-setable minimum threshold. the thresholds are controlled via three new sysctl tunables: vm.anonmin, vm.vnodemin, and vm.vtextmin. these tunables are the percentages of pageable memory reserved for each usage, and we do not allow the sum of the minimums to be more than 95% so that there's always some memory that can be reused.
|
| 1.16 |
30-Nov-2000 |
simonb |
branches: 1.16.2; Move uvm_pgcnt_vnode and uvm_pgcnt_anon into uvmexp (as vnodepages and anonpages), and add vtextpages which is currently unused but will be used to trace the number of pages used by vtext vnodes.
|
| 1.15 |
29-Nov-2000 |
simonb |
Add a vm.uvmexp2 sysctl that uses a ABI-safe 'struct uvmexp_sysctl'.
|
| 1.14 |
24-Nov-2000 |
chs |
use queue.h macros and other misc cleanup.
|
| 1.13 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.12 |
26-May-2000 |
thorpej |
Introduce a new process state distinct from SRUN called SONPROC which indicates that the process is actually running on a processor. Test against SONPROC as appropriate rather than combinations of SRUN and curproc. Update all context switch code to properly set SONPROC when the process becomes the current process on the CPU.
|
|
Revision tags: chs-ubc2-newbase
|
| 1.11 |
11-Feb-2000 |
thorpej |
Add some very simple code to auto-size the kmem_map. We take the amount of physical memory, divide it by 4, and then allow machine dependent code to place upper and lower bounds on the size. Export the computed value to userspace via the new "vm.nkmempages" sysctl.
NKMEMCLUSTERS is now deprecated and will generate an error if you attempt to use it. The new option, should you choose to use it, is called NKMEMPAGES, and two new options NKMEMPAGES_MIN and NKMEMPAGES_MAX allow the user to configure the bounds in the kernel config file.
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.10 |
25-Jul-1999 |
thorpej |
branches: 1.10.2; Turn the proclist lock into a read/write spinlock. Update proclist locking calls to reflect this. Also, block statclock rather than softclock during in the proclist locking functions, to address a problem reported on current-users by Sean Doran.
|
| 1.9 |
22-Jul-1999 |
thorpej |
Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.8 |
25-Mar-1999 |
mrg |
branches: 1.8.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.7 |
09-Aug-1998 |
perry |
bzero->memset, bcopy->memcpy, bcmp->memcmp
|
|
Revision tags: eeh-paddr_t-base
|
| 1.6 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.5 |
08-Feb-1998 |
mrg |
fill out vmtotals: t_free, t_vm, t_avm, t_rm and t_arm. leaves shared of same, and t_pw.
|
| 1.4 |
07-Feb-1998 |
mrg |
KNF.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
| 1.187 |
11-Dec-2025 |
andvar |
Fix various typos in comments.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| 1.186 |
24-Feb-2025 |
andvar |
s/architecure/architecture/ and few other typos in comments.
|
|
Revision tags: perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.185 |
21-Nov-2023 |
riastradh |
branches: 1.185.2; pax(9): Rework header file more coherently to nix some needless #ifs.
Cleans up some of the fallout from PR kern/57711 fixes.
Could do a little more to nix PAX_SEGVGUARD conditionals but maybe not worth it.
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.184 |
07-Jul-2022 |
rin |
Convert CTASSERT(9) for PAGE_{SIZE,MASK} into KASSERT(9).
They are not compile-time constants for sparc.
|
| 1.183 |
06-Jul-2022 |
riastradh |
uvm(9): fo_mmap caller guarantees positive size.
No functional change intended, just sprinkling assertions to make it clearer.
|
| 1.182 |
06-Jul-2022 |
riastradh |
mmap(2): Assert size != 0 in non-anonymous case.
This is guaranteed by a test earlier; adding the assertion just makes it clearer that it applies to the branch where we call fo_mmap -- no functional change intended.
|
| 1.181 |
06-Jul-2022 |
riastradh |
mmap(2): Avoid overflow in rounding and checking size.
|
| 1.180 |
04-Jun-2022 |
riastradh |
mmap(2): If we fail with a hint, try again without it.
`Hint' here means nonzero addr, but no MAP_FIXED or MAP_TRYFIXED.
This is suboptimal -- we could teach uvm_mmap to do a fancier search using the address as a hint. But this should do for now.
Candidate fix for PR kern/55533.
|
| 1.179 |
19-Apr-2022 |
riastradh |
Revert "mmap(2): If we fail with a hint, try again without it."
This doesn't work, because uvm_mmap releases the uobj when it fails. Should factor this more coherently, but let's just revert for now.
Reported-by: syzbot+d347c8951821b236117a@syzkaller.appspotmail.com Reported-by: syzbot+7643d1b769fdfa18c3b2@syzkaller.appspotmail.com Reported-by: syzbot+44f4b39671dd580cba5c@syzkaller.appspotmail.com Reported-by: syzbot+b5a422299ca4ffe8570c@syzkaller.appspotmail.com Reported-by: syzbot+22681822db67b6e90cfb@syzkaller.appspotmail.com Reported-by: syzbot+e59f493ceef72b925a17@syzkaller.appspotmail.com Reported-by: syzbot+666f3fe8364f47e8641b@syzkaller.appspotmail.com Reported-by: syzbot+511d4572f52f1fd9b5cc@syzkaller.appspotmail.com
|
| 1.178 |
19-Apr-2022 |
riastradh |
mmap(2): If we fail with a hint, try again without it.
`Hint' here means nonzero addr, but no MAP_FIXED or MAP_TRYFIXED.
This is suboptimal -- we could teach uvm_mmap to do a fancier search using the address as a hint. But this should do for now.
Candidate fix for PR kern/55533.
ok chs@
|
| 1.177 |
27-Mar-2022 |
hannken |
Make mmap() with "len == 0" an error if not MAP_ANON. We should return an error for MAP_ANON too but unfortunately our /libexec/ld.elf_so sometimes creates an empty anon mapping for the bss of a shared library.
At least FreeBSD and Solaris return this error too and according to POSIX "If len is zero, mmap() shall fail and no mapping shall be established".
Fixes PR pkg/56338 Installing qt5-qtdeclarative leaves a dangling reference
The dangling reference here originates from vn_mmap() taking a vnode reference for this empty mapping that will never be released.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base
|
| 1.176 |
21-Jul-2021 |
skrll |
need <sys/param.h> for COHERENCY_UNIT
Minor KNF along the way.
|
|
Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.175 |
23-Feb-2020 |
ad |
branches: 1.175.10; UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base phil-wifi-20191119
|
| 1.174 |
04-Oct-2019 |
kamil |
branches: 1.174.2; Avoid left shift changing the signedness flag
Reviewed by <mrg>
Reported-by: syzbot+25ac03024cedf27f3368@syzkaller.appspotmail.com
|
| 1.173 |
06-Aug-2019 |
maxv |
Change 'npgs' from int to size_t. Otherwise the 64bit->32bit conversion could lead to npgs=0, which is not expected. It later triggers a panic in uvm_vsunlock().
Found by TriforceAFL (Akul Pillai).
|
|
Revision tags: netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
| 1.172 |
06-Apr-2019 |
thorpej |
branches: 1.172.4; Overhaul the API used to fetch and store individual memory cells in userspace. The old fetch(9) and store(9) APIs (fubyte(), fuword(), subyte(), suword(), etc.) are retired and replaced with new ufetch(9) and ustore(9) APIs that can return proper error codes, etc. and are implemented consistently across all platforms. The interrupt-safe variants are no longer supported (and several of the existing attempts at fuswintr(), etc. were buggy and not actually interrupt-safe).
Also augmement the ucas(9) API, making it consistently available on all plaforms, supporting uniprocessor and multiprocessor systems, even those that do not have CAS or LL/SC primitives.
Welcome to NetBSD 8.99.37.
|
| 1.171 |
14-Mar-2019 |
christos |
unify rounding and range checking.
|
| 1.170 |
14-Mar-2019 |
kre |
Avoid a panic from the sequence
mlock(buf, 0); munlock(buf, 0); mlock(buf, page); munlock(buf, page);
where buf is page aligned, and page is actually anything > 0 (but not too big) which will get rounded up to the next multiple of the page size.
In that sequence, it is possible that the 1st munlock() is optional.
Add a KASSERT() (or two) to detect the first effects of the problem (without that, or in !DIAGNOSTIC kernels) the problem eventually causes some kind of problem or other (most often still a panic.)
After this, mlock(anything, 0) (or munlock) validates "anything" but is otherwise a no-op (regardless of the alignment of anything).
Also, don't treat mlock(buf, verybig) as equivalent to mlock(buf, 0) which is (more or less) what we had been doing.
XXX pullup -8 (maybe -7 as well, need to check).
|
|
Revision tags: pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
| 1.169 |
19-Dec-2017 |
kamil |
branches: 1.169.4; Drop SYS_sbrk
sbrk - change data segment size
This syscall is dummy since the inception of the project.
Sponsored by <The NetBSD Foundation>
|
| 1.168 |
19-Dec-2017 |
kamil |
Drop the sstk(2) syscall stub
sstk - change stack section size
This functionality has never been implemented and is a remnant from 16-bit UNIX. This stub appeared with the first NetBSD commit.
Sponsored by <The NetBSD Foundation>
|
|
Revision tags: tls-maxphys-base-20171202
|
| 1.167 |
27-Oct-2017 |
utkarsh009 |
[syzkaller] Fix for PR #52658 as suggested by riastradh@
The bug was found by Dmitry Vyukov (dvyukov@google.com) using syzkaller and was tested by me on a VM running 8.99.5
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
|
| 1.166 |
20-May-2017 |
chs |
branches: 1.166.2; MAP_FIXED means something different for mremap() than it does for mmap(), so we cannot use UVM_FLAG_FIXED to specify both behaviors. keep UVM_FLAG_FIXED with its earlier meaning (prior to my previous change) of whether to use uvm_map_findspace() to locate space for the new mapping or to use the hint address that the caller passed in, and add a new flag UVM_FLAG_UNMAP to indicate that any existing entries in the range should be unmapped as part of creating the new mapping. the new UVM_FLAG_UNMAP flag may only be used if UVM_FLAG_FIXED is also specified.
|
| 1.165 |
19-May-2017 |
chs |
make MAP_FIXED mapping operations atomic. fixes PR 52239. previously, unmapping any entries being replaced was done separately from entering the new mapping, which allowed another thread doing a non-MAP_FIXED mapping to allocate the range out from under the MAP_FIXED thread.
|
|
Revision tags: prg-localcount2-base3 prg-localcount2-base2
|
| 1.164 |
06-May-2017 |
joerg |
Extend the mmap(2) interface to allow requesting protections for later use with mprotect(2), but without enabling them immediately.
Extend the mremap(2) interface to allow duplicating mappings, i.e. create a second range of virtual addresses references the same physical pages. Duplicated mappings can have different effective protections.
Adjust PAX mprotect logic to disallow effective protections of W&X, but allow one mapping W and another X protections. This obsoletes using temporary files for purposes like JIT.
Adjust PAX logic for mmap(2) and mprotect(2) to fail if W&X is requested and not silently drop the X protection.
Improve test cases to ensure correct operation of the changed interfaces.
|
|
Revision tags: prg-localcount2-base1
|
| 1.163 |
29-Apr-2017 |
christos |
MAP_COPY is handled in compat
|
|
Revision tags: prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914
|
| 1.162 |
09-Aug-2016 |
kre |
branches: 1.162.6;
The only error that can occur from munlock() on NetBSD is ENOMEM. Make it be that way.
|
| 1.161 |
07-Aug-2016 |
maxv |
KNF a little.
|
| 1.160 |
07-Aug-2016 |
maxv |
Explicitly return syscall-specific error codes, instead of the ones given by range_test. This fixes msync, mlock and munlock, which all return EINVAL instead of ENOMEM if the address is not in the va space.
It should also fix the recent ATF failures.
|
|
Revision tags: pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
| 1.159 |
01-Jun-2016 |
pgoyette |
Variable rv is always used as a true/false boolen, so set its type correctly.
From PR kern/46369
|
|
Revision tags: nick-nhusb-base-20160529
|
| 1.158 |
24-May-2016 |
martin |
PR kern/50985: use the runtime limits of the vmspace in range_test() instead of the compile time defaults for it.
|
| 1.157 |
22-May-2016 |
christos |
reduce #ifdef mess caused by PaX
|
|
Revision tags: nick-nhusb-base-20160422
|
| 1.156 |
07-Apr-2016 |
christos |
remove more ifdefs
|
| 1.155 |
07-Apr-2016 |
christos |
Add PAX_MPROTECT_DEBUG
|
|
Revision tags: nick-nhusb-base-20160319 nick-nhusb-base-20151226
|
| 1.154 |
26-Nov-2015 |
martin |
We never exec(2) with a kernel vmspace, so do not test for that, but instead KASSERT() that we don't. When calculating the load address for the interpreter (e.g. ld.elf_so), we need to take into account wether the exec'd process will run with topdown memory or bottom up. We can not use the current vmspace's flags to test for that, as this happens too early. Luckily the execpack already knows what the new state will be later, so instead of testing the current vmspace, pass the info as additional argument to struct emul e_vm_default_addr. Fix all such functions and adopt all callers.
|
|
Revision tags: nick-nhusb-base-20150921
|
| 1.153 |
04-Aug-2015 |
maxv |
Some changes, to reduce a bit my tech-kern@ patch: - move the P_PAX_ flags out of #ifdef PAX_ASLR in pax.h - add a generic pax_flags_active() function - fix a comment in exec_elf.c; interp is not static - KNF for return - rename pax_aslr() to pax_aslr_mmap() - rename pax_segvguard_cb() to pax_segvguard_cleanup_cb()
|
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
| 1.152 |
01-Mar-2015 |
mlelstv |
Detect overflow when rounding length parameter and return ENOMEM. Fixes PR kern/49692.
|
| 1.151 |
10-Jan-2015 |
chs |
in uvm_mmap_dev(), use the passed-in offset instead of 0. from Onno van der Linden in PR 49536.
|
| 1.150 |
14-Dec-2014 |
chs |
add a new "fo_mmap" fileops method to allow use of arbitrary uvm_objects for mappings of file objects. move vnode-specific details of mmap()ing a vnode from uvm_mmap() to the new vnode-specific vn_mmap(). add new uvm_mmap_dev() and uvm_mmap_anon() convenience functions for mapping character devices and anonymous memory, and replace all other calls to uvm_mmap() with those. use the new fileop in drm2 so that libdrm can use mmap() to map things like on other platforms (instead of the ioctl that we have used so far).
|
|
Revision tags: nick-nhusb-base
|
| 1.149 |
05-Sep-2014 |
matt |
branches: 1.149.2; Use f_vnode instead of f_data
|
|
Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.148 |
25-Jan-2014 |
christos |
branches: 1.148.4; make this compile.
|
| 1.147 |
25-Jan-2014 |
christos |
deal with COMPAT_10 issue.
|
| 1.146 |
25-Jan-2014 |
christos |
provide proper defaults for topdown and bottomup allocation. XXX: Ports that provide their own VM_DEFAULT_ADDRESS() need to provide the two new flavors, otherwise they get the default ones now.
|
| 1.145 |
11-Sep-2013 |
martin |
Allow MD code to add aditional checks for mmap(..., MAP_FIXED) address ranges. This can be used, for example, to avoid not implemented VA-holes, but we probably need to check in a few more places.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.144 |
27-Jan-2012 |
para |
branches: 1.144.6; 1.144.10; extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
| 1.143 |
05-Jan-2012 |
reinoud |
Revert MAP_NOSYSCALLS patch.
|
| 1.142 |
22-Dec-2011 |
reinoud |
Redo uvm_map_setattr() to never fail and remove the possible panic. The possibility of failure was a C&P error.
|
| 1.141 |
20-Dec-2011 |
reinoud |
If we need to set the PK_CHKNOSYSCALL flag in struct proc be so nice to first take the mutex. Tnx for pointing it out to me.
|
| 1.140 |
20-Dec-2011 |
reinoud |
Add a MAP_NOSYSCALLS flag to mmap. This flag prohibits executing of system calls from the mapped region. This can be used for emulation perposed or for extra security in the case of generated code.
Its implemented by adding mapping-attributes to each uvm_map_entry. These can then be queried when needed.
Currently the MAP_NOSYSCALLS is only implemented for x86 but other architectures are easy to adapt; see the sys/arch/x86/x86/syscall.c patch. Port maintainers are encouraged to add them for their processor ports too. When this feature is not yet implemented for an architecture the MAP_NOSYSCALLS is simply ignored with virtually no cpu cost..
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.139 |
14-Oct-2011 |
hannken |
branches: 1.139.2; 1.139.6; Change the vnode locking protocol of VOP_GETATTR() to request at least a shared lock. Make all calls outside of file systems respect it.
The calls from file systems need review.
No objections from tech-kern.
|
| 1.138 |
12-Oct-2011 |
yamt |
fix an integer promotion bug on 64 bit ports. (signed + unsigned = unsigned)
|
| 1.137 |
23-Jun-2011 |
matt |
Allow PAX_ASLR to be used by itself.
|
| 1.136 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.135 |
23-Apr-2011 |
rmind |
branches: 1.135.2; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.134 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. verified with Mike Hibler it is ok to remove clause 3 on utah copyright, as per UCB. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.133 |
24-Jun-2010 |
hannken |
branches: 1.133.2; 1.133.4; Clean up vnode lock operations pass 2:
VOP_UNLOCK(vp, flags) -> VOP_UNLOCK(vp): Remove the unneeded flags argument.
Welcome to 5.99.32.
Discussed on tech-kern.
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
| 1.132 |
01-Nov-2009 |
uebayasi |
branches: 1.132.2; 1.132.4; Consistently call amap / uobj layers as upper / lower, because UVM has only those two layers by design. Approved by Chuck Cranor some time ago.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
| 1.131 |
18-Aug-2009 |
yamt |
uvm_mmap: remove a dead conditional.
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5
|
| 1.130 |
10-Jun-2009 |
yamt |
on MADV_WILLNEED, start prefetching backing object's pages.
|
| 1.129 |
30-May-2009 |
yamt |
wrap long lines.
|
|
Revision tags: yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
| 1.128 |
29-Mar-2009 |
mrg |
- add new RLIMIT_AS (aka RLIMIT_VMEM) resource that limits the total address space available to processes. this limit exists in most other modern unix variants, and like most of them, our defaults are unlimited. remove the old mmap / rlimit.datasize hack.
- adds the VMCMD_STACK flag to all the stack-creation vmcmd callers. it is currently unused, but was added a few years ago.
- add a pair of new process size values to kinfo_proc2{}. one is the total size of the process memory map, and the other is the total size adjusted for unused stack space (since most processes have a lot of this...)
- patch sh, and csh to notice RLIMIT_AS. (in some cases, the alias RLIMIT_VMEM was already present and used if availble.)
- patch ps, top and systat to notice the new k_vm_vsize member of kinfo_proc2{}.
- update irix, svr4, svr4_32, linux and osf1 emulations to support this information. (freebsd could be done, but that it's best left as part of the full-update of compat/freebsd.)
this addresses PR 7897. it also gives correct memory usage values, which have never been entirely correct (since mmap), and have been very incorrect since jemalloc() was enabled.
tested on i386 and sparc64, build tested on several other platforms.
thanks to many folks for feedback and testing but most espcially chuq and yamt for critical suggestions that lead to this patch not having a special ugliness i wasn't happy with anyway :-)
|
| 1.127 |
14-Mar-2009 |
dsl |
ANSIfy another 1261 function definitions. The only ones left in sys are beyond by sed script! (or in sys/dist or sys/external) Mostly they have function pointer parameters.
|
|
Revision tags: netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
|
| 1.126 |
03-Jun-2008 |
ad |
branches: 1.126.6; 1.126.8; 1.126.12; uvm_mmap: don't lock the map unless we need to.
|
|
Revision tags: yamt-pf42-base3
|
| 1.125 |
02-Jun-2008 |
ad |
One more.
|
| 1.124 |
02-Jun-2008 |
ad |
Don't needlessly acquire v_interlock.
|
| 1.123 |
02-Jun-2008 |
ad |
Don't needlessly acquire v_interlock.
|
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
| 1.122 |
21-Mar-2008 |
ad |
branches: 1.122.2; 1.122.4; 1.122.6; Catch up with descriptor handling changes. See kern_descrip.c revision 1.173 for details.
|
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.121 |
02-Jan-2008 |
ad |
branches: 1.121.6; Merge vmlocking2 to head.
|
| 1.120 |
26-Dec-2007 |
christos |
Add PaX ASLR (Address Space Layout Randomization) [from elad and myself]
For regular (non PIE) executables randomization is enabled for: 1. The data segment 2. The stack
For PIE executables(*) randomization is enabled for: 1. The program itself 2. All shared libraries 3. The data segment 4. The stack
(*) To generate a PIE executable: - compile everything with -fPIC - link with -shared-libgcc -Wl,-pie
This feature is experimental, and might change. To use selectively add options PAX_ASLR=0 in your kernel.
Currently we are using 12 bits for the stack, program, and data segment and 16 or 24 bits for mmap, depending on __LP64__.
|
|
Revision tags: vmlocking2-base3
|
| 1.119 |
20-Dec-2007 |
dsl |
Convert all the system call entry points from: int foo(struct lwp *l, void *v, register_t *retval) to: int foo(struct lwp *l, const struct foo_args *uap, register_t *retval) Fixup compat code to not write into 'uap' and (in some cases) to actually pass a correctly formatted 'uap' structure with the right name to the next routine. A few 'compat' routines that just call standard ones have been deleted. All the 'compat' code compiles (along with the kernels required to test build it). 98% done by automated scripts.
|
|
Revision tags: yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.118 |
26-Nov-2007 |
pooka |
branches: 1.118.2; 1.118.6; Remove the "struct lwp *" argument from all VFS and VOP interfaces. The general trend is to remove it from all kernel interfaces and this is a start. In case the calling lwp is desired, curlwp should be used.
quick consensus on tech-kern
|
|
Revision tags: jmcneill-base bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base
|
| 1.117 |
10-Oct-2007 |
ad |
branches: 1.117.4; Merge from vmlocking:
- Split vnode::v_flag into three fields, depending on field locking. - simple_lock -> kmutex in a few places. - Fix some simple locking problems.
|
| 1.116 |
08-Oct-2007 |
ad |
Merge file descriptor locking, cwdi locking and cross-call changes from the vmlocking branch.
|
|
Revision tags: yamt-x86pmap-base2 yamt-x86pmap-base
|
| 1.115 |
23-Sep-2007 |
yamt |
branches: 1.115.2; make RANGE_TEST a function.
|
|
Revision tags: nick-csl-alignment-base5 matt-mips64-base
|
| 1.114 |
27-Jul-2007 |
pooka |
branches: 1.114.4; 1.114.6; 1.114.8; Change unused fflags parameter in VOP_MMAP to prot and pass in desired vm protection.
|
| 1.113 |
22-Jul-2007 |
pooka |
Retire uvn_attach() - it abuses VXLOCK and its functionality, setting vnode sizes, is handled elsewhere: file system vnode creation or spec_open() for regular files or block special files, respectively.
Add a call to VOP_MMAP() to the pagedvn exec path, since the vnode is being memory mapped.
reviewed by tech-kern & wrstuden
|
|
Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 mjf-ufs-trans-base
|
| 1.112 |
15-May-2007 |
elad |
branches: 1.112.2; Some Veriexec stuff that's been rotting in my tree for months.
Bug fixes: - Fix crash reported by Scott Ellis on current-users@.
- Fix race conditions in enforcing the Veriexec rename and remove policies. These are NOT security issues.
- Fix memory leak in rename handling when overwriting a monitored file.
- Fix table deletion logic.
- Don't prevent query requests if not in learning mode.
KPI updates: - fileassoc_table_run() now takes a cookie to pass to the callback.
- veriexec_table_add() was removed, it is now done internally. As a result, there's no longer a need for VERIEXEC_TABLESIZE.
- veriexec_report() was removed, it is now internal.
- Perform sanity checks on the entry type, and enforce default type in veriexec_file_add() rather than in veriexecctl.
- Add veriexec_flush(), used to delete all Veriexec tables, and veriexec_dump(), used to fill an array with all Veriexec entries.
New features: - Add a '-k' flag to veriexecctl, to keep the filenames in the kernel database. This allows Veriexec to produce slightly more accurate logs under certain circumstances. In the future, this can be either replaced by vnode->pathname translation, or combined with it.
- Add a VERIEXEC_DUMP ioctl, to dump the entire Veriexec database. This can be used to recover a database if the file was lost. Example usage:
# veriexecctl dump > /etc/signatures
Note that only entries with the filename kept (that is, were loaded with the '-k' flag) will be dumped.
Idea from Brett Lymn.
- Add a VERIEXEC_FLUSH ioctl, to delete all Veriexec entries. Sample usage:
# veriexecctl flush
- Add a 'veriexec_flags' rc(8) variable, and make its default have the '-k' flag. On systems using the default signatures file (generaetd from running 'veriexecgen' with no arguments), this will use additional 32kb of kernel memory on average.
- Add a '-e' flag to veriexecctl, to evaluate the fingerprint during load. This is done automatically for files marked as 'untrusted'.
Misc. stuff: - The code for veriexecctl was massively simplified as a result of eliminating the need for VERIEXEC_TABLESIZE, and now uses a single pass of the signatures file, making the loading somewhat faster.
- Lots of minor fixes found using the (still under development) Veriexec regression testsuite.
- Some of the messages Veriexec prints were improved.
- Various documentation fixes.
All relevant man-pages were updated to reflect the above changes.
Binary compatibility with existing veriexecctl binaries is maintained.
|
| 1.111 |
11-May-2007 |
christos |
Make us standards compliant again. Return EINVAL in all cases (except for mmap) so we cannot tell what went wrong.
|
| 1.110 |
11-May-2007 |
christos |
Improve on previous and write a RANGE_TEST macro and do it on all the system calls instead of doing a half-assed job on some of them and none on others.
|
| 1.109 |
11-May-2007 |
christos |
fix bogus wrap tests; ssize_t != int...
|
|
Revision tags: thorpej-atomic-base
|
| 1.108 |
04-Mar-2007 |
christos |
branches: 1.108.2; 1.108.4; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
|
Revision tags: ad-audiomp-base
|
| 1.107 |
22-Feb-2007 |
thorpej |
TRUE -> true, FALSE -> false
|
| 1.106 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: post-newlock2-merge
|
| 1.105 |
09-Feb-2007 |
ad |
branches: 1.105.2; Merge newlock2 to head.
|
|
Revision tags: newlock2-nbase newlock2-base
|
| 1.104 |
03-Feb-2007 |
elad |
If Veriexec prevents indirect execution of the binary, in addition to just blocking the mmap() if exec bit is requested, also strip exec bit from maxprot for further mprotect() calls.
Okay joerg@.
|
| 1.103 |
11-Jan-2007 |
elad |
Cosmetic nit in the 'filename' passed to veriexec_verify().
|
|
Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
|
| 1.102 |
01-Nov-2006 |
yamt |
branches: 1.102.2; remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.101 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
| 1.100 |
05-Oct-2006 |
chs |
add support for O_DIRECT (I/O directly to application memory, bypassing any kernel caching for file data).
|
| 1.99 |
30-Sep-2006 |
elad |
If Veriexec enforces access type, don't allow mmap() to use PROT_EXEC on files that don't have the "indirect" flag. Also change the "library" alias in veriexecctl(8) to mean "file, indirect".
okay blymn@
|
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 rpaulo-netinet-merge-pcb-base
|
| 1.98 |
21-Jul-2006 |
ad |
branches: 1.98.4; 1.98.6; - Use the LWP cached credentials where sane. - Minor cosmetic changes.
|
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
| 1.97 |
20-May-2006 |
elad |
Better implementation of PaX MPROTECT, after looking some more into the code and not trying to use temporary solutions.
Lots of comments and help from YAMAMOTO Takashi, also thanks to the PaX author for being quick to recognize that something fishy's going on. :)
Hook up in mmap/vmcmd rather than (ugh!) uvm_map_protect().
Next time I suggest to commit a temporary solution just revoke my commit bit.
|
| 1.96 |
14-May-2006 |
elad |
branches: 1.96.2; integrate kauth.
|
|
Revision tags: yamt-pdpolicy-base4 elad-kernelauth-base
|
| 1.95 |
05-Apr-2006 |
christos |
Coverity CID 2721: Avoid bitching for impossible cases, by adding KASSERT.
|
|
Revision tags: yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.94 |
11-Dec-2005 |
christos |
branches: 1.94.4; 1.94.6; 1.94.8; 1.94.10; 1.94.12; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.93 |
10-Oct-2005 |
chs |
stop converting async msync() to sync. this hasn't been needed for years (if it ever was).
|
| 1.92 |
23-Jul-2005 |
yamt |
update file timestamps for nfsd loaned-read and mmap. PR/25279. discussed on tech-kern@.
|
| 1.91 |
11-May-2005 |
yamt |
branches: 1.91.2; allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
|
Revision tags: kent-audio2-base
|
| 1.90 |
01-Apr-2005 |
yamt |
merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: yamt-km-base4
|
| 1.89 |
26-Mar-2005 |
fvdl |
Fix some things regarding COMPAT_NETBSD32 and limits/VM addresses.
* For sparc64 and amd64, define *SIZ32 VM constants. * Add a new function pointer to struct emul, pointing at a function that will return the default VM map address. The default function is uvm_map_defaultaddr, which just uses the VM_DEFAULT_ADDRESS macro. This gives emulations control over the default map address, and allows things to be mapped at the right address (in 32bit range) for COMPAT_NETBSD32. * Add code to adjust the data and stack limits when a COMPAT_NETBSD32 or COMPAT_SVR4_32 binary is executed. * Don't use USRSTACK in kern_resource.c, use p_vmspace->vm_minsaddr instead (emulations might have set it differently) * Since this changes struct emul, bump kernel version to 3.99.2
Tested on amd64, compile-tested on sparc64.
|
|
Revision tags: yamt-km-base3 netbsd-3-base yamt-km-base2
|
| 1.88 |
11-Feb-2005 |
chs |
branches: 1.88.4; use vm_map_{min,max}() instead of dereferencing the vm_map pointer directly. define and use vm_map_set{min,max}() for modifying these values. remove the {min,max}_offset aliases for these vm_map fields to be more namespace-friendly. PR 26475.
|
|
Revision tags: yamt-km-base
|
| 1.87 |
23-Jan-2005 |
chs |
branches: 1.87.2; pmap_wired_count() is now available on all platforms, remove the code for the case where it's not defined.
|
|
Revision tags: kent-audio1-beforemerge
|
| 1.86 |
01-Jan-2005 |
yamt |
branches: 1.86.2; for in-kernel maps, - allocate kva for vm_map_entry from the map itsself and remove the static limit, MAX_KMAPENT. - keep merged entries for later splitting to fix allocate-to-free problem. PR/24039.
|
|
Revision tags: kent-audio1-base
|
| 1.85 |
02-Dec-2004 |
briggs |
mlock(2) and munlock(2) are defined by our man pages (which agree with those on opengroup.org) to return ENOMEM if trying to lock a region that is not accessible. So if uvm_map_pageable() returns EFAULT, make it ENOMEM.
|
| 1.84 |
25-May-2004 |
hannken |
Add ffs internal snapshots. Written by Marshall Kirk McKusick for FreeBSD.
- Not enabled by default. Needs kernel option FFS_SNAPSHOT. - Change parameters of ffs_blkfree. - Let the copy-on-write functions return an error so spec_strategy may fail if the copy-on-write fails. - Change genfs_*lock*() to use vp->v_vnlock instead of &vp->v_lock. - Add flag B_METAONLY to VOP_BALLOC to return indirect block buffer. - Add a function ffs_checkfreefile needed for snapshot creation. - Add special handling of snapshot files: Snapshots may not be opened for writing and the attributes are read-only. Use the mtime as the time this snapshot was taken. Deny mtime updates for snapshot files. - Add function transferlockers to transfer any waiting processes from one lock to another. - Add vfsop VFS_SNAPSHOT to take a snapshot and make it accessible through a vnode. - Add snapshot support to ls, fsck_ffs and dump.
Welcome to 2.0F.
Approved by: Jason R. Thorpe <thorpej@netbsd.org>
|
| 1.83 |
19-May-2004 |
darrenr |
rather than just try to get a mapping from a device as only PROT_EXEC, work down the list of protections until either we run out or we find one that the device is willing to work with.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.82 |
24-Mar-2004 |
junyoung |
Drop trailing spaces.
|
| 1.81 |
14-Feb-2004 |
dsl |
Fix prev. so it compiles
|
| 1.80 |
14-Feb-2004 |
jdolecek |
add compat hook in check for zerodev; use this hook to recognize the old ARM /dev/zero minor mapping #ifdef COMPAT_16 fixes second part of PR kern/23581 by Richard Earnshaw
|
| 1.79 |
29-Nov-2003 |
yamt |
mincore: don't treat an aobj as a device mapping.
|
| 1.78 |
07-Oct-2003 |
thorpej |
Add a MAP_WIRED flag to mmap(2), which causes the new mapping to be wired as if by mlock(2).
|
| 1.77 |
24-Aug-2003 |
chs |
fix some indentation.
|
| 1.76 |
24-Aug-2003 |
chs |
mprotect()'s "len" is really a size_t, and we can't do any useful bounds-checking on it.
|
| 1.75 |
06-Jul-2003 |
christos |
PR/22062: Dheeraj S: Don't compare an integral type with NULL.
|
| 1.74 |
29-Jun-2003 |
fvdl |
branches: 1.74.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
| 1.73 |
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
| 1.72 |
23-Jun-2003 |
christos |
PR/21948: Todd Vierling: Implement MAP_TRYFIXED for linux emulation.
|
| 1.71 |
04-May-2003 |
gmcgarry |
Don't use overloaded term "comm". From Greg A. Woods in PR#17394.
|
| 1.70 |
06-Mar-2003 |
matt |
Add support for mmap(2) to be able to return memory aligned on a 2^n boundary.
|
| 1.69 |
23-Feb-2003 |
pk |
Make updating a file's reference and use count MP-safe.
|
| 1.68 |
20-Feb-2003 |
atatat |
Introduce "top down" memory management for mmap()ed allocations. This means that the dynamic linker gets mapped in at the top of available user virtual memory (typically just below the stack), shared libraries get mapped downwards from that point, and calls to mmap() that don't specify a preferred address will get mapped in below those.
This means that the heap and the mmap()ed allocations will grow towards each other, allowing one or the other to grow larger than before. Previously, the heap was limited to MAXDSIZ by the placement of the dynamic linker (and the process's rlimits) and the space available to mmap was hobbled by this reservation.
This is currently only enabled via an *option* for the i386 platform (though other platforms are expected to follow). Add "options USE_TOPDOWN_VM" to your kernel config file, rerun config, and rebuild your kernel to take advantage of this.
Note that the pmap_prefer() interface has not yet been modified to play nicely with this, so those platforms require a bit more work (most notably the sparc) before they can use this new memory arrangement.
This change also introduces a VM_DEFAULT_ADDRESS() macro that picks the appropriate default address based on the size of the allocation or the size of the process's text segment accordingly. Several drivers and the SYSV SHM address assignment were changed to use this instead of each one picking their own "default".
|
| 1.67 |
18-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.66 |
27-Sep-2002 |
mycroft |
#if 0 the call to uvm_map_checkprot() in sys_munmap() -- it's not documented, and programs do not expect it. Also fixes memory leaks in dlopen()/dlclose().
|
| 1.65 |
06-Sep-2002 |
gehenna |
Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to dynamically generated by config(8).
- All device switches is defined as a constant structure in device drivers.
- The new grammer ``device-major'' is introduced to ``files''.
device-major <prefix> char <num> [block <num>] [<rules>]
- All device major numbers must be listed up in port dependent majors.<arch> by using this grammer.
- Added the new naming convention. The name of the device switch must be <prefix>_[bc]devsw for auto-generation of device switch tables.
- The backward compatibility of loading block/character device switch by LKM framework is broken. This is necessary to convert from block/character device major to device name in runtime and vice versa.
- The restriction to assign device major by LKM is completely removed. We don't need to reserve LKM entries for dynamic loading of device switch.
- In compile time, device major numbers list is packed into the kernel and the LKM framework will refer it to assign device major number dynamically.
|
|
Revision tags: gehenna-devsw-base
|
| 1.64 |
31-May-2002 |
atatat |
"offest" -> "offset" in a comment
|
|
Revision tags: netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
|
| 1.63 |
22-Mar-2002 |
darrenr |
branches: 1.63.2; 1.63.4; Return EFBIG from mmap() if we try to map too much data and in the fixed address allocation, return EOVERFLOW to match with the non-fixed error.
|
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
| 1.62 |
14-Dec-2001 |
chs |
in sys_mincore(), check the return value of uvm_vslock() to determine if the vec pointer is valid rather than using uvm_useracc(). uvm_useracc() just tells you if the permissions of a user mapping allow the desired access, not whether faulting on that mapping will succeed.
|
| 1.61 |
25-Nov-2001 |
chs |
disallow mapping negative offsets for both regular files and block devices.
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.60 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.59 |
30-Oct-2001 |
thorpej |
uvm_map_protect(): Don't allow VM_PROT_EXECUTE to be set on entries (either the current protection or the max protection) that reference vnodes associated with a file system mounted with the NOEXEC option.
uvm_mmap(): Don't allow PROT_EXEC mappings to be established of vnodes which are associated with a file system mounted with the NOEXEC option.
|
| 1.58 |
30-Oct-2001 |
thorpej |
- Add a new vnode flag VEXECMAP, which indicates that a vnode has executable mappings. Stop overloading VTEXT for this purpose (VTEXT also has another meaning). - Rename vn_marktext() to vn_markexec(), and use it when executable mappings of a vnode are established. - In places where we want to set VTEXT, set it in v_flag directly, rather than making a function call to do this (it no longer makes sense to use a function call, since we no longer overload VTEXT with VEXECMAP's meaning).
VEXECMAP suggested by Chuq Silvers.
|
| 1.57 |
29-Oct-2001 |
thorpej |
uvm_mmap(): If a vnode mapping is established with PROT_EXEC, mark the vnode as VTEXT.
uvm_map_protect(): When VM_PROT_EXECUTE is added to a VA range, mark all the vnodes mapped by the range as VTEXT.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.56 |
15-Sep-2001 |
chs |
branches: 1.56.2; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.55 |
17-Aug-2001 |
chs |
branches: 1.55.2; call VOP_MMAP() before allowing mappings of vnodes to allow filesystems which do not support memory mapped access to cause mmap() of their vnodes to fail.
|
| 1.54 |
14-Jun-2001 |
thorpej |
branches: 1.54.2; Fix a partial construction problem that can cause race conditions between creation of a file descriptor and close(2) when using kernel assisted threads. What we do is stick descriptors in the table, but mark them as "larval". This causes essentially everything to treat it as a non-existent descriptor, except for fdalloc(), which sees a filled slot so that it won't (incorrectly) allocate it again. When a descriptor is fully constructed, the code that has constructed it marks it as "mature" (which actually clears the "larval" flag), and things continue to work as normal.
While here, gather all the code that gets a descriptor from the table into a fd_getfile() function, and call it, rather than having the same (sometimes incorrect) code copied all over the place.
|
| 1.53 |
02-Jun-2001 |
chs |
replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.52 |
26-May-2001 |
chs |
replace vm_page_t with struct vm_page *.
|
| 1.51 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.50 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.49 |
18-Feb-2001 |
chs |
branches: 1.49.2; clean up DIAGNOSTIC checks, use KASSERT().
|
| 1.48 |
08-Jan-2001 |
thorpej |
Nevermind that it's silly to include PROT_EXEC even if a vnode doesn't have the exec bit set, we need to have PROT_EXEC set in order for some expected mmap/mprotect behavior to work, so do the last bit slightly differently: if udv_attach() fails, and the protection (NOT maxprot) doens't include PROT_EXEC, then clear PROT_EXEC from maxprot and try udv_attach() again.
Sigh, mmap really needs to be rototilled.
|
| 1.47 |
07-Jan-2001 |
thorpej |
Only include PROT_EXEC in maxprot if the user specified PROT_EXEC in the mmap() call. maxprot is used to create device mappings, and always including PROT_EXEC causes the mapping to fail on the Alpha when mapping a non-RAM offset of /dev/mem (which may be sparse, so instruction fetch from there is disallowed).
|
| 1.46 |
27-Nov-2000 |
chs |
Initial integration of the Unified Buffer Cache project.
|
| 1.45 |
24-Nov-2000 |
soren |
Typo in comment.
|
| 1.44 |
13-Sep-2000 |
thorpej |
Add an align argument to uvm_map() and some callers of that routine. Works similarly fto pmap_prefer(), but allows callers to specify a minimum power-of-two alignment of the region. How we ever got along without this for so long is beyond me.
|
| 1.43 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.42 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.41 |
23-May-2000 |
enami |
branches: 1.41.4; - Move the comment, which describes that calling the function uvm_map_pageable(map, ...) implies unlocking passed map, just before the function call. - If we bail out before calling the uvm_map_pageable, unlock the map by ourself to prevent a panic ``locking against myself''. The panic is, for example, caused when cdrecord is invoked with too large fifo size.
|
| 1.40 |
30-Mar-2000 |
augustss |
Remove more register declarations.
|
| 1.39 |
28-Mar-2000 |
kleink |
In mmap(), bail out with EOVERFLOW when mapping a regular file and the file offset plus mapping length cannot be represented in an off_t.
|
| 1.38 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
| 1.37 |
11-Dec-1999 |
thorpej |
Remove a piece of code introduced in rev 1.36 that I didn't intend to commit.
|
|
Revision tags: fvdl-softdep-base
|
| 1.36 |
13-Nov-1999 |
thorpej |
Change the pmap_enter() API slightly; pmap_enter() now returns an error value (KERN_SUCCESS or KERN_RESOURCE_SHORTAGE) indicating if it succeeded or failed. Change the `wired' and `access_type' arguments to a single `flags' argument, which includes the access type, and flags:
PMAP_WIRED the old `wired' boolean PMAP_CANFAIL pmap_enter() is allowed to fail
If PMAP_CANFAIL is not specified, the pmap should behave as it always has in the face of a drastic resource shortage: fall over dead.
Change the fault handler to deal with failure (which indicates resource shortage) by unlocking everything, waiting for the pagedaemon to free more memory, then retrying the fault.
|
|
Revision tags: comdex-fall-1999-base chs-ubc2-base
|
| 1.35 |
17-Jul-1999 |
thorpej |
branches: 1.35.2; 1.35.4; 1.35.8; Add a set of "lockflags", which can control the locking behavior of some functions. Use these flags in uvm_map_pageable() to determine if the map is locked on entry (replaces an already present boolean_t argument `islocked'), and if the function should return with the map still locked.
|
| 1.34 |
14-Jul-1999 |
thorpej |
Fix an operator precedence error which caused msync(2) to fail to pass the PGO_CLEANIT flag to the object pagers. Fixes PR #7978, from Matthias Pfaller.
|
| 1.33 |
12-Jul-1999 |
kleink |
XSH5: change function signature to `void *sbrk(intptr_t)'.
|
| 1.32 |
10-Jul-1999 |
thorpej |
Make a comment reflect reality.
|
| 1.31 |
10-Jul-1999 |
thorpej |
Slightly better test for "object with no real pages". Test for NULL pgo_releasepg rather than if the pager is the device pager.
|
| 1.30 |
08-Jul-1999 |
thorpej |
Correct a comment.
|
| 1.29 |
07-Jul-1999 |
thorpej |
Add some more meat to madvise(2): * Implement MADV_DONTNEED: deactivate pages in the specified range, semantics similar to Solaris's MADV_DONTNEED. * Add MADV_FREE: free pages and swap resources associated with the specified range, causing the range to be reloaded from backing store (vnodes) or zero-fill (anonymous), semantics like FreeBSD's MADV_FREE and like Digital UNIX's MADV_DONTNEED (isn't it SO GREAT that madvise(2) isn't standardized!?)
As part of this, move the non-map-modifying advice handling out of uvm_map_advise(), and into sys_madvise().
As another part, implement general amap cleaning in uvm_map_clean(), and change uvm_map_clean() to only push dirty pages to disk if PGO_CLEANIT is set in its flags (and update sys___msync13() accordingly). XXX Add a patchable global "amap_clean_works", defaulting to 1, which can disable the amap cleaning code, just in case problems are unearthed; this gives a developer/user a quick way to recover and send a bug report (e.g. boot into DDB and change the value).
XXX Still need to implement a real uao_flush().
XXX Need to update the manual page.
With these changes, rebuilding libc will automatically cause the new malloc(3) to use MADV_FREE to actually release pages and swap resources when it decides that can be done.
|
| 1.28 |
06-Jul-1999 |
cgd |
from the comment added to the code: > XXX (in)sanity check. We don't do proper datasize checking > XXX for anonymous (or private writable) mmap(). However, > XXX know that if we're trying to allocate more than the amount > XXX remaining under our current data size limit, _that_ should > XXX be disallowed. This is one link on the chain of lossage known as PR#7897. It's definitely not the right fix, but it's better than nothing.
|
| 1.27 |
01-Jul-1999 |
thorpej |
Fix tyop. From Bill Studenmund.
|
| 1.26 |
19-Jun-1999 |
thorpej |
Fix a typo.
|
| 1.25 |
18-Jun-1999 |
thorpej |
Add the guts of mlockall(MCL_FUTURE). This requires that a process's "memlock" resource limit to uvm_mmap(). Update all calls accordingly.
|
| 1.24 |
17-Jun-1999 |
thorpej |
In sys_mmap(): - rather than treating MAP_COPY like MAP_PRIVATE by sheer virtue of it not being MAP_SHARED, actually convert the MAP_COPY flag into MAP_PRIVATE. - return EINVAL if MAP_SHARED and MAP_PRIVATE are both included in flags.
|
| 1.23 |
16-Jun-1999 |
minoura |
Remove extra ].
|
| 1.22 |
15-Jun-1999 |
thorpej |
Several changes, developed and tested concurrently: * Provide POSIX 1003.1b mlockall(2) and munlockall(2) system calls. MCL_CURRENT is presently implemented. MCL_FUTURE is not fully implemented. Also, the same one-unlock-for-every-lock caveat currently applies here as it does to mlock(2). This will be addressed in a future commit. * Provide the mincore(2) system call, with the same semantics as Solaris. * Clean up the error recovery in uvm_map_pageable(). * Fix a bug where a process would hang if attempting to mlock a zero-fill region where none of the pages in that region are resident. [ This fix has been submitted for inclusion in 1.4.1 ]
|
| 1.21 |
23-May-1999 |
mrg |
implement madvice() for MADV_{NORMAL,RANDOM,SEQUENTIAL}, others are not yet done.
|
| 1.20 |
03-May-1999 |
mrg |
fix some formatting foo.
|
|
Revision tags: kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.19 |
25-Mar-1999 |
mrg |
branches: 1.19.2; 1.19.4; 1.19.6; remove now >1 year old pre-release message.
|
| 1.18 |
24-Mar-1999 |
cgd |
modify udv_attach() and its caller (uvm_mmap()) so that it's passed the offset and size of the requested region to be mapped, so that the udv_attach() can use the device d_mmap() entry to check mappability of the requested region.
|
| 1.17 |
09-Mar-1999 |
kleink |
Have unimplemented/unsupported system calls (madvise(), mincore(), sbrk(), sstk()) fail with ENOSYS.
|
| 1.16 |
04-Mar-1999 |
chs |
fix printf format types.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.15 |
11-Oct-1998 |
chuck |
branches: 1.15.2; remove unused share map code from UVM: - update calls to uvm_unmap_remove/uvm_unmap (mainonly boolean arg has been removed) - replace UVM_ET_ISMAP checks with UVM_ET_ISSUBMAP checks
|
| 1.14 |
30-Sep-1998 |
mrg |
back out previous.
|
| 1.13 |
30-Sep-1998 |
tv |
Declare silent success on madvise(). As an advisory call, it is harmless to pretend success even though it's not supported, and some emulations rely on its success.
|
| 1.12 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.11 |
07-Jul-1998 |
thorpej |
branches: 1.11.2; Add support for mmap'ing disk block devices.
|
| 1.10 |
30-May-1998 |
kleink |
Per XSH98, const'ify the `addr' arguments to mlock() and munlock().
|
| 1.9 |
10-May-1998 |
mrg |
reject attempts to map an immutable or append-only file, shared with write protection. this stops data corruption where it was possible to change the in-memory copy of an append-only file (but not the on-disk copy). this is documented in NetBSD security advisory 1998-003. thanks to darrenr, lukem, cgd, mycroft and mrg for this.
|
| 1.8 |
01-Apr-1998 |
tv |
mmap() default MAP_SHARED/MAP_PRIVATE is ``DEBUG'', not ``DIAGNOSTIC''
|
| 1.7 |
28-Mar-1998 |
kleink |
Per XPG, if the file descriptor argument to mmap() refers to a file whose type is not supported (neither VREG nor VCHR, or not a vnode at all), fail with ENODEV instead of EINVAL.
|
| 1.6 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.5 |
03-Mar-1998 |
mycroft |
Convert MAP_PRIVATE device mappings to MAP_SHARED on *all* platforms, not just the SPARC. Remove the #ifdef COMPAT_13 for automatically adding a sharing type, since the interface is *supposed* to support this. Also modify the DIAGNOSTIC messages here a bit.
|
| 1.4 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
| 1.23 |
10-Dec-2025 |
andvar |
Fix various typos, mainly in comments.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| 1.22 |
24-Feb-2025 |
andvar |
s/architecure/architecture/ and few other typos in comments.
|
|
Revision tags: netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.21 |
27-Nov-2020 |
yhardy |
branches: 1.21.24; uvm_mremap: reference the appropriate backing object.
The previous approach was appropriate for anonymous memory and device objects, which continue to work in the same way.
OK: chs@ Fixes: PR 55237
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.20 |
23-Feb-2020 |
ad |
branches: 1.20.6; UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2
|
| 1.19 |
06-May-2017 |
joerg |
branches: 1.19.10; 1.19.16; Extend the mmap(2) interface to allow requesting protections for later use with mprotect(2), but without enabling them immediately.
Extend the mremap(2) interface to allow duplicating mappings, i.e. create a second range of virtual addresses references the same physical pages. Duplicated mappings can have different effective protections.
Adjust PAX mprotect logic to disallow effective protections of W&X, but allow one mapping W and another X protections. This obsoletes using temporary files for purposes like JIT.
Adjust PAX logic for mmap(2) and mprotect(2) to fail if W&X is requested and not silently drop the X protection.
Improve test cases to ensure correct operation of the changed interfaces.
|
|
Revision tags: prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
|
| 1.18 |
26-Nov-2015 |
martin |
branches: 1.18.8; We never exec(2) with a kernel vmspace, so do not test for that, but instead KASSERT() that we don't. When calculating the load address for the interpreter (e.g. ld.elf_so), we need to take into account wether the exec'd process will run with topdown memory or bottom up. We can not use the current vmspace's flags to test for that, as this happens too early. Luckily the execpack already knows what the new state will be later, so instead of testing the current vmspace, pass the info as additional argument to struct emul e_vm_default_addr. Fix all such functions and adopt all callers.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.17 |
12-Jun-2011 |
rmind |
branches: 1.17.12; 1.17.30; Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 rmind-uvmplock-base
|
| 1.16 |
16-Aug-2010 |
yamt |
branches: 1.16.6; sys_mremap: unwrap a short line
|
|
Revision tags: yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jym-xensuspend-nbase
|
| 1.15 |
02-Aug-2009 |
yamt |
branches: 1.15.2; 1.15.4; - don't reuse a variable for different purposes. - KNF a bit.
|
| 1.14 |
02-Aug-2009 |
yamt |
- fix extend of unexistent mapping. the problem reported by Nicolas Joly on current-users@. - check our reserved entry a little more strictly. - comments.
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
| 1.13 |
23-Mar-2009 |
yamt |
sys_mremap: whitespace
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
|
| 1.12 |
17-Jun-2008 |
tsutsui |
branches: 1.12.4; 1.12.10; Include <sys/sched.h> before <sys/syscallargs.h> for cpuset_t.
|
|
Revision tags: yamt-pf42-base4 yamt-pf42-base3
|
| 1.11 |
02-Jun-2008 |
ad |
branches: 1.11.2; Use atomics to maintain v_usecount.
|
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.10 |
02-Jan-2008 |
ad |
branches: 1.10.6; 1.10.8; 1.10.10; 1.10.12; Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3
|
| 1.9 |
20-Dec-2007 |
dsl |
Convert all the system call entry points from: int foo(struct lwp *l, void *v, register_t *retval) to: int foo(struct lwp *l, const struct foo_args *uap, register_t *retval) Fixup compat code to not write into 'uap' and (in some cases) to actually pass a correctly formatted 'uap' structure with the right name to the next routine. A few 'compat' routines that just call standard ones have been deleted. All the 'compat' code compiles (along with the kernels required to test build it). 98% done by automated scripts.
|
|
Revision tags: yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.8 |
15-Oct-2007 |
yamt |
branches: 1.8.4; 1.8.6; 1.8.10; uvm_mremap: fix alignment check for the easy cases.
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base vmlocking-base
|
| 1.7 |
08-Aug-2007 |
drochner |
branches: 1.7.2; 1.7.4; Round up size arguments as mmap() does. This is for consistency, and to have semantics similar to Linux -- a Python selftest secceeds now.
|
|
Revision tags: matt-mips64-base
|
| 1.6 |
21-Jul-2007 |
ad |
branches: 1.6.4; 1.6.6; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base
|
| 1.5 |
17-Jul-2007 |
joerg |
branches: 1.5.2; Add native mremap system call based on the UVM implementation for Linux compat. Add code to enforce alignment of the new location. Special thanks to wizd for helping with the man page.
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base
|
| 1.4 |
21-Feb-2007 |
thorpej |
branches: 1.4.4; Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.3 |
31-Jan-2006 |
yamt |
branches: 1.3.4; 1.3.18; 1.3.28; uvm_mremap: whitespace.
|
| 1.2 |
23-Jan-2006 |
yamt |
uvm_mremap: fix "easy cases".
|
| 1.1 |
21-Jan-2006 |
yamt |
implement compat_linux mremap.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.25 |
15-Aug-2020 |
chs |
use uint64_t rather than int for storing the index of a page within an object.
|
| 1.24 |
14-Aug-2020 |
chs |
centralize calls from UVM to radixtree into a few functions. in those functions, assert that the object lock is held in the correct mode.
|
| 1.23 |
25-May-2020 |
ad |
- Alter the convention for uvm_page_array slightly, so the basic search parameters can't change part way through a search: move the "uobj" and "flags" arguments over to uvm_page_array_init() and store those with the array.
- With that, detect when it's not possible to find any more pages in the tree with the given search parameters, and avoid repeated tree lookups if the caller loops over uvm_page_array_fill_and_peek().
|
| 1.22 |
19-May-2020 |
ad |
PR kern/32166: pgo_get protocol is ambiguous Also problems with tmpfs+nfs noted by hannken@.
Don't pass PGO_ALLPAGES to pgo_get, and ignore PGO_DONTCARE in the !PGO_LOCKED case. In uao_get() have uvm_pagealloc() take care of page zeroing and release busy pages on error.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.21 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.20 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.19 |
31-Dec-2019 |
ad |
branches: 1.19.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.18 |
15-Dec-2019 |
ad |
Merge from yamt-pagecache:
- do gang lookup of pages using radixtree. - remove now unused uvm_object::uo_memq and vm_page::listq.queue.
|
| 1.17 |
14-Dec-2019 |
ad |
Merge from yamt-pagecache: use radixtree for page lookup.
rbtree page lookup was introduced during the NetBSD 5.0 development cycle to bypass lock contention problems with the (then) global page hash, and was a temporary solution to allow us to make progress. radixtree is the intended replacement.
Ok yamt@.
|
| 1.16 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
|
| 1.15 |
26-Oct-2015 |
mrg |
branches: 1.15.18; disable the previous for now; it fails for me on a different system.
|
| 1.14 |
26-Oct-2015 |
mrg |
in uvm_obj_init(), KASSERT(ops), to ensure we have an actual pager ops set for this object. suggested by chuq.
|
|
Revision tags: nick-nhusb-base-20150921
|
| 1.13 |
24-Aug-2015 |
pooka |
to garnish, dust with _KERNEL_OPT
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.12 |
11-Mar-2014 |
pooka |
branches: 1.12.6; deduplicate uvm_object_printit() implementation
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.11 |
27-Aug-2011 |
christos |
branches: 1.11.2; 1.11.12; 1.11.16; Add an optional pglist argument to uvm_obj_wirepages, to be filled with the list of pages that were wired.
|
| 1.10 |
18-Jun-2011 |
rmind |
- Move pre-check from uvm_obj_destroy() to ubc_purge(), keep it abstracted. - Add comments noting the race between ubc_alloc() and ubc_purge().
|
| 1.9 |
12-Jun-2011 |
mrg |
include uvm_object.c in the rump kernel for the new uvm_obj* functions. don't build the uvm_object.c uvm_object_printit() for _RUMPKERNEL. (XXX) add empty panic() stubs for uvm_loanbreak() and ubc_purge().
fixes some more 5.99.53 rump build issues.
|
| 1.8 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jym-xensuspend-nbase
|
| 1.7 |
18-Aug-2009 |
thorpej |
branches: 1.7.2; 1.7.4; 1.7.10; Move uvm_object-related DDB hooks into uvm_object.c. Put all of the uvm_map-related DDB stuff in one spot in the file.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base mjf-devfs2-base
|
| 1.6 |
28-Apr-2008 |
martin |
Remove clause 3 and 4 from TNF licenses
|
|
Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.5 |
04-Jan-2008 |
ad |
branches: 1.5.6; 1.5.8; 1.5.10; Start detangling lock.h from intr.h. This is likely to cause short term breakage, but the mess of dependencies has been regularly breaking the build recently anyhow.
|
| 1.4 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.3 |
17-Feb-2007 |
rmind |
branches: 1.3.4; 1.3.18; 1.3.24; 1.3.26; 1.3.30; Mention rmind@ as an author in the license. No functional change.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base newlock2-base yamt-splraiseipl-base2
|
| 1.2 |
12-Oct-2006 |
yamt |
branches: 1.2.2; 1.2.4; 1.2.8; 1.2.10; whitespace.
|
| 1.1 |
12-Oct-2006 |
yamt |
uobj_wirepages and uobj_unwirepages from Mindaugas. PR/34771. (commented out in files.uvm for now because there is no user in tree.)
http://mail-index.netbsd.org/tech-kern/2006/09/24/0000.html http://mail-index.netbsd.org/tech-kern/2006/10/10/0000.html
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.40 |
05-Feb-2024 |
andvar |
fix various typos in comments.
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.39 |
14-Aug-2020 |
chs |
centralize calls from UVM to radixtree into a few functions. in those functions, assert that the object lock is held in the correct mode.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.38 |
14-Mar-2020 |
ad |
Make uvm_pagemarkdirty() responsible for putting vnodes onto the syncer work list. Proposed on tech-kern@.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.37 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.36 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.35 |
15-Dec-2019 |
ad |
branches: 1.35.2; Merge from yamt-pagecache:
- do gang lookup of pages using radixtree. - remove now unused uvm_object::uo_memq and vm_page::listq.queue.
|
| 1.34 |
14-Dec-2019 |
ad |
Merge from yamt-pagecache: use radixtree for page lookup.
rbtree page lookup was introduced during the NetBSD 5.0 development cycle to bypass lock contention problems with the (then) global page hash, and was a temporary solution to allow us to make progress. radixtree is the intended replacement.
Ok yamt@.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base
|
| 1.33 |
14-Sep-2012 |
rmind |
branches: 1.33.38; - Manage anonymous UVM object reference count with atomic ops. - Fix an old bug of possible lock against oneself (uao_detach_locked() is called from uao_swap_off() with uao_list_lock acquired). Also removes the try-lock dance in uao_swap_off(), since the lock order changes.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-0-5-RELEASE netbsd-6-0-4-RELEASE netbsd-6-0-3-RELEASE netbsd-6-0-2-RELEASE netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.32 |
28-Jan-2012 |
rmind |
branches: 1.32.2; 1.32.6; Describe UVM object and explain lock sharing a little.
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.31 |
12-Jun-2011 |
rmind |
branches: 1.31.2; 1.31.6; Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.30 |
02-Feb-2011 |
chuck |
branches: 1.30.2; udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5
|
| 1.29 |
06-Nov-2010 |
uebayasi |
branches: 1.29.2; 1.29.4; Include uvm/uvm_pglist.h for struct pglist.
|
|
Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
|
| 1.28 |
25-Sep-2010 |
matt |
Rename rb.h to rbtree.h, as it is more appropriate (c.f. ptree.h). Also helps find code that hasn't been updated to use the new rbtree API.
|
| 1.27 |
24-Sep-2010 |
rmind |
Fixes/improvements to RB-tree implementation: 1. Fix inverted node order, so that negative value from comparison operator would represent lower (left) node, and positive - higher (right) node. 2. Add an argument (i.e. "context"), passed to comparison operators. 3. Change rb_tree_insert_node() to return a node - either inserted one or already existing one. 4. Amend the interface to manipulate the actual object, instead of the rb_node (in a similar way as Patricia-tree interface does). 5. Update all RB-tree users accordingly.
XXX: Perhaps rename rb.h to rbtree.h, since cleaning-up..
1-3 address the PR/43488 by Jeremy Huddleston.
Passes RB-tree regression tests. Reviewed by: matt@, christos@
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
|
| 1.26 |
04-Jun-2008 |
ad |
branches: 1.26.18; 1.26.20; Replace the global vm_page hash with a per vm_object rbtree. Proposed on tech-kern@.
|
|
Revision tags: yamt-pf42-base3
|
| 1.25 |
02-Jun-2008 |
ad |
Use atomics to maintain v_usecount.
|
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.24 |
02-Jan-2008 |
ad |
branches: 1.24.6; 1.24.8; 1.24.10; 1.24.12; Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.23 |
01-Dec-2007 |
yamt |
branches: 1.23.2; 1.23.6; constify pagerops.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase nick-csl-alignment-base5 matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base jmcneill-base netbsd-4-0-RC4 bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 newlock2-base netbsd-4-base
|
| 1.22 |
12-Oct-2006 |
yamt |
branches: 1.22.8; 1.22.22; 1.22.24; 1.22.30; move some knowledge about vnode into uvm_vnode.c.
|
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.21 |
11-Dec-2005 |
christos |
branches: 1.21.20; 1.21.22; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.20 |
23-Jul-2005 |
yamt |
update file timestamps for nfsd loaned-read and mmap. PR/25279. discussed on tech-kern@.
|
| 1.19 |
17-Jul-2005 |
yamt |
ensure that vnodes with dirty pages are always on syncer's queue.
- genfs_putpages: wait for i/o completion of PG_RELEASED/PG_PAGEOUT pages by setting "wasclean" false when encountering them. suggested by Stephan Uphoff in PR/24596 (1).
- genfs_putpages: write protect pages when cleaning out, if we're going to take the vnode off the syncer's queue. uvm_fault: don't write-map pages unless its vnode is already on the syncer's queue.
fix PR/24596 (3) but in the different way from the suggested fix. (to keep our current behaviour, ie. not to require explicit msync. discussed on tech-kern@.)
- genfs_putpages: don't mistakenly take a vnode off the queue by introducing a generation number in genfs_node. genfs_getpages: increment the generation number. suggested by Stephan Uphoff in PR/24596 (2).
- add some assertions.
|
| 1.18 |
06-Jun-2005 |
yamt |
branches: 1.18.2; introduce a macro to initialize uvm_object and use it.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.17 |
29-Nov-2003 |
yamt |
branches: 1.17.14; mincore: don't treat an aobj as a device mapping.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge gehenna-devsw-base kqueue-base
|
| 1.16 |
20-Jun-2002 |
chs |
branches: 1.16.6; count aobj pages (most notably kernel stack pages) as anon pages for memory usage-balancing purposes.
|
|
Revision tags: netbsd-1-6-base
|
| 1.15 |
15-May-2002 |
matt |
branches: 1.15.2; 1.15.4; When core dumping a process, don't dump maps backed up by the device pager. (move the pagerops externs to uvm_object.h and out the C files).
|
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base
|
| 1.14 |
30-Oct-2001 |
thorpej |
- Add a new vnode flag VEXECMAP, which indicates that a vnode has executable mappings. Stop overloading VTEXT for this purpose (VTEXT also has another meaning). - Rename vn_marktext() to vn_markexec(), and use it when executable mappings of a vnode are established. - In places where we want to set VTEXT, set it in v_flag directly, rather than making a function call to do this (it no longer makes sense to use a function call, since we no longer overload VTEXT with VEXECMAP's meaning).
VEXECMAP suggested by Chuq Silvers.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.13 |
15-Sep-2001 |
chs |
branches: 1.13.2; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.12 |
26-May-2001 |
chs |
branches: 1.12.2; 1.12.4; replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.11 |
09-Mar-2001 |
chs |
add UBC memory-usage balancing. we track the number of pages in use for each of the basic types (anonymous data, executable image, cached files) and prevent the pagedaemon from reusing a given page if that would reduce the count of that type of page below a sysctl-setable minimum threshold. the thresholds are controlled via three new sysctl tunables: vm.anonmin, vm.vnodemin, and vm.vtextmin. these tunables are the percentages of pageable memory reserved for each usage, and we do not allow the sum of the minimums to be more than 95% so that there's always some memory that can be reused.
|
| 1.10 |
28-Jan-2001 |
thorpej |
branches: 1.10.2; Put the extern decl of uvm_vnodeops in uvm_object.h
|
| 1.9 |
28-Jan-2001 |
thorpej |
Define a UVM_OBJ_IS_VNODE() macro to test if an object is a vnode.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.8 |
25-May-1999 |
thorpej |
branches: 1.8.2; Define a new kernel object type, "intrsafe", which are used for objects which can be used in an interrupt context. Use pmap_kenter*() and pmap_kremove() only for mappings owned by these objects.
Fixes some locking protocol issues related to MP support, and eliminates all of the pmap_enter vs. pmap_kremove inconsistencies.
|
| 1.7 |
25-May-1999 |
thorpej |
Macro'ize the test for "object is a kernel object".
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.6 |
25-Mar-1999 |
mrg |
branches: 1.6.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base eeh-paddr_t-base
|
| 1.5 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.256 |
05-Mar-2024 |
thorpej |
Rename the local "boot_cpu" variable to "uvm_boot_cpu".
|
| 1.255 |
10-Feb-2024 |
andvar |
s/musn't/mustn't/ in comments.
|
|
Revision tags: thorpej-ifq-base thorpej-altq-separation-base
|
| 1.254 |
23-Sep-2023 |
ad |
uvm_phys_to_vm_page() turns out to be a fairly central routine due to the way that some of the pmaps work, so try to optimise it a little.
|
| 1.253 |
17-Jul-2023 |
riastradh |
uvm(9): One rndsource for faults -- not one per CPU.
All relevant state is per-CPU anyway; the only substantive difference this makes is how many entries appear in `rndctl -l' output and what they are called -- formerly the somewhat confusing `cpuN', meaning `page faults on cpuN', and now just `uvmfault'. I don't think there's any real value in being able to enable or disable measurement or counting of page faults on one CPU vs others, so although this could be a minor compatibility change, it's hard to imagine it matters much.
XXX kernel ABI change in struct cpu_info
|
| 1.252 |
09-Apr-2023 |
riastradh |
uvm(9): KASSERT(A && B) -> KASSERT(A); KASSERT(B)
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base
|
| 1.251 |
26-Oct-2022 |
riastradh |
ddb/db_active.h: New home for extern db_active.
This can be included unconditionally, and db_active can then be queried unconditionally; if DDB is not in the kernel, then db_active is a constant zero. Reduces need for #include opt_ddb.h, #ifdef DDB.
|
|
Revision tags: bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.250 |
20-Dec-2020 |
skrll |
Some KNF. NFC.
|
| 1.249 |
18-Oct-2020 |
chs |
branches: 1.249.2; In the current code, CPU_COUNT_FREEPAGES counts pages in the global freelists AND the per-CPU pgflcache free pages caches, and that is the number of pages that the pagedaemon considers to be available. However, most pages in the pgflcache per-CPU free page caches are NOT actually available for any particular allocation, and thus allocating a page can fail even though the pagedaemon thinks enough pages are available. This change makes CPU_COUNT_FREEPAGES only count pages in the global freelists and not pages in the pgflcache per-CPU free page caches, thus better aligning the pagedaemon's view of how many pages are available with the number of pages that can actually be allocated by any particular request. This fixes a hang that Christos was hitting.
|
| 1.248 |
18-Oct-2020 |
chs |
Move the handling of PG_PAGEOUT from uvm_aio_aiodone_pages() to uvm_page_unbusy() so that all callers of uvm_page_unbusy() don't need to handle this flag separately. Split out the pages part of uvm_aio_aiodone() into uvm_aio_aiodone_pages() in rump just like in the real kernel. In ZFS functions that can fail to copy data between the ARC and VM pages, use uvm_aio_aiodone_pages() rather than uvm_page_unbusy() so that we can handle these "I/O" errors. Fixes PR 55702.
|
| 1.247 |
20-Sep-2020 |
skrll |
G/C uvm_pagezerocheck
|
| 1.246 |
15-Aug-2020 |
tnn |
add a __diagused to fix non-DIAGNOSTIC kernel
|
| 1.245 |
14-Aug-2020 |
chs |
centralize calls from UVM to radixtree into a few functions. in those functions, assert that the object lock is held in the correct mode.
|
| 1.244 |
09-Jul-2020 |
skrll |
Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.243 |
17-Jun-2020 |
thorpej |
<sys/extent.h> not needed here.
|
| 1.242 |
14-Jun-2020 |
ad |
Remove PG_ZERO. It worked brilliantly on x86 machines from the mid-90s but having spent an age experimenting with it over the last 6 months on various machines and with different use cases it's always either break-even or a slight net loss for me.
|
| 1.241 |
13-Jun-2020 |
ad |
uvm_pagerealloc(): resurrect the insertion case.
|
| 1.240 |
11-Jun-2020 |
ad |
Counter tweaks:
- Don't need to count anonpages+filepages any more; clean+unknown+dirty for each kind of page can be summed to get the totals.
- Track the number of free pages with a counter so that it's one less thing for the allocator to do, which opens up further options there.
- Remove cpu_count_sync_one(). It has no users and doesn't save a whole lot. For the cheap option, give cpu_count_sync() a boolean parameter indicating that a cached value is okay, and rate limit the updates for cached values to hz.
|
| 1.239 |
11-Jun-2020 |
ad |
uvm_availmem(): give it a boolean argument to specify whether a recent cached value will do, or if the very latest total must be fetched. It can be called thousands of times a second and fetching the totals impacts not only the calling LWP but other CPUs doing unrelated activity in the VM system.
|
| 1.238 |
24-May-2020 |
ad |
Add uvm_pagewanted_p(): return true if someone is waiting on the page and assert caller has correct lock to observe that.
|
| 1.237 |
19-May-2020 |
ad |
UVM_PAGE_TRKOWN: print the LID too
|
| 1.236 |
17-May-2020 |
ad |
Don't set PG_AOBJ on a page unless UVM_OBJ_IS_AOBJ(), otherwise it can catch pages from e.g. uvm_loanzero_object.
|
| 1.235 |
17-May-2020 |
ad |
- If the hardware provided NUMA info, then use it to decide how to set up the allocator's buckets, instead of doing round robin distribution. There are open questions here but this is better than doing nothing.
- Kernel reserve pages are for the kernel not realtime threads.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.234 |
17-Mar-2020 |
ad |
Tweak the March 14th change to make page waits interlocked by pg->interlock. Remove unneeded changes and only deal with the PQ_WANTED flag, to exclude possible bugs.
|
| 1.233 |
15-Mar-2020 |
rin |
Fix build with UVMHIST.
|
| 1.232 |
14-Mar-2020 |
ad |
Don't require a write lock for page enqueue/activate/deactivate.
|
| 1.231 |
14-Mar-2020 |
ad |
Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
| 1.230 |
03-Mar-2020 |
skrll |
Trailing whitespace
|
| 1.229 |
03-Mar-2020 |
skrll |
Typo in comment
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.228 |
27-Feb-2020 |
ad |
Tighten up the locking around vp->v_iflag a little more after the recent split of vmobjlock & v_interlock.
|
| 1.227 |
23-Feb-2020 |
ad |
Fix a comment.
|
| 1.226 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2
|
| 1.225 |
21-Jan-2020 |
ad |
uvmpdpol_pageactive(): the change to not re-activate recently activated pages worked great with uvm_pageqlock, but it doesn't buy anything any more, because now the busy pages are likely in a per-CPU queue somewhere waiting to be processed, and changing the intent on those queued pages costs next to nothing. Remove this and get back all the bits in pg->pqflags.
|
|
Revision tags: ad-namecache-base1
|
| 1.224 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
| 1.223 |
11-Jan-2020 |
ad |
- uvm_pagezerocheck(): put a global lock around it to protect the single page mapping (DEBUG only).
- uvm_pagefree(): increment zeropages as needed.
|
| 1.222 |
09-Jan-2020 |
ad |
- Many small tweaks to the SMT awareness in the scheduler. It does a much better job now at keeping all physical CPUs busy, while using the extra threads to help out. In particular, during preempt() if we're using SMT, try to find a better CPU to run on and teleport curlwp there.
- Change the CPU topology stuff so it can work on asymmetric systems. This mainly entails rearranging one of the CPU lists so it makes sense in all configurations.
- Add a parameter to cpu_topology_set() to note that a CPU is "slow", for where there are fast CPUs and slow CPUs, like with the Rockwell RK3399. Extend the SMT awareness to try and handle that situation too (keep fast CPUs busy, use slow CPUs as helpers).
|
|
Revision tags: ad-namecache-base
|
| 1.221 |
05-Jan-2020 |
ad |
branches: 1.221.2; Page allocator:
The method for assigning pages to buckets in the non-NUMA case sucks. It can defeat memory interleaving in the hardware, and not distribute pages fairly by colour. To fix this and make things more deterministic, take the physical PFN and colour into account.
Then when freeing pages, in the non-NUMA case don't change the page's bucket either. Keeping the bucket number stable will also permit partitioning page replacement state by CPU package / NUMA node.
|
| 1.220 |
31-Dec-2019 |
ad |
- Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.219 |
31-Dec-2019 |
ad |
Rename uvm_free() -> uvm_availmem().
|
| 1.218 |
31-Dec-2019 |
ad |
Rename uvm_page_locked_p() -> uvm_page_owner_locked_p()
|
| 1.217 |
30-Dec-2019 |
ad |
uvm_pagealloc_pgb(): don't fill cache if we're into the reserves.
uvm_pagereplace(): use radix_tree_replace_node() to avoid alloc/free.
|
| 1.216 |
28-Dec-2019 |
ad |
Add missing call to uvm_pgflcache_resume().
|
| 1.215 |
28-Dec-2019 |
martin |
Use PRIxPADDR to print a physical address (instead of casting to void* and printing a pointer - which does not work well if sizeof(paddr_t) != sizeof(void*)).
|
| 1.214 |
27-Dec-2019 |
ad |
Nothing uses uvm.cpus any more, and we can do the same with cpu_lookup(), so get rid of it.
|
| 1.213 |
27-Dec-2019 |
ad |
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
| 1.212 |
22-Dec-2019 |
ad |
uvm_pagealloc_strat(): Tweak the locking to allow for lazy dequeue of pages in the pdpolicy code. This means taking pg->interlock if assigning to an object. The remaining barrier to lazy dequeue is having a dedicated TAILQ_ENTRY in the page (it's currently shared with the page allocator).
|
| 1.211 |
21-Dec-2019 |
ad |
uvm_page_to_phys: mask off the lower bits.
|
| 1.210 |
21-Dec-2019 |
ad |
Detangle the pagedaemon from uvm_fpageqlock:
- Have a single lock (uvmpd_lock) to protect pagedaemon state that was previously covered by uvmpd_pool_drain_lock plus uvm_fpageqlock. - Don't require any locks be held when calling uvm_kick_pdaemon(). - Use uvm_free().
|
| 1.209 |
21-Dec-2019 |
ad |
- Rename VM_PGCOLOR_BUCKET() to VM_PGCOLOR(). I want to reuse "bucket" for something else soon and TBH it matches what this macro does better.
- Add inlines to set/get locator values in the unused lower bits of pg->phys_addr. Begin by using it to cache the freelist index, because computing it is expensive and that shows up during profiling. Discussed on tech-kern.
|
| 1.208 |
21-Dec-2019 |
ad |
Counter tweaks:
"zeroaborts" + "free" don't need to be per-CPU counters, and "bucketmiss" wasn't used. Remove those and cluster by usage.
|
| 1.207 |
21-Dec-2019 |
ad |
Add uvm_free(): returns number of free pages in system.
|
| 1.206 |
18-Dec-2019 |
ad |
PR kern/54783: t_mmap crahes the kernel
- Fix various locking & sequencing errors with breaking loans.
- Don't call uvm_pageremove_tree() while holding pg->interlock as radixtree can take further locks when freeing nodes.
|
| 1.205 |
16-Dec-2019 |
ad |
- Extend the per-CPU counters matt@ did to include all of the hot counters in UVM, excluding uvmexp.free, which needs special treatment and will be done with a separate commit. Cuts system time for a build by 20-25% on a 48 CPU machine w/DIAGNOSTIC.
- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
|
| 1.204 |
16-Dec-2019 |
ad |
Merge from yamt-pagecache:
uvm_pagerealloc(): Don't bother with insert to new. Nobody uses it and it can return an error now due to radixtree.
|
| 1.203 |
15-Dec-2019 |
ad |
Merge from yamt-pagecache:
- do gang lookup of pages using radixtree. - remove now unused uvm_object::uo_memq and vm_page::listq.queue.
|
| 1.202 |
14-Dec-2019 |
ad |
Merge from yamt-pagecache: use radixtree for page lookup.
rbtree page lookup was introduced during the NetBSD 5.0 development cycle to bypass lock contention problems with the (then) global page hash, and was a temporary solution to allow us to make progress. radixtree is the intended replacement.
Ok yamt@.
|
| 1.201 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
|
Revision tags: phil-wifi-20191119
|
| 1.200 |
20-Sep-2019 |
maxv |
Fix programming mistake: 'paddrp' is a pointer given as argument, setting it to NULL in the called function does not set it to NULL in the caller.
Actually, the callers of these functions do not do anything with the special error handling, so drop the unused checks and the NULL assignments altogether.
Found by the lgtm bot.
|
|
Revision tags: netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
| 1.199 |
14-Mar-2019 |
kre |
branches: 1.199.4; Avoid a panic from the sequence
mlock(buf, 0); munlock(buf, 0); mlock(buf, page); munlock(buf, page);
where buf is page aligned, and page is actually anything > 0 (but not too big) which will get rounded up to the next multiple of the page size.
In that sequence, it is possible that the 1st munlock() is optional.
Add a KASSERT() (or two) to detect the first effects of the problem (without that, or in !DIAGNOSTIC kernels) the problem eventually causes some kind of problem or other (most often still a panic.)
After this, mlock(anything, 0) (or munlock) validates "anything" but is otherwise a no-op (regardless of the alignment of anything).
Also, don't treat mlock(buf, verybig) as equivalent to mlock(buf, 0) which is (more or less) what we had been doing.
XXX pullup -8 (maybe -7 as well, need to check).
|
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
|
| 1.198 |
19-May-2018 |
jdolecek |
branches: 1.198.2; add experimental new function uvm_direct_process(), to allow of read/writes of contents of uvm pages without mapping them into kernel, using direct map or moral equivalent; pmaps supporting the interface need to provide pmap_direct_process() and define PMAP_DIRECT
implement the new interface for amd64; I hear alpha and mips might be relatively easy to add too, but I lack the knowledge
part of resolution for PR kern/53124
|
| 1.197 |
19-May-2018 |
jdolecek |
detect wraparound when bumping page wire_count and loan_count
|
|
Revision tags: pgoyette-compat-0502
|
| 1.196 |
24-Apr-2018 |
jakllsch |
In uvm_page_recolor(), kmem_free() old size rather than new size.
From Yaniv Abraham-Rabinovitch in PR kern/53208.
|
|
Revision tags: pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.195 |
02-Dec-2017 |
mrg |
branches: 1.195.2; add two new members to uvmexp_sysctl{}: bootpages and poolpages. bootpages is set to the pages allocated via uvm_pageboot_alloc(). poolpages is calculated from the list of pools nr_pages members.
this brings us closer to having a valid total of pages known by the system, vs actual pages originally managed.
XXX: poolpages needs some handling for PR_RECURSIVE pools still.
|
| 1.194 |
28-Oct-2017 |
pgoyette |
Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
|
| 1.193 |
01-Jun-2017 |
chs |
branches: 1.193.2; remove checks for failure after memory allocation calls that cannot fail:
kmem_alloc() with KM_SLEEP kmem_zalloc() with KM_SLEEP percpu_alloc() pserialize_create() psref_class_create()
all of these paths include an assertion that the allocation has not failed, so callers should not assert that again.
|
|
Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
|
| 1.192 |
05-Feb-2017 |
maya |
Fix off by one. ok cherry
|
|
Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.191 |
23-Dec-2016 |
skrll |
branches: 1.191.2; Fix uvm_page_physget_freelist so that it actually performs the two passes it mentions.
|
| 1.190 |
23-Dec-2016 |
cherry |
"Make NetBSD great again!"
Introduce uvm_hotplug(9) to the kernel.
Many thanks, in no particular order to:
TNF, for funding the project.
Chuck Silvers - for multiple API reviews and feedback. Nick Hudson - for testing on multiple architectures and bugfix patches. Everyone who helped with boot testing.
KeK (http://www.kek.org.in) for hosting the primary developers.
|
| 1.189 |
22-Dec-2016 |
cherry |
physmem should be of type psize_t
Also, use PRIxPSIZE when printf(9)ing physmem.
|
| 1.188 |
22-Dec-2016 |
cherry |
Use uvm_physseg.h:uvm_page_physload() instead of uvm_extern.h
For this, include uvm_physseg.h in the build and include tree, make a cosmetic modification to the prototype for uvm_page_physload().
|
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606
|
| 1.187 |
11-Apr-2015 |
joerg |
branches: 1.187.2; Allow changing the per-cpu emergency page reservation via kernel config.
|
|
Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
|
| 1.186 |
05-Sep-2014 |
matt |
branches: 1.186.2; Don't use C++ try keyword as a variable name.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-maxphys-base
|
| 1.185 |
10-Aug-2014 |
tls |
Merge tls-earlyentropy branch into HEAD.
|
|
Revision tags: yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base
|
| 1.184 |
21-Apr-2014 |
chs |
remove unused variables for UVM_PAGE_TRKOWN.
|
|
Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
|
| 1.183 |
25-Oct-2013 |
martin |
branches: 1.183.2; Mark a diagnostic-only variable
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2
|
| 1.182 |
16-Feb-2012 |
matt |
branches: 1.182.2; 1.182.4; Add KASSERTs to uvm_pagealloc_pgfl to verify the page is actually free and has the contents that it should. Redo the KASSERTs for the pageq in uvm_pagefree.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 netbsd-6-base
|
| 1.181 |
02-Feb-2012 |
tls |
Entropy-pool implementation move and cleanup.
1) Move core entropy-pool code and source/sink/sample management code to sys/kern from sys/dev.
2) Remove use of NRND as test for presence of entropy-pool code throughout source tree.
3) Remove use of RND_ENABLED in device drivers as microoptimization to avoid expensive operations on disabled entropy sources; make the rnd_add calls do this directly so all callers benefit.
4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might have lead to slight entropy overestimation for some sources.
5) Add new source types for environmental sensors, power sensors, VM system events, and skew between clocks, with a sample implementation for each.
ok releng to go in before the branch due to the difficulty of later pullup (widespread #ifdef removal and moved files). Tested with release builds on amd64 and evbarm and live testing on amd64.
|
| 1.180 |
28-Jan-2012 |
matt |
Replace locking checks with uvm_page_locked_p.
|
| 1.179 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.178 |
06-Oct-2011 |
uebayasi |
branches: 1.178.2; 1.178.6; Correct pagermap emergva allocation. From yamt@.
Tested by building i386 kernel with DTRACE defined which died 100%.
|
| 1.177 |
30-Sep-2011 |
mrg |
re-arrange the end of uvm_page_recolor() to avoid the multiple exit points. move the call to uvm_pager_realloc_emerg() to after we drop the uvm_fpageqlock, since it may be taken again in uvm_km_alloc().
fixes LOCKDEBUG crashes with the previous change.
|
| 1.176 |
28-Sep-2011 |
matt |
Reallocate emergency pager va when ncolors is increased. (modication of patch from mrg).
|
| 1.175 |
15-Jun-2011 |
rmind |
uvm_pagealloc_strat: fix diagnostic assert. Reported by drochner@.
|
| 1.174 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase rmind-uvmplock-base
|
| 1.173 |
05-Jun-2011 |
matt |
Fix fencepost error.
|
|
Revision tags: cherry-xenmp-base
|
| 1.172 |
01-Apr-2011 |
rmind |
branches: 1.172.2; uvm_pageidlezero: use try-lock to not occupy uvm_fpageqlock, which may be on demand by other CPUs. Reduces lock contention in some workloads on many CPU (8+) systems.
Tested by tls@.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.171 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
| 1.170 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on second diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base
|
| 1.169 |
04-Jan-2011 |
matt |
branches: 1.169.2; 1.169.4; Add better color matching selecting free pages. KM pages will now allocated so that VA and PA have the same color. On a page fault, choose a physical page that has the same color as the virtual address.
When allocating kernel memory pages, allow the MD to specify a preferred VM_FREELIST from which to choose pages. For machines with large amounts of memory (> 4GB), all kernel memory to come from <4GB to reduce the amount of bounce buffering needed with 32bit DMA devices.
|
|
Revision tags: matt-mips64-premerge-20101231
|
| 1.168 |
11-Dec-2010 |
matt |
When panicing due a non-power of 2 pagesize, include the pagesize in the panic message.
|
| 1.167 |
25-Nov-2010 |
uebayasi |
Revert vm_physseg allocation changes. A report says that it causes panics when used with mplayer in heavy load.
|
|
Revision tags: uebayasi-xip-base6
|
| 1.166 |
14-Nov-2010 |
uebayasi |
... and another.
|
| 1.165 |
14-Nov-2010 |
uebayasi |
Fix build caused by a last minute change.
|
| 1.164 |
14-Nov-2010 |
uebayasi |
Be a little more friendly to dynamic physical segment registration.
Maintain an array of pointer to struct vm_physseg, instead of struct array. So that VM subsystem can take its pointer safely. Pointer to this struct will replace raw paddr_t usage in the future.
Dynamic removal is not supported yet.
Only MD data structure changes, no kernel bump needed.
Tested on i386, amd64, powerpc/ibm40x, arm11.
|
| 1.163 |
12-Nov-2010 |
uebayasi |
Abstraction fix; move physical address -> per-page metadata (struct vm_page *) "reverse" lookup code from uvm_page.h to uvm_page.c, to help migration to not do that.
Likewise move per-page metadata (struct vm_page *) -> physical address "forward" conversion code into *.c too. This is called only low-layer VM and MD code.
|
| 1.162 |
12-Nov-2010 |
uebayasi |
Abstraction fix; move physical address -> physical segment "reverse" lookup code from uvm_page.h to uvm_page.c.
This code is used by some pmaps to lookup per-page state (PV) from per-segment metadata (struct vm_physseg). This is not needed if UVM looks up physical segment once in fault handler, then directly passes it to pmap. This change helps transition to that model.
The only users of vm_physseg_find() are pmap_motorola.c and powerpc/ibm4xx/pmap.c.
Tested By: Compiling and running powerpc/ibm4xx/pmap.c (evbppc/conf/OPENBLOCKS266)
|
| 1.161 |
11-Nov-2010 |
uebayasi |
C style; make a sentinel pointer have an exclusive value; no functional changes.
|
| 1.160 |
11-Nov-2010 |
uebayasi |
Typo in a comment.
|
| 1.159 |
11-Nov-2010 |
uebayasi |
Minor clean up.
|
| 1.158 |
11-Nov-2010 |
uebayasi |
Minor clean up.
|
|
Revision tags: uebayasi-xip-base5
|
| 1.157 |
06-Nov-2010 |
uebayasi |
Remove incomplete, never worked dynamic run-time memory registration (uvm_page_physload(9)). This functionality will be re-added later.
|
|
Revision tags: uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
|
| 1.156 |
24-Sep-2010 |
rmind |
Fixes/improvements to RB-tree implementation: 1. Fix inverted node order, so that negative value from comparison operator would represent lower (left) node, and positive - higher (right) node. 2. Add an argument (i.e. "context"), passed to comparison operators. 3. Change rb_tree_insert_node() to return a node - either inserted one or already existing one. 4. Amend the interface to manipulate the actual object, instead of the rb_node (in a similar way as Patricia-tree interface does). 5. Update all RB-tree users accordingly.
XXX: Perhaps rename rb.h to rbtree.h, since cleaning-up..
1-3 address the PR/43488 by Jeremy Huddleston.
Passes RB-tree regression tests. Reviewed by: matt@, christos@
|
|
Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1
|
| 1.155 |
25-Apr-2010 |
ad |
Reduce memory spent on bookkeeping for large values of MAXCPUS.
|
|
Revision tags: yamt-nfs-mp-base9
|
| 1.154 |
24-Feb-2010 |
jym |
branches: 1.154.2; - Use ctob() instead of ptoa() to obtain physical addresses from frame numbers. Using ptoa() will cast to vaddr_t, which might no be adequate for architectures where sizeof(paddr_t) > sizeof(vaddr_t) (like i386 PAE).
- small fix inside AGP heuristics to avoid masking high order bits for systems with more than 4GB.
Reviewed by bouyer@.
See also http://mail-index.netbsd.org/tech-kern/2010/02/22/msg007373.html
|
|
Revision tags: uebayasi-xip-base
|
| 1.153 |
27-Jan-2010 |
uebayasi |
branches: 1.153.2; uvm_pageinsert, uvm_pageremove: Pass the uboj, to/from which a pg is inserted/removed, as an argument, because looking up a back-reference from pg is redundant. No functional changes.
|
|
Revision tags: matt-premerge-20091211
|
| 1.152 |
07-Nov-2009 |
cegger |
Add a flags argument to pmap_kenter_pa(9). Patch showed on tech-kern@ http://mail-index.netbsd.org/tech-kern/2009/11/04/msg006434.html No objections.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jym-xensuspend-nbase
|
| 1.151 |
18-Aug-2009 |
thorpej |
Move uvm_page-related DDB hooks into uvm_page.c.
|
| 1.150 |
18-Aug-2009 |
thorpej |
Add a real API for testing if a page is a managed page, and adjust callers to stop relying on vm_physseg_find() for this purpose.
|
| 1.149 |
11-Aug-2009 |
matt |
Fix brain fart. physmem was int not long.
|
| 1.148 |
11-Aug-2009 |
matt |
Add back declaration of physmem but use the existing type (long).
|
| 1.147 |
11-Aug-2009 |
haad |
Remove physmem definition to uintptr_t from another patch.
|
| 1.146 |
10-Aug-2009 |
haad |
Add uvm_reclaim_hooks support for reclaiming kernel KVA space and memory. This is used only by zfs where uvm_reclaim hook is added from arc cache.
Oked ad@.
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
| 1.145 |
12-Mar-2009 |
abs |
Clarify free_list usage in uvm_page_physload() regarding faster/slower RAM. Slower RAM should be assigned a higher free_list id. No functional change to code, just comments and manpage
|
|
Revision tags: nick-hppapmap-base2
|
| 1.144 |
27-Feb-2009 |
drochner |
oops - missed a case with PMAP_PAGEIDLEZERO if md code aborts the zeroing process, from Nicolas Joly
|
| 1.143 |
26-Feb-2009 |
drochner |
-fix two conditions where PQ_FREE was still/already set while the page was not anymore/yet on the freelist and uvm_fpageqlock was not held -clear PQ_FREE while the page is in the works of pageidlezero This avoids that the DMA memory allocator (pglistalloc) grabs a page which is not on the freelist, leading to a diagnostic panic (with DEBUG) or freelist corruption. (mostly on X server activation after a VT switch or suspend/resume because this can allocate megabytes of AGP memory) This might fix PR port-i386/38989 by Alan Barrett (in case this was a multiprocessor).
|
|
Revision tags: mjf-devfs2-base
|
| 1.142 |
16-Jan-2009 |
yamt |
branches: 1.142.2; uvm_page_unbusy: add an assertion
|
| 1.141 |
13-Dec-2008 |
ad |
It's easier for kernel reserve pages to be consumed because the pagedaemon serves as less of a barrier these days. Restrict provision of kernel reserve pages to kmem and one of these cases:
- doing a NOWAIT allocation - caller is a realtime thread - caller is a kernel thread - explicitly requested, for example by the pmap
|
|
Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base simonb-wapbl-nbase simonb-wapbl-base
|
| 1.140 |
04-Jul-2008 |
ad |
branches: 1.140.4; 1.140.6; Scale the number of kernel reserve pages by the number of CPUs.
|
| 1.139 |
02-Jul-2008 |
ad |
uvm_pageidlezero: fix a broken test which made it give up too easily.
|
| 1.138 |
02-Jul-2008 |
matt |
Switch from KASSERT to CTASSERT for those asserts testing sizes of types.
|
| 1.137 |
30-Jun-2008 |
matt |
Change tree op members/typedefs to rbto_compare_* from rb_compare_*
|
|
Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 wrstuden-revivesa-base
|
| 1.136 |
17-Jun-2008 |
yamt |
- uvm_pagereplace: don't try to insert multiple pages with the same offset into uvm_object rbtree. - inline static -> static inline
|
| 1.135 |
05-Jun-2008 |
he |
branches: 1.135.2; Delete what appears to be a spurious assignment to an undeclared 'cpu' variable added in revision 1.133. Restores buildability for this file.
|
| 1.134 |
04-Jun-2008 |
ad |
Replace the global vm_page hash with a per vm_object rbtree. Proposed on tech-kern@.
|
| 1.133 |
04-Jun-2008 |
ad |
- vm_page: put listq, pageq into a union alongside a LIST_ENTRY, so we can use both types of list.
- Make page coloring and idle zero state per-CPU.
- Maintain per-CPU page freelists. When freeing, put pages onto the local CPU's lists and the global lists. When allocating, prefer to take pages from the local CPU. If none are available take from the global list as done now. Proposed on tech-kern@.
|
|
Revision tags: yamt-pf42-base3
|
| 1.132 |
02-Jun-2008 |
ad |
uvm_pageidlezero:
- Use high and low water marks to try and reduce power consumption. - Do trylock on uvm_fpageqlock, and bail if we can't get it. - Only run on one CPU at a time.
|
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
| 1.131 |
24-Mar-2008 |
yamt |
branches: 1.131.2; 1.131.4; 1.131.6; remove a redundant pmap_update and add a comment instead.
|
|
Revision tags: keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase hpcarm-cleanup-base
|
| 1.130 |
27-Feb-2008 |
ad |
Assert uvm_fpageqlock is held in a few more places.
|
| 1.129 |
23-Feb-2008 |
chris |
Add some more missing pmap_update()s following pmap_kremove()s.
|
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-nbase bouyer-xeni386-base mjf-devfs-base
|
| 1.128 |
13-Jan-2008 |
yamt |
branches: 1.128.2; 1.128.6; unwrap short lines.
|
|
Revision tags: matt-armv6-base
|
| 1.127 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.126 |
29-Nov-2007 |
ad |
branches: 1.126.2; 1.126.6; Use atomics to maintain uvmexp.{anon,exec,file}pages.
|
|
Revision tags: jmcneill-base bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base
|
| 1.125 |
08-Oct-2007 |
ad |
branches: 1.125.4; Fix merge error.
|
| 1.124 |
08-Oct-2007 |
ad |
Pad the hashlocks to 32-byte boundaries.
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base
|
| 1.123 |
21-Jul-2007 |
ad |
branches: 1.123.4; 1.123.6; 1.123.8; 1.123.10; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base mjf-ufs-trans-base
|
| 1.122 |
09-Jul-2007 |
ad |
branches: 1.122.2; Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
| 1.121 |
17-May-2007 |
yamt |
merge yamt-idlelwp branch. asked by core@. some ports still needs work.
from doc/BRANCHES:
idle lwp, and some changes depending on it.
1. separate context switching and thread scheduling. (cf. gmcgarry_ctxsw) 2. implement idle lwp. 3. clean up related MD/MI interfaces. 4. make scheduler(s) modular.
|
|
Revision tags: yamt-idlelwp-base8
|
| 1.120 |
14-Apr-2007 |
perseant |
Track lwp as well as proc owner with UVM_PAGE_TRKOWN
|
|
Revision tags: thorpej-atomic-base ad-audiomp-base
|
| 1.119 |
22-Feb-2007 |
thorpej |
branches: 1.119.4; 1.119.6; TRUE -> true, FALSE -> false
|
| 1.118 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: post-newlock2-merge
|
| 1.117 |
09-Feb-2007 |
ad |
branches: 1.117.2; Merge newlock2 to head.
|
|
Revision tags: newlock2-nbase newlock2-base
|
| 1.116 |
21-Dec-2006 |
yamt |
merge yamt-splraiseipl branch.
- finish implementing splraiseipl (and makeiplcookie). http://mail-index.NetBSD.org/tech-kern/2006/07/01/0000.html - complete workqueue(9) and fix its ipl problem, which is reported to cause audio skipping. - fix netbt (at least compilation problems) for some ports. - fix PR/33218.
|
|
Revision tags: yamt-splraiseipl-base5 yamt-splraiseipl-base4
|
| 1.115 |
15-Dec-2006 |
yamt |
put ->K loaned pages on the page queue, so that page loaning doesn't disturb pagedaemon/pdpolicy.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base yamt-splraiseipl-base3 yamt-splraiseipl-base2 netbsd-4-base
|
| 1.114 |
27-Sep-2006 |
thorpej |
Don't inline uvm_pagealloc_pgfl().
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.113 |
15-Sep-2006 |
yamt |
branches: 1.113.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.112 |
13-Apr-2006 |
yamt |
branches: 1.112.8; uvm_page_own: more assertions.
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.111 |
12-Feb-2006 |
yamt |
branches: 1.111.2; 1.111.4; 1.111.6; uvm_pageunwire: use uvm_pageactivate rather than a copy.
|
| 1.110 |
11-Feb-2006 |
yamt |
remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.109 |
24-Dec-2005 |
perry |
branches: 1.109.2; 1.109.4; 1.109.6; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
| 1.108 |
21-Dec-2005 |
yamt |
make length of inactive queue tunable by sysctl. (vm.inactivepct)
|
| 1.107 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.106 |
28-Jun-2005 |
thorpej |
branches: 1.106.2; Clean up the cpp macro used to say "we're compiling this specific C file".
|
| 1.105 |
27-Jun-2005 |
thorpej |
Use ANSI function decls.
|
| 1.104 |
04-Jun-2005 |
chs |
adapt to const changes.
|
| 1.103 |
11-May-2005 |
yamt |
allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
|
Revision tags: kent-audio2-base
|
| 1.102 |
01-Apr-2005 |
yamt |
merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio1-beforemerge kent-audio1-base
|
| 1.101 |
23-Oct-2004 |
yamt |
branches: 1.101.4; 1.101.6; uvm_pageidlezero: grab kernel_lock before uvm.fpageqlock. PR/27259.
|
| 1.100 |
17-Sep-2004 |
yamt |
make free page queue filo rather than fifo. data in pages freed more recently are more likely on cpu cache.
|
| 1.99 |
01-Sep-2004 |
yamt |
uvm_pagefree: when orphaning an A->K loaned page, - decrement uvmexp.anonpages as it's no longer an anon page. - null out anon->u.an_page as the anon no longer own the page. uvm_anfree: add related assertions.
|
| 1.98 |
05-May-2004 |
yamt |
uvm_page_unbusy: add assertions and comments about PG_RELEASED anon pages.
|
|
Revision tags: netbsd-2-0-base
|
| 1.97 |
24-Mar-2004 |
junyoung |
branches: 1.97.2; - Nuke __P(). - Drop trailing spaces.
|
| 1.96 |
13-Feb-2004 |
yamt |
when breaking a loan from uobj, insert the replacement page into the same position as the original page on the object memq so that genfs_putpages (and lfs) won't be confused.
noted by Stephan Uphoff (PR/24328)
|
| 1.95 |
13-Feb-2004 |
wiz |
Uppercase CPU, plural is CPUs.
|
| 1.94 |
14-Jan-2004 |
yamt |
bump vnode hold count for page cache as well to resolve unfairness between page cache and traditional buffer cache. pointed by enami tsugutomo on current-users@.
|
| 1.93 |
21-Dec-2003 |
simonb |
No need to break a line - the full line is less than 80 chars long.
|
| 1.92 |
05-Nov-2003 |
yamt |
add a missing pmap_update().
|
| 1.91 |
03-Nov-2003 |
yamt |
add a DEBUG check if freed PG_ZERO pages are really zero-filled.
|
| 1.90 |
01-Nov-2003 |
yamt |
in uvm_pagefree and friends, if freed pages have been marked by PG_ZERO flag, put them to PGFL_ZEROS queue rather than default one so that we can re-use zero-filled pages efficiently.
|
| 1.89 |
01-Jun-2003 |
wiz |
branches: 1.89.2; Fix typo in panic message. From miod@openbsd.
|
| 1.88 |
10-May-2003 |
thorpej |
Back out the following chagne: http://mail-index.netbsd.org/source-changes/2003/05/08/0068.html
There were some side-effects that I didn't anticipate, and fixing them is proving to be more difficult than I thought, do just eject for now. Maybe one day we can look at this again.
Fixes PR kern/21517.
|
| 1.87 |
08-May-2003 |
thorpej |
Simplify the way the bounds of the managed kernel virtual address space is advertised to UVM by making virtual_avail and virtual_end first-class exported variables by UVM. Machine-dependent code is responsible for initializing them before main() is called. Anything that steals KVA must adjust these variables accordingly.
This reduces the number of instances of this info from 3 to 1, and simplifies the pmap(9) interface by removing the pmap_virtual_space() function call, and removing two arguments from pmap_steal_memory().
This also eliminates some kludges such as having to burn kernel_map entries on space used by the kernel and stolen KVA.
This also eliminates use of VM_{MIN,MAX}_KERNEL_ADDRESS from MI code, this giving MD code greater flexibility over the bounds of the managed kernel virtual address space if a given port's specific platforms can vary in this regard (this is especially true of the evb* ports).
|
| 1.86 |
22-Apr-2003 |
yamt |
correct accounting of {exec,file}pages. they are not updated correctly when breaking loan.
|
| 1.85 |
09-Apr-2003 |
thorpej |
Tweak the way the pagesize-related variables are set: * Remove DEFAULT_PAGE_SIZE. We don't use PAGE_SIZE the way Mach did. * In uvm_setpagesize(), if we are called with uvmexp.pagesize == 0, then assert that PAGE_SIZE != 0 (i.e. a constant), and set uvmexp.pagesize accordingly. * Provide defaults for MIN_PAGE_SIZE and MAX_PAGE_SIZE if not defined by <machine/vmparam.h>. If PAGE_SIZE is not a constant, MIN_PAGE_SIZE and MAX_PAGE_SIZE must be provided. * If MIN_PAGE_SIZE and MAX_PAGE_SIZE are not equal (i.e. PAGE_SIZE may not be a constant in all configurations), then ensure that PAGE_SIZE and friends expand to variable references for LKMs.
|
| 1.84 |
17-Feb-2003 |
perseant |
Add code to UBCify LFS. This is still behind "#ifdef LFS_UBC" for now (there are still some details to work out) but expect that to go away soon. To support these basic changes (creation of lfs_putpages, lfs_gop_write, mods to lfs_balloc) several other changes were made, to wit:
* Create a writer daemon kernel thread whose purpose is to handle page writes for the pagedaemon, but which also takes over some of the functions of lfs_check(). This thread is started the first time an LFS is mounted.
* Add a "flags" parameter to GOP_SIZE. Current values are GOP_SIZE_READ, meaning that the call should return the size of the in-core version of the file, and GOP_SIZE_WRITE, meaning that it should return the on-disk size. One of GOP_SIZE_READ or GOP_SIZE_WRITE must be specified.
* Instead of using malloc(...M_WAITOK) for everything, reserve enough resources to get by and use malloc(...M_NOWAIT), using the reserves if necessary. Use the pool subsystem for structures small enough that this is feasible. This also obsoletes LFS_THROTTLE.
And a few that are not strictly necessary:
* Moves the LFS inode extensions off onto a separately allocated structure; getting closer to LFS as an LKM. "Welcome to 1.6O."
* Unified GOP_ALLOC between FFS and LFS.
* Update LFS copyright headers to correct values.
* Actually cast to unsigned in lfs_shellsort, like the comment says.
* Keep track of which segments were empty before the previous checkpoint; any segments that pass two checkpoints both dirty and empty can be summarily cleaned. Do this. Right now lfs_segclean still works, but this should be turned into an effectless compatibility syscall.
|
| 1.83 |
01-Feb-2003 |
thorpej |
Add extensible malloc types, adapted from FreeBSD. This turns malloc types into a structure, a pointer to which is passed around, instead of an int constant. Allow the limit to be adjusted when the malloc type is defined, or with a function call, as suggested by Jonathan Stone.
|
| 1.82 |
27-Jan-2003 |
enami |
uvm_page_unbusy should skip PGO_DONTCARE page; e.g., locked pgo_getpages request may contain PGO_DONTCARE and nfs_getpages may unbusy them on error.
Fix is provided in PR#20028 by YAMAMOTO Takashi. (and same one is approved by chuq while ago in private mail). It was my fault to forget to commit.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.81 |
09-Nov-2002 |
thorpej |
Fix signed/unsigned comparison warnings.
|
| 1.80 |
30-Oct-2002 |
simonb |
Fix whitespace bogon.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.79 |
27-Sep-2002 |
provos |
remove trailing \n in panic(). approved perry.
|
|
Revision tags: gehenna-devsw-base
|
| 1.78 |
20-Jun-2002 |
chs |
count aobj pages (most notably kernel stack pages) as anon pages for memory usage-balancing purposes.
|
| 1.77 |
19-Jun-2002 |
wrstuden |
Fix recent bugs seen on Performa 4400 macppc's by Makoto Fujiwara <makoto@ki.nu> and Manuel Bouyer <bouyer@netbsd.org>. Help from Allen Briggs, Jason Thorpe, and Matt Thomas.
We need to call cpu_cache_probe() early in boot (machdep.c). Add 603 info for completeness, and use NBPG not PAGESIZE, as the latter relies on uvm being setup (cpu_subr.c). Let uvm_page_recolor() be called before uvm has been set up; just note the page coloring value (uvm_page.c).
|
| 1.76 |
29-May-2002 |
enami |
Add missing pageq lock while uvm_pagefree() is called (either directly or indirectly). Reviewed by chuq.
|
|
Revision tags: netbsd-1-6-base
|
| 1.75 |
15-May-2002 |
enami |
branches: 1.75.2; 1.75.4; When loaned page become ownerless as a result of freeing, it should be dequeue'ed from pageq. Fix provided by chuq.
|
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
| 1.74 |
20-Feb-2002 |
enami |
branches: 1.74.4; In the function uvm_page_own(), clear owner_tag after assertion so that we can see the owner when assertion failed. Some indentation fix while I'm here.
|
| 1.73 |
31-Dec-2001 |
chs |
fix locking for loaning. in general we should be looking at the page's uobject and uanon pointers rather than at the PQ_ANON flag to determine which lock to hold, since PQ_ANON can be clear even when the anon's lock is the one which we should hold (if the page was loaned from an object and then freed by the object).
|
| 1.72 |
09-Dec-2001 |
chs |
add {anon,file,exec}max as a upper bound on the amount of memory that will be allocated for the respective usage types when there is contention for memory.
replace "vnode" and "vtext" with "file" and "exec" in uvmexp field names and sysctl names.
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.71 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.70 |
06-Nov-2001 |
chs |
several changes prompted by loaning problems: - fix the loaned case in uvm_pagefree(). - redo uvmexp.swpgonly accounting to work with page loaning. add an assertion before each place we adjust uvmexp.swpgonly. - fix uvm_km_pgremove() to always free any swap space associated with the range being removed. - get rid of UVM_LOAN_WIRED flag. instead, we just make sure that pages loaned to the kernel are never on the page queues. this allows us to assert that pages are not loaned and wired at the same time. - add yet more assertions.
|
| 1.69 |
06-Nov-2001 |
simonb |
Change some unsigned int variables and parameters to plain ints so that all usages of those agree on unsigned vs. signed.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2
|
| 1.68 |
28-Sep-2001 |
chs |
branches: 1.68.2; don't depend on other headers to include sys/proc.h for us.
|
|
Revision tags: post-chs-ubcperf
|
| 1.67 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf
|
| 1.66 |
10-Sep-2001 |
chris |
Update pmap_update to now take the updated pmap as an argument. This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.
Currently this is a no-op on most platforms, so they should see no difference.
Reviewed by Jason.
|
|
Revision tags: thorpej-devvp-base
|
| 1.65 |
27-Jun-2001 |
thorpej |
branches: 1.65.2; 1.65.4; Since a page can be on only one of ACTIVE or INACTIVE queues at any given time, turn two consecutive if statements into an if-else-if construct.
|
| 1.64 |
27-Jun-2001 |
thorpej |
Macro'ize the code that checks the free and inactive thresholds and wakes the pagedaemon.
|
| 1.63 |
26-May-2001 |
chs |
replace vm_page_t with struct vm_page *.
|
| 1.62 |
25-May-2001 |
chs |
remove trailing whitespace.
|
| 1.61 |
22-May-2001 |
ross |
Merge the swap-backed and object-backed inactive lists.
|
| 1.60 |
02-May-2001 |
thorpej |
Support dynamic sizing of the page color bins. We also support dynamically re-coloring pages; as machine-dependent code discovers the size of the system's caches, it may call uvm_page_recolor() with the new number of colors to use. If the new mumber of colors is smaller (or equal to) the current number of colors, then uvm_page_recolor() is a no-op.
The system defaults to one bucket if machine-dependent code does not initialize uvmexp.ncolors before uvm_page_init() is called.
Note that the number of color bins should be initialized to something reasonable as early as possible -- for many early memory allocations, we live with the consequences of the page choice for the lifetime of the boot.
|
| 1.59 |
01-May-2001 |
thorpej |
Add the number of page colors to uvmexp.
|
| 1.58 |
01-May-2001 |
enami |
Use simple do {} while () loop instead of for {} loop + extra test/variable.
|
| 1.57 |
01-May-2001 |
enami |
Fix second level indentation in recent commit.
|
| 1.56 |
01-May-2001 |
thorpej |
Per discussion w/ chuck and chuck, restructure the md page stuff to use a structure called "vm_page_md", and use __HAVE_VM_PAGE_MD and __HAVE_PMAP_PHYSSEG.
|
| 1.55 |
29-Apr-2001 |
thorpej |
Add a VM_MDPAGE_MEMBERS macro that defines pmap-specific data for each vm_page structure. Add a VM_MDPAGE_INIT() macro to init this data when pages are initialized by UVM. These macros are mandatory, but ports may #define them to nothing if they are not needed/used.
This deprecates struct pmap_physseg. As a transitional measure, allow a port to #define PMAP_PHYSSEG so that it can continue to use it until its pmap is converted to use VM_MDPAGE_MEMBERS.
Use all this stuff to eliminate a lot of extra work in the Alpha pmap module (it's smaller and faster now). Changes to other pmap modules will follow.
|
| 1.54 |
29-Apr-2001 |
thorpej |
Implement page coloring, using a round-robin bucket selection algorithm (Solaris calls this "Bin Hopping").
This implementation currently relies on MD code to define a constant defining the number of buckets. This will change reasonably soon (MD code will be able to dynamically size the bucket array).
|
|
Revision tags: thorpej_scsipi_beforemerge
|
| 1.53 |
24-Apr-2001 |
thorpej |
Sprinkle pmap_update() calls after calls to: - pmap_enter() - pmap_remove() - pmap_protect() - pmap_kenter_pa() - pmap_kremove() as described in pmap(9).
These calls are relatively conservative. It may be possible to optimize these a little more.
|
|
Revision tags: thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.52 |
22-Apr-2001 |
thorpej |
Make pmap_virtual_space() a required pmap function, even on platforms which have pmap_steal_memory(). This is to reduce the API differences between pmaps that implement pmap_steal_memory() and pmaps which do not.
Note that pmap_steal_memory() needs to adjust *vstartp and/or *vendp only if it used addresses within the range provided to UVM via the pmap_virtual_space() call. I.e. it is not necessary to do so in any current pmap_steal_memory() implementation.
|
| 1.51 |
09-Mar-2001 |
chs |
add UBC memory-usage balancing. we track the number of pages in use for each of the basic types (anonymous data, executable image, cached files) and prevent the pagedaemon from reusing a given page if that would reduce the count of that type of page below a sysctl-setable minimum threshold. the thresholds are controlled via three new sysctl tunables: vm.anonmin, vm.vnodemin, and vm.vtextmin. these tunables are the percentages of pageable memory reserved for each usage, and we do not allow the sum of the minimums to be more than 95% so that there's always some memory that can be reused.
|
| 1.50 |
28-Jan-2001 |
thorpej |
branches: 1.50.2; Put the extern decl of uvm_vnodeops in uvm_object.h
|
| 1.49 |
28-Jan-2001 |
thorpej |
Use UVM_OBJ_IS_VNODE().
|
| 1.48 |
23-Jan-2001 |
thorpej |
Sprinkle some assertions: amap_free(): Assert that the amap is locked. amap_share_protect(): Assert that the amap is locked. amap_wipeout(): Assert that the amap is locked. uvm_anfree(): Assert that the anon has a reference count of 0 and is not locked. uvm_anon_lockloanpg(): Assert that the anon is locked. anon_pagein(): Assert that the anon is locked. uvmfault_anonget(): Assert that the anon is locked. uvm_pagealloc_strat(): Assert that the uobj or the anon is locked
And fix the problems these have uncovered: amap_cow_now(): Lock the new anon after allocating it, and unref and unlock it (rather than lock!) before freeing it in case of an error condition. This should fix a problem reported by Dan Carosone using cdrecord on an i386 MP kernel. uvm_fault(): Case1B -- Lock the new anon afer allocating it, and unlock it later when we unlock the old anon. Case2 -- Lock the new anon after allocating it, and unlock it later by passing it to uvmfault_unlockall() (we set anon to NULL if we're not doing a promote fault).
|
| 1.47 |
14-Jan-2001 |
thorpej |
splimp() -> splvm()
|
| 1.46 |
01-Dec-2000 |
chs |
make sure that pages are on an paging queue before unlocking them.
|
| 1.45 |
30-Nov-2000 |
simonb |
Move uvm_pgcnt_vnode and uvm_pgcnt_anon into uvmexp (as vnodepages and anonpages), and add vtextpages which is currently unused but will be used to trace the number of pages used by vtext vnodes.
|
| 1.44 |
27-Nov-2000 |
chs |
Initial integration of the Unified Buffer Cache project.
|
| 1.43 |
09-Nov-2000 |
christos |
Give a hint to the user on why we failed.
|
| 1.42 |
05-Oct-2000 |
mrg |
s/vm/uvm/ in a bunch of error messages.
|
| 1.41 |
21-Sep-2000 |
thorpej |
Make PMAP_PAGEIDLEZERO() return a boolean value. FALSE indidcates that the page being zero'd was not completed and that page zeroing should be aborted. This may be used by machine-dependent code doing slow page access to reduce the latency of running a process that has become runnable while in the middle of doing a slow page zero.
|
| 1.40 |
02-Aug-2000 |
thorpej |
MALLOC() is not to be used for variable-sized allocations.
|
| 1.39 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.38 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base
|
| 1.37 |
09-Jun-2000 |
soda |
fix printf format mismatch, when paddr_t becomes (long long) on arc port.
|
| 1.36 |
29-May-2000 |
thorpej |
Change the comment before the vm_page_zero_enable global to indicate what it will now be used for.
|
|
Revision tags: minoura-xpg4dl-base
|
| 1.35 |
26-May-2000 |
thorpej |
branches: 1.35.2; First sweep at scheduler state cleanup. Collect MI scheduler state into global and per-CPU scheduler state:
- Global state: sched_qs (run queues), sched_whichqs (bitmap of non-empty run queues), sched_slpque (sleep queues). NOTE: These may collectively move into a struct schedstate at some point in the future.
- Per-CPU state, struct schedstate_percpu: spc_runtime (time process on this CPU started running), spc_flags (replaces struct proc's p_schedflags), and spc_curpriority (usrpri of processes on this CPU).
- Every platform must now supply a struct cpu_info and a curcpu() macro. Simplify existing cpu_info declarations where appropriate.
- All references to per-CPU scheduler state now made through curcpu(). NOTE: this will likely be adjusted in the future after further changes to struct proc are made.
Tested on i386 and Alpha. Changes are mostly mechanical, but apologies in advance if it doesn't compile on a particular platform.
|
| 1.34 |
24-Apr-2000 |
thorpej |
Changes necessary to implement pre-zero'ing of pages in the idle loop: - Make page free lists have two actual queues: known-zero pages and pages with unknown contents. - Implement uvm_pageidlezero(). This function attempts to zero up to the target number of pages until the target has been reached (currently target is `all free pages') or until whichqs becomes non-zero (indicating that a process is ready to run). - Define a new hook for the pmap module for pre-zero'ing pages. This is used to zero the pages using uncached access. This allows us to zero as many pages as we want without polluting the cache.
In order to use this feature, each platform must add the appropropriate glue in their idle loop.
|
| 1.33 |
10-Apr-2000 |
thorpej |
Add UVM_PGA_ZERO which instructs uvm_pagealloc{,_strat}() to return a zero'd, ! PG_CLEAN page, as if it were uvm_pagezero()'d.
|
| 1.32 |
02-Apr-2000 |
thorpej |
Instead of checking vm_physmem[<physseg>].pgs to determine if uvm_page_init() has completed, add a boolean uvm.page_init_done, and test against that. Use this same boolean (rather than pmap_initialized) in pmap_growkernel() to determine if we are being called via uvm_page_init() to grow the kernel address space.
This fixes a problem on some i386 configurations where pmap_init() itself was needing to have the kernel page table grown, and since pmap_initialized was not yet set to TRUE, pmap_growkernel() was choosing the wrong code path.
Fix tested by Havard Eidnes.
|
| 1.31 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase
|
| 1.30 |
13-Feb-2000 |
thorpej |
Allocate the page buckets out of kernel_map, not kmem_map. Saves 16 or so kmem_map pages on a 32MB SPARCstation 2.
|
| 1.29 |
30-Dec-1999 |
eeh |
I should have made uvm_page_physload() take paddr_t's instead of vaddr_t's. Also, add uvm_coredump32().
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
| 1.28 |
01-Dec-1999 |
drochner |
in uvm_page_physget(), try the vm_physmem[] chunks in the order of their "free_list" attributes, to save DMA memory
|
| 1.27 |
30-Nov-1999 |
thorpej |
Avoid an integer overflow on systems w/ more than 2G of RAM.
|
| 1.26 |
24-Nov-1999 |
drochner |
add a diagnostic panic to catch illegal memory ranges passed to uvm_page_physload()
|
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
| 1.25 |
12-Sep-1999 |
chs |
branches: 1.25.2; 1.25.8; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
|
Revision tags: chs-ubc2-base
|
| 1.24 |
22-Jul-1999 |
thorpej |
Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.23 |
25-May-1999 |
thorpej |
Add a comment explaining why using pmap_kenter_pa() is safe here.
|
| 1.22 |
25-May-1999 |
thorpej |
Macro'ize the test for "object is a kernel object".
|
| 1.21 |
24-May-1999 |
thorpej |
- Change uvm_{lock,unlock}_fpageq() to return/take the previous interrupt level directly, instead of making the caller wrap the calls in splimp()/splx(). - Add a comment documenting that interrupts that cause memory allocation must be blocked while the free page queue is locked.
Since interrupts must be blocked while this lock is asserted, tying them together like this helps to prevent mistakes.
|
| 1.20 |
20-May-1999 |
thorpej |
Make a slight modification of pmap_growkernel() -- it now returns the end of the mappable kernel virtual address space. Previously, it would get called more often than necessary, because the caller only new what was requested.
Also, export uvm_maxkaddr so that uvm_pageboot_alloc() can grow the kernel pmap if necessary, as well. Note that pmap_growkernel() must now be able to handle being called before pmap_init().
|
| 1.19 |
20-May-1999 |
thorpej |
If we run out of virtual space in uvm_pageboot_alloc(), fail gracefully rather than unpredictably.
|
| 1.18 |
11-Apr-1999 |
chs |
add a `flags' argument to uvm_pagealloc_strat(). define a flag UVM_PGA_USERESERVE to allow non-kernel object allocations to use pages from the reserve. use the new flag for allocations in pmap modules.
|
|
Revision tags: netbsd-1-4-base
|
| 1.17 |
26-Mar-1999 |
mycroft |
branches: 1.17.2; Add a new `access type' argument to pmap_enter(). This indicates what type of memory access a mapping was caused by. This is passed through from uvm_fault() and udv_fault(), and in most other cases is 0. The pmap module may use this to preset R/M information. On MMUs which require R/M emulation, the implementation may preset the bits and avoid taking another fault. On MMUs which keep R/M information in hardware, the implementation may preset its cached bits to speed up the next call to pmap_is_modified() or pmap_is_referenced().
|
| 1.16 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.15 |
18-Oct-1998 |
chs |
branches: 1.15.2; shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.14 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
| 1.13 |
09-Aug-1998 |
perry |
bzero->memset, bcopy->memcpy, bcmp->memcmp
|
|
Revision tags: eeh-paddr_t-base
|
| 1.12 |
08-Jul-1998 |
thorpej |
branches: 1.12.2; Add support for multiple memory free lists. There is at least one default free list, and 0 - N additional free list, in order of descending priority.
A new page allocation function, uvm_pagealloc_strat(), has been added, providing three page allocation strategies:
- normal: high -> low priority free list walk, taking the page off the first free list that has one.
- only: attempt to allocate a page only from the specified free list, failing if that free list has none available.
- fallback: if `only' fails, fall back on `normal'.
uvm_pagealloc(...) is provided for normal use (and is a synonym for uvm_pagealloc_strat(..., UVM_PGA_STRAT_NORMAL, 0); the free list argument is ignored for the `normal' case).
uvm_page_physload() now specified which free list the pages will be loaded onto. This means that some platforms which have multiple physical memory segments may define additional vm_physsegs if they wish to break individual physical segments into differing priorities.
Machine-dependent code must define _at least_ the following constants in <machine/vmparam.h>:
VM_NFREELIST: the number of free lists the system will have
VM_FREELIST_DEFAULT: the default freelist (should always be 0, but is defined in machdep code so that it's with all of the other free list-related constants).
Additional free list names may be defined by machine-dependent code, but they will only be used by machine-dependent code (e.g. for loading the vm_physsegs).
|
| 1.11 |
28-May-1998 |
chuck |
unstatic uvm_page_physload so pmap modules can use it too. as requested by Eduardo E. Horvath
|
| 1.10 |
05-May-1998 |
kleink |
Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
| 1.9 |
16-Apr-1998 |
thorpej |
Fix small whitespace botch.
|
| 1.8 |
31-Mar-1998 |
chuck |
free correct page in incomplete section of MNN, as pointed out by Soren S. Jorvang.
|
| 1.7 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.6 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.5 |
08-Feb-1998 |
thorpej |
Round allocations to page size in uvm_pageboot_alloc().
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
reserve some pages for the kernel, and some more especially for the pagedaemon allocating from kmem_object. this should prevent from the pagedaemon running out of memory and deadlocking. fix counting of wired pages. add some debugging code to detect attempts to reference free vm_pages.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.109 |
20-Dec-2020 |
skrll |
Support __HAVE_PMAP_PV_TRACK in sys/uvm/pmap based pmaps (aka common pmap)
|
| 1.108 |
20-Dec-2020 |
skrll |
Remove VM_MD_TO_PAGE that was accidentally committed in 1.106. It's going to be readded with the code that uses it
|
| 1.107 |
07-Oct-2020 |
chs |
branches: 1.107.2; Add a new, more aggressive allocator for uvm_pglistalloc() to allocate contiguous physical pages, and try this new allocator if the existing one fails. The existing contig allocator only tries to allocate pages that are already free, which works fine shortly after boot but rarely works after the system has been up for a while. The new allocator uses the pagedaemon to evict pages from memory in the hope that this will free up a range of pages that satisfies the constraits of the request. This should help with things like plugging in a USB device, which often fails for some USB controllers because they can't get contigous memory.
|
| 1.106 |
20-Sep-2020 |
skrll |
G/C uvm_pagezerocheck
|
| 1.105 |
14-Jun-2020 |
ad |
Remove PG_ZERO. It worked brilliantly on x86 machines from the mid-90s but having spent an age experimenting with it over the last 6 months on various machines and with different use cases it's always either break-even or a slight net loss for me.
|
| 1.104 |
24-May-2020 |
ad |
Add uvm_pagewanted_p(): return true if someone is waiting on the page and assert caller has correct lock to observe that.
|
| 1.103 |
17-May-2020 |
ad |
Start trying to reduce cache misses on vm_page during fault processing.
- Make PGO_LOCKED getpages imply PGO_NOBUSY and remove the latter. Mark pages busy only when there's actually I/O to do.
- When doing COW on a uvm_object, don't mess with neighbouring pages. In all likelyhood they're already entered.
- Don't mess with neighbouring VAs that have existing mappings as replacing those mappings with same can be quite costly.
- Don't enqueue pages for neighbour faults unless not enqueued already, and don't activate centre pages unless uvmpdpol says its useful.
Also:
- Make PGO_LOCKED getpages on UAOs work more like vnodes: do gang lookup in the radix tree, and don't allocate new pages.
- Fix many assertion failures around faults/loans with tmpfs.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.102 |
17-Mar-2020 |
ad |
Tweak the March 14th change to make page waits interlocked by pg->interlock. Remove unneeded changes and only deal with the PQ_WANTED flag, to exclude possible bugs.
|
| 1.101 |
16-Mar-2020 |
rin |
Include <sys/rwlock.h> for krwlock_t required by uvm_pagewait().
|
| 1.100 |
14-Mar-2020 |
ad |
Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
| 1.99 |
06-Mar-2020 |
riastradh |
Include "opt_uvm_page_trkown.h" for UVM_PAGE_TRKOWN.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.98 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2
|
| 1.97 |
21-Jan-2020 |
ad |
uvmpdpol_pageactive(): the change to not re-activate recently activated pages worked great with uvm_pageqlock, but it doesn't buy anything any more, because now the busy pages are likely in a per-CPU queue somewhere waiting to be processed, and changing the intent on those queued pages costs next to nothing. Remove this and get back all the bits in pg->pqflags.
|
|
Revision tags: ad-namecache-base1
|
| 1.96 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
| 1.95 |
10-Jan-2020 |
ad |
UVM_PAGE_TREE_PENALTY isn't used any more.
|
| 1.94 |
09-Jan-2020 |
ad |
Use __SHIFTIN()/__SHIFTOUT(). Suggested by riastradh@.
|
|
Revision tags: ad-namecache-base
|
| 1.93 |
31-Dec-2019 |
ad |
branches: 1.93.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.92 |
31-Dec-2019 |
ad |
struct vm_page: cluster fields most heavily used by the page allocator and uvmpdpol at the start of the structure, so that while under global lock we need only touch one cache line for each vm_page. There is still the problem of vm_page not being aligned, but this seems to drop lock wait time for (a modified) uvmpdpol and the allocator by 20-30% in a quick test.
|
| 1.91 |
31-Dec-2019 |
ad |
Rename uvm_page_locked_p() -> uvm_page_owner_locked_p()
|
| 1.90 |
27-Dec-2019 |
ad |
vm_page: Now that listq is gone, give the pagedaemon its own private TAILQ_ENTRY, so that update of page replacement state can be made asynchronous/lazy. No functional change.
|
| 1.89 |
27-Dec-2019 |
ad |
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
| 1.88 |
21-Dec-2019 |
ad |
- Rename VM_PGCOLOR_BUCKET() to VM_PGCOLOR(). I want to reuse "bucket" for something else soon and TBH it matches what this macro does better.
- Add inlines to set/get locator values in the unused lower bits of pg->phys_addr. Begin by using it to cache the freelist index, because computing it is expensive and that shows up during profiling. Discussed on tech-kern.
|
| 1.87 |
15-Dec-2019 |
ad |
Merge from yamt-pagecache:
- do gang lookup of pages using radixtree. - remove now unused uvm_object::uo_memq and vm_page::listq.queue.
|
| 1.86 |
14-Dec-2019 |
ad |
Merge from yamt-pagecache: use radixtree for page lookup.
rbtree page lookup was introduced during the NetBSD 5.0 development cycle to bypass lock contention problems with the (then) global page hash, and was a temporary solution to allow us to make progress.radixtree is the intended replacement.
Ok yamt@.
|
| 1.85 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
|
Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118
|
| 1.84 |
07-Jan-2019 |
jdolecek |
branches: 1.84.4; add sysctl to easily set ubc_direct
PR kern/53124
|
|
Revision tags: pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
|
| 1.83 |
19-May-2018 |
jdolecek |
branches: 1.83.2; add experimental new function uvm_direct_process(), to allow of read/writes of contents of uvm pages without mapping them into kernel, using direct map or moral equivalent; pmaps supporting the interface need to provide pmap_direct_process() and define PMAP_DIRECT
implement the new interface for amd64; I hear alpha and mips might be relatively easy to add too, but I lack the knowledge
part of resolution for PR kern/53124
|
|
Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.82 |
14-Nov-2017 |
mrg |
branches: 1.82.2; remove duplicate prototype.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.81 |
23-Dec-2016 |
cherry |
"Make NetBSD great again!"
Introduce uvm_hotplug(9) to the kernel.
Many thanks, in no particular order to:
TNF, for funding the project.
Chuck Silvers - for multiple API reviews and feedback. Nick Hudson - for testing on multiple architectures and bugfix patches. Everyone who helped with boot testing.
KeK (http://www.kek.org.in) for hosting the primary developers.
|
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
| 1.80 |
23-Mar-2015 |
riastradh |
branches: 1.80.2; Call these `identities', not `life states'.
|
| 1.79 |
21-Mar-2015 |
riastradh |
No, PQ_ANON is set only if owned by anon, not if loaned to anon.
|
| 1.78 |
21-Mar-2015 |
riastradh |
Address O->A loan case in comments, pointed out by chs@.
|
| 1.77 |
21-Mar-2015 |
riastradh |
Elaborate on locking scheme and vm_page states.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.76 |
25-Oct-2013 |
martin |
branches: 1.76.6; Optimize out VM_PHYSMEM_PTR_SWAP on architectures that have VM_PHYSSEG_MAX = 1 (hard to address two different array entries there w/o invoking undefined behaviour, and newer compilers complain about it).
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 jmcneill-usbmp-base10 yamt-pagecache-base5
|
| 1.75 |
05-May-2012 |
rmind |
branches: 1.75.2; 1.75.4; Describe PG_ flags (for struct vm_page). Reviewed by yamt@.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.74 |
28-Jan-2012 |
rmind |
Improve description on struct vm_page and explain locking a little bit more.
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.73 |
12-Jun-2011 |
rmind |
branches: 1.73.2; 1.73.6; Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.72 |
19-May-2011 |
yamt |
branches: 1.72.2; g/c unused function prototypes
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.71 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on second diff that rmind@ sent me.
no functional change with this commit.
|
| 1.70 |
18-Jan-2011 |
matt |
branches: 1.70.2; Improve the efficiency of searching for a contiguous set of free pages.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231
|
| 1.69 |
26-Nov-2010 |
uebayasi |
branches: 1.69.2; Put back VM_PAGE_TO_MD(); pointed out by skrll@, thanks.
|
| 1.68 |
25-Nov-2010 |
uebayasi |
Revert vm_physseg allocation changes. A report says that it causes panics when used with mplayer in heavy load.
|
|
Revision tags: uebayasi-xip-base6
|
| 1.67 |
14-Nov-2010 |
uebayasi |
Be a little more friendly to dynamic physical segment registration.
Maintain an array of pointer to struct vm_physseg, instead of struct array. So that VM subsystem can take its pointer safely. Pointer to this struct will replace raw paddr_t usage in the future.
Dynamic removal is not supported yet.
Only MD data structure changes, no kernel bump needed.
Tested on i386, amd64, powerpc/ibm40x, arm11.
|
| 1.66 |
12-Nov-2010 |
uebayasi |
Put VM_PAGE_TO_MD() definition in one place. No functional changes.
|
| 1.65 |
12-Nov-2010 |
uebayasi |
Abstraction fix; move physical address -> per-page metadata (struct vm_page *) "reverse" lookup code from uvm_page.h to uvm_page.c, to help migration to not do that.
Likewise move per-page metadata (struct vm_page *) -> physical address "forward" conversion code into *.c too. This is called only low-layer VM and MD code.
|
| 1.64 |
12-Nov-2010 |
uebayasi |
Abstraction fix; move physical address -> physical segment "reverse" lookup code from uvm_page.h to uvm_page.c.
This code is used by some pmaps to lookup per-page state (PV) from per-segment metadata (struct vm_physseg). This is not needed if UVM looks up physical segment once in fault handler, then directly passes it to pmap. This change helps transition to that model.
The only users of vm_physseg_find() are pmap_motorola.c and powerpc/ibm4xx/pmap.c.
Tested By: Compiling and running powerpc/ibm4xx/pmap.c (evbppc/conf/OPENBLOCKS266)
|
| 1.63 |
10-Nov-2010 |
uebayasi |
Use more VM_PHYSMEM_*() accessors. No functional changes.
|
| 1.62 |
10-Nov-2010 |
uebayasi |
Prepare vm_physmem[] -> (*vm_physmem)[] migration, so that physical segments can be changed at run-time. Pointers are easier to update.
|
|
Revision tags: uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
|
| 1.61 |
25-Sep-2010 |
matt |
Rename rb.h to rbtree.h, as it is more appropriate (c.f. ptree.h). Also helps find code that hasn't been updated to use the new rbtree API.
|
|
Revision tags: uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.60 |
29-Jul-2010 |
hannken |
Add vm page flag PG_MARKER and use it to tag dummy marker pages in genfs_do_putpages() and uao_put(). Use 'v_uobj.uo_npages' to check for an empty memq. Put some assertions where these marker pages may not appear.
Ok: YAMAMOTO Takashi <yamt@netbsd.org>
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
| 1.59 |
06-Feb-2010 |
uebayasi |
branches: 1.59.2; 1.59.4; __inline -> inline
|
| 1.58 |
06-Feb-2010 |
uebayasi |
Make vm_physseg lookup routines take the target vm_physseg. This is for the coming "managed" device segments.
|
|
Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jym-xensuspend-nbase
|
| 1.57 |
18-Aug-2009 |
thorpej |
Add a real API for testing if a page is a managed page, and adjust callers to stop relying on vm_physseg_find() for this purpose.
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base nick-hppapmap-base mjf-devfs2-base
|
| 1.56 |
16-Jan-2009 |
yamt |
- g/c stale function prototypes. - rename UVM_PAGE_HASH_PENALTY to UVM_PAGE_TREE_PENALTY.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base
|
| 1.55 |
04-Jun-2008 |
ad |
branches: 1.55.6; 1.55.14; 1.55.18; Replace the global vm_page hash with a per vm_object rbtree. Proposed on tech-kern@.
|
| 1.54 |
04-Jun-2008 |
ad |
- vm_page: put listq, pageq into a union alongside a LIST_ENTRY, so we can use both types of list.
- Make page coloring and idle zero state per-CPU.
- Maintain per-CPU page freelists. When freeing, put pages onto the local CPU's lists and the global lists. When allocating, prefer to take pages from the local CPU. If none are available take from the global list as done now. Proposed on tech-kern@.
|
|
Revision tags: yamt-pf42-base3
|
| 1.53 |
02-Jun-2008 |
ad |
uvm_pageidlezero:
- Use high and low water marks to try and reduce power consumption. - Do trylock on uvm_fpageqlock, and bail if we can't get it. - Only run on one CPU at a time.
|
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
| 1.52 |
27-Feb-2008 |
matt |
branches: 1.52.2; 1.52.4; 1.52.6; Convert two inlines from old-style-definitions to ansi.
|
|
Revision tags: hpcarm-cleanup-base
|
| 1.51 |
27-Feb-2008 |
ad |
Minor corrections to comments.
|
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-nbase bouyer-xeni386-base mjf-devfs-base matt-armv6-base
|
| 1.50 |
02-Jan-2008 |
ad |
branches: 1.50.2; 1.50.6; Merge vmlocking2 to head.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
|
| 1.49 |
21-Jul-2007 |
ad |
branches: 1.49.6; 1.49.12; 1.49.14; 1.49.18; 1.49.22; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 mjf-ufs-trans-base
|
| 1.48 |
14-Apr-2007 |
perseant |
branches: 1.48.2; Track lwp as well as proc owner with UVM_PAGE_TRKOWN
|
|
Revision tags: thorpej-atomic-base ad-audiomp-base
|
| 1.47 |
21-Feb-2007 |
thorpej |
branches: 1.47.4; 1.47.6; Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base netbsd-4-base
|
| 1.46 |
15-Sep-2006 |
yamt |
branches: 1.46.6; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 elad-kernelauth-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.45 |
06-Apr-2006 |
uebayasi |
branches: 1.45.8; Update comment to match reality (vm_physmemseg -> vm_physseg).
|
|
Revision tags: yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.44 |
16-Feb-2006 |
perry |
branches: 1.44.2; 1.44.4; 1.44.6; Change "inline" back to "__inline" in .h files -- C99 is still too new, and some apps compile things in C89 mode. C89 keywords stay.
As per core@.
|
| 1.43 |
11-Feb-2006 |
yamt |
remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.42 |
24-Dec-2005 |
perry |
branches: 1.42.2; 1.42.4; 1.42.6; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
| 1.41 |
29-Nov-2005 |
yamt |
read-ahead statistics.
|
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.40 |
04-Jun-2005 |
chs |
branches: 1.40.2; 1.40.8; adapt to const changes.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
| 1.39 |
07-Oct-2004 |
yamt |
g/c stale declarations of page queues.
|
| 1.38 |
12-May-2004 |
yamt |
add assertions.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.37 |
24-Mar-2004 |
junyoung |
Nuke __P().
|
| 1.36 |
10-Nov-2003 |
rearnsha |
In vm_phsyseg_find, use u_int for start, len and try when doing a binary search. Avoids the need for signed division by 2. Approved by thorpej.
|
| 1.35 |
03-Nov-2003 |
yamt |
add a DEBUG check if freed PG_ZERO pages are really zero-filled.
|
| 1.34 |
10-May-2003 |
thorpej |
branches: 1.34.2; Back out the following chagne: http://mail-index.netbsd.org/source-changes/2003/05/08/0068.html
There were some side-effects that I didn't anticipate, and fixing them is proving to be more difficult than I thought, do just eject for now. Maybe one day we can look at this again.
Fixes PR kern/21517.
|
| 1.33 |
08-May-2003 |
thorpej |
Simplify the way the bounds of the managed kernel virtual address space is advertised to UVM by making virtual_avail and virtual_end first-class exported variables by UVM. Machine-dependent code is responsible for initializing them before main() is called. Anything that steals KVA must adjust these variables accordingly.
This reduces the number of instances of this info from 3 to 1, and simplifies the pmap(9) interface by removing the pmap_virtual_space() function call, and removing two arguments from pmap_steal_memory().
This also eliminates some kludges such as having to burn kernel_map entries on space used by the kernel and stolen KVA.
This also eliminates use of VM_{MIN,MAX}_KERNEL_ADDRESS from MI code, this giving MD code greater flexibility over the bounds of the managed kernel virtual address space if a given port's specific platforms can vary in this regard (this is especially true of the evb* ports).
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.32 |
08-Nov-2002 |
enami |
s/than than/than/.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf kqueue-base
|
| 1.31 |
15-Sep-2001 |
chs |
branches: 1.31.6; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.30 |
25-Jul-2001 |
thorpej |
branches: 1.30.2; Back out previous -- christos needs to update his lint(1).
|
| 1.29 |
25-Jul-2001 |
christos |
fix non-portable bitmap warning.
|
| 1.28 |
22-Jul-2001 |
wiz |
seperate -> separate
|
| 1.27 |
28-Jun-2001 |
thorpej |
branches: 1.27.2; Rather than using u_shorts, use u_ints and bitfields in the vm_page. This provides us more flexibility with pageq-locked fields, and clarifies the locking semantics for platforms which cannot address shorts.
From Ross Harvey.
|
| 1.26 |
25-May-2001 |
chs |
remove trailing whitespace.
|
| 1.25 |
16-May-2001 |
ross |
Expand on the locking notes comment with a XXX warning about u_short fields.
|
| 1.24 |
02-May-2001 |
thorpej |
Support dynamic sizing of the page color bins. We also support dynamically re-coloring pages; as machine-dependent code discovers the size of the system's caches, it may call uvm_page_recolor() with the new number of colors to use. If the new mumber of colors is smaller (or equal to) the current number of colors, then uvm_page_recolor() is a no-op.
The system defaults to one bucket if machine-dependent code does not initialize uvmexp.ncolors before uvm_page_init() is called.
Note that the number of color bins should be initialized to something reasonable as early as possible -- for many early memory allocations, we live with the consequences of the page choice for the lifetime of the boot.
|
| 1.23 |
01-May-2001 |
thorpej |
Garbage-collect a comment that has not been applicable since Mach.
|
| 1.22 |
01-May-2001 |
thorpej |
Per discussion w/ chuck and chuck, restructure the md page stuff to use a structure called "vm_page_md", and use __HAVE_VM_PAGE_MD and __HAVE_PMAP_PHYSSEG.
|
| 1.21 |
29-Apr-2001 |
thorpej |
Add a VM_MDPAGE_MEMBERS macro that defines pmap-specific data for each vm_page structure. Add a VM_MDPAGE_INIT() macro to init this data when pages are initialized by UVM. These macros are mandatory, but ports may #define them to nothing if they are not needed/used.
This deprecates struct pmap_physseg. As a transitional measure, allow a port to #define PMAP_PHYSSEG so that it can continue to use it until its pmap is converted to use VM_MDPAGE_MEMBERS.
Use all this stuff to eliminate a lot of extra work in the Alpha pmap module (it's smaller and faster now). Changes to other pmap modules will follow.
|
| 1.20 |
29-Apr-2001 |
thorpej |
Implement page coloring, using a round-robin bucket selection algorithm (Solaris calls this "Bin Hopping").
This implementation currently relies on MD code to define a constant defining the number of buckets. This will change reasonably soon (MD code will be able to dynamically size the bucket array).
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.19 |
28-Dec-2000 |
chs |
branches: 1.19.2; remove some more leftovers from Mach.
|
| 1.18 |
27-Nov-2000 |
chs |
Initial integration of the Unified Buffer Cache project.
|
| 1.17 |
03-Oct-2000 |
mrg |
clean up a comment.
|
| 1.16 |
27-Jun-2000 |
mrg |
more vm header file changes:
<vm/vm_extern.h> merged into <uvm/uvm_extern.h> <vm/vm_page.h> merged into <uvm/uvm_page.h> <vm/pmap.h> has become <uvm/uvm_pmap.h>
this leaves just <vm/vm.h> in NetBSD.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.15 |
24-Apr-2000 |
thorpej |
Changes necessary to implement pre-zero'ing of pages in the idle loop: - Make page free lists have two actual queues: known-zero pages and pages with unknown contents. - Implement uvm_pageidlezero(). This function attempts to zero up to the target number of pages until the target has been reached (currently target is `all free pages') or until whichqs becomes non-zero (indicating that a process is ready to run). - Define a new hook for the pmap module for pre-zero'ing pages. This is used to zero the pages using uncached access. This allows us to zero as many pages as we want without polluting the cache.
In order to use this feature, each platform must add the appropropriate glue in their idle loop.
|
| 1.14 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.13 |
21-Jun-1999 |
thorpej |
branches: 1.13.2; Protect prototypes, certain macros, and inlines from userland.
|
| 1.12 |
24-May-1999 |
thorpej |
- Change uvm_{lock,unlock}_fpageq() to return/take the previous interrupt level directly, instead of making the caller wrap the calls in splimp()/splx(). - Add a comment documenting that interrupts that cause memory allocation must be blocked while the free page queue is locked.
Since interrupts must be blocked while this lock is asserted, tying them together like this helps to prevent mistakes.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.11 |
25-Mar-1999 |
mrg |
branches: 1.11.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.10 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.9 |
08-Jul-1998 |
thorpej |
branches: 1.9.2; Add support for multiple memory free lists. There is at least one default free list, and 0 - N additional free list, in order of descending priority.
A new page allocation function, uvm_pagealloc_strat(), has been added, providing three page allocation strategies:
- normal: high -> low priority free list walk, taking the page off the first free list that has one.
- only: attempt to allocate a page only from the specified free list, failing if that free list has none available.
- fallback: if `only' fails, fall back on `normal'.
uvm_pagealloc(...) is provided for normal use (and is a synonym for uvm_pagealloc_strat(..., UVM_PGA_STRAT_NORMAL, 0); the free list argument is ignored for the `normal' case).
uvm_page_physload() now specified which free list the pages will be loaded onto. This means that some platforms which have multiple physical memory segments may define additional vm_physsegs if they wish to break individual physical segments into differing priorities.
Machine-dependent code must define _at least_ the following constants in <machine/vmparam.h>:
VM_NFREELIST: the number of free lists the system will have
VM_FREELIST_DEFAULT: the default freelist (should always be 0, but is defined in machdep code so that it's with all of the other free list-related constants).
Additional free list names may be defined by machine-dependent code, but they will only be used by machine-dependent code (e.g. for loading the vm_physsegs).
|
| 1.8 |
28-May-1998 |
chuck |
unstatic uvm_page_physload so pmap modules can use it too. as requested by Eduardo E. Horvath
|
| 1.7 |
22-Mar-1998 |
chuck |
remove tmpwire arg from uvm_pagewire() -- it isn't needed anymore. noted by chuck s.
|
| 1.6 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.9 |
26-May-2020 |
ad |
uvm_page_array_fill(): return ENOENT in all cases when nothing's left.
|
| 1.8 |
25-May-2020 |
ad |
Make previous work as intended. Bad programmer.
|
| 1.7 |
25-May-2020 |
ad |
Minor correction to previous.
|
| 1.6 |
25-May-2020 |
ad |
- Alter the convention for uvm_page_array slightly, so the basic search parameters can't change part way through a search: move the "uobj" and "flags" arguments over to uvm_page_array_init() and store those with the array.
- With that, detect when it's not possible to find any more pages in the tree with the given search parameters, and avoid repeated tree lookups if the caller loops over uvm_page_array_fill_and_peek().
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.5 |
17-Mar-2020 |
ad |
branches: 1.5.2; Fix a comment.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.4 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.3 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.2 |
15-Dec-2019 |
ad |
branches: 1.2.2; Merge from yamt-pagecache:
- do gang lookup of pages using radixtree. - remove now unused uvm_object::uo_memq and vm_page::listq.queue.
|
|
Revision tags: isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base agc-symver-base tls-maxphys-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2
|
| 1.1 |
02-Nov-2011 |
yamt |
branches: 1.1.2; file uvm_page_array.c was initially added on branch yamt-pagecache.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.3 |
25-May-2020 |
ad |
- Alter the convention for uvm_page_array slightly, so the basic search parameters can't change part way through a search: move the "uobj" and "flags" arguments over to uvm_page_array_init() and store those with the array.
- With that, detect when it's not possible to find any more pages in the tree with the given search parameters, and avoid repeated tree lookups if the caller loops over uvm_page_array_fill_and_peek().
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.2 |
15-Dec-2019 |
ad |
branches: 1.2.6; Merge from yamt-pagecache:
- do gang lookup of pages using radixtree. - remove now unused uvm_object::uo_memq and vm_page::listq.queue.
|
|
Revision tags: isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base agc-symver-base tls-maxphys-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2
|
| 1.1 |
02-Nov-2011 |
yamt |
branches: 1.1.2; file uvm_page_array.h was initially added on branch yamt-pagecache.
|
|
Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE yamt-pagecache-base9 yamt-pagecache-tag8 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE rmind-smpnet-nbase rmind-smpnet-base agc-symver-base tls-maxphys-base yamt-pagecache-base8 yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-nb5-pq3-base netbsd-5-1-RELEASE yamt-nfs-mp-base11 netbsd-5-1-RC4 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE yamt-nfs-mp-base8 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base haad-dm-base1 haad-dm-base simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base jmcneill-pm-base hpcarm-cleanup-base mjf-ufs-trans-base yamt-idlelwp-base8 reinoud-bufcleanup-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 gdamore-uart-base yamt-pdpolicy-base5 elad-kernelauth-nbase yamt-pdpolicy-base4 yamt-pdpolicy-base3 yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.27 |
11-Feb-2006 |
yamt |
remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.26 |
11-Dec-2005 |
christos |
branches: 1.26.2; 1.26.4; 1.26.6; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.25 |
28-Jun-2005 |
thorpej |
branches: 1.25.2; Clean up the cpp macro used to say "we're compiling this specific C file".
|
| 1.24 |
28-Jun-2005 |
thorpej |
Add missing PAGE_INLINE to uvm_pagelookup()
|
| 1.23 |
27-Jun-2005 |
thorpej |
Use ANSI function decls.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
| 1.22 |
12-May-2004 |
yamt |
add assertions.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.21 |
01-Dec-2002 |
matt |
branches: 1.21.6; Reorder things so that with multiple inclusion protection that optional definitions are outside the protection checks.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf kqueue-base
|
| 1.20 |
15-Sep-2001 |
chs |
branches: 1.20.6; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.19 |
27-Jun-2001 |
thorpej |
branches: 1.19.2; 1.19.4; Since a page can be on only one of ACTIVE or INACTIVE queues at any given time, turn two consecutive if statements into an if-else-if construct.
|
| 1.18 |
25-May-2001 |
chs |
remove trailing whitespace.
|
| 1.17 |
22-May-2001 |
ross |
Merge the swap-backed and object-backed inactive lists.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.16 |
28-Jan-2001 |
thorpej |
branches: 1.16.2; Page scanner improvements, behavior is actually a bit more like Mach VM's now. Specific changes: - Pages now need not have all of their mappings removed before being put on the inactive list. They only need to have the "referenced" attribute cleared. This makes putting pages onto the inactive list much more efficient. In order to eliminate redundant clearings of "refrenced", callers of uvm_pagedeactivate() must now do this themselves. - When checking the "modified" attribute for a page (for clearing PG_CLEAN), make sure to only do it if PG_CLEAN is currently set on the page (saves a potentially expensive pmap operation). - When scanning the inactive list, if a page is referenced, reactivate it (this part was actually added in uvm_pdaemon.c,v 1.27). This now works properly now that pages on the inactive list are allowed to have mappings. - When scanning the inactive list and considering a page for freeing, remove all mappings, and then check the "modified" attribute if the page is marked PG_CLEAN. - When scanning the active list, if the page was referenced since its last sweep by the scanner, don't deactivate it. (This part was actually added in uvm_pdaemon.c,v 1.28.)
These changes greatly improve interactive performance during moderate to high memory and I/O load.
|
| 1.15 |
14-Jan-2001 |
thorpej |
splimp() -> splvm()
|
| 1.14 |
27-Nov-2000 |
chs |
use queue.h macros and KASSERT().
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.13 |
08-May-2000 |
thorpej |
__predict_false() DIAGNOSTIC error checks.
|
| 1.12 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base
|
| 1.11 |
12-Sep-1999 |
chs |
branches: 1.11.2; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
|
Revision tags: chs-ubc2-base
|
| 1.10 |
24-May-1999 |
thorpej |
- Change uvm_{lock,unlock}_fpageq() to return/take the previous interrupt level directly, instead of making the caller wrap the calls in splimp()/splx(). - Add a comment documenting that interrupts that cause memory allocation must be blocked while the free page queue is locked.
Since interrupts must be blocked while this lock is asserted, tying them together like this helps to prevent mistakes.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.9 |
25-Mar-1999 |
mrg |
branches: 1.9.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.8 |
13-Aug-1998 |
eeh |
branches: 1.8.2; Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.7 |
08-Jul-1998 |
thorpej |
branches: 1.7.2; Add support for multiple memory free lists. There is at least one default free list, and 0 - N additional free list, in order of descending priority.
A new page allocation function, uvm_pagealloc_strat(), has been added, providing three page allocation strategies:
- normal: high -> low priority free list walk, taking the page off the first free list that has one.
- only: attempt to allocate a page only from the specified free list, failing if that free list has none available.
- fallback: if `only' fails, fall back on `normal'.
uvm_pagealloc(...) is provided for normal use (and is a synonym for uvm_pagealloc_strat(..., UVM_PGA_STRAT_NORMAL, 0); the free list argument is ignored for the `normal' case).
uvm_page_physload() now specified which free list the pages will be loaded onto. This means that some platforms which have multiple physical memory segments may define additional vm_physsegs if they wish to break individual physical segments into differing priorities.
Machine-dependent code must define _at least_ the following constants in <machine/vmparam.h>:
VM_NFREELIST: the number of free lists the system will have
VM_FREELIST_DEFAULT: the default freelist (should always be 0, but is defined in machdep code so that it's with all of the other free list-related constants).
Additional free list names may be defined by machine-dependent code, but they will only be used by machine-dependent code (e.g. for loading the vm_physsegs).
|
| 1.6 |
22-Mar-1998 |
chuck |
remove tmpwire arg from uvm_pagewire() -- it isn't needed anymore. noted by chuck s.
|
| 1.5 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base yamt-pagecache-base9 yamt-pagecache-tag8 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base agc-symver-base tls-maxphys-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base jym-xensuspend-nbase yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
| 1.2 |
18-Aug-2009 |
thorpej |
Back-out accidental check-in.
|
| 1.1 |
18-Aug-2009 |
thorpej |
Move uvm_page-related DDB hooks into uvm_page.c.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.6 |
14-Aug-2020 |
chs |
centralize calls from UVM to radixtree into a few functions. in those functions, assert that the object lock is held in the correct mode.
|
| 1.5 |
15-May-2020 |
ad |
uvm_pagemarkdirty(): no need to set radix tree tag unless page is currently marked clean.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.4 |
14-Mar-2020 |
ad |
branches: 1.4.2; Make uvm_pagemarkdirty() responsible for putting vnodes onto the syncer work list. Proposed on tech-kern@.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.3 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.2 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base agc-symver-base tls-maxphys-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2
|
| 1.1 |
02-Nov-2011 |
yamt |
branches: 1.1.2; 1.1.26; file uvm_page_status.c was initially added on branch yamt-pagecache.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.131 |
15-Mar-2024 |
andvar |
Fix !VMSWAP build: Added __unused for few local variables, which are used in VMSWAP block only. Adjust !VMSWAP uvm_swap_stats() definition to make it build with compat code. Copied "int (*uvm_swap_stats50)(...)" definition from uvm_swap to uvm_swapstub to avoid missing uvm_swap_stats50 reference on linking.
Fixes INSTALL_CPMBR1400, INSTALL_ZYXELKX evbmips kernel configs as a result.
Reviewed by simon and phone in IRC (thanks).
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.130 |
18-Oct-2020 |
chs |
Move the handling of PG_PAGEOUT from uvm_aio_aiodone_pages() to uvm_page_unbusy() so that all callers of uvm_page_unbusy() don't need to handle this flag separately. Split out the pages part of uvm_aio_aiodone() into uvm_aio_aiodone_pages() in rump just like in the real kernel. In ZFS functions that can fail to copy data between the ARC and VM pages, use uvm_aio_aiodone_pages() rather than uvm_page_unbusy() so that we can handle these "I/O" errors. Fixes PR 55702.
|
| 1.129 |
14-Aug-2020 |
chs |
centralize calls from UVM to radixtree into a few functions. in those functions, assert that the object lock is held in the correct mode.
|
| 1.128 |
09-Jul-2020 |
skrll |
Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.127 |
08-Jul-2020 |
skrll |
Trailing whitespace
|
| 1.126 |
25-Jun-2020 |
jdolecek |
use maximum-size fixed size array instead of variable-length array in uvm_aio_aiodone() so that the stack usage can be determined and checked in compile time; this is not called recursively not particularly deep in call stack, so there is no need to save every last drop of stack space here
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
| 1.125 |
19-Apr-2020 |
ad |
uvm_aio_aiodone_pages(): only call uvm_pageout_done() if work was done for the page daemon.
|
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base
|
| 1.124 |
07-Apr-2020 |
ad |
branches: 1.124.2; For single page I/O, use direct mapping if available.
|
|
Revision tags: is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.123 |
24-Feb-2020 |
rin |
0x%#x --> %#x for non-external codes. Also, stop mixing up 0x%x and %#x in single files as far as possible.
|
| 1.122 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
| 1.121 |
18-Feb-2020 |
chs |
remove the aiodoned thread. I originally added this to provide a thread context for doing page cache iodone work, but since then biodone() has changed to hand off all iodone work to a softint thread, so we no longer need the special-purpose aiodoned thread.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.120 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.119 |
31-Dec-2019 |
ad |
branches: 1.119.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.118 |
27-Dec-2019 |
ad |
PR kern/48044: panic: kernel diagnostic assertion "uvmexp.swpgonly + npages <= uvmexp.swpginuse" failed
swpgonly is updated asynchronously with regard to swap use. We can't assert this condition with confidence in the post-5.0 world, at least not without broader changes. swpgonly's ultimate use is of a heuristic nature so this is no problem at all.
|
| 1.117 |
21-Dec-2019 |
ad |
- Rename VM_PGCOLOR_BUCKET() to VM_PGCOLOR(). I want to reuse "bucket" for something else soon and TBH it matches what this macro does better.
- Add inlines to set/get locator values in the unused lower bits of pg->phys_addr. Begin by using it to cache the freelist index, because computing it is expensive and that shows up during profiling. Discussed on tech-kern.
|
| 1.116 |
14-Dec-2019 |
ad |
The uvmexp.pdpending change was incorrect - revert for now.
|
| 1.115 |
14-Dec-2019 |
ad |
Adjust pdpending in uvm_pageout_start() and uvm_pageout_done() to avoid the value going temporarily negative.
|
| 1.114 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.113 |
01-Dec-2019 |
uwe |
Add missing #include <sys/atomic.h>
|
| 1.112 |
01-Dec-2019 |
ad |
- Adjust uvmexp.swpgonly with atomics, and make uvm_swap_data_lock static. - A bit more __cacheline_aligned on mutexes.
|
|
Revision tags: netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.111 |
28-Oct-2017 |
pgoyette |
branches: 1.111.4; 1.111.8; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.110 |
01-Mar-2014 |
christos |
branches: 1.110.22; only check that npages fit, if we are going to add npages to swpgonly.
|
| 1.109 |
25-Oct-2013 |
martin |
Mark diagnostic-only variables
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.108 |
27-Jan-2012 |
para |
branches: 1.108.6; 1.108.10; extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.107 |
11-Oct-2011 |
yamt |
branches: 1.107.2; 1.107.6; comment
|
| 1.106 |
06-Oct-2011 |
uebayasi |
Correct pagermap emergva allocation. From yamt@.
Tested by building i386 kernel with DTRACE defined which died 100%.
|
| 1.105 |
28-Sep-2011 |
matt |
Reallocate emergency pager va when ncolors is increased. (modication of patch from mrg).
|
| 1.104 |
01-Sep-2011 |
matt |
Forward some UVM from matt-nb5-mips64. Add UVM_KMF_COLORMATCH flag. When uvm_map gets passed UVM_FLAG_COLORMATCH, the align argument contains the color of the starting address to be allocated (0..colormask). When uvm_km_alloc is passed UVM_KMF_COLORMATCH (which can only be used with UVM_KMF_VAONLY), the align argument contain the color of the starting address to be allocated. Change uvm_pagermapin to use this. When mapping user pages in the kernel, if colormatch is used with the color of the starting user page then the kernel mapping will be congruent with the existing user mappings.
|
| 1.103 |
23-Aug-2011 |
oki |
make compile without VMSWAP. no functional change.
|
| 1.102 |
18-Aug-2011 |
yamt |
uvm_aio_aiodone_pages: check disposed anon correctly.
|
| 1.101 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.100 |
23-Apr-2011 |
rmind |
branches: 1.100.2; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.99 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.98 |
22-Jun-2010 |
rmind |
branches: 1.98.2; 1.98.4; Keep the lock around pmap_update() where required. While fixing this in ubc_fault(), rework logic to "remember" the last object of page and reduce locking overhead, since in common case pages belong to one and the same UVM object (but not always, therefore add a comment).
Unlocks before pmap_update(), on removal of mappings, might cause TLB coherency issues, since on architectures like x86 and mips64 invalidation IPIs are deferred to pmap_update(). Hence, VA space might be globally visible before IPIs are sent or while they are still in-flight.
OK ad@.
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211
|
| 1.97 |
07-Nov-2009 |
cegger |
branches: 1.97.2; 1.97.4; Add a flags argument to pmap_kenter_pa(9). Patch showed on tech-kern@ http://mail-index.netbsd.org/tech-kern/2009/11/04/msg006434.html No objections.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jym-xensuspend-nbase
|
| 1.96 |
05-Aug-2009 |
pooka |
kill uvm_aio_biodone1(). only user was lfs and that uses nestiobuf now.
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
| 1.95 |
30-Mar-2009 |
yamt |
g/c uvm_aiobuf_pool.
|
|
Revision tags: nick-hppapmap-base2
|
| 1.94 |
22-Feb-2009 |
ad |
PR kern/26878 FFSv2 + softdep = livelock (no free ram) PR kern/16942 panic with softdep and quotas PR kern/19565 panic: softdep_write_inodeblock: indirect pointer #1 mismatch PR kern/26274 softdep panic: allocdirect_merge: ... PR kern/26374 Long delay before non-root users can write to softdep partitions PR kern/28621 1.6.x "vp != NULL" panic in ffs_softdep.c:4653 while unmounting a softdep (+quota) filesystem PR kern/29513 FFS+Softdep panic with unfsck-able file-corruption PR kern/31544 The ffs softdep code appears to fail to write dirty bits to disk PR kern/31981 stopping scsi disk can cause panic (softdep) PR kern/32116 kernel panic in softdep (assertion failure) PR kern/32532 softdep_trackbufs deadlock PR kern/37191 softdep: locking against myself PR kern/40474 Kernel panic after remounting raid root with softdep
Retire softdep, pass 2. As discussed and later formally announced on the mailing lists.
|
|
Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base mjf-devfs2-base
|
| 1.93 |
16-Nov-2008 |
pooka |
branches: 1.93.4; more <sys/buf.h> police
|
|
Revision tags: netbsd-5-1-5-RELEASE netbsd-5-1-4-RELEASE netbsd-5-1-3-RELEASE netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base
|
| 1.92 |
17-Apr-2008 |
simonb |
branches: 1.92.4; 1.92.10; 1.92.12; 1.92.14; 1.92.18; Set up uvmhist in uvm_aio_aiodone_pages().
|
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
| 1.91 |
29-Feb-2008 |
yamt |
uvm_swap_io: if pagedaemon, don't wait for iobuf.
|
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-nbase bouyer-xeni386-base mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.90 |
02-Jan-2008 |
ad |
branches: 1.90.2; 1.90.6; Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.89 |
01-Dec-2007 |
yamt |
branches: 1.89.2; 1.89.6; constify pagerops.
|
| 1.88 |
01-Dec-2007 |
yamt |
uvm_pager_init: use __arraycount.
|
|
Revision tags: jmcneill-base bouyer-xenamd64-base2 bouyer-xenamd64-base
|
| 1.87 |
25-Oct-2007 |
yamt |
branches: 1.87.2; defparam PAGER_MAP_SIZE.
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base vmlocking-base
|
| 1.86 |
01-Sep-2007 |
pooka |
branches: 1.86.4; Make bioops a pointer and point it to the softdeps struct in softdep init. Decouples "options SOFTDEP" from the main kernel and ffs code.
|
|
Revision tags: matt-mips64-base
|
| 1.85 |
29-Jul-2007 |
ad |
branches: 1.85.4; 1.85.6; 1.85.8; It's not a good idea for device drivers to modify b_flags, as they don't need to understand the locking around that field. Instead of setting B_ERROR, set b_error instead. b_error is 'owned' by whoever completes the I/O request.
|
| 1.84 |
21-Jul-2007 |
ad |
Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base
|
| 1.83 |
12-Jul-2007 |
rmind |
branches: 1.83.2; Implementation of per-CPU work-queues support for workqueue(9) interface. WQ_PERCPU flag for workqueue and additional argument for workqueue_enqueue() to assign a CPU might be used. Notes: - For now, the list is used for workqueue_queue, which is non-optimal, and will be changed with array, where index would be CPU ID. - The data structures should be changed to be cache-friendly.
Reviewed by: <yamt>, <tech-kern>
|
|
Revision tags: mjf-ufs-trans-base
|
| 1.82 |
09-Jul-2007 |
ad |
Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base ad-audiomp-base
|
| 1.81 |
22-Feb-2007 |
thorpej |
branches: 1.81.4; 1.81.6; TRUE -> true, FALSE -> false
|
| 1.80 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: post-newlock2-merge newlock2-nbase newlock2-base
|
| 1.79 |
21-Dec-2006 |
yamt |
branches: 1.79.2; merge yamt-splraiseipl branch.
- finish implementing splraiseipl (and makeiplcookie). http://mail-index.NetBSD.org/tech-kern/2006/07/01/0000.html - complete workqueue(9) and fix its ipl problem, which is reported to cause audio skipping. - fix netbt (at least compilation problems) for some ports. - fix PR/33218.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base netbsd-4-base
|
| 1.78 |
15-Sep-2006 |
yamt |
branches: 1.78.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base elad-kernelauth-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.77 |
13-Apr-2006 |
christos |
branches: 1.77.8; Change previous to KASSERT per yamt's request.
|
| 1.76 |
13-Apr-2006 |
christos |
Coverity CID 835: Check before dereferencing pg->uanon.
|
|
Revision tags: yamt-pdpolicy-base4
|
| 1.75 |
11-Apr-2006 |
yamt |
uvm_pagermapin: nowait allocation for pagedaemon.
|
|
Revision tags: yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.74 |
11-Feb-2006 |
yamt |
branches: 1.74.2; 1.74.4; 1.74.6; remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.73 |
04-Jan-2006 |
yamt |
branches: 1.73.2; 1.73.4; - add simple functions to allocate/free a buffer for i/o. - make bufpool static.
|
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
| 1.72 |
29-Nov-2005 |
yamt |
branches: 1.72.2; read-ahead statistics.
|
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.71 |
13-Sep-2005 |
yamt |
branches: 1.71.6; wrap swap related code by #ifdef VMSWAP. always #define VMSWAP for now.
|
| 1.70 |
31-Jul-2005 |
yamt |
revert "defflag VMSWAP" changes for now. there seems to be far more people who don't want to edit their kernel config files than i thought.
|
| 1.69 |
30-Jul-2005 |
yamt |
defflag VMSWAP.
|
| 1.68 |
28-Jun-2005 |
thorpej |
branches: 1.68.2; Clean up the cpp macro used to say "we're compiling this specific C file".
|
| 1.67 |
27-Jun-2005 |
thorpej |
Use ANSI function decls.
|
|
Revision tags: kent-audio2-base
|
| 1.66 |
01-Apr-2005 |
yamt |
merge yamt-km branch. - don't use managed mappings/backing objects for wired memory allocations. save some resources like pv_entry. also fix (most of) PR/27030. - simplify kernel memory management API. - simplify pmap bootstrap of some ports. - some related cleanups.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio1-beforemerge
|
| 1.65 |
01-Jan-2005 |
yamt |
branches: 1.65.2; 1.65.4; for in-kernel maps, - allocate kva for vm_map_entry from the map itsself and remove the static limit, MAX_KMAPENT. - keep merged entries for later splitting to fix allocate-to-free problem. PR/24039.
|
|
Revision tags: kent-audio1-base
|
| 1.64 |
03-Oct-2004 |
enami |
Count obj pages freed by pagedaemon.
|
| 1.63 |
05-May-2004 |
yamt |
fix a amap_wirerange deadlock problem by re-introducing PG_RELEASED for anon pages. PR/23171 from Christian Limpach. for details, see discussion filed in the PR database.
uvm_anon_release: a new function to free anon-owned PG_RELEASED page. uvm_anfree: we can't wait for the page here because the caller might hold amap lock. instead, just mark the page as PG_RELEASED. who unbusy the page should check the PG_RELEASED. uvm_aio_aiodone: uvm_anon_release() instead of uvm_page_unbusy() if appropriate. uvmfault_anonget: check PG_RELEASED.
|
|
Revision tags: netbsd-2-0-base
|
| 1.62 |
01-Sep-2003 |
pk |
branches: 1.62.2; Can't rely on side-effects in KASSERT expressions which was pointed out to me by YAMAMOTO Takashi.
|
| 1.61 |
28-Aug-2003 |
pk |
When retiring a swap device with marked bad blocks on it we should update the `# swap page in use' and `# swap page only' counters. However, at the time of swap device removal we can no longer figure out how many of the bad swap pages are actually also `swap only' pages.
So, on swap I/O errors arrange things to not include the bad swap pages in the `swpgonly' counter as follows: uvm_swap_markbad() decrements `swpgonly' by the number of bad pages, and the various VM object deallocation routines do not decrement `swpgonly' for swap slots marked as SWSLOT_BAD.
|
| 1.60 |
23-Apr-2003 |
tls |
branches: 1.60.2; Correct use of MAXBSIZE where MAXPHYS was intended. This is a necessary first step towards per-device MAXPHYS, and has the beneficial side effect of allowing clustering to MAXPHYS even on systems that need to run with a reduced MAXBSIZE to get more metadata buffers.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.59 |
09-Nov-2002 |
thorpej |
Fix signed/unsigned comparison warnings.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.58 |
01-Oct-2002 |
chs |
uao_find_swslot()'s second argument is in units of pages, not bytes. spotted by Doug Donsbach.
|
|
Revision tags: netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
| 1.57 |
15-May-2002 |
matt |
branches: 1.57.4; When core dumping a process, don't dump maps backed up by the device pager. (move the pagerops externs to uvm_object.h and out the C files).
|
| 1.56 |
09-May-2002 |
enami |
- In genfs_putpages(), no need to restrict the cluster within the given region. - In uvm_aio_aiodone(), remove assertions no longer true.
|
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
| 1.55 |
31-Dec-2001 |
chs |
branches: 1.55.4; fix locking for loaning. in general we should be looking at the page's uobject and uanon pointers rather than at the PQ_ANON flag to determine which lock to hold, since PQ_ANON can be clear even when the anon's lock is the one which we should hold (if the page was loaned from an object and then freed by the object).
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.54 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.53 |
06-Nov-2001 |
chs |
several changes prompted by loaning problems: - fix the loaned case in uvm_pagefree(). - redo uvmexp.swpgonly accounting to work with page loaning. add an assertion before each place we adjust uvmexp.swpgonly. - fix uvm_km_pgremove() to always free any swap space associated with the range being removed. - get rid of UVM_LOAN_WIRED flag. instead, we just make sure that pages loaned to the kernel are never on the page queues. this allows us to assert that pages are not loaned and wired at the same time. - add yet more assertions.
|
| 1.52 |
06-Nov-2001 |
simonb |
Remove some variables that are set but never used.
|
| 1.51 |
15-Oct-2001 |
chs |
branches: 1.51.2; fix an uninitialized-variable problem in an error case. pointed out by Simon Burge.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.50 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf
|
| 1.49 |
10-Sep-2001 |
chris |
Update pmap_update to now take the updated pmap as an argument. This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.
Currently this is a no-op on most platforms, so they should see no difference.
Reviewed by Jason.
|
|
Revision tags: thorpej-devvp-base
|
| 1.48 |
23-Jun-2001 |
chs |
branches: 1.48.2; 1.48.4; clean up the transient error case in uvm_pager_put().
|
| 1.47 |
02-Jun-2001 |
chs |
replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.46 |
26-May-2001 |
chs |
replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
|
| 1.45 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge
|
| 1.44 |
24-Apr-2001 |
thorpej |
Sprinkle pmap_update() calls after calls to: - pmap_enter() - pmap_remove() - pmap_protect() - pmap_kenter_pa() - pmap_kremove() as described in pmap(9).
These calls are relatively conservative. It may be possible to optimize these a little more.
|
|
Revision tags: thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.43 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.42 |
10-Mar-2001 |
chs |
eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
| 1.41 |
18-Feb-2001 |
chs |
branches: 1.41.2; in uvm_aio_aiodone(), don't mark the page(s) clean if the pageout failed because we failed to acquire some resource needed to initiate the pageout (such as failing to lock an indirect buffer) rather than a hard i/o error. in this case we just want to reactivate the page(s) so that we'll try to write them again later.
while I'm here, clean up some DIAGNOSTIC code.
|
| 1.40 |
04-Feb-2001 |
mrg |
add a KASSERT(pp) in the uvm_pagermapin() loop.
|
| 1.39 |
28-Jan-2001 |
thorpej |
Page scanner improvements, behavior is actually a bit more like Mach VM's now. Specific changes: - Pages now need not have all of their mappings removed before being put on the inactive list. They only need to have the "referenced" attribute cleared. This makes putting pages onto the inactive list much more efficient. In order to eliminate redundant clearings of "refrenced", callers of uvm_pagedeactivate() must now do this themselves. - When checking the "modified" attribute for a page (for clearing PG_CLEAN), make sure to only do it if PG_CLEAN is currently set on the page (saves a potentially expensive pmap operation). - When scanning the inactive list, if a page is referenced, reactivate it (this part was actually added in uvm_pdaemon.c,v 1.27). This now works properly now that pages on the inactive list are allowed to have mappings. - When scanning the inactive list and considering a page for freeing, remove all mappings, and then check the "modified" attribute if the page is marked PG_CLEAN. - When scanning the active list, if the page was referenced since its last sweep by the scanner, don't deactivate it. (This part was actually added in uvm_pdaemon.c,v 1.28.)
These changes greatly improve interactive performance during moderate to high memory and I/O load.
|
| 1.38 |
09-Dec-2000 |
chs |
in uvm_pagermapin(), for now, don't pass the flag to pmap_enter() which presets the page modified bit if the page is already initialized. we don't actually want to modify such pages.
|
| 1.37 |
01-Dec-2000 |
chs |
make sure that pages are on an paging queue before unlocking them.
|
| 1.36 |
27-Nov-2000 |
chs |
allow building without SOFTDEP by adding the pageiodone hook to bio_ops.
|
| 1.35 |
27-Nov-2000 |
chs |
Initial integration of the Unified Buffer Cache project.
|
| 1.34 |
24-Nov-2000 |
chs |
increase PAGER_MAP_SIZE to 16MB and move it to uvm_pager.h since the alpha and mips pmaps use it.
|
| 1.33 |
13-Sep-2000 |
thorpej |
Add an align argument to uvm_map() and some callers of that routine. Works similarly fto pmap_prefer(), but allows callers to specify a minimum power-of-two alignment of the region. How we ever got along without this for so long is beyond me.
|
| 1.32 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.31 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.30 |
20-May-2000 |
thorpej |
Remove VM_PROT_EXECUTE from the permissions used to map the page for pager I/O -- it is not needed, and including it leads to unnecessary I-cache flushes.
|
| 1.29 |
19-May-2000 |
thorpej |
Tell uvm_pagermapin() the direction of the I/O so that it can map with only the protection that it needs.
|
| 1.28 |
03-Apr-2000 |
chs |
remove uvm_shareprot(). no longer needed since the demise of share maps.
|
| 1.27 |
30-Mar-2000 |
simonb |
Delete redundant decl of aobj_pager - it's in <uvm/uvm_aobj.h>.
|
| 1.26 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase
|
| 1.25 |
11-Jan-2000 |
chs |
add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base fvdl-softdep-base
|
| 1.24 |
13-Nov-1999 |
thorpej |
Change the pmap_enter() API slightly; pmap_enter() now returns an error value (KERN_SUCCESS or KERN_RESOURCE_SHORTAGE) indicating if it succeeded or failed. Change the `wired' and `access_type' arguments to a single `flags' argument, which includes the access type, and flags:
PMAP_WIRED the old `wired' boolean PMAP_CANFAIL pmap_enter() is allowed to fail
If PMAP_CANFAIL is not specified, the pmap should behave as it always has in the face of a drastic resource shortage: fall over dead.
Change the fault handler to deal with failure (which indicates resource shortage) by unlocking everything, waiting for the pagedaemon to free more memory, then retrying the fault.
|
|
Revision tags: comdex-fall-1999-base
|
| 1.23 |
12-Sep-1999 |
chs |
branches: 1.23.2; 1.23.4; 1.23.8; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
|
Revision tags: chs-ubc2-base
|
| 1.22 |
22-Jul-1999 |
thorpej |
Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.21 |
08-Jul-1999 |
thorpej |
Teeny bit of style policing.
|
| 1.20 |
26-May-1999 |
thorpej |
Change the vm_map's "entries_pageable" member to a r/o flags member, which has PAGEABLE and INTRSAFE flags. PAGEABLE now really means "pageable", not "allocate vm_map_entry's from non-static pool", so update all map creations to reflect that. INTRSAFE maps are maps that are used in interrupt context (e.g. kmem_map, mb_map), and thus use the static map entry pool (XXX as does kernel_map, for now). This will eventually change now these maps are locked, as well.
|
| 1.19 |
26-May-1999 |
thorpej |
In uvm_pagermapin(), pass VM_PROT_READ|VM_PROT_WRITE as access_type, to ensure we don't take mod/ref emulation faults in an interrupt context (e.g. during the i/o operation). This is safe because: - For a pageout operation, the page is already known to be modified, and the pagedaemon will pmap_clear_modify() after the pageout has completed. - For a pagein operation, pagers must already pmap_clear_modify() after the pagein operation is complete, because the i/o may have been done with e.g. programmed i/o. XXX It would be nice to know the i/o direction so that we can call XXX pmap_enter() with only the protection and access_type necessary.
|
| 1.18 |
24-May-1999 |
thorpej |
Remove a comment in uvm_pager_dropcluster() about PMAP_NEW and mod/ref attributes for the page; it no longer applies, since we don't use pmap_kenter_pgs() anymore.
|
| 1.17 |
24-May-1999 |
thorpej |
Don't use pmap_kenter_pgs() for entering pager_map mappings. The pages are still owned by the object which is paging, and so the test for a kernel object in uvm_unmap_remove() will cause pmap_remove() to be used instead of pmap_kremove().
This was a MAJOR source of pmap_remove() vs pmap_kremove() inconsistency (which caused the busted kernel pmap statistics, and a cause of much locking hair on MP systems).
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.16 |
26-Mar-1999 |
mycroft |
branches: 1.16.4; Add a new `access type' argument to pmap_enter(). This indicates what type of memory access a mapping was caused by. This is passed through from uvm_fault() and udv_fault(), and in most other cases is 0. The pmap module may use this to preset R/M information. On MMUs which require R/M emulation, the implementation may preset the bits and avoid taking another fault. On MMUs which keep R/M information in hardware, the implementation may preset its cached bits to speed up the next call to pmap_is_modified() or pmap_is_referenced().
|
| 1.15 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
| 1.14 |
22-Jan-1999 |
chs |
fix a precedence problem in uvm_mk_pcluster() which prevented clustering of vnode pageouts. this probably makes no difference since most apps don't write via the pagecache anyway... yet.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.13 |
04-Nov-1998 |
chs |
branches: 1.13.2; be consistent with locking of amaps and anons when freeing them.
|
| 1.12 |
18-Oct-1998 |
chs |
shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.11 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - update calls to uvm_unmap_remove/uvm_unmap (mainonly boolean arg has been removed) - replace UVM_ET_ISMAP checks with UVM_ET_ISSUBMAP checks
|
| 1.10 |
31-Aug-1998 |
thorpej |
Make sure the aobj_pager gets initialized!
|
| 1.9 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.8 |
05-May-1998 |
kleink |
branches: 1.8.2; Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
| 1.7 |
22-Mar-1998 |
chuck |
fix released pg bugs detected by Chuck S.: - release the correct page (ppsp[lcv], not pg) - don't access the page's fields after we have released it - in the uvm_objct case: move on to the next page if we've released [should have been merged in on 1998/02/12, but we somehow missed it]
|
| 1.6 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
08-Feb-1998 |
thorpej |
Allow callers of uvm_km_suballoc() to specify where the base of the submap _must_ begin, by adding a "fixed" boolean argument.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.49 |
19-May-2020 |
ad |
PR kern/32166: pgo_get protocol is ambiguous Also problems with tmpfs+nfs noted by hannken@.
Don't pass PGO_ALLPAGES to pgo_get, and ignore PGO_DONTCARE in the !PGO_LOCKED case. In uao_get() have uvm_pagealloc() take care of page zeroing and release busy pages on error.
|
| 1.48 |
17-May-2020 |
ad |
Start trying to reduce cache misses on vm_page during fault processing.
- Make PGO_LOCKED getpages imply PGO_NOBUSY and remove the latter. Mark pages busy only when there's actually I/O to do.
- When doing COW on a uvm_object, don't mess with neighbouring pages. In all likelyhood they're already entered.
- Don't mess with neighbouring VAs that have existing mappings as replacing those mappings with same can be quite costly.
- Don't enqueue pages for neighbour faults unless not enqueued already, and don't activate centre pages unless uvmpdpol says its useful.
Also:
- Make PGO_LOCKED getpages on UAOs work more like vnodes: do gang lookup in the radix tree, and don't allocate new pages.
- Fix many assertion failures around faults/loans with tmpfs.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.47 |
22-Mar-2020 |
ad |
Process concurrent page faults on individual uvm_objects / vm_amaps in parallel, where the relevant pages are already in-core. Proposed on tech-kern.
Temporarily disabled on MP architectures with __HAVE_UNLOCKED_PMAP until adjustments are made to their pmaps.
|
| 1.46 |
14-Mar-2020 |
ad |
Make uvm_pagemarkdirty() responsible for putting vnodes onto the syncer work list. Proposed on tech-kern@.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE is-mlppp-base ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226
|
| 1.45 |
09-Dec-2018 |
jdolecek |
update comment - PGO_JOURNALLOCKED now supported for 'get' too
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base
|
| 1.44 |
13-Jan-2017 |
christos |
branches: 1.44.14; 1.44.16; add missing forward struct decl
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base jmcneill-usbmp-base10 yamt-pagecache-base5
|
| 1.43 |
29-Apr-2012 |
chs |
branches: 1.43.2; 1.43.16; 1.43.20; change vflushbuf() to take the full FSYNC_* flags. translate FSYNC_LAZY into PGO_LAZY for VOP_PUTPAGES() so that genfs_do_io() can set the appropriate io priority for the I/O. this is the first part of addressing PR 46325.
|
|
Revision tags: jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.42 |
28-Sep-2011 |
matt |
branches: 1.42.2; 1.42.6; 1.42.8; Reallocate emergency pager va when ncolors is increased. (modication of patch from mrg).
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.41 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. verified with Mike Hibler it is ok to remove clause 3 on utah copyright, as per UCB. based on diff that rmind@ sent me.
no functional change with this commit.
|
| 1.40 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
|
| 1.39 |
01-Sep-2010 |
chs |
branches: 1.39.2; 1.39.4; replace the earlier workaround for PR 40389 with a better fix. the earlier change caused data corruption by freeing pages without invaliding their mappings. instead of the trylock/retry, just take the genfs-node lock before calling VOP_GETPAGES() and pass a new flag to tell it that we're already holding this lock.
|
|
Revision tags: matt-nb5-mips64-premerge-20101231 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base mjf-devfs2-base
|
| 1.38 |
22-Aug-2008 |
hannken |
branches: 1.38.4; 1.38.10; 1.38.12; 1.38.14; 1.38.16; Add snapshot support for logging ffs file systems.
- Add UFS_WAPBL_BEGIN() / UFS_WAPBL_END() where needed.
- Expunge WAPBL log inodes from snapshots.
- Ffs_copyonwrite() and ffs_snapblkfree() must run inside a WAPBL transaction.
- Add ffs_gop_write() as a wrapper around genfs_gop_write() that makes sure genfs_gop_write() gets always called inside a WAPBL transaction.
- Add VOP_PUTPAGES() flag PGO_JOURNALLOCKED to tag calls to VOP_PUTPAGES() inside a WAPBL transaction.
Reviewed by: Simon Burge <simonb@netbsd.org>, Greg Oster <oster@netbsd.org>
PGO_JOURNALLOCKED / ffs_gop_write() part presented on tech-kern@.
|
|
Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base matt-armv6-base jmcneill-pm-base hpcarm-cleanup-base reinoud-bufcleanup-base
|
| 1.37 |
25-Oct-2007 |
yamt |
branches: 1.37.16; 1.37.20; 1.37.22; 1.37.26; defparam PAGER_MAP_SIZE.
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base nick-csl-alignment-base yamt-idlelwp-base8 mjf-ufs-trans-base vmlocking-base
|
| 1.36 |
23-Apr-2007 |
pooka |
branches: 1.36.6; 1.36.8; 1.36.12; adjust misleading comment: PGO_SYNCIO does not depend on PGO_CLEANIT
|
| 1.35 |
16-Apr-2007 |
chs |
define a pager flag PGO_RECLAIM, similar to FSYNC_RECLAIM, and use it to skip unnecessary flushing when layered file system vnodes are recycled. this also prevents a deadlock with the dodgy LFS putpages routine. fixes the non-LFS part of PR 36150.
|
|
Revision tags: thorpej-atomic-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.34 |
22-Feb-2006 |
drochner |
branches: 1.34.18; 1.34.20; 1.34.24; 1.34.26; kill the "fault_type" argument to pager's pgo_fault() methods it is never used (and using it would comprise an abstraction violation imho)
|
| 1.33 |
11-Feb-2006 |
yamt |
remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.32 |
24-Dec-2005 |
perry |
branches: 1.32.2; 1.32.4; 1.32.6; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
| 1.31 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.30 |
23-Jul-2005 |
yamt |
update file timestamps for nfsd loaned-read and mmap. PR/25279. discussed on tech-kern@.
|
| 1.29 |
17-Jul-2005 |
yamt |
- introduce PGO_NOBLOCKALLOC and use it for ubc mapping to prevent unnecessary block allocations in the case that page size > block size.
- ufs_balloc_range: use VM_PROT_WRITE+PGO_NOBLOCKALLOC rather than VM_PROT_READ.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.28 |
24-Mar-2004 |
junyoung |
branches: 1.28.14; 1.28.16; Nuke __P().
|
| 1.27 |
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
| 1.26 |
17-Feb-2003 |
perseant |
branches: 1.26.2; Add code to UBCify LFS. This is still behind "#ifdef LFS_UBC" for now (there are still some details to work out) but expect that to go away soon. To support these basic changes (creation of lfs_putpages, lfs_gop_write, mods to lfs_balloc) several other changes were made, to wit:
* Create a writer daemon kernel thread whose purpose is to handle page writes for the pagedaemon, but which also takes over some of the functions of lfs_check(). This thread is started the first time an LFS is mounted.
* Add a "flags" parameter to GOP_SIZE. Current values are GOP_SIZE_READ, meaning that the call should return the size of the in-core version of the file, and GOP_SIZE_WRITE, meaning that it should return the on-disk size. One of GOP_SIZE_READ or GOP_SIZE_WRITE must be specified.
* Instead of using malloc(...M_WAITOK) for everything, reserve enough resources to get by and use malloc(...M_NOWAIT), using the reserves if necessary. Use the pool subsystem for structures small enough that this is feasible. This also obsoletes LFS_THROTTLE.
And a few that are not strictly necessary:
* Moves the LFS inode extensions off onto a separately allocated structure; getting closer to LFS as an LKM. "Welcome to 1.6O."
* Unified GOP_ALLOC between FFS and LFS.
* Update LFS copyright headers to correct values.
* Actually cast to unsigned in lfs_shellsort, like the comment says.
* Keep track of which segments were empty before the previous checkpoint; any segments that pass two checkpoints both dirty and empty can be summarily cleaned. Do this. Right now lfs_segclean still works, but this should be turned into an effectless compatibility syscall.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base kqueue-base
|
| 1.25 |
25-Mar-2002 |
chs |
remove PGO_WEAK, it isn't needed anymore.
|
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.24 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.23 |
26-May-2001 |
chs |
branches: 1.23.2; 1.23.4; replace vm_page_t with struct vm_page *.
|
| 1.22 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.21 |
10-Mar-2001 |
chs |
eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
| 1.20 |
27-Nov-2000 |
chs |
branches: 1.20.2; Initial integration of the Unified Buffer Cache project.
|
| 1.19 |
27-Nov-2000 |
chs |
allow ports to override PAGER_MAP_SIZE in machine/vmparam.h. some ports (such as arm32) don't have enough KVA for the increased default size once the UBC mapping is also present.
|
| 1.18 |
24-Nov-2000 |
chs |
increase PAGER_MAP_SIZE to 16MB and move it to uvm_pager.h since the alpha and mips pmaps use it.
|
| 1.17 |
24-Nov-2000 |
chs |
g/c unused pager ops "asyncget" and "aiodone".
|
| 1.16 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.15 |
19-May-2000 |
thorpej |
Tell uvm_pagermapin() the direction of the I/O so that it can map with only the protection that it needs.
|
| 1.14 |
03-Apr-2000 |
chs |
remove uvm_shareprot(). no longer needed since the demise of share maps.
|
| 1.13 |
03-Apr-2000 |
chs |
remove the "shareprot" pagerop. it's not needed anymore since share maps are long gone.
|
| 1.12 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase
|
| 1.11 |
11-Jan-2000 |
chs |
add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.10 |
21-Jun-1999 |
thorpej |
branches: 1.10.2; Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.9 |
25-Mar-1999 |
mrg |
branches: 1.9.4; remove now >1 year old pre-release message.
|
| 1.8 |
24-Mar-1999 |
cgd |
after discussion with chuck, nuke pgo_attach from uvm_pagerops
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.7 |
13-Aug-1998 |
eeh |
branches: 1.7.2; Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.6 |
09-Mar-1998 |
mrg |
branches: 1.6.2; KNF.
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE yamt-pagecache-base9 yamt-pagecache-tag8 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE rmind-smpnet-nbase rmind-smpnet-base agc-symver-base tls-maxphys-base yamt-pagecache-base8 yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-nb5-pq3-base netbsd-5-1-RELEASE yamt-nfs-mp-base11 netbsd-5-1-RC4 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE yamt-nfs-mp-base8 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base haad-dm-base1 haad-dm-base simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base jmcneill-pm-base hpcarm-cleanup-base mjf-ufs-trans-base yamt-idlelwp-base8 reinoud-bufcleanup-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 gdamore-uart-base yamt-pdpolicy-base5 elad-kernelauth-nbase yamt-pdpolicy-base4 yamt-pdpolicy-base3 yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.16 |
11-Feb-2006 |
yamt |
remove the following options. no objections on tech-kern@.
UVM_PAGER_INLINE UVM_AMAP_INLINE UVM_PAGE_INLINE UVM_MAP_INLINE
|
| 1.15 |
11-Dec-2005 |
christos |
branches: 1.15.2; 1.15.4; 1.15.6; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.14 |
28-Jun-2005 |
thorpej |
branches: 1.14.2; Clean up the cpp macro used to say "we're compiling this specific C file".
|
| 1.13 |
27-Jun-2005 |
thorpej |
Use ANSI function decls.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.12 |
01-Dec-2002 |
matt |
branches: 1.12.6; Reorder things so that with multiple inclusion protection that optional definitions are outside the protection checks.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base kqueue-base
|
| 1.11 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.10 |
25-Nov-2000 |
chs |
branches: 1.10.2; lots of cleanup: use queue.h macros and KASSERT(). address amap offsets in pages instead of bytes. make amap_ref() and amap_unref() take an amap, offset and length instead of a vm_map_entry_t. improve whitespace and comments.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.9 |
08-May-2000 |
thorpej |
__predict_false() an error check.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.8 |
08-Jul-1999 |
thorpej |
branches: 1.8.2; Change the pmap_extract() interface to: boolean_t pmap_extract(pmap_t, vaddr_t, paddr_t *); This makes it possible for the pmap to map physical address 0.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.7 |
25-Mar-1999 |
mrg |
branches: 1.7.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.6 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.5 |
09-Mar-1998 |
mrg |
branches: 1.5.2; KNF.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.42 |
11-Jul-2023 |
riastradh |
sys: Rip <sys/resourcevar.h> out of <uvm/uvm_param.h>.
And thus out of <sys/param.h>, which is exceedingly overused and fragile and delenda est.
Should fix (some) issues with the recent inclusion of machine/lock.h in various machine/mutex.h files.
|
|
Revision tags: netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.41 |
23-Jul-2020 |
skrll |
branches: 1.41.20; unifdef -U_LKM
|
| 1.40 |
25-Jun-2020 |
jdolecek |
uvm_emap_size was removed a while ago
|
| 1.39 |
25-Jun-2020 |
mlelstv |
If ubc_winshift gets constified, the extern declaration must be too.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
| 1.38 |
22-Aug-2018 |
msaitoh |
- Cleanup for dynamic sysctl: - Remove unused *_NAMES macros for sysctl. - Remove unused *_MAXID for sysctls. - Move CTL_MACHDEP sysctl definitions for m68k into m68k/include/cpu.h and use them on all m68k machines.
|
|
Revision tags: pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
| 1.37 |
02-Jul-2017 |
joerg |
branches: 1.37.4; 1.37.6; Export the guard size of the main thread via vm.guard_size. Add a complementary writable sysctl for the initial guard size of threads created via pthread_create. Let the existing attribut accessors do the right thing. Raise the default guard size for threads to 64KB.
|
| 1.36 |
23-Jun-2017 |
joerg |
Recommit exec_subr.c revision 1.79: Always include a 1MB guard area beyond the end of stack. While ASLR will normally create a guard area as well, this provides a deterministic area for all binaries.
Mitigates the rest of CVE-2017-1000374 and CVE-2017-1000375 from Qualys.
Additionally, change VM_DEFAULT_ADDRESS_TOPDOWN to include user_stack_guard_size in the size reservation.
|
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
|
| 1.35 |
26-Sep-2015 |
christos |
branches: 1.35.10; move CTL_VM constants to uvm_param.h, leaving a comment behind.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.34 |
26-Feb-2014 |
matt |
branches: 1.34.6; Add vm.min_address and vm.max_address which return VM_MIN_ADDRESS and VM_MAXUSER_ADDRESS.
|
| 1.33 |
25-Jan-2014 |
christos |
delete VM_DEFAULT_ADDRESS and commentary which is no longer used/true.
|
| 1.32 |
25-Jan-2014 |
christos |
provide proper defaults for topdown and bottomup allocation. XXX: Ports that provide their own VM_DEFAULT_ADDRESS() need to provide the two new flavors, otherwise they get the default ones now.
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8
|
| 1.31 |
19-Mar-2012 |
uebayasi |
branches: 1.31.2; 1.31.4; Expose vm_inherit/voff_t/pgoff_t to userland to fix build.
|
| 1.30 |
18-Mar-2012 |
uebayasi |
Move base type definitions from uvm_extern.h to uvm_param.h so that other sources can easily include part of UVM headers without the whole uvm_extern.h (e.g. sys/vnode.h wants only uvm_object.h).
|
|
Revision tags: jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4
|
| 1.29 |
27-Feb-2012 |
he |
__uvmexp_pagesize is needed also for non-modular builds, as witnessed by the otherwise failing sparc build.
|
|
Revision tags: jmcneill-usbmp-base3
|
| 1.28 |
23-Feb-2012 |
matt |
Add "opt_modular.h" #define __uvmexp_pagesize if MIN_PAGE_SIZE != MAX_PAGE_SIZE && modular is defined
|
|
Revision tags: jmcneill-usbmp-base2
|
| 1.27 |
17-Feb-2012 |
matt |
Make sure to export uvmexp_* if MODULAR is defined. Make the uvmexp_page* be a pointer to a const int as well as having the pointer be const as well.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-pre-base2 netbsd-6-base jmcneill-usbmp-base
|
| 1.26 |
29-Nov-2011 |
matt |
branches: 1.26.2; Redefine ptoa() to be the inverse of atop. If you were using a 32-bit vaddr_t with 64-bit paddr_t and using managed addresses > 4GB, uvm_page_init would silently discard the upper 32-bits of the physical address possibly double mapping pages.
|
|
Revision tags: jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 rmind-uvmplock-base
|
| 1.25 |
14-Nov-2010 |
uebayasi |
branches: 1.25.8; Oops. Fix thinko.
|
| 1.24 |
14-Nov-2010 |
uebayasi |
Platforms that dynamically set PAGE_{SIZE,MASK,SHIFT}, those values are saved in struct uvmexp. Expose only the relevant part for symbol users, so that they don't need to include the whole uvm(9) API.
|
| 1.23 |
13-Nov-2010 |
uebayasi |
UVM constants should not rely on sys/lock.h.
|
|
Revision tags: uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base jym-xensuspend-nbase
|
| 1.22 |
20-Jul-2009 |
kiyohara |
branches: 1.22.2; 1.22.4; Globalize uvm_emap_size. It use to calculate size of kernel page table. http://mail-index.netbsd.org/current-users/2009/07/13/msg009983.html
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase nick-csl-alignment-base5 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base matt-armv6-nbase jmcneill-base netbsd-4-0-RC4 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base rpaulo-netinet-merge-pcb-base
|
| 1.21 |
04-Aug-2006 |
he |
branches: 1.21.58; 1.21.74; 1.21.78; Rearrange included headers and/or add include of <sys/types.h> and <sys/lock.h>, so that the mipsco port can build again, ref. http://mail-index.netbsd.org/port-mips/2006/08/04/0000.html Reviewed by thorpej
|
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base
|
| 1.20 |
11-Dec-2005 |
christos |
branches: 1.20.4; 1.20.8; merge ktrace-lwp.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 yamt-readahead-base3 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 yamt-readahead-base2 netbsd-3-0-RC2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base netbsd-3-0-RC1 yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base ktrace-lwp-base
|
| 1.19 |
04-Apr-2004 |
pk |
branches: 1.19.12; Use maxdmap and maxsmap instead of MAXDSIZ and MAXSSIZ.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.18 |
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
| 1.17 |
19-Apr-2003 |
christos |
branches: 1.17.2; PR/2931: Eric Beltensen: Move boolean_t and TRUE/FALSE from uvm_param.h to types.h
|
| 1.16 |
09-Apr-2003 |
thorpej |
Tweak the way the pagesize-related variables are set: * Remove DEFAULT_PAGE_SIZE. We don't use PAGE_SIZE the way Mach did. * In uvm_setpagesize(), if we are called with uvmexp.pagesize == 0, then assert that PAGE_SIZE != 0 (i.e. a constant), and set uvmexp.pagesize accordingly. * Provide defaults for MIN_PAGE_SIZE and MAX_PAGE_SIZE if not defined by <machine/vmparam.h>. If PAGE_SIZE is not a constant, MIN_PAGE_SIZE and MAX_PAGE_SIZE must be provided. * If MIN_PAGE_SIZE and MAX_PAGE_SIZE are not equal (i.e. PAGE_SIZE may not be a constant in all configurations), then ensure that PAGE_SIZE and friends expand to variable references for LKMs.
|
| 1.15 |
14-Mar-2003 |
matt |
Nuke mem_size global since nothing in the kernel actually refers to it. (mmm lint).
|
| 1.14 |
20-Feb-2003 |
atatat |
Introduce "top down" memory management for mmap()ed allocations. This means that the dynamic linker gets mapped in at the top of available user virtual memory (typically just below the stack), shared libraries get mapped downwards from that point, and calls to mmap() that don't specify a preferred address will get mapped in below those.
This means that the heap and the mmap()ed allocations will grow towards each other, allowing one or the other to grow larger than before. Previously, the heap was limited to MAXDSIZ by the placement of the dynamic linker (and the process's rlimits) and the space available to mmap was hobbled by this reservation.
This is currently only enabled via an *option* for the i386 platform (though other platforms are expected to follow). Add "options USE_TOPDOWN_VM" to your kernel config file, rerun config, and rebuild your kernel to take advantage of this.
Note that the pmap_prefer() interface has not yet been modified to play nicely with this, so those platforms require a bit more work (most notably the sparc) before they can use this new memory arrangement.
This change also introduces a VM_DEFAULT_ADDRESS() macro that picks the appropriate default address based on the size of the allocation or the size of the process's text segment accordingly. Several drivers and the SYSV SHM address assignment were changed to use this instead of each one picking their own "default".
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base kqueue-base
|
| 1.13 |
09-Dec-2001 |
chs |
add {anon,file,exec}max as a upper bound on the amount of memory that will be allocated for the respective usage types when there is contention for memory.
replace "vnode" and "vtext" with "file" and "exec" in uvmexp field names and sysctl names.
|
|
Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
| 1.12 |
05-Aug-2001 |
matt |
Don't include <machine/pmap.h> and <machine/vmparam.h> if _KERNEL isn't defined. Include them explicitly in the few kvm_arch.c that need them.
|
| 1.11 |
14-Jul-2001 |
matt |
Add support for kern.maxphys, vm.maxslp, vm.uspace (the later two for ps).
|
| 1.10 |
25-May-2001 |
chs |
branches: 1.10.2; remove trailing whitespace.
|
| 1.9 |
02-May-2001 |
thorpej |
Support dynamic sizing of the page color bins. We also support dynamically re-coloring pages; as machine-dependent code discovers the size of the system's caches, it may call uvm_page_recolor() with the new number of colors to use. If the new mumber of colors is smaller (or equal to) the current number of colors, then uvm_page_recolor() is a no-op.
The system defaults to one bucket if machine-dependent code does not initialize uvmexp.ncolors before uvm_page_init() is called.
Note that the number of color bins should be initialized to something reasonable as early as possible -- for many early memory allocations, we live with the consequences of the page choice for the lifetime of the boot.
|
| 1.8 |
29-Apr-2001 |
thorpej |
Implement page coloring, using a round-robin bucket selection algorithm (Solaris calls this "Bin Hopping").
This implementation currently relies on MD code to define a constant defining the number of buckets. This will change reasonably soon (MD code will be able to dynamically size the bucket array).
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.7 |
21-Mar-2001 |
chs |
use ubc_winshift instead of ubc_winsize in pmaps to set up kernel virtual space. the latter isn't initialized yet when the value is needed. fixes PR 12440.
|
| 1.6 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.5 |
09-Mar-2001 |
chs |
add UBC memory-usage balancing. we track the number of pages in use for each of the basic types (anonymous data, executable image, cached files) and prevent the pagedaemon from reusing a given page if that would reduce the count of that type of page below a sysctl-setable minimum threshold. the thresholds are controlled via three new sysctl tunables: vm.anonmin, vm.vnodemin, and vm.vtextmin. these tunables are the percentages of pageable memory reserved for each usage, and we do not allow the sum of the minimums to be more than 95% so that there's always some memory that can be reused.
|
| 1.4 |
09-Jan-2001 |
pk |
branches: 1.4.2; atop(): cast argument to `paddr_t' (instead of `u_long') to avoid truncating the address.
|
| 1.3 |
21-Dec-2000 |
chs |
expose the tunables ubc_nwins and ubc_winsize in uvm_param.h. add the space used by UBC mappings to the initial PTE calculations for pmaps that do that (mips and alpha).
|
| 1.2 |
29-Nov-2000 |
simonb |
Add a vm.uvmexp2 sysctl that uses a ABI-safe 'struct uvmexp_sysctl'.
|
| 1.1 |
26-Jun-2000 |
mrg |
branches: 1.1.2; <vm/vm_param.h> -> <uvm/uvm_param.h>
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.134 |
10-Sep-2023 |
ad |
uvmpd_trylockowner(): release pg->interlock before calling rw_obj_free() since it can call back into the VM system.
|
|
Revision tags: netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base
|
| 1.133 |
17-Apr-2021 |
mrg |
branches: 1.133.16; fix error in previous: UVMHIST_PDHIST_SIZE needs to stay next to pdhistbuf[].
|
|
Revision tags: thorpej-cfargs-base
|
| 1.132 |
17-Apr-2021 |
mrg |
remove KERNHIST_INIT_STATIC(). it stradles the line between usable early in boot and broken early in boot by requiring a partly static structure with another structure that must be present by the time any uses are performed. theoretically platform code could allocate a chunk while seting up memory and assign it here, giving a dynamic sizing for the entry list, but the reality is that all users have a statically allocated entry list as well.
the existing KERNHIST_LINK_STATIC() is used in conjunction with KERNHIST_INITIALIZER() instead.
this stops a NULL pointer deref when the _LOG() macro is called before the storage is linked in, which happens with GCC 10 on OCTEON with UVMHIST enabled, crashing in very early kernel init.
|
|
Revision tags: thorpej-futex-base
|
| 1.131 |
04-Nov-2020 |
chs |
branches: 1.131.2; In uvmpd_tryownerlock(), if the initial try-lock of the owner lock fails then rather than do more try-locks and eventually sleep for a tick, take a hold on the current owner's lock, drop the page interlock, and acquire the lock that we took the hold on in a blocking fashion. After we get the lock, check if the lock that we acquired is still the lock for the owner of the page that we're interested in. If the owner hasn't changed then can proceed with this page, otherwise we will skip this page and move on to a different page. This dramatically reduces the amount of time that the pagedaemon sleeps trying to get locks, since even 1 tick is an eternity to sleep in this context and it was easy to trigger that case in practice, and with this new method the pagedaemon only very rarely actually blocks to acquire the lock that it wants since the object locks are adaptive, and when the pagedaemon does block then the amount of time it spends sleeping will be generally be much less than 1 tick.
|
| 1.130 |
09-Jul-2020 |
skrll |
branches: 1.130.2; Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.129 |
11-Jun-2020 |
ad |
Counter tweaks:
- Don't need to count anonpages+filepages any more; clean+unknown+dirty for each kind of page can be summed to get the totals.
- Track the number of free pages with a counter so that it's one less thing for the allocator to do, which opens up further options there.
- Remove cpu_count_sync_one(). It has no users and doesn't save a whole lot. For the cheap option, give cpu_count_sync() a boolean parameter indicating that a cached value is okay, and rate limit the updates for cached values to hz.
|
| 1.128 |
11-Jun-2020 |
ad |
uvm_availmem(): give it a boolean argument to specify whether a recent cached value will do, or if the very latest total must be fetched. It can be called thousands of times a second and fetching the totals impacts not only the calling LWP but other CPUs doing unrelated activity in the VM system.
|
| 1.127 |
25-May-2020 |
ad |
uvm_pageout_done(): do nothing when npages is zero.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
| 1.126 |
13-Apr-2020 |
maxv |
hardclock_ticks -> getticks()
|
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.125 |
23-Feb-2020 |
ad |
branches: 1.125.4; UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
| 1.124 |
18-Feb-2020 |
chs |
remove the aiodoned thread. I originally added this to provide a thread context for doing page cache iodone work, but since then biodone() has changed to hand off all iodone work to a softint thread, so we no longer need the special-purpose aiodoned thread.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.123 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.122 |
31-Dec-2019 |
ad |
branches: 1.122.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.121 |
31-Dec-2019 |
ad |
Rename uvm_free() -> uvm_availmem().
|
| 1.120 |
31-Dec-2019 |
ad |
Rename uvm_page_locked_p() -> uvm_page_owner_locked_p()
|
| 1.119 |
30-Dec-2019 |
ad |
pagedaemon:
- Use marker pages to keep place in the queue when scanning, rather than relying on assumptions.
- In uvmpdpol_balancequeue(), lock the object once instead of twice.
- When draining pools, the situation is getting desperate, but try to avoid saturating the system with xcall, lock and interrupt activity by sleeping for 1 clock tick if being continually awoken and all pools have been cycled through at least once.
- Pause & resume the freelist cache during pool draining.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.118 |
21-Dec-2019 |
ad |
Fix merge error - don't init uvmpd_lock twice.
|
| 1.117 |
21-Dec-2019 |
ad |
Detangle the pagedaemon from uvm_fpageqlock:
- Have a single lock (uvmpd_lock) to protect pagedaemon state that was previously covered by uvmpd_pool_drain_lock plus uvm_fpageqlock. - Don't require any locks be held when calling uvm_kick_pdaemon(). - Use uvm_free().
|
| 1.116 |
21-Dec-2019 |
ad |
uvm_reclaimable(): need to sum the per-CPU values for filepages/execpages.
|
| 1.115 |
14-Dec-2019 |
ad |
The uvmexp.pdpending change was incorrect - revert for now.
|
| 1.114 |
14-Dec-2019 |
ad |
Adjust pdpending in uvm_pageout_start() and uvm_pageout_done() to avoid the value going temporarily negative.
|
| 1.113 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.112 |
01-Dec-2019 |
ad |
- Adjust uvmexp.swpgonly with atomics, and make uvm_swap_data_lock static. - A bit more __cacheline_aligned on mutexes.
|
|
Revision tags: phil-wifi-20191119
|
| 1.111 |
01-Oct-2019 |
chs |
in uvm_wait(), panic if the pagedaemon thread does not exist. this avoids a hang if the system runs out of memory before the mechanisms for reclaiming memory have been set up.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609
|
| 1.110 |
21-Apr-2019 |
chs |
Draining pools from the pagedaemon thread can deadlock, because draining a pool can involve taking a lock which can be held by a thread which is blocked waiting for memory. Avoid this by moving the pool-draining work to a separate worker thread.
|
|
Revision tags: isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.109 |
28-Oct-2017 |
pgoyette |
branches: 1.109.4; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.108 |
25-Oct-2013 |
martin |
branches: 1.108.22; Mark a diagnostic-only variable
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.107 |
30-Jul-2012 |
matt |
branches: 1.107.2; 1.107.4; -fno-common broke kernhist since it used commons. Add a KERNHIST_DEFINE which is define the kernel history. Change UVM to deal with the new usage.
|
| 1.106 |
05-Jun-2012 |
jym |
Now that pool_cache_invalidate() is synchronous and can handle per-CPU caches, merge together pool_drain_start() and pool_drain_end() into
bool pool_drain(struct pool **ppp);
"bool" value indicates whether reclaiming was fully done (true) or not (false) "ppp" will contain a pointer to the pool that was drained (optional).
See http://mail-index.netbsd.org/tech-kern/2012/06/04/msg013287.html
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.105 |
01-Feb-2012 |
para |
allocate uareas and buffers from kernel_map again add code to drain pools if kmem_arena runs out of space
|
| 1.104 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.103 |
12-Jun-2011 |
rmind |
branches: 1.103.2; 1.103.6; Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.102 |
02-Feb-2011 |
chuck |
branches: 1.102.2; udpate license clauses on my code to match the new-style BSD licenses. based on second diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.101 |
02-Jun-2010 |
pooka |
branches: 1.101.2; 1.101.4; it's a wonderful static
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
| 1.100 |
21-Oct-2009 |
rmind |
branches: 1.100.2; 1.100.4; Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7
|
| 1.99 |
18-Aug-2009 |
yamt |
whitespace fixes. no functional changes.
|
| 1.98 |
10-Aug-2009 |
haad |
Add uvm_reclaim_hooks support for reclaiming kernel KVA space and memory. This is used only by zfs where uvm_reclaim hook is added from arc cache.
Oked ad@.
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base nick-hppapmap-base mjf-devfs2-base
|
| 1.97 |
13-Dec-2008 |
ad |
PR 40027/pagedaemon loops on memory shortage
uvmpd_scan_queue:
- Fix a bug that prevented the pagedaemon from making forward progress if (a) swap was full (b) the first 16 pages on the inactive list were unbusy anons not already backed by swap.
- Remove redundant uvm_swapisfull() check and just try to allocate a slot. If it fails we know swap is full.
|
|
Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base haad-dm-base
|
| 1.96 |
03-Dec-2008 |
ad |
Make adjustment of uvm_extrapages atomic since it's done without a lock. XXX This is still a hack.
|
| 1.95 |
02-Dec-2008 |
ad |
uvmpd_tune: make the adjustments to individual variables atomic.
|
| 1.94 |
14-Nov-2008 |
ad |
- If the system encounters a severe memory shortage, start unloading unused kernel modules. - Try to unload any autoloaded kernel modules 10 seconds after their load was successful. - Keep a counter to track module load/unload events.
|
|
Revision tags: netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4
|
| 1.93 |
23-Sep-2008 |
ad |
branches: 1.93.2; 1.93.4; - Make free target 0.5%, but limit to between 128k and 1024k. - Scale free target by number of CPUs. - Prefer pageing to swapping.
Proposed on tech-kern.
|
|
Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
| 1.92 |
29-Feb-2008 |
yamt |
branches: 1.92.4; 1.92.6; 1.92.10; uvm_swap_io: if pagedaemon, don't wait for iobuf.
|
|
Revision tags: nick-net80211-sync-base mjf-devfs-base hpcarm-cleanup-base
|
| 1.91 |
07-Feb-2008 |
yamt |
branches: 1.91.2; 1.91.6; swapcluster_flush: handle nused==0, which can happen if swapcluster_add failed. PR/37669 from Andrew Doran.
|
| 1.90 |
28-Jan-2008 |
yamt |
remove a special allocator for uareas, which is no longer necessary. use pool_cache instead.
|
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
|
| 1.89 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 bouyer-xenamd64-base2 vmlocking-nbase bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.88 |
07-Nov-2007 |
ad |
branches: 1.88.2; 1.88.6; Merge from vmlocking:
- pool_cache changes. - Debugger/procfs locking fixes. - Other minor changes.
|
|
Revision tags: nick-csl-alignment-base5 jmcneill-base yamt-x86pmap-base4 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base vmlocking-base
|
| 1.87 |
21-Jul-2007 |
ad |
branches: 1.87.4; 1.87.6; 1.87.10; 1.87.12; 1.87.14; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base mjf-ufs-trans-base
|
| 1.86 |
09-Jul-2007 |
ad |
branches: 1.86.2; Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
| 1.85 |
15-Jun-2007 |
ad |
Add a sysctl to disable swapout of kernel stacks. Discussed on tech-kern@.
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base ad-audiomp-base
|
| 1.84 |
22-Feb-2007 |
thorpej |
branches: 1.84.4; 1.84.6; TRUE -> true, FALSE -> false
|
| 1.83 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: post-newlock2-merge newlock2-nbase newlock2-base
|
| 1.82 |
27-Dec-2006 |
alc |
branches: 1.82.2; CID-4192: ensure we have 'uobj != NULL` here
ok christos@ and yamt@
|
| 1.81 |
21-Dec-2006 |
yamt |
merge yamt-splraiseipl branch.
- finish implementing splraiseipl (and makeiplcookie). http://mail-index.NetBSD.org/tech-kern/2006/07/01/0000.html - complete workqueue(9) and fix its ipl problem, which is reported to cause audio skipping. - fix netbt (at least compilation problems) for some ports. - fix PR/33218.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
|
| 1.80 |
01-Nov-2006 |
yamt |
remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.79 |
12-Oct-2006 |
yamt |
remove unnecessary #include of vnode.h.
|
| 1.78 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.77 |
15-Sep-2006 |
yamt |
branches: 1.77.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.76 |
14-Feb-2006 |
yamt |
branches: 1.76.2; 1.76.14; share some code between uvmpd_scan_inactive and uvmpd_scan.
|
| 1.75 |
14-Feb-2006 |
yamt |
fix a compilation problem where PAGE_SHIFT is not a constant. pointed by Chuck Silvers.
|
| 1.74 |
13-Feb-2006 |
yamt |
remove an outdated comment.
|
| 1.73 |
12-Feb-2006 |
yamt |
factor out swap clustering code.
|
| 1.72 |
05-Jan-2006 |
yamt |
branches: 1.72.2; 1.72.4; uvmpd_scan_inactive: when reactivating a page, use pmap_is_referenced rather than pmap_clear_reference. we don't need to clear the bit here as we'll do so when moving pages back to inactive queue again. pointed by Chuck Silvers.
|
| 1.71 |
21-Dec-2005 |
yamt |
branches: 1.71.2; uvmpd_scan: when deactivating a page, clear its reference bit. discussed on tech-kern@.
|
| 1.70 |
21-Dec-2005 |
yamt |
make length of inactive queue tunable by sysctl. (vm.inactivepct)
|
|
Revision tags: yamt-readahead-base3 ktrace-lwp-base
|
| 1.69 |
29-Nov-2005 |
yamt |
read-ahead statistics.
|
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.68 |
13-Sep-2005 |
yamt |
branches: 1.68.6; wrap swap related code by #ifdef VMSWAP. always #define VMSWAP for now.
|
| 1.67 |
31-Jul-2005 |
yamt |
revert "defflag VMSWAP" changes for now. there seems to be far more people who don't want to edit their kernel config files than i thought.
|
| 1.66 |
30-Jul-2005 |
yamt |
defflag VMSWAP.
|
| 1.65 |
27-Jun-2005 |
thorpej |
branches: 1.65.2; Use ANSI function decls.
|
| 1.64 |
11-May-2005 |
yamt |
allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
| 1.63 |
04-May-2005 |
yamt |
uvm_reclaimable: add an XXX comment.
|
|
Revision tags: kent-audio2-base
|
| 1.62 |
12-Apr-2005 |
yamt |
fix unreasonably frequent "killed: out of swap" on systems which have little or no swap. - even on a severe swap shortage, if we have some amount of file-backed pages, don't bother to kill processes. - if all pages in queue will be likely reactivated, just give up page type balancing rather than spinning unnecessarily.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2
|
| 1.61 |
30-Jan-2005 |
chs |
hack around a UVM problem that causes hangs when large processes fork. see PR 26908 for details.
|
|
Revision tags: yamt-km-base kent-audio1-beforemerge kent-audio1-base
|
| 1.60 |
03-Oct-2004 |
enami |
branches: 1.60.4; 1.60.6; - Don't let pagedaemon sleep while draining buf. - Estimate amount of memory to free at a time. Address PR#27057 (and similar hangs I saw several months ago).
|
|
Revision tags: netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.59 |
24-Mar-2004 |
junyoung |
branches: 1.59.2; Nuke __P().
|
| 1.58 |
30-Jan-2004 |
tls |
Buffer cache fixes to avoid thrashing between high and low water marks and uncontrolled growth.
The key fix is from Dan Carasone, who noticed that buf_canfree() was counting in _bytes_ but freeing in _buffers_, which caused the instant drop to lowater observed by some users.
We now control the rate of growth; the probability of getting a new allocation is inversely proportional to the current size of the cache. This idea is from a long-ago conversation with Kirk McKusick and, if memory serves, was used for the file-system cache in some other BSD variant at some point in history.
With growth and shrinkage more or less dealt with, we return the default maximum cache size to 15%. The default _minimum_ cache size is raised from 1/16 of the maximum cache size to 1/8, since 1/16 was chosen when the maximum size was 30% of memory.
Finally, after observing the behaviour of the pagedaemon and the buffer cache drainer under pathological workloads (e.g. a benchmark that steps through 75% of available memory backwards) I have moved the call to buf_drain() to the beginning of the pagedaemon from the end; if the pagedaemon bogs down, it still won't get run as often as it should, but at least this way it will see the state of the free count and free target _before_ the scan step does its thing.
|
| 1.57 |
04-Jan-2004 |
jdolecek |
Rearrange process exit path to avoid need to free resources from different process context ('reaper').
From within the exiting process context: * deactivate pmap and free vmspace while we can still block * introduce MD cpu_lwp_free() - this cleans all MD-specific context (such as FPU state), and is the last potentially blocking operation; all of cpu_wait(), and most of cpu_exit(), is now folded into cpu_lwp_free() * process is now immediatelly marked as zombie and made available for pickup by parent; the remaining last lwp continues the exit as fully detached * MI (rather than MD) code bumps uvmexp.swtch, cpu_exit() is now same for both 'process' and 'lwp' exit
uvm_lwp_exit() is modified to never block; the u-area memory is now always just linked to the list of available u-areas. Introduce (blocking) uvm_uarea_drain(), which is called to release the excessive u-area memory; this is called by parent within wait4(), or by pagedaemon on memory shortage. uvm_uarea_free() is now private function within uvm_glue.c.
MD process/lwp exit code now always calls lwp_exit2() immediatelly after switching away from the exiting lwp.
g/c now unneeded routines and variables, including the reaper kernel thread
|
| 1.56 |
30-Dec-2003 |
pk |
Replace the traditional buffer memory management -- based on fixed per buffer virtual memory reservation and a private pool of memory pages -- by a scheme based on memory pools.
This allows better utilization of memory because buffers can now be allocated with a granularity finer than the system's native page size (useful for filesystems with e.g. 1k or 2k fragment sizes). It also avoids fragmentation of virtual to physical memory mappings (due to the former fixed virtual address reservation) resulting in better utilization of MMU resources on some platforms. Finally, the scheme is more flexible by allowing run-time decisions on the amount of memory to be used for buffers.
On the other hand, the effectiveness of the LRU queue for buffer recycling may be somewhat reduced compared to the traditional method since, due to the nature of the pool based memory allocation, the actual least recently used buffer may release its memory to a pool different from the one needed by a newly allocated buffer. However, this effect will kick in only if the system is under memory pressure.
|
| 1.55 |
26-Sep-2003 |
chs |
don't dereference a vm_page pointer after we free the page.
|
| 1.54 |
01-Sep-2003 |
yamt |
remove an obsolete comment. (we now have only one inactive list.)
|
| 1.53 |
28-Aug-2003 |
pk |
When retiring a swap device with marked bad blocks on it we should update the `# swap page in use' and `# swap page only' counters. However, at the time of swap device removal we can no longer figure out how many of the bad swap pages are actually also `swap only' pages.
So, on swap I/O errors arrange things to not include the bad swap pages in the `swpgonly' counter as follows: uvm_swap_markbad() decrements `swpgonly' by the number of bad pages, and the various VM object deallocation routines do not decrement `swpgonly' for swap slots marked as SWSLOT_BAD.
|
| 1.52 |
11-Aug-2003 |
pk |
Introduce uvm_swapisfull(), which computes the available swap space by taking into account swap devices that are in the process of being removed.
|
| 1.51 |
23-Apr-2003 |
tls |
branches: 1.51.2; Correct use of MAXBSIZE where MAXPHYS was intended. This is a necessary first step towards per-device MAXPHYS, and has the beneficial side effect of allowing clustering to MAXPHYS even on systems that need to run with a reduced MAXBSIZE to get more metadata buffers.
|
| 1.50 |
25-Feb-2003 |
simonb |
Cast result of pgo_put() to (void) as is the style with other calls to pgo_put() in UVM.
Pointed out by Andrew Brown.
|
| 1.49 |
23-Feb-2003 |
simonb |
Remove assigned-to but not used variable.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.48 |
24-Nov-2002 |
scw |
Quell uninitialised variable warnings.
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge gehenna-devsw-base kqueue-base
|
| 1.47 |
20-Jun-2002 |
chs |
count aobj pages (most notably kernel stack pages) as anon pages for memory usage-balancing purposes.
|
|
Revision tags: netbsd-1-6-base
|
| 1.46 |
05-May-2002 |
chs |
branches: 1.46.2; 1.46.4; look in the right flags field for PQ_INACTIVE. make uvmpd_scan_inactive() return void since its return value is ignored.
|
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
| 1.45 |
21-Jan-2002 |
wiz |
branches: 1.45.4; deamon -> daemon
|
| 1.44 |
31-Dec-2001 |
chs |
fix locking for loaning. in general we should be looking at the page's uobject and uanon pointers rather than at the PQ_ANON flag to determine which lock to hold, since PQ_ANON can be clear even when the anon's lock is the one which we should hold (if the page was loaned from an object and then freed by the object).
|
| 1.43 |
09-Dec-2001 |
chs |
add {anon,file,exec}max as a upper bound on the amount of memory that will be allocated for the respective usage types when there is contention for memory.
replace "vnode" and "vtext" with "file" and "exec" in uvmexp field names and sysctl names.
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.42 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.41 |
06-Nov-2001 |
chs |
several changes prompted by loaning problems: - fix the loaned case in uvm_pagefree(). - redo uvmexp.swpgonly accounting to work with page loaning. add an assertion before each place we adjust uvmexp.swpgonly. - fix uvm_km_pgremove() to always free any swap space associated with the range being removed. - get rid of UVM_LOAN_WIRED flag. instead, we just make sure that pages loaned to the kernel are never on the page queues. this allows us to assert that pages are not loaned and wired at the same time. - add yet more assertions.
|
| 1.40 |
06-Nov-2001 |
simonb |
Remove some variables that are set but never used.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2
|
| 1.39 |
30-Sep-2001 |
chs |
branches: 1.39.2; skip the swap-out code if there's no swap space configured. avoid some hangs in low-memory situations.
|
| 1.38 |
26-Sep-2001 |
chs |
move call to pool_drain() outside the pageq lock.
|
|
Revision tags: post-chs-ubcperf
|
| 1.37 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.36 |
27-Jun-2001 |
thorpej |
branches: 1.36.2; 1.36.4; G/c a comment that no longer applies.
|
| 1.35 |
23-Jun-2001 |
chs |
don't for memory in uao_set_swlot() since we're holding spinlocks, instead return -1. adjust callers to handle this new error return. fixes PR 13194.
|
| 1.34 |
25-May-2001 |
chs |
remove trailing whitespace.
|
| 1.33 |
22-May-2001 |
ross |
Merge the swap-backed and object-backed inactive lists.
|
| 1.32 |
07-May-2001 |
thorpej |
Fix a silly mistake I made when reworking the uvm inactive list some time ago. The mistake was to check that the page was not referenced since the last active scan before moving it to inactive. Now we just clear reference and move it to inacive (which is where the second clock hand sweep occurs).
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.31 |
10-Mar-2001 |
chs |
eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
| 1.30 |
09-Mar-2001 |
chs |
add UBC memory-usage balancing. we track the number of pages in use for each of the basic types (anonymous data, executable image, cached files) and prevent the pagedaemon from reusing a given page if that would reduce the count of that type of page below a sysctl-setable minimum threshold. the thresholds are controlled via three new sysctl tunables: vm.anonmin, vm.vnodemin, and vm.vtextmin. these tunables are the percentages of pageable memory reserved for each usage, and we do not allow the sum of the minimums to be more than 95% so that there's always some memory that can be reused.
|
| 1.29 |
28-Jan-2001 |
thorpej |
branches: 1.29.2; Page scanner improvements, behavior is actually a bit more like Mach VM's now. Specific changes: - Pages now need not have all of their mappings removed before being put on the inactive list. They only need to have the "referenced" attribute cleared. This makes putting pages onto the inactive list much more efficient. In order to eliminate redundant clearings of "refrenced", callers of uvm_pagedeactivate() must now do this themselves. - When checking the "modified" attribute for a page (for clearing PG_CLEAN), make sure to only do it if PG_CLEAN is currently set on the page (saves a potentially expensive pmap operation). - When scanning the inactive list, if a page is referenced, reactivate it (this part was actually added in uvm_pdaemon.c,v 1.27). This now works properly now that pages on the inactive list are allowed to have mappings. - When scanning the inactive list and considering a page for freeing, remove all mappings, and then check the "modified" attribute if the page is marked PG_CLEAN. - When scanning the active list, if the page was referenced since its last sweep by the scanner, don't deactivate it. (This part was actually added in uvm_pdaemon.c,v 1.28.)
These changes greatly improve interactive performance during moderate to high memory and I/O load.
|
| 1.28 |
25-Jan-2001 |
thorpej |
When considering a page for deactivation, check to see if the page has been referenced since the last time it was considered. If it was, don't deactivate the page.
|
| 1.27 |
25-Jan-2001 |
mycroft |
Put back the pmap_is_referenced() check from the original UVM code in the inactive list scans. Without this, the referenced bit was essentially ignored.
|
| 1.26 |
13-Dec-2000 |
chs |
continue processing the inactive queue past the free target when we're enforcing the limit on the number of vnode pages.
|
| 1.25 |
30-Nov-2000 |
simonb |
Move uvm_pgcnt_vnode and uvm_pgcnt_anon into uvmexp (as vnodepages and anonpages), and add vtextpages which is currently unused but will be used to trace the number of pages used by vtext vnodes.
|
| 1.24 |
27-Nov-2000 |
chs |
Initial integration of the Unified Buffer Cache project.
|
| 1.23 |
20-Aug-2000 |
bjh21 |
Ensure that uvmexp.freemin is above the kernel reserved-page count.
When it wasn't (which could happen on a 4Mb machine with 32kb pages), uvm_pagealloc_strat could refuse to allocate user memory, while the pagedaemon didn't think it was worth freeing any more, resulting in the system seizing up.
|
| 1.22 |
12-Aug-2000 |
thorpej |
Don't bother with a trampoline to start the pagedaemon and reaper threads.
|
| 1.21 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.20 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base fvdl-softdep-base
|
| 1.19 |
04-Nov-1999 |
thorpej |
Const poison uvm_wait().
|
|
Revision tags: comdex-fall-1999-base
|
| 1.18 |
12-Sep-1999 |
chs |
branches: 1.18.2; 1.18.4; 1.18.8; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
|
Revision tags: chs-ubc2-base
|
| 1.17 |
22-Jul-1999 |
thorpej |
Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.16 |
24-May-1999 |
thorpej |
- Change uvm_{lock,unlock}_fpageq() to return/take the previous interrupt level directly, instead of making the caller wrap the calls in splimp()/splx(). - Add a comment documenting that interrupts that cause memory allocation must be blocked while the free page queue is locked.
Since interrupts must be blocked while this lock is asserted, tying them together like this helps to prevent mistakes.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.15 |
30-Mar-1999 |
mycroft |
branches: 1.15.4; Adjust a comparison so that the pagedaemon doesn't get stuck ping-ponging with a process trying to allocate memory.
|
| 1.14 |
26-Mar-1999 |
chs |
add uvmexp.swpgonly and use it to detect out-of-swap conditions.
numerous pagedaemon improvements were needed to make this useful: - don't bother waking up procs waiting for memory if there's none to be had. - start 4 times as many pageouts as we need free pages. this should reduce latency in low-memory situations. - in inactive scanning, if we find dirty swap-backed pages when swap space is full of non-resident pages, reactivate some number of these to flush less active pages to the inactive queue so we can consider paging them out. this replaces the previous scheme of inactivating pages beyond the inactive target when we failed to free anything during inactive scanning. - during both active and inactive scanning, free any swap resources from dirty swap-backed pages if swap space is full. this allows other pages be paged out into that swap space.
|
| 1.13 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.12 |
04-Nov-1998 |
chs |
branches: 1.12.2; remove outdated comment.
|
| 1.11 |
18-Oct-1998 |
chs |
shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.10 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.9 |
23-Jul-1998 |
pk |
branches: 1.9.2; Include pool_drain() in page scans.
|
| 1.8 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.7 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.6 |
09-Feb-1998 |
mrg |
keep statistics on pageout/pagein, total pages, and total operations.
|
| 1.5 |
07-Feb-1998 |
mrg |
implement counters for pages paged in/out
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
keep track of how many pages are currently being paged out, stop initiating new pageouts when "(free + paging) > freetarg". fix pageq locking.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.20 |
05-Sep-2020 |
riastradh |
Round of uvm.h cleanup.
The poorly named uvm.h is generally supposed to be for uvm-internal users only.
- Narrow it to files that actually need it -- mostly files that need to query whether curlwp is the pagedaemon, which should maybe be exposed by an external header.
- Use uvm_extern.h where feasible and uvm_*.h for things not exposed by it. We should split up uvm_extern.h but this will serve for now to reduce the uvm.h dependencies.
- Use uvm_stat.h and #ifdef UVMHIST uvm.h for files that use UVMHIST(ubchist), since ubchist is declared in uvm.h but the reference evaporates if UVMHIST is not defined, so we reduce header file dependencies.
- Make uvm_device.h and uvm_swap.h independently includable while here.
ok chs@
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.19 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.18 |
30-Dec-2019 |
ad |
branches: 1.18.2; pagedaemon:
- Use marker pages to keep place in the queue when scanning, rather than relying on assumptions.
- In uvmpdpol_balancequeue(), lock the object once instead of twice.
- When draining pools, the situation is getting desperate, but try to avoid saturating the system with xcall, lock and interrupt activity by sleeping for 1 clock tick if being continually awoken and all pools have been cycled through at least once.
- Pause & resume the freelist cache during pool draining.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.17 |
02-Feb-2011 |
chuck |
branches: 1.17.56; udpate license clauses on my code to match the new-style BSD licenses. based on second diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11
|
| 1.16 |
07-Sep-2010 |
pooka |
branches: 1.16.2; 1.16.4; Make "no options VMSWAP" kernels compile again.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.15 |
02-Jan-2008 |
ad |
branches: 1.15.10; 1.15.28; 1.15.30; 1.15.32; Merge vmlocking2 to head.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.14 |
21-Feb-2007 |
thorpej |
branches: 1.14.4; 1.14.18; 1.14.24; 1.14.26; 1.14.30; Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base netbsd-4-base
|
| 1.13 |
15-Sep-2006 |
yamt |
branches: 1.13.6; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.12 |
11-Dec-2005 |
christos |
branches: 1.12.8; 1.12.20; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base kent-audio2-base ktrace-lwp-base
|
| 1.11 |
12-Apr-2005 |
yamt |
branches: 1.11.2; fix unreasonably frequent "killed: out of swap" on systems which have little or no swap. - even on a severe swap shortage, if we have some amount of file-backed pages, don't bother to kill processes. - if all pages in queue will be likely reactivated, just give up page type balancing rather than spinning unnecessarily.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.10 |
24-Mar-2004 |
junyoung |
branches: 1.10.8; Nuke __P().
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base kqueue-base
|
| 1.9 |
25-May-2001 |
chs |
branches: 1.9.22; remove trailing whitespace.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 thorpej_scsipi_beforemerge thorpej_scsipi_nbase netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base fvdl-softdep-base thorpej_scsipi_base
|
| 1.8 |
04-Nov-1999 |
thorpej |
branches: 1.8.6; Const poison uvm_wait().
|
|
Revision tags: comdex-fall-1999-base chs-ubc2-base
|
| 1.7 |
21-Jun-1999 |
thorpej |
branches: 1.7.2; 1.7.4; 1.7.8; Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.6 |
25-Mar-1999 |
mrg |
branches: 1.6.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base eeh-paddr_t-base
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.9 |
20-Aug-2022 |
riastradh |
uvm_pdpolicy.h: Fix missing forward declarations and includes.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.8 |
17-May-2020 |
ad |
Start trying to reduce cache misses on vm_page during fault processing.
- Make PGO_LOCKED getpages imply PGO_NOBUSY and remove the latter. Mark pages busy only when there's actually I/O to do.
- When doing COW on a uvm_object, don't mess with neighbouring pages. In all likelyhood they're already entered.
- Don't mess with neighbouring VAs that have existing mappings as replacing those mappings with same can be quite costly.
- Don't enqueue pages for neighbour faults unless not enqueued already, and don't activate centre pages unless uvmpdpol says its useful.
Also:
- Make PGO_LOCKED getpages on UAOs work more like vnodes: do gang lookup in the radix tree, and don't allocate new pages.
- Fix many assertion failures around faults/loans with tmpfs.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.7 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.6 |
31-Dec-2019 |
ad |
branches: 1.6.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.5 |
30-Dec-2019 |
ad |
pagedaemon:
- Use marker pages to keep place in the queue when scanning, rather than relying on assumptions.
- In uvmpdpol_balancequeue(), lock the object once instead of twice.
- When draining pools, the situation is getting desperate, but try to avoid saturating the system with xcall, lock and interrupt activity by sleeping for 1 clock tick if being continually awoken and all pools have been cycled through at least once.
- Pause & resume the freelist cache during pool draining.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.4 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 nick-csl-alignment-base5 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.3 |
21-Feb-2007 |
thorpej |
branches: 1.3.62; 1.3.132; Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base
|
| 1.2 |
15-Sep-2006 |
yamt |
branches: 1.2.6; 1.2.8; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: rpaulo-netinet-merge-pcb-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 gdamore-uart-base yamt-pdpolicy-base5 elad-kernelauth-nbase simonb-timecounters-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 yamt-pdpolicy-base2
|
| 1.1 |
05-Mar-2006 |
yamt |
branches: 1.1.2; 1.1.6; file uvm_pdpolicy.h was initially added on branch yamt-pdpolicy.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| 1.42 |
20-May-2025 |
bouyer |
Remove the redundant kpreempt_disable/kpreempt_enable now that we're running at splsoftbio. Pointed out by thorpej@
|
| 1.41 |
19-May-2025 |
bouyer |
uvmpdpol_pagerealize(): ucpu->pdqhead is used by a single CPU; but kpreempt_disable() isn't enough to guard against concurent access; interrupts also need to be disabled. If my analysis is correct, the only place using ucpu->pdqhead which can be called from interrupt context it uvmpdpol_pagerealize(), and only from softbio(). So: - introduce splsoftbio() in sys/spl.h - protect all accesses to ucpu->pdqhead with splsoftbio()
fixes pr kern/59412: uvmpdpol_pagerealize() queue index out of bound
|
|
Revision tags: netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.40 |
12-Apr-2022 |
andvar |
branches: 1.40.4; 1.40.10; s/stablize/stabilize/
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.39 |
11-Jun-2020 |
ad |
Counter tweaks:
- Don't need to count anonpages+filepages any more; clean+unknown+dirty for each kind of page can be summed to get the totals.
- Track the number of free pages with a counter so that it's one less thing for the allocator to do, which opens up further options there.
- Remove cpu_count_sync_one(). It has no users and doesn't save a whole lot. For the cheap option, give cpu_count_sync() a boolean parameter indicating that a cached value is okay, and rate limit the updates for cached values to hz.
|
| 1.38 |
11-Jun-2020 |
ad |
uvm_availmem(): give it a boolean argument to specify whether a recent cached value will do, or if the very latest total must be fetched. It can be called thousands of times a second and fetching the totals impacts not only the calling LWP but other CPUs doing unrelated activity in the VM system.
|
| 1.37 |
17-May-2020 |
ad |
Start trying to reduce cache misses on vm_page during fault processing.
- Make PGO_LOCKED getpages imply PGO_NOBUSY and remove the latter. Mark pages busy only when there's actually I/O to do.
- When doing COW on a uvm_object, don't mess with neighbouring pages. In all likelyhood they're already entered.
- Don't mess with neighbouring VAs that have existing mappings as replacing those mappings with same can be quite costly.
- Don't enqueue pages for neighbour faults unless not enqueued already, and don't activate centre pages unless uvmpdpol says its useful.
Also:
- Make PGO_LOCKED getpages on UAOs work more like vnodes: do gang lookup in the radix tree, and don't allocate new pages.
- Fix many assertion failures around faults/loans with tmpfs.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.36 |
02-Apr-2020 |
maxv |
Hide 'hardclock_ticks' behind a new getticks() function, and use relaxed atomics internally. Only one caller is converted for now.
Discussed with riastradh@ and ad@.
|
| 1.35 |
14-Mar-2020 |
ad |
uvm_pdpolicy: Require a write lock on the object only for dequeue. No sense in requiring that for enqueue/activate/deactivate.
|
| 1.34 |
08-Mar-2020 |
ad |
Don't zap the non-pdpolicy bits in pg->pqflags.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.33 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
| 1.32 |
30-Jan-2020 |
ad |
uvmpdpol_estimatepageable(): Don't take any locks here. This can be called from DDB, and in any case the numbers are stale the instant the lock is dropped, so it just doesn't matter.
|
|
Revision tags: ad-namecache-base2
|
| 1.31 |
21-Jan-2020 |
ad |
uvmpdpol_pageactive(): the change to not re-activate recently activated pages worked great with uvm_pageqlock, but it doesn't buy anything any more, because now the busy pages are likely in a per-CPU queue somewhere waiting to be processed, and changing the intent on those queued pages costs next to nothing. Remove this and get back all the bits in pg->pqflags.
|
|
Revision tags: ad-namecache-base1 ad-namecache-base
|
| 1.30 |
01-Jan-2020 |
ad |
branches: 1.30.2; Fix a comment.
|
| 1.29 |
01-Jan-2020 |
mlelstv |
explicitely include sys/atomic.h for atomic operations.
|
| 1.28 |
31-Dec-2019 |
ad |
- Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.27 |
31-Dec-2019 |
ad |
Rename uvm_free() -> uvm_availmem().
|
| 1.26 |
31-Dec-2019 |
ad |
Rename uvm_page_locked_p() -> uvm_page_owner_locked_p()
|
| 1.25 |
30-Dec-2019 |
ad |
Whitespace.
|
| 1.24 |
30-Dec-2019 |
ad |
pagedaemon:
- Use marker pages to keep place in the queue when scanning, rather than relying on assumptions.
- In uvmpdpol_balancequeue(), lock the object once instead of twice.
- When draining pools, the situation is getting desperate, but try to avoid saturating the system with xcall, lock and interrupt activity by sleeping for 1 clock tick if being continually awoken and all pools have been cycled through at least once.
- Pause & resume the freelist cache during pool draining.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.23 |
27-Dec-2019 |
ad |
vm_page: Now that listq is gone, give the pagedaemon its own private TAILQ_ENTRY, so that update of page replacement state can be made asynchronous/lazy. No functional change.
|
| 1.22 |
23-Dec-2019 |
ad |
uvmpdpol_selectvictim: don't assert wire_count == 0, as we can (safely) race with object owner and wired pages can very briefly appear on the queue.
|
| 1.21 |
21-Dec-2019 |
ad |
uvmexp.free -> uvm_free()
|
| 1.20 |
16-Dec-2019 |
ad |
- Extend the per-CPU counters matt@ did to include all of the hot counters in UVM, excluding uvmexp.free, which needs special treatment and will be done with a separate commit. Cuts system time for a build by 20-25% on a 48 CPU machine w/DIAGNOSTIC.
- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
|
| 1.19 |
16-Dec-2019 |
ad |
Use the high bits of pqflags for PQ_TIME, not low.
|
| 1.18 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.17 |
30-Jan-2012 |
para |
branches: 1.17.48; removed code from uvmpdpol_needsscan_p that got there by mistake pointed out by yamt@
|
| 1.16 |
28-Jan-2012 |
rmind |
pool_page_alloc, pool_page_alloc_meta: avoid extra compare, use const. ffs_mountfs,sys_swapctl: replace memset with kmem_zalloc. sys_swapctl: move kmem_free outside the lock path. uvm_init: fix comment, remove pointless numeration of steps. uvm_map_enter: remove meflagval variable. Fix some indentation.
|
| 1.15 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
|
Revision tags: yamt-pagecache-tag8 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.14 |
12-Jun-2011 |
rmind |
branches: 1.14.6; Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.13 |
02-Feb-2011 |
chuck |
branches: 1.13.2; udpate license clauses on my code to match the new-style BSD licenses. based on second diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
|
| 1.12 |
04-Jun-2008 |
ad |
branches: 1.12.16; 1.12.20; 1.12.26; 1.12.28; vm_page: put TAILQ_ENTRY into a union with LIST_ENTRY, so we can use both.
|
|
Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
| 1.11 |
07-Mar-2008 |
martin |
branches: 1.11.2; 1.11.4; 1.11.6; Swap sysctl -d description of vm.filemin and vm.execmin. Noted by Raymond Meyer on current-users.
|
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-nbase bouyer-xeni386-base mjf-devfs-base hpcarm-cleanup-base
|
| 1.10 |
18-Jan-2008 |
yamt |
branches: 1.10.2; 1.10.6; push pmap_clear_reference calls into pdpolicy code, where reference bits actually matter.
|
|
Revision tags: matt-armv6-base
|
| 1.9 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.8 |
22-Feb-2007 |
thorpej |
branches: 1.8.4; 1.8.18; 1.8.24; 1.8.26; 1.8.30; TRUE -> true, FALSE -> false
|
| 1.7 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: post-newlock2-merge newlock2-nbase newlock2-base
|
| 1.6 |
19-Jan-2007 |
skrll |
branches: 1.6.2; Remove useless double assignment.
PR 35442
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base
|
| 1.5 |
01-Nov-2006 |
yamt |
branches: 1.5.4; remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.4 |
12-Oct-2006 |
yamt |
move some knowledge about vnode into uvm_vnode.c.
|
| 1.3 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.2 |
15-Sep-2006 |
yamt |
branches: 1.2.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: rpaulo-netinet-merge-pcb-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 gdamore-uart-base yamt-pdpolicy-base5 elad-kernelauth-nbase simonb-timecounters-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 yamt-pdpolicy-base2
|
| 1.1 |
05-Mar-2006 |
yamt |
branches: 1.1.2; 1.1.6; file uvm_pdpolicy_clock.c was initially added on branch yamt-pdpolicy.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.27 |
12-Apr-2022 |
andvar |
s/stablize/stabilize/
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.26 |
17-May-2020 |
ad |
Start trying to reduce cache misses on vm_page during fault processing.
- Make PGO_LOCKED getpages imply PGO_NOBUSY and remove the latter. Mark pages busy only when there's actually I/O to do.
- When doing COW on a uvm_object, don't mess with neighbouring pages. In all likelyhood they're already entered.
- Don't mess with neighbouring VAs that have existing mappings as replacing those mappings with same can be quite costly.
- Don't enqueue pages for neighbour faults unless not enqueued already, and don't activate centre pages unless uvmpdpol says its useful.
Also:
- Make PGO_LOCKED getpages on UAOs work more like vnodes: do gang lookup in the radix tree, and don't allocate new pages.
- Fix many assertion failures around faults/loans with tmpfs.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411
|
| 1.25 |
10-Apr-2020 |
tsutsui |
Update a link to "CLOCK-Pro" paper.
|
|
Revision tags: bouyer-xenpvh-base phil-wifi-20200406
|
| 1.24 |
14-Mar-2020 |
ad |
branches: 1.24.2; uvm_pdpolicy: Require a write lock on the object only for dequeue. No sense in requiring that for enqueue/activate/deactivate.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.23 |
30-Jan-2020 |
ad |
uvmpdpol_estimatepageable(): Don't take any locks here. This can be called from DDB, and in any case the numbers are stale the instant the lock is dropped, so it just doesn't matter.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.22 |
31-Dec-2019 |
ad |
branches: 1.22.2; - Add and use wrapper functions that take and acquire page interlocks, and pairs of page interlocks. Require that the page interlock be held over calls to uvm_pageactivate(), uvm_pagewire() and similar.
- Solve the concurrency problem with page replacement state. Rather than updating the global state synchronously, set an intended state on individual pages (active, inactive, enqueued, dequeued) while holding the page interlock. After the interlock is released put the pages on a 128 entry per-CPU queue for their state changes to be made real in batch. This results in in a ~400 fold decrease in contention on my test system. Proposed on tech-kern but modified to use the page interlock rather than atomics to synchronise as it's much easier to maintain that way, and cheaper.
|
| 1.21 |
31-Dec-2019 |
ad |
Rename uvm_page_locked_p() -> uvm_page_owner_locked_p()
|
| 1.20 |
30-Dec-2019 |
ad |
pagedaemon:
- Use marker pages to keep place in the queue when scanning, rather than relying on assumptions.
- In uvmpdpol_balancequeue(), lock the object once instead of twice.
- When draining pools, the situation is getting desperate, but try to avoid saturating the system with xcall, lock and interrupt activity by sleeping for 1 clock tick if being continually awoken and all pools have been cycled through at least once.
- Pause & resume the freelist cache during pool draining.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
| 1.19 |
27-Dec-2019 |
ad |
vm_page: Now that listq is gone, give the pagedaemon its own private TAILQ_ENTRY, so that update of page replacement state can be made asynchronous/lazy. No functional change.
|
| 1.18 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.17 |
20-Jun-2011 |
yamt |
branches: 1.17.54; band-aid fix after the merge of rmind-uvmplock branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.16 |
05-Feb-2011 |
yamt |
branches: 1.16.2; pageobj: remove a wrong assertion.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
|
| 1.15 |
04-Jun-2008 |
ad |
branches: 1.15.16; 1.15.20; 1.15.26; 1.15.28; vm_page: put TAILQ_ENTRY into a union with LIST_ENTRY, so we can use both.
|
|
Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14
|
| 1.14 |
22-Mar-2008 |
bjs |
branches: 1.14.2; 1.14.4; 1.14.6; Allow this to compile if LISTQ is undefined:
- Put '#ifdef LISTQ' ... '#endif' pairs around pageq_insert_head() and clockpro_insert_head().
- Add missing argument to printf statement.
|
|
Revision tags: keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
| 1.13 |
07-Feb-2008 |
yamt |
branches: 1.13.6; nonresident_rotate: avoid too long loops which can happen on some workloads.
|
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base
|
| 1.12 |
18-Jan-2008 |
yamt |
push pmap_clear_reference calls into pdpolicy code, where reference bits actually matter.
|
| 1.11 |
13-Jan-2008 |
yamt |
nonresident_rotate: micro optimization
|
|
Revision tags: matt-armv6-base
|
| 1.10 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
|
| 1.9 |
01-Aug-2007 |
yamt |
branches: 1.9.4; 1.9.10; 1.9.12; 1.9.16; 1.9.20; use separate nreslookup evcnt for obj and anon pages.
|
|
Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base
|
| 1.8 |
22-Feb-2007 |
thorpej |
branches: 1.8.4; 1.8.12; TRUE -> true, FALSE -> false
|
| 1.7 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base newlock2-base
|
| 1.6 |
28-Nov-2006 |
yamt |
branches: 1.6.4; 1.6.6; uvmpdpol_pagedequeue: clear PQ_INITIALREF. otherwise, dequeue/enqueue cycles (eg. page loaning) can cause an assertion failure in clockpro_pageenqueue.
|
| 1.5 |
16-Nov-2006 |
christos |
__unused removal on arguments; approved by core.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.4 |
12-Oct-2006 |
yamt |
remove unnecessary #include of vnode.h.
|
| 1.3 |
09-Oct-2006 |
yamt |
fix some warnings in the case of PDSIM.
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.2 |
15-Sep-2006 |
yamt |
branches: 1.2.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: rpaulo-netinet-merge-pcb-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 gdamore-uart-base yamt-pdpolicy-base5 elad-kernelauth-nbase simonb-timecounters-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 yamt-pdpolicy-base2
|
| 1.1 |
06-Mar-2006 |
yamt |
branches: 1.1.2; 1.1.6; file uvm_pdpolicy_clockpro.c was initially added on branch yamt-pdpolicy.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase nick-csl-alignment-base5 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base matt-armv6-nbase jmcneill-base netbsd-4-0-RC4 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base
|
| 1.2 |
15-Sep-2006 |
yamt |
branches: 1.2.6; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: rpaulo-netinet-merge-pcb-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 gdamore-uart-base yamt-pdpolicy-base5 elad-kernelauth-nbase simonb-timecounters-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 yamt-pdpolicy-base2
|
| 1.1 |
05-Mar-2006 |
yamt |
branches: 1.1.2; 1.1.6; file uvm_pdpolicy_impl.h was initially added on branch yamt-pdpolicy.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.6 |
18-Oct-2020 |
chs |
In the current code, CPU_COUNT_FREEPAGES counts pages in the global freelists AND the per-CPU pgflcache free pages caches, and that is the number of pages that the pagedaemon considers to be available. However, most pages in the pgflcache per-CPU free page caches are NOT actually available for any particular allocation, and thus allocating a page can fail even though the pagedaemon thinks enough pages are available. This change makes CPU_COUNT_FREEPAGES only count pages in the global freelists and not pages in the pgflcache per-CPU free page caches, thus better aligning the pagedaemon's view of how many pages are available with the number of pages that can actually be allocated by any particular request. This fixes a hang that Christos was hitting.
|
| 1.5 |
14-Jun-2020 |
ad |
Remove PG_ZERO. It worked brilliantly on x86 machines from the mid-90s but having spent an age experimenting with it over the last 6 months on various machines and with different use cases it's always either break-even or a slight net loss for me.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.4 |
30-Dec-2019 |
ad |
branches: 1.4.6; Freelist cache: drain using a high-priority xcall and re-enable now that the pagedaemon starvation problem should be fixed.
|
| 1.3 |
29-Dec-2019 |
ad |
It looks like the freelist cache can starve the pagedaemon under certain conditions, so temporarily disable it. Will revisit soon.
|
| 1.2 |
27-Dec-2019 |
ad |
Fix a comment.
|
| 1.1 |
27-Dec-2019 |
ad |
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.1 |
27-Dec-2019 |
ad |
branches: 1.1.6; Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.92 |
14-Jan-2024 |
tnn |
fix DEBUG build
|
| 1.91 |
13-Jan-2024 |
tnn |
uvm: change type of uvm_physseg.start_hint from u_int to u_long
Avoids assertion failure in uvm_pglistalloc_s_ps() with large paddrs. PR kern/57683.
|
|
Revision tags: netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.90 |
21-Dec-2021 |
skrll |
branches: 1.90.4; Update uvm_pglistalloc_[cs]_ps to return EINVAL if [low, high] doesn't match any memory.
Useful for bus_dmamem_alloc where a tag might not cover any memory. This will be used in an update to ehci.
"looks good" from chuq@
|
| 1.89 |
20-Dec-2021 |
skrll |
Slight code re-structure and wrap a long line. Interestingly this gives the same binary before and after.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.88 |
26-Mar-2021 |
chs |
in uvm_pglistalloc_contig_aggressive(), avoid looking forward past the end of the target range of the physseg. fixes PR 56074.
|
| 1.87 |
24-Mar-2021 |
skrll |
Trailing whitespace
|
| 1.86 |
07-Oct-2020 |
chs |
branches: 1.86.2; 1.86.4; Add a new, more aggressive allocator for uvm_pglistalloc() to allocate contiguous physical pages, and try this new allocator if the existing one fails. The existing contig allocator only tries to allocate pages that are already free, which works fine shortly after boot but rarely works after the system has been up for a while. The new allocator uses the pagedaemon to evict pages from memory in the hope that this will free up a range of pages that satisfies the constraits of the request. This should help with things like plugging in a USB device, which often fails for some USB controllers because they can't get contigous memory.
|
| 1.85 |
14-Jun-2020 |
ad |
Remove PG_ZERO. It worked brilliantly on x86 machines from the mid-90s but having spent an age experimenting with it over the last 6 months on various machines and with different use cases it's always either break-even or a slight net loss for me.
|
| 1.84 |
11-Jun-2020 |
ad |
Counter tweaks:
- Don't need to count anonpages+filepages any more; clean+unknown+dirty for each kind of page can be summed to get the totals.
- Track the number of free pages with a counter so that it's one less thing for the allocator to do, which opens up further options there.
- Remove cpu_count_sync_one(). It has no users and doesn't save a whole lot. For the cheap option, give cpu_count_sync() a boolean parameter indicating that a cached value is okay, and rate limit the updates for cached values to hz.
|
| 1.83 |
11-Jun-2020 |
ad |
uvm_availmem(): give it a boolean argument to specify whether a recent cached value will do, or if the very latest total must be fetched. It can be called thousands of times a second and fetching the totals impacts not only the calling LWP but other CPUs doing unrelated activity in the VM system.
|
| 1.82 |
23-May-2020 |
ad |
uvm_pglistfree(): just use uvm_pagefree().
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406
|
| 1.81 |
01-Mar-2020 |
ad |
uvm_pglistalloc() / uvm_pglistfree() musn't be called from interrupt context. Assert it.
|
|
Revision tags: ad-namecache-base3
|
| 1.80 |
20-Feb-2020 |
rin |
Make this compile again with PGALLOC_VERBOSE.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.79 |
31-Dec-2019 |
ad |
branches: 1.79.2; Rename uvm_free() -> uvm_availmem().
|
| 1.78 |
27-Dec-2019 |
ad |
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
| 1.77 |
21-Dec-2019 |
ad |
Detangle the pagedaemon from uvm_fpageqlock:
- Have a single lock (uvmpd_lock) to protect pagedaemon state that was previously covered by uvmpd_pool_drain_lock plus uvm_fpageqlock. - Don't require any locks be held when calling uvm_kick_pdaemon(). - Use uvm_free().
|
| 1.76 |
21-Dec-2019 |
ad |
- Rename VM_PGCOLOR_BUCKET() to VM_PGCOLOR(). I want to reuse "bucket" for something else soon and TBH it matches what this macro does better.
- Add inlines to set/get locator values in the unused lower bits of pg->phys_addr. Begin by using it to cache the freelist index, because computing it is expensive and that shows up during profiling. Discussed on tech-kern.
|
| 1.75 |
21-Dec-2019 |
ad |
uvmexp.free -> uvm_free()
|
| 1.74 |
16-Dec-2019 |
ad |
- Extend the per-CPU counters matt@ did to include all of the hot counters in UVM, excluding uvmexp.free, which needs special treatment and will be done with a separate commit. Cuts system time for a build by 20-25% on a 48 CPU machine w/DIAGNOSTIC.
- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
|
| 1.73 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
|
Revision tags: netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
|
| 1.72 |
13-Nov-2018 |
mrg |
branches: 1.72.4; only warn once per call to uvm_pglistalloc_simple() if waiting.
|
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906
|
| 1.71 |
03-Sep-2018 |
riastradh |
Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.70 |
23-Dec-2016 |
skrll |
branches: 1.70.14; 1.70.16; PRIxPHYSMEM -> PRIxPHYSSEG to fix the build
|
| 1.69 |
23-Dec-2016 |
skrll |
Whitespace
|
| 1.68 |
23-Dec-2016 |
cherry |
"Make NetBSD great again!"
Introduce uvm_hotplug(9) to the kernel.
Many thanks, in no particular order to:
TNF, for funding the project.
Chuck Silvers - for multiple API reviews and feedback. Nick Hudson - for testing on multiple architectures and bugfix patches. Everyone who helped with boot testing.
KeK (http://www.kek.org.in) for hosting the primary developers.
|
|
Revision tags: nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base
|
| 1.67 |
26-Oct-2014 |
christos |
branches: 1.67.2; 1.67.4; Define UVMDEBUG for expensive debugging operations. Idea from chuq.
|
| 1.66 |
05-Sep-2014 |
matt |
Don't use C++ try keyword as a variable name.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
| 1.65 |
19-May-2014 |
riastradh |
Back out previous silliness -- on failure no pages are allocated.
|
| 1.64 |
19-May-2014 |
riastradh |
Don't leak memory on failure in uvm_pglistalloc_contig.
Free pages like uvm_pglistalloc_simple does.
Discovered by code inspection.
|
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
| 1.63 |
15-Sep-2013 |
martin |
branches: 1.63.2; Mark potentialy unused variables
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.62 |
27-Sep-2011 |
jym |
branches: 1.62.2; 1.62.12; 1.62.16; Modify *ASSERTMSG() so they are now used as variadic macros. The main goal is to provide routines that do as KASSERT(9) says: append a message to the panic format string when the assertion triggers, with optional arguments.
Fix call sites to reflect the new definition.
Discussed on tech-kern@. See http://mail-index.netbsd.org/tech-kern/2011/09/07/msg011427.html
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.61 |
23-Apr-2011 |
rmind |
Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.60 |
26-Jan-2011 |
enami |
Introducing inner loop prevent us from exiting from the original loop.
|
| 1.59 |
25-Jan-2011 |
matt |
When starting the second pass, don't continue the for loop but instead just test try exceeding limit.
|
| 1.58 |
24-Jan-2011 |
matt |
Use the (new) KDASSERTMSG
|
| 1.57 |
24-Jan-2011 |
matt |
Fix start_hint in "simple" alloc (fencepost error). When restarting the loop, make sure end is not above current limit. Do a quick test to see if the physseg is within the range of desired addresses.
|
| 1.56 |
23-Jan-2011 |
he |
DEBUG does not imply DIAGNOSTIC; make sure we have a non-null KASSERTMSG implementation (DIAGNOSTIC) so that the variable inside the DEBUG section gets used.
|
| 1.55 |
22-Jan-2011 |
matt |
Fix the corruption of ps->start_hint.
|
| 1.54 |
21-Jan-2011 |
matt |
Cleanup/add some asserts. no functional change.
|
| 1.53 |
21-Jan-2011 |
cegger |
buildfix: use PRIxPADDR for type paddr_t
|
| 1.52 |
18-Jan-2011 |
matt |
branches: 1.52.2; Improve the efficiency of searching for a contiguous set of free pages.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231
|
| 1.51 |
25-Nov-2010 |
uebayasi |
branches: 1.51.2; Revert vm_physseg allocation changes. A report says that it causes panics when used with mplayer in heavy load.
|
| 1.50 |
18-Nov-2010 |
cegger |
build fix: vm_physmem_index is only used with DEBUG. Fix build when DIAGNOSTIC is enabled but not DEBUG
|
| 1.49 |
18-Nov-2010 |
uebayasi |
Optimize DIAGNOSTIC check code.
|
| 1.48 |
18-Nov-2010 |
uebayasi |
Fix DIAGNOSTIC physseg find check.
|
|
Revision tags: uebayasi-xip-base6
|
| 1.47 |
14-Nov-2010 |
uebayasi |
Be a little more friendly to dynamic physical segment registration.
Maintain an array of pointer to struct vm_physseg, instead of struct array. So that VM subsystem can take its pointer safely. Pointer to this struct will replace raw paddr_t usage in the future.
Dynamic removal is not supported yet.
Only MD data structure changes, no kernel bump needed.
Tested on i386, amd64, powerpc/ibm40x, arm11.
|
|
Revision tags: uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.46 |
17-Jun-2010 |
mrg |
disable some DEBUG code uvm_pglist_add() that has severe performance problems with large mappings. i've seen my system hang for a total of 45 seconds when radeondrm is opened by X11, and it is the checks in this function that take so long.
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
| 1.45 |
10-Mar-2009 |
nonaka |
branches: 1.45.2; 1.45.4; remove "#define PGALLOC_VERBOSE".
|
| 1.44 |
09-Mar-2009 |
reinoud |
For this physical address printing use uintmax_t since on Xen PAE this length (64) is not the same as the base architecture (32).
|
| 1.43 |
09-Mar-2009 |
nonaka |
fix compile failure when PGALLOC_VERBOSE is defined.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
|
| 1.42 |
04-Jun-2008 |
ad |
branches: 1.42.6; 1.42.12; 1.42.16; - vm_page: put listq, pageq into a union alongside a LIST_ENTRY, so we can use both types of list.
- Make page coloring and idle zero state per-CPU.
- Maintain per-CPU page freelists. When freeing, put pages onto the local CPU's lists and the global lists. When allocating, prefer to take pages from the local CPU. If none are available take from the global list as done now. Proposed on tech-kern@.
|
|
Revision tags: yamt-pf42-base3
|
| 1.41 |
02-Jun-2008 |
ad |
UVM_PAGEZERO_TARGET -> UVM_PAGEZERO_LOWAT
|
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
| 1.40 |
28-Apr-2008 |
martin |
branches: 1.40.2; Remove clause 3 and 4 from TNF licenses
|
|
Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase hpcarm-cleanup-base
|
| 1.39 |
27-Feb-2008 |
ad |
branches: 1.39.2; 1.39.4; Assert uvm_fpageqlock is held in a few more places.
|
|
Revision tags: nick-csl-alignment-base5 nick-net80211-sync-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base reinoud-bufcleanup-base vmlocking-base
|
| 1.38 |
21-Jul-2007 |
ad |
branches: 1.38.6; 1.38.22; 1.38.26; 1.38.28; Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base
|
| 1.37 |
21-Feb-2007 |
thorpej |
branches: 1.37.4; 1.37.12; Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base netbsd-4-base
|
| 1.36 |
15-Sep-2006 |
yamt |
branches: 1.36.6; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.35 |
14-May-2006 |
christos |
branches: 1.35.8; XXX: GCC uninitialized.
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.34 |
11-Dec-2005 |
christos |
branches: 1.34.4; 1.34.6; 1.34.8; 1.34.12; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.33 |
27-Jun-2005 |
thorpej |
branches: 1.33.2; Use ANSI function decls.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
| 1.32 |
17-Sep-2004 |
yamt |
make free page queue filo rather than fifo. data in pages freed more recently are more likely on cpu cache.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.31 |
24-Mar-2004 |
junyoung |
Drop trailing spaces.
|
| 1.30 |
03-Nov-2003 |
yamt |
add a DEBUG check if freed PG_ZERO pages are really zero-filled.
|
| 1.29 |
01-Nov-2003 |
yamt |
in uvm_pagefree and friends, if freed pages have been marked by PG_ZERO flag, put them to PGFL_ZEROS queue rather than default one so that we can re-use zero-filled pages efficiently.
|
| 1.28 |
26-Aug-2003 |
yamt |
use VM_PAGE_TO_PHYS macro instead of using phys_addr directly.
|
| 1.27 |
02-Aug-2003 |
drochner |
sync comments with reality
|
| 1.26 |
10-Mar-2003 |
thorpej |
branches: 1.26.2; Make PGALLOC_VERBOSE compile where size_t != int.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.25 |
02-Nov-2002 |
perry |
/*CONTCOND*/ while (0)'ed macros
|
|
Revision tags: kqueue-aftermerge kqueue-beforemerge gehenna-devsw-base kqueue-base
|
| 1.24 |
27-Jun-2002 |
drochner |
Big cleanup and speed improvements to pglist_alloc code: -pass vm_physseg* instead of physseg index, and PFN (int) instead of physical address (could be done even more) -simplify detection of boundary crossing and behave more intelligently in this case -take stuff out of the inner loops, or put into "#ifdef DEBUG" (because we move along physsegs we don't need to check that the pages are physically contigous) -make the "simple" and "contigous" branches look more uniform; at least the outer loops might coalesce one day
|
| 1.23 |
20-Jun-2002 |
enami |
Shift by PAGE_SHIFT instead of dividing by PAGE_SIZE.
|
| 1.22 |
18-Jun-2002 |
drochner |
Make the DMA memory allocators (uvm_pglistalloc()) obey the preferences expressed by freelist assignment, to avoid wasting valuable "low memory" to devices which don't really need it. comments: -I'm not sure searching the physsegs within a freelist beginning with the biggest is the right thing. This is what the "memory steal" code in uvm_page.c does, so keep it consistent. -There seems to be some confusion whether the upper address limit passed is inclusive or not. Stays on the save side, possibly leaving one page out. -The boundary/pagemask check can be simplified, also some arguments passed are only used for diagnostic checks. -Integration with UVM_PAGE_TRKOWN???
|
| 1.21 |
02-Jun-2002 |
drochner |
move initialization of the "struct pglist" returned by uvm_pglistalloc() from the calling code into uvm_pglistalloc() itself for consistency and easier error handling
|
| 1.20 |
29-May-2002 |
drochner |
Add another allocator to uvm_pglistalloc() which is used in the case where no alignment / boundary / nsegs restrictions apply. This one doesn't insist in a contigous range, and it honours the "waitok" flag, thus succeeds in situations which were hopeless with the existing one.
(A solution which searches for a minimum number of contiguous ranges using some best-fit or so algorithm would be expensive to implement; I believe the "either-or" done here does reflect the current use by bus_dma quite well.)
Now agp memory allocation is robust for me. (tested on i810)
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base
|
| 1.19 |
10-Nov-2001 |
lukem |
branches: 1.19.4; 1.19.8; add RCSIDs, and in some cases, slightly cleanup #include order
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.18 |
15-Sep-2001 |
chs |
branches: 1.18.2; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.17 |
27-Jun-2001 |
thorpej |
branches: 1.17.2; 1.17.4; Macro'ize the code that checks the free and inactive thresholds and wakes the pagedaemon.
|
| 1.16 |
26-May-2001 |
chs |
replace vm_page_t with struct vm_page *.
|
| 1.15 |
25-May-2001 |
chs |
remove trailing whitespace.
|
| 1.14 |
29-Apr-2001 |
thorpej |
Implement page coloring, using a round-robin bucket selection algorithm (Solaris calls this "Bin Hopping").
This implementation currently relies on MD code to define a constant defining the number of buckets. This will change reasonably soon (MD code will be able to dynamically size the bucket array).
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.13 |
18-Feb-2001 |
chs |
branches: 1.13.2; clean up DIAGNOSTIC checks, use KASSERT().
|
| 1.12 |
25-Nov-2000 |
chs |
lots of cleanup: use queue.h macros and KASSERT(). address amap offsets in pages instead of bytes. make amap_ref() and amap_unref() take an amap, offset and length instead of a vm_map_entry_t. improve whitespace and comments.
|
| 1.11 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.10 |
20-May-2000 |
thorpej |
Clean up a comment.
|
| 1.9 |
24-Apr-2000 |
thorpej |
Changes necessary to implement pre-zero'ing of pages in the idle loop: - Make page free lists have two actual queues: known-zero pages and pages with unknown contents. - Implement uvm_pageidlezero(). This function attempts to zero up to the target number of pages until the target has been reached (currently target is `all free pages') or until whichqs becomes non-zero (indicating that a process is ready to run). - Define a new hook for the pmap module for pre-zero'ing pages. This is used to zero the pages using uncached access. This allows us to zero as many pages as we want without polluting the cache.
In order to use this feature, each platform must add the appropropriate glue in their idle loop.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.8 |
22-Jul-1999 |
thorpej |
branches: 1.8.2; Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.7 |
24-May-1999 |
thorpej |
- Change uvm_{lock,unlock}_fpageq() to return/take the previous interrupt level directly, instead of making the caller wrap the calls in splimp()/splx(). - Add a comment documenting that interrupts that cause memory allocation must be blocked while the free page queue is locked.
Since interrupts must be blocked while this lock is asserted, tying them together like this helps to prevent mistakes.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base kenh-if-detach-base chs-ubc-base
|
| 1.6 |
13-Aug-1998 |
eeh |
branches: 1.6.2; 1.6.8; Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.5 |
08-Jul-1998 |
thorpej |
branches: 1.5.2; Add support for multiple memory free lists. There is at least one default free list, and 0 - N additional free list, in order of descending priority.
A new page allocation function, uvm_pagealloc_strat(), has been added, providing three page allocation strategies:
- normal: high -> low priority free list walk, taking the page off the first free list that has one.
- only: attempt to allocate a page only from the specified free list, failing if that free list has none available.
- fallback: if `only' fails, fall back on `normal'.
uvm_pagealloc(...) is provided for normal use (and is a synonym for uvm_pagealloc_strat(..., UVM_PGA_STRAT_NORMAL, 0); the free list argument is ignored for the `normal' case).
uvm_page_physload() now specified which free list the pages will be loaded onto. This means that some platforms which have multiple physical memory segments may define additional vm_physsegs if they wish to break individual physical segments into differing priorities.
Machine-dependent code must define _at least_ the following constants in <machine/vmparam.h>:
VM_NFREELIST: the number of free lists the system will have
VM_FREELIST_DEFAULT: the default freelist (should always be 0, but is defined in machdep code so that it's with all of the other free list-related constants).
Additional free list names may be defined by machine-dependent code, but they will only be used by machine-dependent code (e.g. for loading the vm_physsegs).
|
| 1.4 |
05-May-1998 |
kleink |
Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
| 1.3 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
| 1.11 |
13-Apr-2020 |
ad |
Comments
|
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.10 |
28-Dec-2019 |
martin |
branches: 1.10.6; Include <sys/param.h> here directly to have a sane default for COHERENCY_UNIT.
|
| 1.9 |
27-Dec-2019 |
ad |
Redo the page allocator to perform better, especially on multi-core and multi-socket systems. Proposed on tech-kern. While here:
- add rudimentary NUMA support - needs more work. - remove now unused "listq" from vm_page.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 rmind-uvmplock-base
|
| 1.8 |
06-Nov-2010 |
uebayasi |
branches: 1.8.60; Provide a forward declaration of "struct vm_page", whose internal is opaque to uvm_pglist.h users. Users don't need to pull in uvm_page.h.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base wrstuden-revivesa-base mjf-devfs2-base
|
| 1.7 |
04-Jun-2008 |
ad |
branches: 1.7.16; 1.7.18; 1.7.20; - vm_page: put listq, pageq into a union alongside a LIST_ENTRY, so we can use both types of list.
- Make page coloring and idle zero state per-CPU.
- Maintain per-CPU page freelists. When freeing, put pages onto the local CPU's lists and the global lists. When allocating, prefer to take pages from the local CPU. If none are available take from the global list as done now. Proposed on tech-kern@.
|
|
Revision tags: yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
| 1.6 |
28-Apr-2008 |
martin |
branches: 1.6.2; Remove clause 3 and 4 from TNF licenses
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase nick-csl-alignment-base5 yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base matt-armv6-nbase jmcneill-base netbsd-4-0-RC4 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE yamt-splraiseipl-base2 netbsd-3-1-RC4 yamt-splraiseipl-base netbsd-3-1-RC3 yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 netbsd-3-1-RC2 netbsd-3-1-RC1 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase netbsd-3-0-1-RELEASE gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base netbsd-3-0-RELEASE netbsd-3-0-RC6 yamt-readahead-base3 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 yamt-readahead-base2 netbsd-3-0-RC2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base netbsd-3-0-RC1 yamt-vop-base3 netbsd-2-0-3-RELEASE yamt-vop-base2 thorpej-vnode-attr-base netbsd-2-1-RELEASE yamt-vop-base netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 ktrace-lwp-base netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base kqueue-base
|
| 1.5 |
25-Aug-2001 |
chs |
branches: 1.5.118; 1.5.120; 1.5.122; use the correct symbol for multi-include protection.
|
| 1.4 |
25-May-2001 |
chs |
branches: 1.4.2; remove trailing whitespace.
|
| 1.3 |
02-May-2001 |
thorpej |
Support dynamic sizing of the page color bins. We also support dynamically re-coloring pages; as machine-dependent code discovers the size of the system's caches, it may call uvm_page_recolor() with the new number of colors to use. If the new mumber of colors is smaller (or equal to) the current number of colors, then uvm_page_recolor() is a no-op.
The system defaults to one bucket if machine-dependent code does not initialize uvmexp.ncolors before uvm_page_init() is called.
Note that the number of color bins should be initialized to something reasonable as early as possible -- for many early memory allocations, we live with the consequences of the page choice for the lifetime of the boot.
|
| 1.2 |
29-Apr-2001 |
thorpej |
Implement page coloring, using a round-robin bucket selection algorithm (Solaris calls this "Bin Hopping").
This implementation currently relies on MD code to define a constant defining the number of buckets. This will change reasonably soon (MD code will be able to dynamically size the bucket array).
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.1 |
26-Jun-2000 |
mrg |
branches: 1.1.2; 1.1.4; remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.20 |
13-Jan-2024 |
tnn |
uvm: change type of uvm_physseg.start_hint from u_int to u_long
Avoids assertion failure in uvm_pglistalloc_s_ps() with large paddrs. PR kern/57683.
|
|
Revision tags: thorpej-ifq-base thorpej-altq-separation-base
|
| 1.19 |
23-Sep-2023 |
ad |
uvm_phys_to_vm_page() turns out to be a fairly central routine due to the way that some of the pmaps work, so try to optimise it a little.
|
| 1.18 |
09-Apr-2023 |
riastradh |
uvm(9): KASSERT(A && B) -> KASSERT(A); KASSERT(B)
|
|
Revision tags: netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.17 |
15-Jul-2020 |
rin |
branches: 1.17.20; Fix typo. Use PRIxPADDR rather than casting.
|
| 1.16 |
13-Jul-2020 |
mrg |
paddr_t can't be printed by "%lx" in some platforms.
fix the eg, i386 build.
|
| 1.15 |
13-Jul-2020 |
mrg |
actually show the start/end that failed start < end in uvm_page_physload().
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.14 |
15-Mar-2020 |
ad |
uvm_physseg: cluster fields used during RB tree lookup for PHYS_TO_VM_PAGE().
|
|
Revision tags: is-mlppp-base ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.13 |
21-Dec-2019 |
ad |
- Rename VM_PGCOLOR_BUCKET() to VM_PGCOLOR(). I want to reuse "bucket" for something else soon and TBH it matches what this macro does better.
- Add inlines to set/get locator values in the unused lower bits of pg->phys_addr. Begin by using it to cache the freelist index, because computing it is expensive and that shows up during profiling. Discussed on tech-kern.
|
| 1.12 |
20-Dec-2019 |
ad |
KNF
|
| 1.11 |
13-Dec-2019 |
ad |
Break the global uvm_pageqlock into a per-page identity lock and a private lock for use of the pagedaemon policy code. Discussed on tech-kern.
PR kern/54209: NetBSD 8 large memory performance extremely low PR kern/54210: NetBSD-8 processes presumably not exiting PR kern/54727: writing a large file causes unreasonable system behaviour
|
|
Revision tags: phil-wifi-20191119
|
| 1.10 |
20-Sep-2019 |
maxv |
Fix programming mistake: 'paddrp' is a pointer given as argument, setting it to NULL in the called function does not set it to NULL in the caller.
Actually, the callers of these functions do not do anything with the special error handling, so drop the unused checks and the NULL assignments altogether.
Found by the lgtm bot.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
| 1.9 |
21-Jan-2018 |
christos |
branches: 1.9.4; CID-1427737: Pacify coverity using KASSERT
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
|
| 1.8 |
19-Mar-2017 |
riastradh |
branches: 1.8.12; __diagused police
|
|
Revision tags: nick-nhusb-base-20170204
|
| 1.7 |
02-Feb-2017 |
uwe |
branches: 1.7.2; Add missing spaces in split string literals.
|
|
Revision tags: bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.6 |
29-Dec-2016 |
rin |
branches: 1.6.2; 1.6.4; Protect uvm_physseg_set_avail_{start,end} by UVM_PHYSSEG_LEGACY. All the ports other than acorn26 do not use them any longer. Ok cherry
|
| 1.5 |
25-Dec-2016 |
cherry |
Make uvm_physseg_set_avail_start(9) available unconditional to UVM_HOTPLUG
|
| 1.4 |
25-Dec-2016 |
christos |
Provide a set_available_start method for the non UVM_HOTPLUG case.
|
| 1.3 |
23-Dec-2016 |
cherry |
Omitted assigning handle return value for the case: (VM_PHYSSEG_STRAT == VM_PSTRAT_RANDOM)
Fix this.
|
| 1.2 |
22-Dec-2016 |
cherry |
convention about function names for predicate checking: s/uvm_physseg_valid()/uvm_physseg_valid_p()/
per. matt@
|
| 1.1 |
19-Dec-2016 |
cherry |
This is a preview of the uvm_hotplug(9) api code. This commit does not actually introduce the UVM_HOTPLUG option. However it does provide developers a way to review, test and try out the API.
To do this, please go to tests/sys/uvm/ and build and run the tests there. The tests also have a set of basic load tests, to get a measure of the performance penalties due to enabling the UVM_HOTPLUG option.
In order to build the tests you need to have at least done the following in $SRC/
cd $SRC; $NBMAKE do-distrib-dirs includes cd $SRC/lib/csu; $NBMAKE all install || exit cd $SRC/external/gpl3/gcc/lib/libgcc/libgcc_s; $NBMAKE all install || exit cd $SRC/external/gpl3/gcc/lib/libgcc/libgcc; $NBMAKE all install || exit cd $SRC/lib/libc; $NBMAKE includes all install || exit cd $SRC/lib/libpthread; $NBMAKE all install || exit cd $SRC/lib/libm; $NBMAKE all install || exit cd $SRC/external/gpl3/gcc/lib/libstdc++-v3/; $NBMAKE all install || exit
Once the development environment has these userspace libraries, one can simple build using $NBMAKE and finally test the kernel API using
atf-run|atf-report
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.9 |
13-Jan-2024 |
tnn |
uvm: change type of uvm_physseg.start_hint from u_int to u_long
Avoids assertion failure in uvm_pglistalloc_s_ps() with large paddrs. PR kern/57683.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.8 |
02-Jan-2017 |
cherry |
branches: 1.8.2; 1.8.6; 1.8.18; 1.8.52; Move sys/uvm/uvm_physseg.h inclusion to within _KERNEL only.
|
| 1.7 |
29-Dec-2016 |
rin |
Protect uvm_physseg_set_avail_{start,end} by UVM_PHYSSEG_LEGACY. All the ports other than acorn26 do not use them any longer. Ok cherry
|
| 1.6 |
26-Dec-2016 |
cherry |
Add copyright info.
After sufficient poking by Taylor.
|
| 1.5 |
24-Dec-2016 |
maya |
as a stopgap fix make all of uvm_physseg.h kernel-only. this file uses paddr_t which isn't available to userland, breaking builds that use uvm headers, like devel/libuv on pkgsrc.
pointed out by Carsten Kunze on pkgsrc-users.
ok riastradh
|
| 1.4 |
23-Dec-2016 |
cherry |
"Make NetBSD great again!"
Introduce uvm_hotplug(9) to the kernel.
Many thanks, in no particular order to:
TNF, for funding the project.
Chuck Silvers - for multiple API reviews and feedback. Nick Hudson - for testing on multiple architectures and bugfix patches. Everyone who helped with boot testing.
KeK (http://www.kek.org.in) for hosting the primary developers.
|
| 1.3 |
22-Dec-2016 |
cherry |
Turn off uvm_hotplug option selection until we actually have it.
Should fix the build.
|
| 1.2 |
22-Dec-2016 |
cherry |
convention about function names for predicate checking: s/uvm_physseg_valid()/uvm_physseg_valid_p()/
per. matt@
|
| 1.1 |
19-Dec-2016 |
cherry |
This is a preview of the uvm_hotplug(9) api code. This commit does not actually introduce the UVM_HOTPLUG option. However it does provide developers a way to review, test and try out the API.
To do this, please go to tests/sys/uvm/ and build and run the tests there. The tests also have a set of basic load tests, to get a measure of the performance penalties due to enabling the UVM_HOTPLUG option.
In order to build the tests you need to have at least done the following in $SRC/
cd $SRC; $NBMAKE do-distrib-dirs includes cd $SRC/lib/csu; $NBMAKE all install || exit cd $SRC/external/gpl3/gcc/lib/libgcc/libgcc_s; $NBMAKE all install || exit cd $SRC/external/gpl3/gcc/lib/libgcc/libgcc; $NBMAKE all install || exit cd $SRC/lib/libc; $NBMAKE includes all install || exit cd $SRC/lib/libpthread; $NBMAKE all install || exit cd $SRC/lib/libm; $NBMAKE all install || exit cd $SRC/external/gpl3/gcc/lib/libstdc++-v3/; $NBMAKE all install || exit
Once the development environment has these userspace libraries, one can simple build using $NBMAKE and finally test the kernel API using
atf-run|atf-report
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.43 |
20-Aug-2022 |
riastradh |
uvm/uvm_pmap.h: Fix missing types and forward declarations.
- Need sys/types.h for vaddr_t, paddr_t, u_int, &c. - Forward-declare struct vm_page so we don't have to rely on machine/pmap.h to do so.
|
| 1.42 |
16-Feb-2022 |
riastradh |
uvm: MI declaration of pmap_pv_protect.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.41 |
07-Mar-2021 |
skrll |
<tab> consistency
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.40 |
14-Mar-2020 |
ad |
branches: 1.40.4; pmap_remove_all(): Return a boolean value to indicate the behaviour. If true, all mappings have been removed, the pmap is totally cleared out, and UVM can then avoid doing the work to call pmap_remove() for each map entry. If false, either nothing has been done, or some helpful arch-specific voodoo has taken place.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE is-mlppp-base ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
|
| 1.39 |
19-May-2018 |
jdolecek |
branches: 1.39.2; add experimental new function uvm_direct_process(), to allow of read/writes of contents of uvm pages without mapping them into kernel, using direct map or moral equivalent; pmaps supporting the interface need to provide pmap_direct_process() and define PMAP_DIRECT
implement the new interface for amd64; I hear alpha and mips might be relatively easy to add too, but I lack the knowledge
part of resolution for PR kern/53124
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-7-2-RELEASE netbsd-8-0-RELEASE netbsd-8-0-RC2 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base tls-maxphys-base
|
| 1.38 |
02-Feb-2013 |
matt |
branches: 1.38.36; Remove __BEGIN_DECLS/__END_DECLS Allow pmap_kenter_pa to be a macro.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.37 |
30-Jun-2011 |
matt |
branches: 1.37.2; 1.37.12; Move PMAP_* cache defines to before inclusion of <machine/pmap.h>
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.36 |
11-Feb-2011 |
jmcneill |
add optional MD pmap_mmap_flags macro for passing flags between cdev_mmap and pmap_enter, ok matt@
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231
|
| 1.35 |
29-Nov-2010 |
mrg |
branches: 1.35.2; 1.35.4; put the kernel-only externs back before <machine/pmap.h>. fixes ofppc build.
|
| 1.34 |
26-Nov-2010 |
christos |
don't leak kernel variables to userland!
|
|
Revision tags: uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.33 |
06-Jul-2010 |
cegger |
Turn PMAP_NOCACHE into MI flag. Add MI flags PMAP_WRITE_COMBINE, PMAP_WRITE_BACK, PMAP_NOCACHE_OVR. Update pmap(9) manpage.
hppa: Remove MD PMAP_NOCACHE flag as it exists as MI flag mips: Rename MD PMAP_NOCACHE to PGC_NOCACHE.
x86: Implement new MI flags using Page-Attribute Tables. x86: Implement BUS_SPACE_MAP_PREFETCHABLE.
Patch presented on tech-kern@: http://mail-index.netbsd.org/tech-kern/2010/06/30/msg008458.html
No comments on this last version. Forgot to commit this in previous.
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211
|
| 1.32 |
07-Nov-2009 |
cegger |
branches: 1.32.2; 1.32.4; Add a flags argument to pmap_kenter_pa(9). Patch showed on tech-kern@ http://mail-index.netbsd.org/tech-kern/2009/11/04/msg006434.html No objections.
|
|
Revision tags: jym-xensuspend-nbase
|
| 1.31 |
21-Oct-2009 |
rmind |
Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base8
|
| 1.30 |
19-Aug-2009 |
thorpej |
Use PMAP_ENABLE_PMAP_KMPAGE to enable PMAP_KMPAGE. We still want the bit defined in the MI space, not in an MD header.
|
|
Revision tags: yamt-nfs-mp-base7
|
| 1.29 |
19-Aug-2009 |
thorpej |
Rationalize the definition of PMAP_KMPAGE.
|
|
Revision tags: jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
| 1.28 |
23-Apr-2009 |
cegger |
use top-most bits for PMAP_MD_MASK instead something in the middle. per request from christos@
|
| 1.27 |
21-Apr-2009 |
cegger |
change pmap flags argument from int to u_int. discussed with christos@ on source-changes-d@
|
| 1.26 |
18-Apr-2009 |
cegger |
Introduce PMAP_MD_MASK. Reserves PMAP bits for use in MD code. Presented on tech-kern@, port-i386@ and port-amd64@ ok ad@
|
|
Revision tags: nick-hppapmap-base2 haad-dm-base2 haad-nbase2 haad-dm-base mjf-devfs2-base
|
| 1.25 |
10-Dec-2008 |
pooka |
branches: 1.25.2; Make kernel_pmap_ptr a const. Requested by steve_martin.
|
| 1.24 |
09-Dec-2008 |
pooka |
Make pmap_kernel() a MI macro for struct pmap *kernel_pmap_ptr, which is now the "API" provided by the pmap module. pmap_kernel() remains as the syntactic sugar.
Bonus cosmetics round: move all the pmap_t pointer typedefs into uvm_pmap.h.
Thanks to Greg Oster for providing cpu muscle for doing test builds.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 simonb-wapbl-nbase simonb-wapbl-base
|
| 1.23 |
16-Jul-2008 |
matt |
branches: 1.23.2; 1.23.10; Default PMAP_KMPAGE to 0 unless it's been previously defined by <machine/pmap.h>
|
| 1.22 |
16-Jul-2008 |
matt |
Add PMAP_KMPAGE flag for pmap_kenter_pa. This allows pmaps to know that the page being entered is being for the kernel memory allocator. Such pages should have no references and don't need bookkeeping.
|
|
Revision tags: nick-csl-alignment-base5 wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base reinoud-bufcleanup-base vmlocking-base
|
| 1.21 |
16-Jul-2007 |
macallan |
branches: 1.21.28; 1.21.32; 1.21.34; 1.21.36; 1.21.38; change pmap_phys_address()s parameter to paddr_t since that's what it gets fed from mmap*() anyway approved by gimpy
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base mjf-ufs-trans-base ad-audiomp-base
|
| 1.20 |
21-Feb-2007 |
thorpej |
branches: 1.20.4; Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.19 |
11-Dec-2005 |
christos |
branches: 1.19.26; merge ktrace-lwp.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 yamt-readahead-base3 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 yamt-readahead-base2 netbsd-3-0-RC2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base netbsd-3-0-RC1 yamt-vop-base3 netbsd-2-0-3-RELEASE yamt-vop-base2 thorpej-vnode-attr-base netbsd-2-1-RELEASE yamt-vop-base netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base ktrace-lwp-base
|
| 1.18 |
27-Mar-2004 |
he |
branches: 1.18.16; Conditionalize a few more declarations, as they may be defined as macros: pmap_collect, pmap_reference, and pmap_remove (observed lossage for vax).
|
| 1.17 |
24-Mar-2004 |
junyoung |
Nuke __P().
|
| 1.16 |
23-Mar-2004 |
junyoung |
pmap_copy() and pmap_update() might be defined as macros in <machine/pmap.h>.
|
| 1.15 |
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
| 1.14 |
10-May-2003 |
thorpej |
branches: 1.14.2; Back out the following chagne: http://mail-index.netbsd.org/source-changes/2003/05/08/0068.html
There were some side-effects that I didn't anticipate, and fixing them is proving to be more difficult than I thought, do just eject for now. Maybe one day we can look at this again.
Fixes PR kern/21517.
|
| 1.13 |
08-May-2003 |
thorpej |
Simplify the way the bounds of the managed kernel virtual address space is advertised to UVM by making virtual_avail and virtual_end first-class exported variables by UVM. Machine-dependent code is responsible for initializing them before main() is called. Anything that steals KVA must adjust these variables accordingly.
This reduces the number of instances of this info from 3 to 1, and simplifies the pmap(9) interface by removing the pmap_virtual_space() function call, and removing two arguments from pmap_steal_memory().
This also eliminates some kludges such as having to burn kernel_map entries on space used by the kernel and stolen KVA.
This also eliminates use of VM_{MIN,MAX}_KERNEL_ADDRESS from MI code, this giving MD code greater flexibility over the bounds of the managed kernel virtual address space if a given port's specific platforms can vary in this regard (this is especially true of the evb* ports).
|
| 1.12 |
18-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.11 |
22-Sep-2002 |
chs |
add pmap_remove_all() hook (empty on most platforms so far).
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
| 1.10 |
10-Apr-2002 |
thorpej |
Allow pmap_copy_page() and pmap_zero_page() to be #define'd in <machine/pmap.h>.
|
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf
|
| 1.9 |
10-Sep-2001 |
chris |
Update pmap_update to now take the updated pmap as an argument. This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.
Currently this is a no-op on most platforms, so they should see no difference.
Reviewed by Jason.
|
|
Revision tags: thorpej-devvp-base
|
| 1.8 |
05-Aug-2001 |
matt |
branches: 1.8.2; Don't include <machine/pmap.h> and <machine/vmparam.h> if _KERNEL isn't defined. Include them explicitly in the few kvm_arch.c that need them.
|
| 1.7 |
25-May-2001 |
chs |
branches: 1.7.2; remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge
|
| 1.6 |
24-Apr-2001 |
thorpej |
Some spring cleaning.
|
|
Revision tags: thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.5 |
22-Apr-2001 |
thorpej |
Remove pmap_kenter_pgs(). It was never really adopted by anything, and the interface itself wasn't as flexible as callers would have probably liked.
|
| 1.4 |
22-Apr-2001 |
thorpej |
Undo a misguided previous change to the pmap_update() API.
|
| 1.3 |
22-Apr-2001 |
thorpej |
Make pmap_virtual_space() a required pmap function, even on platforms which have pmap_steal_memory(). This is to reduce the API differences between pmaps that implement pmap_steal_memory() and pmaps which do not.
Note that pmap_steal_memory() needs to adjust *vstartp and/or *vendp only if it used addresses within the range provided to UVM via the pmap_virtual_space() call. I.e. it is not necessary to do so in any current pmap_steal_memory() implementation.
|
| 1.2 |
22-Apr-2001 |
thorpej |
Give pmap_update() an argument (a pmap_t) so that it knows which pmap it should be updating.
|
| 1.1 |
27-Jun-2000 |
mrg |
branches: 1.1.2; 1.1.4; more vm header file changes:
<vm/vm_extern.h> merged into <uvm/uvm_extern.h> <vm/vm_page.h> merged into <uvm/uvm_page.h> <vm/pmap.h> has become <uvm/uvm_pmap.h>
this leaves just <vm/vm.h> in NetBSD.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase nick-csl-alignment-base5 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base matt-armv6-nbase jmcneill-base netbsd-4-0-RC4 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.4 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 yamt-readahead-base3 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 yamt-readahead-base2 netbsd-3-0-RC2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base netbsd-3-0-RC1 yamt-vop-base3 netbsd-2-0-3-RELEASE yamt-vop-base2 thorpej-vnode-attr-base netbsd-2-1-RELEASE yamt-vop-base netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base ktrace-lwp-base
|
| 1.3 |
07-Aug-2003 |
agc |
Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base kqueue-base
|
| 1.2 |
25-May-2001 |
chs |
branches: 1.2.22; remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.1 |
25-Jun-2000 |
mrg |
branches: 1.1.2; 1.1.4; <vm/vm_prot.h> becomes <uvm/uvm_prot.h>
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.16 |
23-Sep-2023 |
ad |
Repply this change with a couple of bugs fixed:
- Do away with separate pool_cache for some kernel objects that have no special requirements and use the general purpose allocator instead. On one of my test systems this makes for a small (~1%) but repeatable reduction in system time during builds presumably because it decreases the kernel's cache / memory bandwidth footprint a little. - vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
|
| 1.15 |
12-Sep-2023 |
ad |
Back out recent change to replace pool_cache with then general allocator. Will return to this when I have time again.
|
| 1.14 |
10-Sep-2023 |
ad |
- Do away with separate pool_cache for some kernel objects that have no special requirements and use the general purpose allocator instead. On one of my test systems this makes for a small (~1%) but repeatable reduction in system time during builds presumably because it decreases the kernel's cache / memory bandwidth footprint a little. - vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.13 |
19-May-2020 |
ad |
Drop & re-acquire vmobjlock less often.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.12 |
08-Mar-2020 |
ad |
Only need a read lock for uvm_pagelookup().
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.11 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
|
| 1.10 |
19-May-2018 |
jdolecek |
branches: 1.10.2; 1.10.8; adjust heuristics for read-ahead to skip the full read-ahead when last page of the range is already cached; this speeds up I/O from cache, since it avoids the lookup and allocation overhead
on my system I observed 4.5% - 15% improvement for cached I/O - from 2.2 GB/s to 2.3 GB/s for cached reads using non-direct UBC, and from 5.6 GB/s to 6.5 GB/s for UBC using direct map
part of PR kern/53124
|
|
Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407
|
| 1.9 |
30-Mar-2018 |
mlelstv |
Increase UVM read ahead window limit a bit to match concurrency of reading from the raw device.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-7-2-RELEASE netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.8 |
12-Jun-2011 |
rmind |
branches: 1.8.12; 1.8.52; Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 rmind-uvmplock-base
|
| 1.7 |
15-Oct-2010 |
tsutsui |
branches: 1.7.6; Make common kernel module binaries work on both sun3 and sun3x. Tested on 3/160 (on TME) and (real) 3/80.
XXX: module files can be loaded only on single user?
|
|
Revision tags: yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 jym-xensuspend-nbase
|
| 1.6 |
10-Jun-2009 |
yamt |
branches: 1.6.2; 1.6.4; - add a function to perform explicit read-ahead. - ra_startio: tweak locking a bit.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.5 |
02-Jan-2008 |
ad |
branches: 1.5.10; 1.5.24; Merge vmlocking2 to head.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base
|
| 1.4 |
11-May-2007 |
tsutsui |
branches: 1.4.8; 1.4.14; 1.4.16; 1.4.20; Add temporary workaround for PR kern/36019 (panic on sun2 and sun3). Ok'ed by yamt.
|
|
Revision tags: thorpej-atomic-base
|
| 1.3 |
12-Mar-2007 |
ad |
branches: 1.3.2; Pass an ipl argument to pool_init/POOL_INIT to be used when initializing the pool's lock.
|
|
Revision tags: ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base ktrace-lwp-base
|
| 1.2 |
29-Nov-2005 |
yamt |
branches: 1.2.2; 1.2.20; 1.2.28; 1.2.30; 1.2.34; add files i forgot to add when merging yamt-readahead branch.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2
|
| 1.1 |
15-Nov-2005 |
yamt |
branches: 1.1.2; file uvm_readahead.c was initially added on branch yamt-readahead.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 jym-xensuspend-nbase
|
| 1.4 |
10-Jun-2009 |
yamt |
branches: 1.4.22; - add a function to perform explicit read-ahead. - ra_startio: tweak locking a bit.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.3 |
02-Jan-2008 |
ad |
branches: 1.3.10; 1.3.24; Merge vmlocking2 to head.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase nick-csl-alignment-base5 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base jmcneill-base netbsd-4-0-RC4 bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base ktrace-lwp-base
|
| 1.2 |
29-Nov-2005 |
yamt |
branches: 1.2.2; 1.2.20; 1.2.50; 1.2.56; 1.2.60; 1.2.64; add files i forgot to add when merging yamt-readahead branch.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2
|
| 1.1 |
15-Nov-2005 |
yamt |
branches: 1.1.2; file uvm_readahead.h was initially added on branch yamt-readahead.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.1 |
17-Jul-2023 |
riastradh |
uvm(9): One rndsource for faults -- not one per CPU.
All relevant state is per-CPU anyway; the only substantive difference this makes is how many entries appear in `rndctl -l' output and what they are called -- formerly the somewhat confusing `cpuN', meaning `page faults on cpuN', and now just `uvmfault'. I don't think there's any real value in being able to enable or disable measurement or counting of page faults on one CPU vs others, so although this could be a minor compatibility change, it's hard to imagine it matters much.
XXX kernel ABI change in struct cpu_info
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.46 |
14-Jun-2020 |
ad |
Remove PG_ZERO. It worked brilliantly on x86 machines from the mid-90s but having spent an age experimenting with it over the last 6 months on various machines and with different use cases it's always either break-even or a slight net loss for me.
|
| 1.45 |
11-Jun-2020 |
ad |
Counter tweaks:
- Don't need to count anonpages+filepages any more; clean+unknown+dirty for each kind of page can be summed to get the totals.
- Track the number of free pages with a counter so that it's one less thing for the allocator to do, which opens up further options there.
- Remove cpu_count_sync_one(). It has no users and doesn't save a whole lot. For the cheap option, give cpu_count_sync() a boolean parameter indicating that a cached value is okay, and rate limit the updates for cached values to hz.
|
| 1.44 |
11-Jun-2020 |
ad |
uvm_availmem(): give it a boolean argument to specify whether a recent cached value will do, or if the very latest total must be fetched. It can be called thousands of times a second and fetching the totals impacts not only the calling LWP but other CPUs doing unrelated activity in the VM system.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.43 |
31-Dec-2019 |
ad |
Rename uvm_free() -> uvm_availmem().
|
| 1.42 |
21-Dec-2019 |
ad |
uvmexp.free -> uvm_free()
|
| 1.41 |
16-Dec-2019 |
ad |
- Extend the per-CPU counters matt@ did to include all of the hot counters in UVM, excluding uvmexp.free, which needs special treatment and will be done with a separate commit. Cuts system time for a build by 20-25% on a 48 CPU machine w/DIAGNOSTIC.
- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609
|
| 1.40 |
09-May-2019 |
skrll |
Avoid KASSERT(!cpu_intr_p()) when breaking into ddb and issuing
show uvmexp
|
|
Revision tags: isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.39 |
02-Dec-2017 |
mrg |
branches: 1.39.4; add two new members to uvmexp_sysctl{}: bootpages and poolpages. bootpages is set to the pages allocated via uvm_pageboot_alloc(). poolpages is calculated from the list of pools nr_pages members.
this brings us closer to having a valid total of pages known by the system, vs actual pages originally managed.
XXX: poolpages needs some handling for PR_RECURSIVE pools still.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
| 1.38 |
01-Dec-2016 |
mrg |
fix the output of ddb's "show uvmexp" and also print the reserve_pagedaemon, reserve_kernel, and zeropages values.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.37 |
17-May-2011 |
mrg |
branches: 1.37.14; 1.37.32; 1.37.36; move and rename the uvm history code out of uvm_stat to "kernhist".
rename "UVMHIST" option to enable the uvm histories.
TODO: - make UVMHIST properly depend upon KERNHIST - enable dynamic registration of histories. this is mostly just allocating something in a bitmap, and is only for viewing multiple histories in a merged form.
tested on amd64 and sparc64.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.36 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base
|
| 1.35 |
05-Jan-2011 |
enami |
branches: 1.35.2; 1.35.4; Fix format string; use PRIu64 for uint64_t.
|
| 1.34 |
04-Jan-2011 |
matt |
Print the number of page colors in use with db> show uvm
|
|
Revision tags: matt-mips64-premerge-20101231
|
| 1.33 |
20-Dec-2010 |
matt |
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
|
|
Revision tags: uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211 jym-xensuspend-nbase
|
| 1.32 |
21-Oct-2009 |
rmind |
branches: 1.32.4; Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base mjf-devfs2-base
|
| 1.31 |
08-Aug-2008 |
skrll |
branches: 1.31.12; Make "show uvmhist" available to all arches (not just sparc*) in ddb.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase nick-csl-alignment-base5 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base matt-armv6-nbase jmcneill-base netbsd-4-0-RC4 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base netbsd-4-base
|
| 1.30 |
15-Sep-2006 |
yamt |
branches: 1.30.50; 1.30.54; 1.30.56; 1.30.58; 1.30.60; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base yamt-readahead-base3 ktrace-lwp-base
|
| 1.29 |
29-Nov-2005 |
yamt |
branches: 1.29.8; 1.29.20; read-ahead statistics.
|
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.28 |
27-Jun-2005 |
thorpej |
branches: 1.28.2; 1.28.8; Use ANSI function decls.
|
| 1.27 |
15-May-2005 |
yamt |
remove anon related statistics which are no longer used.
|
|
Revision tags: kent-audio2-base
|
| 1.26 |
27-Apr-2005 |
yamt |
uvmexp_print: print swpgavail as well.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio1-beforemerge kent-audio1-base
|
| 1.25 |
23-Nov-2004 |
yamt |
branches: 1.25.4; introduce UVMHIST_LOANHIST and sprinkle UVMHIST_LOGs.
|
| 1.24 |
01-May-2004 |
petrov |
Replace uvm counters with evcnt, initialize them through __link_set (from Matt Thomas), disable counters by default and add configuration option UVMMAP_COUNTERS.
|
|
Revision tags: netbsd-2-0-base
|
| 1.23 |
24-Mar-2004 |
junyoung |
branches: 1.23.2; Nuke __P().
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base kqueue-base
|
| 1.22 |
09-Dec-2001 |
chs |
branches: 1.22.16; add {anon,file,exec}max as a upper bound on the amount of memory that will be allocated for the respective usage types when there is contention for memory.
replace "vnode" and "vtext" with "file" and "exec" in uvmexp field names and sysctl names.
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.21 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.20 |
15-Sep-2001 |
chs |
branches: 1.20.2; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.19 |
25-May-2001 |
chs |
branches: 1.19.2; 1.19.4; remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.18 |
09-Mar-2001 |
chs |
add UBC memory-usage balancing. we track the number of pages in use for each of the basic types (anonymous data, executable image, cached files) and prevent the pagedaemon from reusing a given page if that would reduce the count of that type of page below a sysctl-setable minimum threshold. the thresholds are controlled via three new sysctl tunables: vm.anonmin, vm.vnodemin, and vm.vtextmin. these tunables are the percentages of pageable memory reserved for each usage, and we do not allow the sum of the minimums to be more than 95% so that there's always some memory that can be reused.
|
| 1.17 |
04-Feb-2001 |
mrg |
branches: 1.17.2; allow ubchist to be printed from the uvmhist merging uvm_hist()
|
| 1.16 |
01-Dec-2000 |
chs |
add new uvmexp fields for uvmexp_print().
|
| 1.15 |
24-Nov-2000 |
chs |
add ddb commands "show uvmexp" and "show ncache". the former used to be "call uvm_dump", the latter is new.
|
| 1.14 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase
|
| 1.13 |
11-Jan-2000 |
chs |
add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 wrstuden-devbsize-19991221 wrstuden-devbsize-base kame_141_19991130 comdex-fall-1999-base fvdl-softdep-base netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 chs-ubc2-base netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.12 |
26-Mar-1999 |
chs |
branches: 1.12.4; 1.12.8; add uvmexp.swpgonly and use it to detect out-of-swap conditions.
|
| 1.11 |
25-Mar-1999 |
mrg |
remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base eeh-paddr_t-base
|
| 1.10 |
20-Jun-1998 |
mrg |
branches: 1.10.4; Add new history grovelling function uvm_hist() that takes a bitmask of histories to merge in cronological order. currently, MAPHIST and PDHIST are defined as 1 and 2 respectively. passing a bitmask of 0 to uvm_hist() will dump all maps.
|
| 1.9 |
10-Mar-1998 |
chuck |
uvm_dump now dumps some important pointers for debugging
|
| 1.8 |
13-Feb-1998 |
thorpej |
Oops, fix a typo.
|
| 1.7 |
13-Feb-1998 |
thorpej |
KNF.
|
| 1.6 |
13-Feb-1998 |
thorpej |
Add a global list of all UVM histories.
|
| 1.5 |
12-Feb-1998 |
thorpej |
Provide a patchable knob (uvmhist_print_enabled) so that UVM history buffer printing can be switched on and off at run-time. Only exists if the kernel is build with UVMHIST_PRINT, and defaults to `on'.
|
| 1.4 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.56 |
11-Dec-2021 |
mrg |
remove clause 3 from all my licenses that aren't conflicting with another copyright claim line. again. (i did this in 2008 and then did not update all of my personal templates.)
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base
|
| 1.55 |
17-Apr-2021 |
mrg |
remove KERNHIST_INIT_STATIC(). it stradles the line between usable early in boot and broken early in boot by requiring a partly static structure with another structure that must be present by the time any uses are performed. theoretically platform code could allocate a chunk while seting up memory and assign it here, giving a dynamic sizing for the entry list, but the reality is that all users have a statically allocated entry list as well.
the existing KERNHIST_LINK_STATIC() is used in conjunction with KERNHIST_INITIALIZER() instead.
this stops a NULL pointer deref when the _LOG() macro is called before the storage is linked in, which happens with GCC 10 on OCTEON with UVMHIST enabled, crashing in very early kernel init.
|
|
Revision tags: thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
| 1.54 |
13-Apr-2020 |
skrll |
branches: 1.54.4; Oops, forgot the empty macro version of UVMHIST_CALLARGS
|
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base
|
| 1.53 |
08-Apr-2020 |
skrll |
branches: 1.53.2; Provide UVMHIST_CALLARGS
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.52 |
05-Mar-2014 |
matt |
branches: 1.52.30; Use UVMHIST_INITIALIZER (KERNHIST_INITIALIZER) to statically initialize maphist. This allows maphist to used very very early in boot well before uvm has been initialized.
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.51 |
30-Jul-2012 |
matt |
branches: 1.51.2; 1.51.4; -fno-common broke kernhist since it used commons. Add a KERNHIST_DEFINE which is define the kernel history. Change UVM to deal with the new usage.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.50 |
17-May-2011 |
mrg |
branches: 1.50.4; move and rename the uvm history code out of uvm_stat to "kernhist".
rename "UVMHIST" option to enable the uvm histories.
TODO: - make UVMHIST properly depend upon KERNHIST - enable dynamic registration of histories. this is mostly just allocating something in a bitmap, and is only for viewing multiple histories in a merged form.
tested on amd64 and sparc64.
|
| 1.49 |
23-Apr-2011 |
rmind |
Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.48 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.47 |
07-Jul-2010 |
chs |
branches: 1.47.2; 1.47.4; switch the UVMHIST counters from mutexes to atomic ops to avoid a bad interaction with DIAGNOSTIC.
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
| 1.46 |
06-Feb-2010 |
uebayasi |
branches: 1.46.2; 1.46.4; __inline -> inline
|
|
Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base nick-hppapmap-base
|
| 1.45 |
01-Feb-2009 |
skrll |
Fix printing of tv_sec,tv_usec in UVMHIST.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base mjf-devfs2-base
|
| 1.44 |
08-Aug-2008 |
skrll |
branches: 1.44.2; Make "show uvmhist" available to all arches (not just sparc*) in ddb.
|
|
Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
| 1.43 |
25-May-2008 |
chs |
branches: 1.43.2; 1.43.4; if UVMHIST is defined, include headers necessary for its use.
|
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase hpcarm-cleanup-base
|
| 1.42 |
27-Feb-2008 |
ad |
branches: 1.42.2; 1.42.4; 1.42.6; Minor corrections to comments.
|
|
Revision tags: nick-net80211-sync-base bouyer-xeni386-nbase mjf-devfs-base
|
| 1.41 |
22-Jan-2008 |
reinoud |
branches: 1.41.2; 1.41.6; Remove extra '(' that prevented kernel with UVMHIST to be compiled
|
|
Revision tags: bouyer-xeni386-base matt-armv6-base
|
| 1.40 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase nick-csl-alignment-base5 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base jmcneill-base netbsd-4-0-RC4 bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.39 |
16-Feb-2006 |
perry |
branches: 1.39.24; 1.39.40; 1.39.46; 1.39.50; 1.39.54; Change "inline" back to "__inline" in .h files -- C99 is still too new, and some apps compile things in C89 mode. C89 keywords stay.
As per core@.
|
| 1.38 |
24-Dec-2005 |
perry |
branches: 1.38.2; 1.38.4; 1.38.6; Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
|
| 1.37 |
11-Dec-2005 |
christos |
merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.36 |
01-Jun-2005 |
drochner |
branches: 1.36.2; prepend an underscore to local variables in macros, to avoid shadowing user defined ones
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
| 1.35 |
23-Nov-2004 |
yamt |
UVMHIST_LOG: avoid division.
|
| 1.34 |
23-Nov-2004 |
yamt |
constify.
|
| 1.33 |
23-Nov-2004 |
yamt |
introduce UVMHIST_LOANHIST and sprinkle UVMHIST_LOGs.
|
| 1.32 |
01-May-2004 |
petrov |
Replace uvm counters with evcnt, initialize them through __link_set (from Matt Thomas), disable counters by default and add configuration option UVMMAP_COUNTERS.
|
| 1.31 |
29-Apr-2004 |
enami |
Make strlen calls to be folded to constant at compile time.
|
| 1.30 |
23-Apr-2004 |
simonb |
s/this this/this/.
|
|
Revision tags: netbsd-2-0-base
|
| 1.29 |
24-Mar-2004 |
junyoung |
branches: 1.29.2; Nuke __P().
|
| 1.28 |
24-Jan-2004 |
dbj |
rearrange struct uvm_history to put the struct simplelock at the end. This avoids problems with the kernel grovelling vmstat -u/-U when using LOCKDEBUG, which changes the size of struct simplelock. Replaced the original location of the simplelock with "int unused" so that binary compatibility will be retained with old vmstat.
|
| 1.27 |
08-Mar-2003 |
tsutsui |
branches: 1.27.2; Use cpu_number() in UVMHIST_LOG() rather than non-public ci_cpuid member in struct cpu_info.
|
| 1.26 |
09-Feb-2003 |
pk |
Include CPU number in UVM history logs.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.25 |
02-Nov-2002 |
perry |
/*CONTCOND*/ while (0)'ed macros
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base kqueue-base
|
| 1.24 |
05-Mar-2002 |
simonb |
branches: 1.24.2; Include <sys/kernel.h> if UVMHIST is defined - the "cold" variable is used in the UVMHIST_LOG macro. Breakage reported by Chuck Silvers in private mail.
|
| 1.23 |
04-Mar-2002 |
simonb |
Don't "extern int cold;" - this is in <sys/kernel.h>.
|
|
Revision tags: ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
| 1.22 |
30-May-2001 |
mrg |
branches: 1.22.2; use _KERNEL_OPT
|
| 1.21 |
26-May-2001 |
chs |
replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
|
| 1.20 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.19 |
04-Feb-2001 |
mrg |
branches: 1.19.2; allow ubchist to be printed from the uvmhist merging uvm_hist()
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.18 |
11-Apr-2000 |
pk |
Finish previous.
|
| 1.17 |
11-Apr-2000 |
chs |
avoid declarating "i" as a local variable in a macro. it's too easy to shadow another local.
|
| 1.16 |
30-Mar-2000 |
augustss |
Remove more register declarations.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.15 |
21-Jun-1999 |
thorpej |
branches: 1.15.2; Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.14 |
25-Mar-1999 |
mrg |
branches: 1.14.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.13 |
09-Aug-1998 |
perry |
branches: 1.13.2; bzero->memset, bcopy->memcpy, bcmp->memcmp
|
|
Revision tags: eeh-paddr_t-base
|
| 1.12 |
20-Jun-1998 |
mrg |
Add new history grovelling function uvm_hist() that takes a bitmask of histories to merge in cronological order. currently, MAPHIST and PDHIST are defined as 1 and 2 respectively. passing a bitmask of 0 to uvm_hist() will dump all maps.
|
| 1.11 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.10 |
13-Feb-1998 |
thorpej |
KNF.
|
| 1.9 |
13-Feb-1998 |
thorpej |
A few changes to make it possible to read UVM histories from userland: - Protect option headers from inclusion if ! _KERNEL or if _LKM. - Make sure struct uvm_history is always the same size (not dependent on NCPU). - Add fmtlen and fnlen members to struct uvm_history_ent, which specify the lengths fo the fmt and fn strings. - Add name, namelen, and a list entry to struct uvm_history. - When a history is initialized, place it on the global list of all histories.
|
| 1.8 |
12-Feb-1998 |
thorpej |
Provide a patchable knob (uvmhist_print_enabled) so that UVM history buffer printing can be switched on and off at run-time. Only exists if the kernel is build with UVMHIST_PRINT, and defaults to `on'.
|
| 1.7 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.6 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.5 |
08-Feb-1998 |
mrg |
turn of UVM history logging by default.
|
| 1.4 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.3 |
07-Feb-1998 |
chs |
remove locking from UVMCNT counters. they don't need to be exact, and the locking causes problems in some of places they're used.
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| 1.209 |
22-Feb-2025 |
mlelstv |
Keep b_resid consistent on I/O errors.
|
|
Revision tags: perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.208 |
09-Apr-2023 |
riastradh |
branches: 1.208.6; uvm(9): KASSERT(A && B) -> KASSERT(A); KASSERT(B)
|
| 1.207 |
21-Dec-2022 |
chs |
swap: disallow user opens of swap block device
the swap/drum block device was never intended to allow user opens, but when the internal VOP_OPEN() in uvm_swap_init() was added back in rev 1.135, the d_open method was changed from always-fail to always-succeed in order to allow the new initial internal open. this had the side effect of incorrectly allowing user opens too. fix this by replacing the swap_bdevsw d_open with one that succeeds for the first call but fails for all subsequent calls.
Reported-by: syzbot+90a23d2f19e5a0a302b3@syzkaller.appspotmail.com
|
|
Revision tags: netbsd-10-base bouyer-sunxi-drm-base
|
| 1.206 |
23-Aug-2021 |
hannken |
branches: 1.206.4; Return immediately from uvm_swap_shutdown() if there are no (more) swap devices configured.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 thorpej-i2c-spi-conf-base
|
| 1.205 |
03-Jun-2021 |
riastradh |
uvm(9): Enable swap encryption by default.
For machines where the performance impact of swapping before the system has an opportunity to process `vm.swap_encrypt=0' in /etc/sysctl.conf, you can disable it again by adding
options VMSWAP_DEFAULT_PLAINTEXT
to the kernel config.
|
|
Revision tags: cjep_sun2x-base cjep_staticlib_x-base1
|
| 1.204 |
23-May-2021 |
mrg |
branches: 1.204.2; avoid taking locks that aren't initialised.
fixes panic when typing 'reboot' at the askroot prompt.
|
|
Revision tags: cjep_staticlib_x-base thorpej-cfargs-base thorpej-futex-base
|
| 1.203 |
13-Mar-2021 |
skrll |
branches: 1.203.4; 1.203.6; Consistently use %#jx instead of 0x%jx or just %jx in UVMHIST_LOG formats
|
| 1.202 |
19-Feb-2021 |
hannken |
When turning off swap during reboot we have to lock with LK_RETRY as regular files got reclaimed during unmount.
Adresses PR kern/54969 (Disk cache is no longer flushed on shutdown)
|
| 1.201 |
16-Feb-2021 |
hannken |
Reorganize uvm_swap_shutdown() a bit, make sure the vnode gets locked and referenced across the call to swap_off() and finally use it from vfs_unmountall1() to remove swap after unmounting the last file system.
Adresses PR kern/54969 (Disk cache is no longer flushed on shutdown)
|
| 1.200 |
07-Oct-2020 |
chs |
branches: 1.200.2; Add a new, more aggressive allocator for uvm_pglistalloc() to allocate contiguous physical pages, and try this new allocator if the existing one fails. The existing contig allocator only tries to allocate pages that are already free, which works fine shortly after boot but rarely works after the system has been up for a while. The new allocator uses the pagedaemon to evict pages from memory in the hope that this will free up a range of pages that satisfies the constraits of the request. This should help with things like plugging in a USB device, which often fails for some USB controllers because they can't get contigous memory.
|
| 1.199 |
29-Sep-2020 |
msaitoh |
s/parition/partition/
|
| 1.198 |
25-Jul-2020 |
riastradh |
Split aes_cbc_* and aes_xts_* into their own header files.
aes.h will remain just for key setup; any particular construction using AES can have its own header file so we can have many of them without rebuilding everything AES-related whenever one of them changes.
(Planning to add AES-CCM and AES-GCM too.)
|
| 1.197 |
09-Jul-2020 |
skrll |
Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.196 |
08-Jul-2020 |
skrll |
Trailing whitespace
|
| 1.195 |
29-Jun-2020 |
riastradh |
uvm: Make sure swap encryption IV is 128-bit-aligned on stack.
Will help hardware-assisted AES.
|
| 1.194 |
29-Jun-2020 |
riastradh |
uvm(9): Switch from legacy rijndael API to new aes API.
|
| 1.193 |
24-May-2020 |
jdolecek |
fix KASAN PoolUseAfterFree for async write - can't read bp after VOP_STRATEGY()
problem found and fix provided by Paul Ripke
|
| 1.192 |
22-May-2020 |
jdolecek |
DRY code in uvm_swap_io() for the write loop
|
| 1.191 |
21-May-2020 |
riastradh |
Let's not waste time decrypting garbage, shall we?
Skip to the end if the transfer failed.
|
| 1.190 |
20-May-2020 |
riastradh |
Make swap encryption MP-safe.
Not entirely sure the rest of the swap system is MP-safe, but let's not make it worse!
XXX Why is swap_syscall_lock an rwlock? We don't seem to take the reader lock ever.
|
| 1.189 |
10-May-2020 |
riastradh |
Rename things so the symbol better matches the sysctl name.
No functional change intended, except that the symbol that was previously `uvm_swap_encryption' is now `uvm_swap_encrypt', backing the sysctl knob `vm.swap_encrypt'.
|
| 1.188 |
09-May-2020 |
riastradh |
Avoid overflow if a very large number of pages are swapped at once.
Unlikely, but let's make sure we don't hit this ever.
|
| 1.187 |
09-May-2020 |
riastradh |
Implement swap encryption.
Enabled by sysctl -w vm.swap_encrypt=1. Key is generated lazily when we first need to swap a page. Key is chosen independently for each swap device. The ith swap page is encrypted with AES256-CBC using AES256_k(le32enc(i) || 0^96) as the initialization vector. Can be changed at any time; no need for compatibility with on-disk formats. Costs one bit of memory per page in each swapdev, plus a few hundred bytes per swapdev to store the expanded AES key.
Shoulda done this decades ago! Plan to enable this by default; performance impact is unlikely to matter because it only happens when you're already swapping anyway. Much easier to set up than cgd, so we can rip out all the documentation about carefully setting up random-keyed cgd at the right time.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.186 |
18-Feb-2020 |
chs |
remove the aiodoned thread. I originally added this to provide a thread context for doing page cache iodone work, but since then biodone() has changed to hand off all iodone work to a softint thread, so we no longer need the special-purpose aiodoned thread.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.185 |
27-Dec-2019 |
msaitoh |
branches: 1.185.2; s/transfered/transferred/
|
| 1.184 |
14-Dec-2019 |
ad |
Update uvmexp.nswget with atomics.
|
| 1.183 |
01-Dec-2019 |
uwe |
Add missing #include <sys/atomic.h>
|
| 1.182 |
01-Dec-2019 |
ad |
- Adjust uvmexp.swpgonly with atomics, and make uvm_swap_data_lock static. - A bit more __cacheline_aligned on mutexes.
|
|
Revision tags: phil-wifi-20191119
|
| 1.181 |
06-Oct-2019 |
mlelstv |
Defer to synchronous I/O before the aiodone work queue exists.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
| 1.180 |
27-Jan-2019 |
kre |
Remove end of line spaces - one (two in one line) added during recent merge, one older.
|
| 1.179 |
27-Jan-2019 |
pgoyette |
Merge the [pgoyette-compat] branch
|
|
Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
|
| 1.178 |
15-Nov-2018 |
maxv |
Woah man, fix enormous leak.
Possible info leak: [len=1056, leaked=931] #0 0xffffffff80bad351 in kleak_copyout #1 0xffffffff80b2cf64 in uvm_swap_stats.part.1 #2 0xffffffff80b2d38d in uvm_swap_stats #3 0xffffffff80b2d43c in sys_swapctl #4 0xffffffff80259b82 in syscall
|
|
Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
|
| 1.177 |
15-Mar-2018 |
christos |
branches: 1.177.2; finish moving the compat code out.
|
| 1.176 |
15-Mar-2018 |
christos |
Untangle the swapctl compat code mess. Welcome to lucky 13.
|
|
Revision tags: pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.175 |
28-Oct-2017 |
pgoyette |
branches: 1.175.2; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907
|
| 1.174 |
08-Jul-2016 |
skrll |
branches: 1.174.2; 1.174.8; 1.174.10; Remove '\n' from UVMHIST_LOG format - it is not needed.
|
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
| 1.173 |
30-Jul-2015 |
maxv |
Lock before calling uvm_swap_stats(). Otherwise a race condition could corrupt memory.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base tls-earlyentropy-base tls-maxphys-base
|
| 1.172 |
25-Jul-2014 |
dholland |
branches: 1.172.2; 1.172.4; 1.172.6; 1.172.10; Add d_discard to all struct cdevsw instances I could find.
All have been set to "nodiscard"; some should get a real implementation.
|
| 1.171 |
25-Jul-2014 |
dholland |
Add d_discard to all struct bdevsw instances I could find.
I've set them all to nodiscard. Some of them (wd, dk, vnd, ld, raidframe, maybe cgd) should be implemented for real.
|
| 1.170 |
28-Jun-2014 |
maxv |
This KASSERT can trigger a panic too easily, if SCARG(uap, cmd)=SWAP_OFF and SCARG(uap, arg)=NULL. The same KASSERT is already in the SWAP_ON switch case, so just delete it here.
|
| 1.169 |
22-Jun-2014 |
maxv |
Sync swapctl() with netbsd32. Return EINVAL when misc<0, and 0 when misc=0 or uvmexp.nswapdev=0.
|
|
Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base
|
| 1.168 |
16-Mar-2014 |
dholland |
branches: 1.168.2; Change (mostly mechanically) every cdevsw/bdevsw I can find to use designated initializers.
I have not built every extant kernel so I have probably broken at least one build; however I've also found and fixed some wrong cdevsw/bdevsw entries so even if so I think we come out ahead.
|
| 1.167 |
22-Feb-2014 |
mlelstv |
Drop empty priority lists, not the full ones. Fixes kern/48611.
|
| 1.166 |
03-Feb-2014 |
manu |
Properly translate struct swapent for COMPAT_NETBSD32
|
| 1.165 |
23-Nov-2013 |
christos |
fix circleq comments
|
| 1.164 |
23-Nov-2013 |
christos |
convert from CIRCLEQ to TAILQ add uvm_swap_shutdown(), unused
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
|
| 1.163 |
07-May-2013 |
riastradh |
branches: 1.163.4; Set bp->b_resid to bp->b_bcount on error in swstrategy as required.
|
|
Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
|
| 1.162 |
27-Nov-2012 |
jakllsch |
Until such time as the swap subsystem can be converted to use The One True Allocator, prevent panics if (MAXPHYS/PAGE_SIZE) > BLIST_MAX_ALLOC. From Wolfgang Stukenbrock in PR#41765.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-base2 netbsd-6-base
|
| 1.161 |
05-Feb-2012 |
rmind |
branches: 1.161.2; 1.161.6; - sys_swapctl: validate the number of swap devices argument for SWAP_STATS. - uvm_swap_stats: fix a buffer overrun, add some asserts.
Reviewed by mrg@
|
| 1.160 |
28-Jan-2012 |
rmind |
pool_page_alloc, pool_page_alloc_meta: avoid extra compare, use const. ffs_mountfs,sys_swapctl: replace memset with kmem_zalloc. sys_swapctl: move kmem_free outside the lock path. uvm_init: fix comment, remove pointless numeration of steps. uvm_map_enter: remove meflagval variable. Fix some indentation.
|
| 1.159 |
27-Jan-2012 |
para |
extending vmem(9) to be able to allocated resources for it's own needs. simplifying uvm_map handling (no special kernel entries anymore no relocking) make malloc(9) a thin wrapper around kmem(9) (with private interface for interrupt safety reasons)
releng@ acknowledged
|
| 1.158 |
12-Dec-2011 |
mrg |
implement bdev_size(9) wrapper around d_psize() routine, so we can take the device lock in relevant places. avoid doing so while actually dumping.
tested i386 crash dumps still work, and that all touched files compile.
fixes PR#45705.
|
|
Revision tags: jmcneill-usbmp-pre-base2 jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.157 |
02-Sep-2011 |
dyoung |
branches: 1.157.2; 1.157.6; Report vmem(9) errors out-of-band so that we can use vmem(9) to manage ranges that include the least and the greatest vmem_addr_t. Update vmem(9) uses throughout the kernel. Slightly expand on the tests in subr_vmem.c, which still pass. I've been running a kernel with this patch without any trouble.
|
| 1.156 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.155 |
27-Apr-2011 |
rmind |
branches: 1.155.2; Remove public uvm_swap_stats() routine, keep it internal.
|
| 1.154 |
23-Apr-2011 |
rmind |
Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231
|
| 1.153 |
19-Nov-2010 |
dholland |
branches: 1.153.2; Introduce struct pathbuf. This is an abstraction to hold a pathname and the metadata required to interpret it. Callers of namei must now create a pathbuf and pass it to NDINIT (instead of a string and a uio_seg), then destroy the pathbuf after the namei session is complete.
Update all namei call sites accordingly. Add a pathbuf(9) man page and update namei(9).
The pathbuf interface also now appears in a couple of related additional places that were passing string/uio_seg pairs that were later fed into NDINIT. Update other call sites accordingly.
|
|
Revision tags: uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
|
| 1.152 |
09-Jul-2010 |
hannken |
Replace vget() with vref()/vn_lock(), this node already has a reference.
|
| 1.151 |
24-Jun-2010 |
hannken |
Clean up vnode lock operations pass 2:
VOP_UNLOCK(vp, flags) -> VOP_UNLOCK(vp): Remove the unneeded flags argument.
Welcome to 5.99.32.
Discussed on tech-kern.
|
|
Revision tags: uebayasi-xip-base1 yamt-nfs-mp-base9
|
| 1.150 |
02-Mar-2010 |
pooka |
branches: 1.150.2; For the nfs throttling kludge, test against v_tag == VT_NFS instead of v_op (the latter imposes linkage).
|
|
Revision tags: uebayasi-xip-base
|
| 1.149 |
07-Feb-2010 |
mlelstv |
branches: 1.149.2; Use filesystem blocks to address filesystem objects. f_iosize just happens to be the same for current filesystems.
|
| 1.148 |
02-Feb-2010 |
wiz |
Missing 'if defined COMPAT13 or COMPAT50' in uvm_swap.c found by cppcheck and reported by Henning Petersen in PR 42721.
|
|
Revision tags: matt-premerge-20091211 jym-xensuspend-nbase
|
| 1.147 |
21-Oct-2009 |
rmind |
Remove uarea swap-out functionality:
- Addresses the issue described in PR/38828. - Some simplification in threading and sleepq subsystems. - Eliminates pmap_collect() and, as a side note, allows pmap optimisations. - Eliminates XS_CTL_DATA_ONSTACK in scsipi code. - Avoids few scans on LWP list and thus potentially long holds of proc_lock. - Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k. - Removes __SWAP_BROKEN cases.
Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on acorn26 (thanks to <bjh21>).
Discussed on <tech-kern>, reviewed by <ad>.
|
|
Revision tags: yamt-nfs-mp-base8
|
| 1.146 |
13-Sep-2009 |
pooka |
Wipe out the last vestiges of POOL_INIT with one swift stroke. In most cases, use a proper constructor. For proplib, give a local equivalent of POOL_INIT for the kernel object implementation. This way the code structure can be preserved, and a local link set is not hazardous anyway (unless proplib is split to several modules, but that'll be the day).
tested by booting a kernel in qemu and compile-testing i386/ALL
|
|
Revision tags: yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 nick-hppapmap-base2 jym-xensuspend-base nick-hppapmap-base
|
| 1.145 |
01-Mar-2009 |
mrg |
fix some messages function names that are wrong by using __func__.
|
|
Revision tags: mjf-devfs2-base
|
| 1.144 |
14-Jan-2009 |
mrg |
branches: 1.144.2; catch up with dev_t becoming 64 bit:
- move struct oswapent into uvm_swap.c proper, calling it swapent13 - introduce a new struct swapent50, also only in uvm_swap.c - stop using struct oswapent inside struct swapent, or struct swapdev - rename SWAP_OSTATS SWAP_STATS13 - rename SWAP_STATS SWAP_STATS50 - add new SWAP_STATS - rewrite the handling for SWAP_STATS13, SWAP_STATS50 and SWAP_STATS
|
| 1.143 |
13-Jan-2009 |
yamt |
g/c BUFQ_FOO() macros and use bufq_foo() directly.
|
| 1.142 |
17-Dec-2008 |
cegger |
kill MALLOC and FREE macros.
|
| 1.141 |
13-Dec-2008 |
ad |
PR kern/40027 pagedaemon loops on memory shortage
uvm_swapisfull: don't count some small portion as it may be inaccessible to us at any given moment, for example if there is lock contention or if pages are busy.
|
|
Revision tags: haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 haad-dm-base
|
| 1.140 |
23-Sep-2008 |
ad |
branches: 1.140.2; 1.140.4; Move test for __SWAP_BROKEN here.
|
|
Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base
|
| 1.139 |
29-May-2008 |
mrg |
branches: 1.139.4; remove clause #3 from my license where there are no other copyright holders involved.
|
|
Revision tags: hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2
|
| 1.138 |
11-May-2008 |
kardel |
keep dumpcdev and dumpdev consistent allows savecore.c@1.72 to find the right dumpdev in case it was changed from the default - hi ad@
|
|
Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase
|
| 1.137 |
29-Feb-2008 |
yamt |
branches: 1.137.2; 1.137.4; 1.137.6; uvm_swap_io: if pagedaemon, don't wait for iobuf.
|
|
Revision tags: nick-net80211-sync-base mjf-devfs-base hpcarm-cleanup-base
|
| 1.136 |
30-Jan-2008 |
hannken |
branches: 1.136.2; 1.136.6; Lock swapdev_vp for VOP_OPEN.
From: YAMAMOTO Takashi <yamt@netbsd.org>
|
| 1.135 |
27-Jan-2008 |
hannken |
uvm_swap_init(): Call VOP_OPEN() on swapdev_vp to make I/O through the swap device work with specnodes.
Ok: Andrew Doran <ad@netbsd.org>
|
|
Revision tags: bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-base
|
| 1.134 |
02-Jan-2008 |
ad |
Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3
|
| 1.133 |
20-Dec-2007 |
dsl |
Convert all the system call entry points from: int foo(struct lwp *l, void *v, register_t *retval) to: int foo(struct lwp *l, const struct foo_args *uap, register_t *retval) Fixup compat code to not write into 'uap' and (in some cases) to actually pass a correctly formatted 'uap' structure with the right name to the next routine. A few 'compat' routines that just call standard ones have been deleted. All the 'compat' code compiles (along with the kernels required to test build it). 98% done by automated scripts.
|
|
Revision tags: yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base jmcneill-pm-base
|
| 1.132 |
08-Dec-2007 |
pooka |
branches: 1.132.4; Remove cn_lwp from struct componentname. curlwp should be used from on. The NDINIT() macro no longer takes the lwp parameter and associates the credentials of the calling thread with the namei structure.
|
|
Revision tags: vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase reinoud-bufcleanup-base
|
| 1.131 |
26-Nov-2007 |
pooka |
branches: 1.131.2; Remove the "struct lwp *" argument from all VFS and VOP interfaces. The general trend is to remove it from all kernel interfaces and this is a start. In case the calling lwp is desired, curlwp should be used.
quick consensus on tech-kern
|
|
Revision tags: jmcneill-base bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base
|
| 1.130 |
15-Oct-2007 |
hannken |
branches: 1.130.4; When swapping to a regular file use a workqueue to signal I/O completion.
VOP_STRATEGY() no longer gets called from interrupt context via biodone() -> sw_reg_iodone() -> sw_reg_start().
Removes a deadlock condition reported in PR 37109.
Ok: YAMAMOTO Takashi <yamt@netbsd.org>
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base vmlocking-base
|
| 1.129 |
29-Jul-2007 |
ad |
branches: 1.129.4; 1.129.6; 1.129.8; 1.129.10; It's not a good idea for device drivers to modify b_flags, as they don't need to understand the locking around that field. Instead of setting B_ERROR, set b_error instead. b_error is 'owned' by whoever completes the I/O request.
|
| 1.128 |
24-Jul-2007 |
ad |
In order to pacify assertions, make uao_list_lock + uvm_swap_data_lock spinlocks for the time being.
|
| 1.127 |
21-Jul-2007 |
ad |
Merge unobtrusive locking changes from the vmlocking branch.
|
|
Revision tags: nick-csl-alignment-base mjf-ufs-trans-base
|
| 1.126 |
09-Jul-2007 |
ad |
branches: 1.126.2; Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
| 1.125 |
15-Jun-2007 |
ad |
Add a sysctl to disable swapout of kernel stacks. Discussed on tech-kern@.
|
|
Revision tags: yamt-idlelwp-base8
|
| 1.124 |
22-Apr-2007 |
dsl |
Change the way that emulations locate files within the emulation root to avoid having to allocate space in the 'stackgap' - which is very LWP unfriendly. The additional code for non-emulation namei() is trivial, the reduction for the emulations is massive. The vnode for a processes emulation root is saved in the cwdi structure during process exec. If the emulation root the TRYEMULROOT flag are set, namei() will do an initial search for absolute pathnames in the emulation root, if that fails it will retry from the normal root. ".." at the emulation root will always go to the real root, even in the middle of paths and when expanding symlinks. Absolute symlinks found using absolute paths in the emulation root will be relative to the emulation root (so /usr/lib/xxx.so -> /lib/xxx.so links inside the emulation root don't need changing). If the root of the emulation would be returned (for an emulation lookup), then the real root is returned instead (matching the behaviour of emul_lookup, but being a cheap comparison here) so that programs that scan "../.." looking for the root dircetory don't loop forever. The target for symbolic links is no longer mangled (it used to get the CHECK_ALT_xxx() treatment, so could get /emul/xxx prepended). CHECK_ALT_xxx() are no more. Most of the change is deleting them, and adding TRYEMULROOT to the flags to NDINIT(). A lot of the emulation system call stubs could now be deleted.
|
|
Revision tags: thorpej-atomic-base
|
| 1.123 |
12-Mar-2007 |
ad |
branches: 1.123.2; Pass an ipl argument to pool_init/POOL_INIT to be used when initializing the pool's lock.
|
| 1.122 |
04-Mar-2007 |
christos |
branches: 1.122.2; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
|
Revision tags: ad-audiomp-base
|
| 1.121 |
22-Feb-2007 |
thorpej |
TRUE -> true, FALSE -> false
|
| 1.120 |
22-Feb-2007 |
matt |
Fix lossage from boolean_t -> bool and updated x86 bus_dma.
|
| 1.119 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
| 1.118 |
19-Feb-2007 |
ad |
uvm_kick_scheduler(): do nothing until the swap subsystem is initialized.
|
| 1.117 |
15-Feb-2007 |
ad |
branches: 1.117.2; Add uvm_kick_scheduler() (MP safe) to replace wakeup(&proc0).
|
|
Revision tags: post-newlock2-merge
|
| 1.116 |
09-Feb-2007 |
ad |
Merge newlock2 to head.
|
|
Revision tags: newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base
|
| 1.115 |
07-Dec-2006 |
elad |
Back out uvm_is_swap_device().
|
| 1.114 |
02-Dec-2006 |
elad |
We are required to hold uvm.swap_data_lock here too.
|
|
Revision tags: netbsd-4-base
|
| 1.113 |
01-Dec-2006 |
elad |
branches: 1.113.2; Introduce uvm_is_swap_device(), to check if the passed struct vnode * is used as a swap device or not.
Okay mrg@.
|
| 1.112 |
01-Nov-2006 |
yamt |
remove some __unused from function parameters.
|
| 1.111 |
27-Oct-2006 |
yamt |
revert malloc -> kmem_alloc part of uvm_swap.c rev.1.110 because the current implementation of kmem_free can sleep.
|
| 1.110 |
22-Oct-2006 |
yamt |
extent/malloc -> vmem_alloc/kmem_alloc.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.109 |
21-Oct-2006 |
mrg |
in cpu_dumpconf(), don't panic() if we can't bdevsw_lookup() the dumpdev. this occurs when we try to set the dumpdev to a device with no driver loaded. this fixes PR#34872.
in sys_swapctl, if bdevsw_lookup() fails, set dumpdev = NODEV before calling cpu_dumpconf(). (this also fixes PR#34872.)
XXX: cpu_dumpconf() should probably be changed to take a dumpdev XXX: and return an error in such cases, but that is a much more XXX: intrusive change.
XXX2: this is only run-tested on sparc64 and compile tested on a XXX2: couple of platforms.
|
| 1.108 |
12-Oct-2006 |
thorpej |
uvm_swap_stats_locked(): Consume the cmd argument even if COMPAT_13 is not defined.
|
| 1.107 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
|
Revision tags: yamt-splraiseipl-base yamt-pdpolicy-base9
|
| 1.106 |
08-Sep-2006 |
elad |
branches: 1.106.2; First take at security model abstraction.
- Add a few scopes to the kernel: system, network, and machdep.
- Add a few more actions/sub-actions (requests), and start using them as opposed to the KAUTH_GENERIC_ISSUSER place-holders.
- Introduce a basic set of listeners that implement our "traditional" security model, called "bsd44". This is the default (and only) model we have at the moment.
- Update all relevant documentation.
- Add some code and docs to help folks who want to actually use this stuff:
* There's a sample overlay model, sitting on-top of "bsd44", for fast experimenting with tweaking just a subset of an existing model.
This is pretty cool because it's *really* straightforward to do stuff you had to use ugly hacks for until now...
* And of course, documentation describing how to do the above for quick reference, including code samples.
All of these changes were tested for regressions using a Python-based testsuite that will be (I hope) available soon via pkgsrc. Information about the tests, and how to write new ones, can be found on:
http://kauth.linbsd.org/kauthwiki
NOTE FOR DEVELOPERS: *PLEASE* don't add any code that does any of the following:
- Uses a KAUTH_GENERIC_ISSUSER kauth(9) request, - Checks 'securelevel' directly, - Checks a uid/gid directly.
(or if you feel you have to, contact me first)
This is still work in progress; It's far from being done, but now it'll be a lot easier.
Relevant mailing list threads:
http://mail-index.netbsd.org/tech-security/2006/01/25/0011.html http://mail-index.netbsd.org/tech-security/2006/03/24/0001.html http://mail-index.netbsd.org/tech-security/2006/04/18/0000.html http://mail-index.netbsd.org/tech-security/2006/05/15/0000.html http://mail-index.netbsd.org/tech-security/2006/08/01/0000.html http://mail-index.netbsd.org/tech-security/2006/08/25/0000.html
Many thanks to YAMAMOTO Takashi, Matt Thomas, and Christos Zoulas for help stablizing kauth(9).
Full credit for the regression tests, making sure these changes didn't break anything, goes to Matt Fleming and Jaime Fournier.
Happy birthday Randi! :)
|
|
Revision tags: rpaulo-netinet-merge-pcb-base
|
| 1.105 |
03-Sep-2006 |
christos |
branches: 1.105.2; add missing initializers
|
|
Revision tags: yamt-pdpolicy-base8
|
| 1.104 |
22-Aug-2006 |
martin |
Add a new swapctl(2) command to unset the dump device.
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base7
|
| 1.103 |
21-Jul-2006 |
ad |
- Use the LWP cached credentials where sane. - Minor cosmetic changes.
|
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base chap-midi-base
|
| 1.102 |
13-Jun-2006 |
christos |
prevent uninitialized variable.
|
| 1.101 |
12-Jun-2006 |
christos |
Don't allocate > 1K on the stack.
|
|
Revision tags: yamt-pdpolicy-base5 simonb-timecounters-base
|
| 1.100 |
14-May-2006 |
elad |
branches: 1.100.2; integrate kauth.
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.99 |
21-Jan-2006 |
matt |
branches: 1.99.2; 1.99.4; 1.99.6; 1.99.8; 1.99.10; Fix u_int64_t -> uint64_t stragglers.
|
| 1.98 |
04-Jan-2006 |
yamt |
- add simple functions to allocate/free a buffer for i/o. - make bufpool static.
|
| 1.97 |
11-Dec-2005 |
christos |
branches: 1.97.2; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.96 |
15-Oct-2005 |
yamt |
- change the way to specify a bufq strategy. (by string rather than by number) - rather than embedding bufq_state in driver softc, have a pointer to the former. - move bufq related functions from kern/subr_disk.c to kern/subr_bufq.c. - rename method to strategy for consistency. - move some definitions which don't need to be exposed to the rest of kernel from sys/bufq.h to sys/bufq_impl.h. (is it better to move it to kern/ or somewhere?) - fix some obvious breakage in dev/qbus/ts.c. (not tested)
|
| 1.95 |
17-Sep-2005 |
yamt |
- make uvm_swap_stats acquire swap_syscall_lock by itsself so that callers don't need to acquire it beforehand. - make swap_syscall_lock static.
|
| 1.94 |
27-Jun-2005 |
thorpej |
branches: 1.94.2; Sprinkle some static.
|
| 1.93 |
27-Jun-2005 |
thorpej |
Use ANSI function decls.
|
| 1.92 |
29-May-2005 |
christos |
avoid shadow variables. remove unneeded casts.
|
| 1.91 |
11-May-2005 |
yamt |
allocate anons on-demand, rather than reserving static amount of them on boot/swapon.
|
|
Revision tags: kent-audio2-base
|
| 1.90 |
06-Apr-2005 |
yamt |
switch swap space allocation code to use blist instead of extent(9). fix "warning: resource shortage: %d pages of swap lost".
extent(9) has some undesirable characteristics for swap allocation: - it involves alloc-to-free. - its operational cost is O(n*n) where n is number of entries.
|
|
Revision tags: netbsd-3-0-3-RELEASE netbsd-3-0-2-RELEASE netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio1-beforemerge kent-audio1-base
|
| 1.89 |
28-Oct-2004 |
yamt |
branches: 1.89.4; 1.89.10; move buffer queue related stuffs from buf.h to their own header, bufq.h.
|
| 1.88 |
14-May-2004 |
christos |
don't accept a negative number of swap devices; it will attempt to malloc something very large and might crash the kernel; From Evgeny Demidov
|
| 1.87 |
25-Apr-2004 |
simonb |
Initialise (most) pools from a link set instead of explicit calls to pool_init. Untouched pools are ones that either in arch-specific code, or aren't initialiased during initial system startup.
Convert struct session, ucred and lockf to pools.
|
| 1.86 |
21-Apr-2004 |
christos |
Replace the statfs() family of system calls with statvfs(). Retain binary compatibility.
|
|
Revision tags: netbsd-2-0-base
|
| 1.85 |
24-Mar-2004 |
junyoung |
branches: 1.85.2; - Nuke __P(). - Drop trailing spaces.
|
| 1.84 |
25-Jan-2004 |
hannken |
Make VOP_STRATEGY(bp) a real VOP as discussed on tech-kern.
VOP_STRATEGY(bp) is replaced by one of two new functions:
- VOP_STRATEGY(vp, bp) Call the strategy routine of vp for bp. - DEV_STRATEGY(bp) Call the d_strategy routine of bp->b_dev for bp.
DEV_STRATEGY(bp) is used only for block-to-block device situations.
|
| 1.83 |
10-Jan-2004 |
yamt |
store a i/o priority hint in struct buf for buffer queue discipline.
|
| 1.82 |
28-Aug-2003 |
pk |
When retiring a swap device with marked bad blocks on it we should update the `# swap page in use' and `# swap page only' counters. However, at the time of swap device removal we can no longer figure out how many of the bad swap pages are actually also `swap only' pages.
So, on swap I/O errors arrange things to not include the bad swap pages in the `swpgonly' counter as follows: uvm_swap_markbad() decrements `swpgonly' by the number of bad pages, and the various VM object deallocation routines do not decrement `swpgonly' for swap slots marked as SWSLOT_BAD.
|
| 1.81 |
11-Aug-2003 |
pk |
Introduce uvm_swapisfull(), which computes the available swap space by taking into account swap devices that are in the process of being removed.
|
| 1.80 |
29-Jun-2003 |
fvdl |
branches: 1.80.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
| 1.79 |
29-Jun-2003 |
thorpej |
Undo part of the ktrace/lwp changes. In particular: * Remove the "lwp *" argument that was added to vget(). Turns out that nothing actually used it! * Remove the "lwp *" arguments that were added to VFS_ROOT(), VFS_VGET(), and VFS_FHTOVP(); all they did was pass it to vget() (which, as noted above, didn't use it). * Remove all of the "lwp *" arguments to internal functions that were added just to appease the above.
|
| 1.78 |
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
| 1.77 |
25-Feb-2003 |
thorpej |
Add a new BUF_INIT() macro which initializes b_dep and b_interlock, and use it. This fixes a few places where either b_dep or b_interlock were not properly initialized.
|
| 1.76 |
05-Feb-2003 |
pk |
Make the buffer cache code MP-safe.
|
| 1.75 |
01-Feb-2003 |
thorpej |
Add extensible malloc types, adapted from FreeBSD. This turns malloc types into a structure, a pointer to which is passed around, instead of an int constant. Allow the limit to be adjusted when the malloc type is defined, or with a function call, as suggested by Jonathan Stone.
|
| 1.74 |
18-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base
|
| 1.73 |
02-Nov-2002 |
perry |
/*CONTCOND*/ while (0)'ed macros
|
| 1.72 |
27-Oct-2002 |
chs |
examine the B_ERROR flag instead of the b_error field to determine whether or not an error has occured. pointed out by Stephan Uphoff.
|
|
Revision tags: kqueue-aftermerge
|
| 1.71 |
23-Oct-2002 |
jdolecek |
merge kqueue branch into -current
kqueue provides a stateful and efficient event notification framework currently supported events include socket, file, directory, fifo, pipe, tty and device changes, and monitoring of processes and signals
kqueue is supported by all writable filesystems in NetBSD tree (with exception of Coda) and all device drivers supporting poll(2)
based on work done by Jonathan Lemon for FreeBSD initial NetBSD port done by Luke Mewburn and Jason Thorpe
|
|
Revision tags: kqueue-beforemerge kqueue-base
|
| 1.70 |
27-Sep-2002 |
provos |
remove trailing \n in panic(). approved perry.
|
| 1.69 |
06-Sep-2002 |
gehenna |
Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to dynamically generated by config(8).
- All device switches is defined as a constant structure in device drivers.
- The new grammer ``device-major'' is introduced to ``files''.
device-major <prefix> char <num> [block <num>] [<rules>]
- All device major numbers must be listed up in port dependent majors.<arch> by using this grammer.
- Added the new naming convention. The name of the device switch must be <prefix>_[bc]devsw for auto-generation of device switch tables.
- The backward compatibility of loading block/character device switch by LKM framework is broken. This is necessary to convert from block/character device major to device name in runtime and vice versa.
- The restriction to assign device major by LKM is completely removed. We don't need to reserve LKM entries for dynamic loading of device switch.
- In compile time, device major numbers list is packed into the kernel and the LKM framework will refer it to assign device major number dynamically.
|
| 1.68 |
31-Aug-2002 |
drochner |
call cpu_dumpconf() after dumpdev change, so that the global dumpsize/dumplo get updated
|
|
Revision tags: gehenna-devsw-base
|
| 1.67 |
27-Jul-2002 |
chs |
allocate the bufq after zeroing the swapdev structure, not before.
|
| 1.66 |
21-Jul-2002 |
hannken |
Rename bufq_init() to bufq_alloc(). Add bufq_free() to remove a buffer queue. Avoid MALLOC while holding a spinlock.
From Chuck Silvers.
|
| 1.65 |
19-Jul-2002 |
hannken |
Convert to new device buffer queue interface.
|
|
Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
|
| 1.64 |
09-May-2002 |
fredette |
branches: 1.64.2; 1.64.4; When preparing to swap to a miniroot partition, add a little padding to our estimate of the miniroot's size, to avoid overwriting it.
|
| 1.63 |
01-Apr-2002 |
manu |
Updated comment to reflect the creation of uvm_swap_stats()
|
| 1.62 |
26-Mar-2002 |
manu |
Don't allocate struct swapent when we only need a struct oswapent.
|
|
Revision tags: eeh-devprop-base
|
| 1.61 |
18-Mar-2002 |
manu |
Move swapctl(SWAP_STATS) implementation to a separate function called uvm_swap_stats(). This is done in order to allow COMPAT_* swapctl() emulation to use it directly without going through sys_swapctl().
The problem with using sys_swapctl() there is that it involves copying the swapent array to the stackgap, and this array's size is not known at build time. Hence it would not be possible to ensure it would fit in the stackgap in any case.
|
|
Revision tags: newlock-base
|
| 1.60 |
09-Mar-2002 |
thorpej |
branches: 1.60.2; Remove PR_MALLOCOK.
|
| 1.59 |
08-Mar-2002 |
thorpej |
Pool deals fairly well with physical memory shortage, but it doesn't deal with shortages of the VM maps where the backing pages are mapped (usually kmem_map). Try to deal with this:
* Group all information about the backend allocator for a pool in a separate structure. The pool references this structure, rather than the individual fields. * Change the pool_init() API accordingly, and adjust all callers. * Link all pools using the same backend allocator on a list. * The backend allocator is responsible for waiting for physical memory to become available, but will still fail if it cannot callocate KVA space for the pages. If this happens, carefully drain all pools using the same backend allocator, so that some KVA space can be freed. * Change pool_reclaim() to indicate if it actually succeeded in freeing some pages, and use that information to make draining easier and more efficient. * Get rid of PR_URGENT. There was only one use of it, and it could be dealt with by the caller.
From art@openbsd.org.
|
|
Revision tags: ifpoll-base
|
| 1.58 |
16-Dec-2001 |
enami |
G/C no longer used saved credential for file i/o.
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.57 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
| 1.56 |
06-Nov-2001 |
chs |
add an assert and rename some variables.
|
| 1.55 |
01-Nov-2001 |
chs |
allow SWAP_GETDUMPDEV for all users. use {LIST,TAILQ}_FOREACH where appropriate.
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf
|
| 1.54 |
15-Sep-2001 |
chs |
branches: 1.54.2; a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.53 |
26-Aug-2001 |
chs |
branches: 1.53.2; don't mess with vnode holds or buffer lists for swap i/os. fixes problems with leaked vnode holds.
|
| 1.52 |
26-May-2001 |
chs |
branches: 1.52.2; replace {simple_,}lock{_data,}_t with struct {simple,}lock {,*}.
|
| 1.51 |
25-May-2001 |
chs |
remove trailing whitespace.
|
| 1.50 |
15-May-2001 |
ross |
Eliminate lhs cast (incorrectly accepted by gcc)
|
| 1.49 |
09-May-2001 |
thorpej |
Use pool_init() rather than pool_create().
|
| 1.48 |
09-May-2001 |
fvdl |
Avoid potential cases of sleeping while holding a spinlock. Pay attention to SWF_FAKE when finding a swap device. GC swapdrum_add; it was only a few lines long and called once, so just inline the code there.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.47 |
10-Mar-2001 |
chs |
eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
| 1.46 |
18-Feb-2001 |
chs |
branches: 1.46.2; clean up DIAGNOSTIC checks, use KASSERT().
|
| 1.45 |
12-Feb-2001 |
pk |
SWAP_DUMPDEV,SWAP_OFF cases: make sure to release the vnode being operated on.
|
| 1.44 |
04-Jan-2001 |
enami |
Use cast where appropriate to avoid integer overflow.
|
| 1.43 |
27-Dec-2000 |
chs |
when we fail to allocate anons to represent new swap space, just return an error rather than panicing.
|
| 1.42 |
23-Dec-2000 |
enami |
Place a name of extent in a struct swapdev instead of dynamically allocating it.
|
| 1.41 |
27-Nov-2000 |
chs |
Initial integration of the Unified Buffer Cache project.
|
| 1.40 |
17-Nov-2000 |
mrg |
add SWAP_GETDUMPDEV command support.
|
| 1.39 |
13-Nov-2000 |
chs |
in swap_off(), reverse the order of vrele() and VOP_CLOSE() so that devices will actually be notified if this is the last close. this allows raidframe swap devices to be marked clean. also, move the corresponding vref() into swap_on() for symmetry and improve some comments.
|
| 1.38 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
|
Revision tags: netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.37 |
19-May-2000 |
thorpej |
branches: 1.37.4; Tell uvm_pagermapin() the direction of the I/O so that it can map with only the protection that it needs.
|
| 1.36 |
15-Apr-2000 |
mrg |
remove <vm/vm_swap.h> and <vm/vm_conf.h>
|
| 1.35 |
07-Apr-2000 |
chs |
restore a brelvp() that I removed in a moment of overzealousness. Debugged by: Brian Grayson <bgrayson@netbsd.org>
|
|
Revision tags: chs-ubc2-newbase
|
| 1.34 |
07-Feb-2000 |
thorpej |
Fix a bug in disksort_*() which caused non-optimal ordering when multiple active partitions were on a single spindle. Add a b_rawblkno member to struct buf which contains the non-partition-relative block number to sort by.
|
| 1.33 |
21-Jan-2000 |
thorpej |
Update for sys/buf.h/disksort_*() changes.
|
| 1.32 |
11-Jan-2000 |
chs |
add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
| 1.31 |
04-Jan-2000 |
wrstuden |
Revert rev 1.28 -> 1.29. The VOP_CLOSE call was happeneing with the vnode already locked, so don't lock it here.
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
| 1.30 |
15-Nov-1999 |
fvdl |
Add Kirk McKusick's soft updates code to the trunk. Not enabled by default, as the copyright on the main file (ffs_softdep.c) is such that is has been put into gnusrc. options SOFTDEP will pull this in. This code also contains the trickle syncer.
Bump version number to 1.4O
|
|
Revision tags: comdex-fall-1999-base fvdl-softdep-base
|
| 1.29 |
16-Oct-1999 |
wrstuden |
branches: 1.29.2; 1.29.4; In spec_close(), if we're not doing a non-blocking close and VXLOCK is not set, unlock the vnode before calling the device's close routine and relock it after it returns. tty close routines will sleep waiting for buffers to drain, which won't happen often times as the other side needs to grab the vnode lock first.
Make all unmount routines lock the device vnode before calling VOP_CLOSE().
|
|
Revision tags: chs-ubc2-base
|
| 1.28 |
22-Jul-1999 |
thorpej |
branches: 1.28.2; Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
|
Revision tags: kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.27 |
30-Mar-1999 |
chs |
branches: 1.27.2; 1.27.4; remove some old #if 0'd-out debugging code.
|
| 1.26 |
26-Mar-1999 |
chs |
add uvmexp.swpgonly and use it to detect out-of-swap conditions.
|
| 1.25 |
18-Mar-1999 |
chs |
VHOLD() must be called at splbio() since HOLDRELE() is called from the iodone handler.
|
| 1.24 |
23-Feb-1999 |
mrg |
handle SWAP_DUMPDEV
|
| 1.23 |
26-Dec-1998 |
marc |
When a reference is made to a hole in a swap file, panic. The optimal thing would be to allocate the block, but I don't know how to do this. The panic is preferable to the random memory corruption the old code was causing.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.22 |
08-Nov-1998 |
mycroft |
branches: 1.22.2; Clear B_NOCACHE when we're done with the buffer -- although this is probably pointless.
|
| 1.21 |
08-Nov-1998 |
mycroft |
Set the B_NOCACHE bit so that NFSv3 will not try to do async writes.
|
| 1.20 |
18-Oct-1998 |
chs |
shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.19 |
06-Sep-1998 |
pk |
Panic instead failing the syscall on an impossible condition (from Robert Elz). Plug possible memory leakage with the recently added device path stuff.
|
| 1.18 |
30-Aug-1998 |
enami |
Define `len' as size_t rather than int so that correct type is passed as fourth argument of copystr.
|
| 1.17 |
29-Aug-1998 |
mrg |
move <vm/vm_swap.h> to <sys/swap.h>. <vm/vm_swap.h> still works for now (goes away later)
|
| 1.16 |
29-Aug-1998 |
mrg |
add a `char se_path[PATH_MAX]' member to struct swapent, that the pathname of the swap device is saved into. add a char *swd_path member to struct swapdev, that contains a copy of the pathname (using malloc(9)). rename swapctl(2)'s SWAP_STATS to SWAP_OSTATS, and add a new SWAP_STATS command (number). make swapctl(SWAP_STATS, ...) [new version] copy the path out. if COMPAT_13, also include support for SWAP_OSTATS. also fix a minor bug in swapctl(2).
the point of this is that swapfiles are now shown in `swapctl -l'.
|
| 1.15 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
| 1.14 |
09-Aug-1998 |
perry |
bzero->memset, bcopy->memcpy, bcmp->memcmp
|
|
Revision tags: eeh-paddr_t-base
|
| 1.13 |
24-Jul-1998 |
thorpej |
branches: 1.13.2; Put back swap_data_lock, which was apparently deleted accidentally during the last round of changes. (I noticed it because I run my kernels w/ LOCKDEBUG.)
|
| 1.12 |
23-Jul-1998 |
pk |
Use memory pools to allocate swap buffers. Allocations are all dynamic; in particular `nswbuf' is gone, as is the private "struct buf" list that was previously maintained in here.
|
| 1.11 |
08-Jul-1998 |
pk |
Make sure to release buffers only once.
|
| 1.10 |
17-Jun-1998 |
ross |
Correct an expression that tried to compute the swap size in bytes using an int object, this sometimes prevented swap_on() of a dev/file > 2^31 bytes.
|
| 1.9 |
01-May-1998 |
mrg |
fix a problem with swapping to files where a new variable introduced was not later incremented correctedly, causing the wrong data to be paged out, which then caused general lossage later when the data was paged in and the process tried to use it. found by pk.
|
| 1.8 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.7 |
01-Mar-1998 |
fvdl |
Merge with Lite2 + local changes
|
| 1.6 |
19-Feb-1998 |
thorpej |
Include the NFS option header.
|
| 1.5 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.4 |
08-Feb-1998 |
mrg |
move pdhist initialisation to the same place as maphist. also, declare the history buffers are "struct uvm_history_ent" to ensure proper alignment (eg, alpha). this fixes a boottime panic when the pdhist was used before it had been initialised.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.29 |
15-Mar-2024 |
andvar |
"retval = 0" should be "*retval = 0", should fix the broken build.
|
| 1.28 |
15-Mar-2024 |
andvar |
Rewrite !VMSWAP uvm_swap_stats() macro as a static function. NFCI.
From riastradh
|
| 1.27 |
15-Mar-2024 |
andvar |
Fix !VMSWAP build: Added __unused for few local variables, which are used in VMSWAP block only. Adjust !VMSWAP uvm_swap_stats() definition to make it build with compat code. Copied "int (*uvm_swap_stats50)(...)" definition from uvm_swap to uvm_swapstub to avoid missing uvm_swap_stats50 reference on linking.
Fixes INSTALL_CPMBR1400, INSTALL_ZYXELKX evbmips kernel configs as a result.
Reviewed by simon and phone in IRC (thanks).
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.26 |
05-Sep-2020 |
riastradh |
Round of uvm.h cleanup.
The poorly named uvm.h is generally supposed to be for uvm-internal users only.
- Narrow it to files that actually need it -- mostly files that need to query whether curlwp is the pagedaemon, which should maybe be exposed by an external header.
- Use uvm_extern.h where feasible and uvm_*.h for things not exposed by it. We should split up uvm_extern.h but this will serve for now to reduce the uvm.h dependencies.
- Use uvm_stat.h and #ifdef UVMHIST uvm.h for files that use UVMHIST(ubchist), since ubchist is declared in uvm.h but the reference evaporates if UVMHIST is not defined, so we reduce header file dependencies.
- Make uvm_device.h and uvm_swap.h independently includable while here.
ok chs@
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609
|
| 1.25 |
01-May-2019 |
mlelstv |
allow NONE build
|
|
Revision tags: isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
|
| 1.24 |
15-Mar-2018 |
christos |
branches: 1.24.2; finish moving the compat code out.
|
| 1.23 |
15-Mar-2018 |
christos |
Untangle the swapctl compat code mess. Welcome to lucky 13.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
| 1.22 |
30-Jul-2015 |
christos |
branches: 1.22.16; include decls for _MODULE
|
| 1.21 |
30-Jul-2015 |
maxv |
Lock before calling uvm_swap_stats(). Otherwise a race condition could corrupt memory.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.20 |
03-Feb-2014 |
manu |
branches: 1.20.6; Properly translate struct swapent for COMPAT_NETBSD32
|
| 1.19 |
23-Nov-2013 |
christos |
convert from CIRCLEQ to TAILQ add uvm_swap_shutdown(), unused
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.18 |
27-Apr-2011 |
rmind |
branches: 1.18.4; 1.18.10; 1.18.14; 1.18.18; Remove public uvm_swap_stats() routine, keep it internal.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 wrstuden-revivesa-base mjf-devfs2-base
|
| 1.17 |
29-May-2008 |
mrg |
branches: 1.17.20; 1.17.26; remove clause #3 from my license where there are no other copyright holders involved.
|
|
Revision tags: nick-csl-alignment-base5 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 matt-armv6-nbase jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.16 |
22-Feb-2007 |
thorpej |
branches: 1.16.38; 1.16.40; 1.16.42; 1.16.44; TRUE -> true, FALSE -> false
|
| 1.15 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.14 |
11-Dec-2005 |
christos |
branches: 1.14.26; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.13 |
17-Sep-2005 |
yamt |
- make uvm_swap_stats acquire swap_syscall_lock by itsself so that callers don't need to acquire it beforehand. - make swap_syscall_lock static.
|
| 1.12 |
17-Sep-2005 |
yamt |
make VMSWAP optional again.
|
| 1.11 |
13-Sep-2005 |
yamt |
wrap swap related code by #ifdef VMSWAP. always #define VMSWAP for now.
|
| 1.10 |
31-Jul-2005 |
yamt |
revert "defflag VMSWAP" changes for now. there seems to be far more people who don't want to edit their kernel config files than i thought.
|
| 1.9 |
30-Jul-2005 |
yamt |
defflag VMSWAP.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.8 |
11-Aug-2003 |
pk |
branches: 1.8.16; Introduce uvm_swapisfull(), which computes the available swap space by taking into account swap devices that are in the process of being removed.
|
| 1.7 |
21-Jul-2003 |
mrg |
de-__P()ify.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base kqueue-base
|
| 1.6 |
18-Mar-2002 |
manu |
branches: 1.6.12; Move swapctl(SWAP_STATS) implementation to a separate function called uvm_swap_stats(). This is done in order to allow COMPAT_* swapctl() emulation to use it directly without going through sys_swapctl().
The problem with using sys_swapctl() there is that it involves copying the swapent array to the stackgap, and this array's size is not known at build time. Hence it would not be possible to ensure it would fit in the stackgap in any case.
|
|
Revision tags: netbsd-1-5-PATCH003 newlock-base ifpoll-base thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 thorpej_scsipi_beforemerge thorpej_scsipi_nbase netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base chs-ubc2-newbase thorpej_scsipi_base
|
| 1.5 |
11-Jan-2000 |
chs |
branches: 1.5.6; 1.5.8; add support for ``swapctl -d'' (removing swap space). improve handling of i/o errors in swap space.
reviewed by: Chuck Cranor
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.4 |
21-Jun-1999 |
thorpej |
branches: 1.4.2; Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base kenh-if-detach-base chs-ubc-base eeh-paddr_t-base
|
| 1.3 |
07-Feb-1998 |
mrg |
branches: 1.3.10; restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.9 |
15-Mar-2024 |
andvar |
Fix !VMSWAP build: Added __unused for few local variables, which are used in VMSWAP block only. Adjust !VMSWAP uvm_swap_stats() definition to make it build with compat code. Copied "int (*uvm_swap_stats50)(...)" definition from uvm_swap to uvm_swapstub to avoid missing uvm_swap_stats50 reference on linking.
Fixes INSTALL_CPMBR1400, INSTALL_ZYXELKX evbmips kernel configs as a result.
Reviewed by simon and phone in IRC (thanks).
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.8 |
18-Feb-2014 |
pooka |
Use same uvm_swap_shutdown() stub for !vmswap kernels and rump kernels.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.7 |
27-Apr-2011 |
rmind |
branches: 1.7.4; 1.7.14; 1.7.18; Remove public uvm_swap_stats() routine, keep it internal.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.6 |
08-Jan-2008 |
matt |
branches: 1.6.12; 1.6.32; 1.6.38; Make sys_swapctl match syscallargs.h
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base
|
| 1.5 |
23-Feb-2007 |
skrll |
branches: 1.5.18; 1.5.24; 1.5.30; -#include <sys/sa.h>
|
|
Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase wrstuden-fixsa-base-1 netbsd-4-0-RELEASE netbsd-4-0-RC5 matt-nb4-arm-base netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 wrstuden-fixsa-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.4 |
11-Dec-2005 |
christos |
branches: 1.4.18; 1.4.28; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base ktrace-lwp-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.3 |
21-Sep-2005 |
yamt |
branches: 1.3.6; add a file which i forgot when reviving VMSWAP option.
|
| 1.2 |
31-Jul-2005 |
yamt |
revert "defflag VMSWAP" changes for now. there seems to be far more people who don't want to edit their kernel config files than i thought.
|
| 1.1 |
30-Jul-2005 |
yamt |
defflag VMSWAP.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.51 |
10-Jan-2022 |
christos |
Use p->p_stackbase instead of USRSTACK because the stackbase can move because of ASLR.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
| 1.50 |
06-Jan-2018 |
kamil |
Revert vadvise(2) removal
This system call was used in legacy Lisp code, that was inherited to modern age and still compiled against supported compat layers (e.g. in clisp, oaklisp, Franz Lisp).
It used to instruct the kernel about paging policy (G/C aware, flush etc).
Newly compiled code (assuming that it will detect vadvise()) will use the libc stub for vadvise(). The headers for this interface are gone.
vadvise(2) could be marked as COMPAT_80, but as long as we support ultrix, sunos or aout68k ABI, don't bother with this.
Requested by <mrg>
|
| 1.49 |
19-Dec-2017 |
kamil |
Drop SYS_vadvise
The (o)vadvise syscall is dummy since the beginning of NetBSD.
It is an obsolete remnant from the old UNIX.
Sponsored by <The NetBSD Foundation>
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2
|
| 1.48 |
06-May-2017 |
joerg |
Extend the mmap(2) interface to allow requesting protections for later use with mprotect(2), but without enabling them immediately.
Extend the mremap(2) interface to allow duplicating mappings, i.e. create a second range of virtual addresses references the same physical pages. Duplicated mappings can have different effective protections.
Adjust PAX mprotect logic to disallow effective protections of W&X, but allow one mapping W and another X protections. This obsoletes using temporary files for purposes like JIT.
Adjust PAX logic for mmap(2) and mprotect(2) to fail if W&X is requested and not silently drop the X protection.
Improve test cases to ensure correct operation of the changed interfaces.
|
|
Revision tags: prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422
|
| 1.47 |
07-Apr-2016 |
christos |
branches: 1.47.8; remove more ifdefs
|
| 1.46 |
07-Apr-2016 |
christos |
Add PAX_MPROTECT_DEBUG
|
|
Revision tags: nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base
|
| 1.45 |
05-Sep-2014 |
matt |
branches: 1.45.2; Don't use C++ new keyword as a variable name.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.44 |
02-Feb-2011 |
chuck |
branches: 1.44.14; udpate license clauses on my code to match the new-style BSD licenses. verified with Mike Hibler it is ok to remove clause 3 on utah copyright, as per UCB. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
| 1.43 |
15-Dec-2009 |
matt |
branches: 1.43.4; 1.43.6; 1.43.8; Use PRIxVADDR... (change a printf/panic -> panic)
|
|
Revision tags: matt-premerge-20091211
|
| 1.42 |
27-Nov-2009 |
njoly |
Make break(2) reject high adresses that wrap to 0 after page rounding.
|
|
Revision tags: yamt-nfs-mp-base8 yamt-nfs-mp-base7 jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 jym-xensuspend-base nick-hppapmap-base
|
| 1.41 |
04-Mar-2009 |
christos |
don't uprintf in non-debug kernels.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.40 |
02-Jan-2008 |
ad |
branches: 1.40.10; 1.40.12; 1.40.18; 1.40.24; 1.40.28; Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3
|
| 1.39 |
20-Dec-2007 |
dsl |
Convert all the system call entry points from: int foo(struct lwp *l, void *v, register_t *retval) to: int foo(struct lwp *l, const struct foo_args *uap, register_t *retval) Fixup compat code to not write into 'uap' and (in some cases) to actually pass a correctly formatted 'uap' structure with the right name to the next routine. A few 'compat' routines that just call standard ones have been deleted. All the 'compat' code compiles (along with the kernels required to test build it). 98% done by automated scripts.
|
|
Revision tags: nick-csl-alignment-base5 matt-armv6-prevmlocking yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base jmcneill-pm-base nick-csl-alignment-base yamt-idlelwp-base8 thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge
|
| 1.38 |
09-Feb-2007 |
ad |
branches: 1.38.20; 1.38.26; 1.38.28; 1.38.32; Merge newlock2 to head.
|
|
Revision tags: newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 newlock2-base
|
| 1.37 |
18-Dec-2006 |
skrll |
Update uvm_grow to support stacks that grow upwards.
Use on hppa and fix a bug in the hppa trap handler.
|
|
Revision tags: yamt-splraiseipl-base3 netbsd-4-base
|
| 1.36 |
01-Nov-2006 |
yamt |
branches: 1.36.2; remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.35 |
12-Oct-2006 |
yamt |
remove unnecessary #include of vnode.h.
|
| 1.34 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.33 |
20-May-2006 |
elad |
branches: 1.33.6; 1.33.8; Better implementation of PaX MPROTECT, after looking some more into the code and not trying to use temporary solutions.
Lots of comments and help from YAMAMOTO Takashi, also thanks to the PaX author for being quick to recognize that something fishy's going on. :)
Hook up in mmap/vmcmd rather than (ugh!) uvm_map_protect().
Next time I suggest to commit a temporary solution just revoke my commit bit.
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.32 |
11-Dec-2005 |
christos |
branches: 1.32.4; 1.32.6; 1.32.8; 1.32.12; 1.32.14; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.31 |
27-Jun-2005 |
thorpej |
branches: 1.31.2; Use ANSI function decls.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge kent-audio1-base
|
| 1.30 |
28-Aug-2004 |
jdolecek |
uvm_grow(): avoid needless arithmetic and make LP64 safe
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.29 |
24-Aug-2003 |
chs |
add support for non-executable mappings (where the hardware allows this) and make the stack and heap non-executable by default. the changes fall into two basic catagories:
- pmap and trap-handler changes. these are all MD: = alpha: we already track per-page execute permission with the (software) PG_EXEC bit, so just have the trap handler pay attention to it. = i386: use a new GDT segment for %cs for processes that have no executable mappings above a certain threshold (currently the bottom of the stack). track per-page execute permission with the last unused PTE bit. = powerpc/ibm4xx: just use the hardware exec bit. = powerpc/oea: we already track per-page exec bits, but the hardware only implements non-exec mappings at the segment level. so track the number of executable mappings in each segment and turn on the no-exec segment bit iff the count is 0. adjust the trap handler to deal. = sparc (sun4m): fix our use of the hardware protection bits. fix the trap handler to recognize text faults. = sparc64: split the existing unified TSB into data and instruction TSBs, and only load TTEs into the appropriate TSB(s) for the permissions. fix the trap handler to check for execute permission. = not yet implemented: amd64, hppa, sh5
- changes in all the emulations that put a signal trampoline on the stack. instead, we now put the trampoline into a uvm_aobj and map that into the process separately.
originally from openbsd, adapted for netbsd by me.
|
| 1.28 |
25-May-2003 |
simonb |
branches: 1.28.2; Consistancy nit- use parentheses around return argument.
|
| 1.27 |
18-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base kqueue-base
|
| 1.26 |
08-Dec-2001 |
thorpej |
Make the coredump routine exec-format/emulation specific. Split out traditional NetBSD coredump routines into core_netbsd.c and netbsd32_core.c (for COMPAT_NETBSD32).
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.25 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
| 1.24 |
06-Jun-2001 |
mrg |
branches: 1.24.2; 1.24.6; uvm_coredump32() moved into compat/netbsd32.
|
| 1.23 |
02-Jun-2001 |
chs |
replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
| 1.22 |
25-May-2001 |
chs |
remove trailing whitespace.
|
| 1.21 |
06-May-2001 |
ross |
Fix overflow errors in brk(2).
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.20 |
19-Mar-2001 |
simonb |
In sys_obreak(), the return value of atop() was being used to change the process dsize for both positive and negative changes. Since atop() casts its result to a paddr_t (which is unsigned), negative changes in process data size resulted in unrealistic dsizes being set. Use "dsize -= atop(-diff)" for a negative diffs. Fixes the "Impossible process sizes" mentioned on current-users.
Unsigned cast catch and much debugging help from Martin Laubach.
|
| 1.19 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.18 |
13-Sep-2000 |
thorpej |
branches: 1.18.2; Add an align argument to uvm_map() and some callers of that routine. Works similarly fto pmap_prefer(), but allows callers to specify a minimum power-of-two alignment of the region. How we ever got along without this for so long is beyond me.
|
| 1.17 |
07-Sep-2000 |
chs |
fix uvm_coredump32() just like uvm_coredump().
|
| 1.16 |
24-Aug-2000 |
chs |
in uvm_coredump(), avoid dumping parts of the stack multiple times while skipping parts of the stack that hasn't been used. pointed out by SAITOH Masanobu <masanobu@iij.ad.jp>.
|
| 1.15 |
10-Jul-2000 |
mrg |
fix a cast for sparc64.
|
| 1.14 |
02-Jul-2000 |
thorpej |
- Avoid an integer overflow when checking if we have exceeded our rlimit in sbrk. Slightly modified from a patch from Artur Grabowski. - Rearrange code slightly, partially from Artur Grabowski. - Only adjust vm_dsize if the grow or shrink actually succeeds.
|
| 1.13 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
|
Revision tags: netbsd-1-5-base minoura-xpg4dl-base
|
| 1.12 |
30-Mar-2000 |
augustss |
branches: 1.12.4; Remove more register declarations.
|
| 1.11 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase
|
| 1.10 |
30-Dec-1999 |
eeh |
I should have made uvm_page_physload() take paddr_t's instead of vaddr_t's. Also, add uvm_coredump32().
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
|
| 1.9 |
04-Dec-1999 |
fvdl |
CL* clearout
|
|
Revision tags: netbsd-1-4-PATCH002 kame_141_19991130 comdex-fall-1999-base fvdl-softdep-base netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 chs-ubc2-base netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.8 |
25-Mar-1999 |
mrg |
branches: 1.8.2; 1.8.4; 1.8.8; 1.8.14; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.7 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - update calls to uvm_unmap_remove/uvm_unmap (mainonly boolean arg has been removed) - replace UVM_ET_ISMAP checks with UVM_ET_ISSUBMAP checks
|
| 1.6 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.5 |
28-Jul-1998 |
thorpej |
branches: 1.5.2; Don't cast the null residual pointer passed to vn_rdwr().
|
| 1.4 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 netbsd-7-2-RELEASE pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 netbsd-7-1-2-RELEASE pgoyette-compat-base netbsd-7-1-1-RELEASE tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 netbsd-7-1-RELEASE netbsd-7-1-RC2 nick-nhusb-base-20170204 netbsd-7-nhusb-base-20170116 bouyer-socketcan-base pgoyette-localcount-20170107 netbsd-7-1-RC1 nick-nhusb-base-20161204 pgoyette-localcount-20161104 netbsd-7-0-2-RELEASE nick-nhusb-base-20161004 localcount-20160914 netbsd-7-nhusb-base pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-7-base yamt-pagecache-base9 yamt-pagecache-tag8 netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE rmind-smpnet-nbase netbsd-6-1-1-RELEASE riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 agc-symver-base netbsd-6-1-RC2 netbsd-6-1-RC1 yamt-pagecache-base8 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 tls-maxphys-base matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base rmind-uvmplock-base
|
| 1.14 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jruoho-x86intr-base matt-mips64-premerge-20101231 matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base uebayasi-xip-base6 uebayasi-xip-base5 netbsd-5-1-RELEASE uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 netbsd-5-1-RC4 matt-nb5-mips64-k15 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 uebayasi-xip-base1 netbsd-5-1-RC1 yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 netbsd-4-0-1-RELEASE wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-fixsa-newbase nick-csl-alignment-base5 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-merge1 matt-armv6-prevmlocking wrstuden-fixsa-base-1 vmlocking2-base3 netbsd-4-0-RELEASE bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 netbsd-4-0-RC5 matt-nb4-arm-base matt-armv6-nbase jmcneill-base netbsd-4-0-RC4 mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base netbsd-4-0-RC3 yamt-x86pmap-base3 yamt-x86pmap-base2 netbsd-4-0-RC2 yamt-x86pmap-base netbsd-4-0-RC1 matt-armv6-base matt-mips64-base jmcneill-pm-base hpcarm-cleanup-base nick-csl-alignment-base yamt-idlelwp-base8 wrstuden-fixsa-base thorpej-atomic-base reinoud-bufcleanup-base mjf-ufs-trans-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 abandoned-netbsd-4-base yamt-splraiseipl-base2 yamt-splraiseipl-base yamt-pdpolicy-base9 newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 netbsd-4-base yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| 1.13 |
11-Dec-2005 |
christos |
branches: 1.13.98; 1.13.104; 1.13.106; merge ktrace-lwp.
|
|
Revision tags: yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base ktrace-lwp-base
|
| 1.12 |
27-Jun-2005 |
thorpej |
Use ANSI function decls.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base kqueue-base
|
| 1.11 |
10-Nov-2001 |
lukem |
branches: 1.11.16; add RCSIDs, and in some cases, slightly cleanup #include order
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf thorpej-devvp-base
|
| 1.10 |
02-Jun-2001 |
chs |
branches: 1.10.2; 1.10.6; replace vm_map{,_entry}_t with struct vm_map{,_entry} *.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.9 |
15-Mar-2001 |
chs |
eliminate the KERN_* error codes in favor of the traditional E* codes. the mapping is:
KERN_SUCCESS 0 KERN_INVALID_ADDRESS EFAULT KERN_PROTECTION_FAILURE EACCES KERN_NO_SPACE ENOMEM KERN_INVALID_ARGUMENT EINVAL KERN_FAILURE various, mostly turn into KASSERTs KERN_RESOURCE_SHORTAGE ENOMEM KERN_NOT_RECEIVER <unused> KERN_NO_ACCESS <unused> KERN_PAGES_LOCKED <unused>
|
| 1.8 |
27-Jun-2000 |
mrg |
branches: 1.8.2; remove include of <vm/vm.h>
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-4-PATCH003 netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base netbsd-1-4-PATCH002 chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base kame_141_19991130 comdex-fall-1999-base fvdl-softdep-base netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 chs-ubc2-base netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.7 |
25-Mar-1999 |
mrg |
branches: 1.7.8; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.6 |
11-Oct-1998 |
chuck |
remove unused share map code from UVM: - update calls to uvm_unmap_remove/uvm_unmap (mainonly boolean arg has been removed) - replace UVM_ET_ISMAP checks with UVM_ET_ISSUBMAP checks
|
| 1.5 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.4 |
09-Mar-1998 |
mrg |
branches: 1.4.2; KNF.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.121 |
05-Apr-2024 |
riastradh |
uvm: Expand v_size <= v_writesize assertions to help diagnostics.
PR kern/58117
|
|
Revision tags: thorpej-ifq-base thorpej-altq-separation-base
|
| 1.120 |
09-Apr-2023 |
riastradh |
uvm: Simplify assertion in uvn_get.
No functional change intended.
|
| 1.119 |
09-Apr-2023 |
riastradh |
uvm(9): KASSERT(A && B) -> KASSERT(A); KASSERT(B)
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.118 |
13-Mar-2021 |
skrll |
Consistently use %#jx instead of 0x%jx or just %jx in UVMHIST_LOG formats
|
| 1.117 |
16-Aug-2020 |
chs |
branches: 1.117.2; in uvm_findpage(), when uvm_page_array_fill_and_peek() returns a page that is not the one we want and we make an assertion about dirtiness, check the dirty status of the page we wanted rather than the page we got.
|
| 1.116 |
14-Aug-2020 |
chs |
centralize calls from UVM to radixtree into a few functions. in those functions, assert that the object lock is held in the correct mode.
|
| 1.115 |
09-Jul-2020 |
skrll |
Consistently use UVMHIST(__func__)
Convert UVMHIST_{CALLED,LOG} into UVMHIST_CALLARGS
|
| 1.114 |
25-May-2020 |
ad |
- Alter the convention for uvm_page_array slightly, so the basic search parameters can't change part way through a search: move the "uobj" and "flags" arguments over to uvm_page_array_init() and store those with the array.
- With that, detect when it's not possible to find any more pages in the tree with the given search parameters, and avoid repeated tree lookups if the caller loops over uvm_page_array_fill_and_peek().
|
| 1.113 |
19-May-2020 |
ad |
PR kern/32166: pgo_get protocol is ambiguous Also problems with tmpfs+nfs noted by hannken@.
Don't pass PGO_ALLPAGES to pgo_get, and ignore PGO_DONTCARE in the !PGO_LOCKED case. In uao_get() have uvm_pagealloc() take care of page zeroing and release busy pages on error.
|
| 1.112 |
19-May-2020 |
ad |
Don't try to do readahead on tmpfs.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.111 |
22-Mar-2020 |
ad |
Process concurrent page faults on individual uvm_objects / vm_amaps in parallel, where the relevant pages are already in-core. Proposed on tech-kern.
Temporarily disabled on MP architectures with __HAVE_UNLOCKED_PMAP until adjustments are made to their pmaps.
|
| 1.110 |
14-Mar-2020 |
ad |
Make uvm_pagemarkdirty() responsible for putting vnodes onto the syncer work list. Proposed on tech-kern@.
|
| 1.109 |
14-Mar-2020 |
ad |
Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW locks out of the equation for sleep/wakeup, and allows observing+waiting for busy pages when holding only a read lock. Proposed on tech-kern.
|
| 1.108 |
03-Mar-2020 |
rjs |
Make some wait channel names unique to six characters.
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| 1.107 |
27-Feb-2020 |
ad |
Tighten up the locking around vp->v_iflag a little more after the recent split of vmobjlock & v_interlock.
|
| 1.106 |
23-Feb-2020 |
ad |
UVM locking changes, proposed on tech-kern:
- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock. - Break v_interlock and vmobjlock apart. v_interlock remains a mutex. - Do partial PV list locking in the x86 pmap. Others to follow later.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| 1.105 |
15-Jan-2020 |
ad |
Merge from yamt-pagecache (after much testing):
- Reduce unnecessary page scan in putpages esp. when an object has a ton of pages cached but only a few of them are dirty.
- Reduce the number of pmap operations by tracking page dirtiness more precisely in uvm layer.
|
|
Revision tags: ad-namecache-base
|
| 1.104 |
21-Dec-2019 |
ad |
branches: 1.104.2; - Rename VM_PGCOLOR_BUCKET() to VM_PGCOLOR(). I want to reuse "bucket" for something else soon and TBH it matches what this macro does better.
- Add inlines to set/get locator values in the unused lower bits of pg->phys_addr. Begin by using it to cache the freelist index, because computing it is expensive and that shows up during profiling. Discussed on tech-kern.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.103 |
28-Oct-2017 |
pgoyette |
branches: 1.103.4; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
|
| 1.102 |
06-Dec-2015 |
wiz |
branches: 1.102.10; Fix typo in comment.
|
| 1.101 |
06-Dec-2015 |
mlelstv |
Clean up assertions and catch integer overflow.
|
|
Revision tags: nick-nhusb-base-20150921
|
| 1.100 |
24-Aug-2015 |
pooka |
to garnish, dust with _KERNEL_OPT
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6 tls-maxphys-base
|
| 1.99 |
30-Jul-2012 |
matt |
branches: 1.99.2; 1.99.16; -fno-common broke kernhist since it used commons. Add a KERNHIST_DEFINE which is define the kernel history. Change UVM to deal with the new usage.
|
|
Revision tags: jmcneill-usbmp-base10
|
| 1.98 |
01-Jun-2012 |
martin |
Only use generic readahead on VREG vnodes, the space used to store the context is not valid on other types. Prevents the crash reported in PR kern/38889, but does not fix the mmap of block devices, more work is needed (no size on VBLK vnodes).
|
|
Revision tags: yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
|
| 1.97 |
06-Sep-2011 |
matt |
branches: 1.97.2; 1.97.6; 1.97.8; Allocate color appropriate pages.
|
| 1.96 |
12-Jun-2011 |
rmind |
Welcome to 5.99.53! Merge rmind-uvmplock branch:
- Reorganize locking in UVM and provide extra serialisation for pmap(9). New lock order: [vmpage-owner-lock] -> pmap-lock.
- Simplify locking in some pmap(9) modules by removing P->V locking.
- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).
- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner. Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.
- Unify /dev/mem et al in MI code and provide required locking (removes kernel-lock on some ports). Also, avoid cache-aliasing issues.
Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches formed the core changes of this branch.
|
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
| 1.95 |
23-Apr-2011 |
rmind |
branches: 1.95.2; Replace "malloc" in comments, remove unnecessary header inclusions.
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| 1.94 |
02-Feb-2011 |
chuck |
udpate license clauses on my code to match the new-style BSD licenses. verified with Mike Hibler it is ok to remove clause 3 on utah copyright, as per UCB. based on diff that rmind@ sent me.
no functional change with this commit.
|
|
Revision tags: jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base
|
| 1.93 |
08-Jan-2010 |
pooka |
branches: 1.93.2; 1.93.4; 1.93.6; 1.93.8; The VATTR_NULL/VREF/VHOLD/HOLDRELE() macros lost their will to live years ago when the kernel was modified to not alter ABI based on DIAGNOSTIC, and now just call the respective function interfaces (in lowercase). Plenty of mix'n match upper/lowercase has creeped into the tree since then. Nuke the macros and convert all callsites to lowercase.
no functional change
|
|
Revision tags: matt-premerge-20091211 yamt-nfs-mp-base8 yamt-nfs-mp-base7 jym-xensuspend-nbase
|
| 1.92 |
04-Aug-2009 |
pooka |
uvm_vnp_zerorange() logically and by implementation more a part of ubc than uvm_vnode, so move it over.
|
| 1.91 |
04-Aug-2009 |
pooka |
kernel opt polish: g/c unnecessary fs_nfs.h and opt_ddb.h
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 haad-dm-base wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base nick-net80211-sync-base keiichi-mipv6-base bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base matt-armv6-base hpcarm-cleanup-base
|
| 1.90 |
02-Jan-2008 |
ad |
branches: 1.90.10; 1.90.28; Merge vmlocking2 to head.
|
|
Revision tags: vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 vmlocking-nbase jmcneill-pm-base reinoud-bufcleanup-base
|
| 1.89 |
01-Dec-2007 |
yamt |
branches: 1.89.2; 1.89.6; constify pagerops.
|
| 1.88 |
01-Dec-2007 |
yamt |
use designated initiaizers for uvm_pagerops.
|
|
Revision tags: jmcneill-base bouyer-xenamd64-base2 yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 vmlocking-base
|
| 1.87 |
11-Oct-2007 |
ad |
branches: 1.87.4; Remove LOCK_ASSERT(!simple_lock_held(&foo));
|
| 1.86 |
10-Oct-2007 |
ad |
Merge from vmlocking:
- Split vnode::v_flag into three fields, depending on field locking. - simple_lock -> kmutex in a few places. - Fix some simple locking problems.
|
|
Revision tags: nick-csl-alignment-base5 yamt-x86pmap-base2 yamt-x86pmap-base matt-mips64-base
|
| 1.85 |
04-Aug-2007 |
pooka |
branches: 1.85.2; 1.85.4; 1.85.6; Use VSIZENOTSET only in KASSERTs
|
| 1.84 |
22-Jul-2007 |
pooka |
branches: 1.84.4; Retire uvn_attach() - it abuses VXLOCK and its functionality, setting vnode sizes, is handled elsewhere: file system vnode creation or spec_open() for regular files or block special files, respectively.
Add a call to VOP_MMAP() to the pagedvn exec path, since the vnode is being memory mapped.
reviewed by tech-kern & wrstuden
|
|
Revision tags: nick-csl-alignment-base mjf-ufs-trans-base
|
| 1.83 |
09-Jul-2007 |
ad |
branches: 1.83.2; Merge some of the less invasive changes from the vmlocking branch:
- kthread, callout, devsw API changes - select()/poll() improvements - miscellaneous MT safety improvements
|
| 1.82 |
05-Jun-2007 |
yamt |
improve post-ubc file overwrite performance in common cases. ie. when it's safe, actually overwrite blocks rather than doing read-modify-write.
also fixes PR/33152 and PR/36303.
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
|
| 1.81 |
04-Mar-2007 |
christos |
branches: 1.81.2; 1.81.4; Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
|
|
Revision tags: ad-audiomp-base
|
| 1.80 |
22-Feb-2007 |
thorpej |
TRUE -> true, FALSE -> false
|
| 1.79 |
21-Feb-2007 |
thorpej |
Replace the Mach-derived boolean_t type with the C99 bool type. A future commit will replace use of TRUE and FALSE with true and false.
|
|
Revision tags: post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 newlock2-base
|
| 1.78 |
09-Dec-2006 |
chs |
branches: 1.78.2; a smorgasbord of improvements to vnode locking and path lookup: - LOCKPARENT is no longer relevant for lookup(), relookup() or VOP_LOOKUP(). these now always return the parent vnode locked. namei() works as before. lookup() and various other paths no longer acquire vnode locks in the wrong order via vrele(). fixes PR 32535. as a nice side effect, path lookup is also up to 25% faster. - the above allows us to get rid of PDIRUNLOCK. - also get rid of WANTPARENT (just use LOCKPARENT and unlock it). - remove an assumption in layer_node_find() that all file systems implement a recursive VOP_LOCK() (unionfs doesn't). - require that all file systems supply vfs_vptofh and vfs_fhtovp routines. fill in eopnotsupp() for file systems that don't support being exported and remove the checks for NULL. (layerfs calls these without checking.) - in union_lookup1(), don't change refcounts in the ISDOTDOT case, just adjust which vnode is locked. fixes PR 33374. - apply fixes for ufs_rename() from ufs_vnops.c rev. 1.61 to ext2fs_rename().
|
|
Revision tags: netbsd-4-base
|
| 1.77 |
01-Nov-2006 |
yamt |
branches: 1.77.2; remove some __unused from function parameters.
|
|
Revision tags: yamt-splraiseipl-base2
|
| 1.76 |
14-Oct-2006 |
yamt |
uvm_vnp_setsize: put back v_size assignment after uvn_put. PR/34147 from Juergen Hannken-Illjes.
|
| 1.75 |
12-Oct-2006 |
yamt |
move some knowledge about vnode into uvm_vnode.c.
|
| 1.74 |
12-Oct-2006 |
christos |
- sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
|
Revision tags: yamt-splraiseipl-base
|
| 1.73 |
15-Sep-2006 |
yamt |
branches: 1.73.2; merge yamt-pdpolicy branch. - separate page replacement policy from the rest of kernel - implement an alternative replacement policy
|
|
Revision tags: abandoned-netbsd-4-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 rpaulo-netinet-merge-pcb-base
|
| 1.72 |
22-Jul-2006 |
yamt |
branches: 1.72.4; - in genfs_getpages, take g_glock earlier so that it can't be intervened by truncation. it also fixes a deadlock. (g_glock vs pages locking order) - uvm_vnp_setsize: modify v_size while holding v_interlock.
reviewed by Chuck Silvers.
|
| 1.71 |
21-Jul-2006 |
ad |
- Use the LWP cached credentials where sane. - Minor cosmetic changes.
|
|
Revision tags: yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base yamt-pdpolicy-base5 chap-midi-base simonb-timecounters-base
|
| 1.70 |
14-May-2006 |
elad |
integrate kauth.
|
|
Revision tags: yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5
|
| 1.69 |
11-Dec-2005 |
christos |
branches: 1.69.4; 1.69.6; 1.69.8; 1.69.10; 1.69.12; merge ktrace-lwp.
|
|
Revision tags: ktrace-lwp-base
|
| 1.68 |
29-Nov-2005 |
yamt |
merge yamt-readahead branch.
|
|
Revision tags: yamt-readahead-base3
|
| 1.67 |
29-Nov-2005 |
yamt |
read-ahead statistics.
|
|
Revision tags: yamt-readahead-base2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base
|
| 1.66 |
27-Jun-2005 |
thorpej |
branches: 1.66.2; 1.66.8; Sprinkle some static.
|
| 1.65 |
27-Jun-2005 |
thorpej |
Use ANSI function decls.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 netbsd-3-0-RC2 netbsd-3-0-RC1 yamt-km-base4 yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base kent-audio1-beforemerge
|
| 1.64 |
09-Jan-2005 |
chs |
adjust the UBC mapping code to support non-vnode uvm_objects. this means we can no longer look at the vnode size to determine how many pages to request in a fault, which is good since for NFS the size can change out from under us on the server anyway. there's also a new flag UBC_UNMAP for ubc_release(), so that the file system code can make the decision about whether to cache mappings for files being used as executables.
|
|
Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
|
| 1.63 |
24-Mar-2004 |
junyoung |
Nuke __P().
|
| 1.62 |
29-Jun-2003 |
fvdl |
branches: 1.62.2; Back out the lwp/ktrace changes. They contained a lot of colateral damage, and need to be examined and discussed more.
|
| 1.61 |
28-Jun-2003 |
darrenr |
Pass lwp pointers throughtout the kernel, as required, so that the lwpid can be inserted into ktrace records. The general change has been to replace "struct proc *" with "struct lwp *" in various function prototypes, pass the lwp through and use l_proc to get the process pointer when needed.
Bump the kernel rev up to 1.6V
|
| 1.60 |
22-Apr-2003 |
yamt |
correct accounting of {exec,file}pages. they are not updated correctly when breaking loan.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge kqueue-base
|
| 1.59 |
06-Sep-2002 |
gehenna |
Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to dynamically generated by config(8).
- All device switches is defined as a constant structure in device drivers.
- The new grammer ``device-major'' is introduced to ``files''.
device-major <prefix> char <num> [block <num>] [<rules>]
- All device major numbers must be listed up in port dependent majors.<arch> by using this grammer.
- Added the new naming convention. The name of the device switch must be <prefix>_[bc]devsw for auto-generation of device switch tables.
- The backward compatibility of loading block/character device switch by LKM framework is broken. This is necessary to convert from block/character device major to device name in runtime and vice versa.
- The restriction to assign device major by LKM is completely removed. We don't need to reserve LKM entries for dynamic loading of device switch.
- In compile time, device major numbers list is packed into the kernel and the LKM framework will refer it to assign device major number dynamically.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base gehenna-devsw-base
|
| 1.58 |
17-May-2002 |
enami |
Make uvn_findpages to return number of pages found so that caller can easily check if all requested pages are found or not.
|
|
Revision tags: eeh-devprop-base newlock-base ifpoll-base
|
| 1.57 |
31-Dec-2001 |
chs |
branches: 1.57.8; in uvm_vnp_setsize(), wait for any i/o in progress on pages that we free.
|
| 1.56 |
09-Dec-2001 |
chs |
replace "vnode" and "vtext" with "file" and "exec" in uvmexp field names.
|
|
Revision tags: thorpej-mips-cache-base
|
| 1.55 |
10-Nov-2001 |
lukem |
add RCSIDs, and in some cases, slightly cleanup #include order
|
|
Revision tags: thorpej-devvp-base3 thorpej-devvp-base2
|
| 1.54 |
26-Sep-2001 |
chs |
branches: 1.54.2; change the names of the arguments to uvn_put() to match their usage.
|
| 1.53 |
22-Sep-2001 |
sommerfeld |
VOP_PUTPAGES must release the uobj's lock for us, so ensure it's locked beforehand and unlocked afterwards using LOCK_ASSERT().
|
|
Revision tags: post-chs-ubcperf
|
| 1.52 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base
|
| 1.51 |
17-Aug-2001 |
chs |
branches: 1.51.2; allow mappings of VBLK vnodes.
|
| 1.50 |
26-May-2001 |
chs |
branches: 1.50.2; replace vm_page_t with struct vm_page *.
|
| 1.49 |
25-May-2001 |
chs |
remove trailing whitespace.
|
|
Revision tags: thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.48 |
10-Mar-2001 |
chs |
eliminate the VM_PAGER_* error codes in favor of the traditional E* codes. the mapping is:
VM_PAGER_OK 0 VM_PAGER_BAD <unused> VM_PAGER_FAIL <unused> VM_PAGER_PEND 0 (see below) VM_PAGER_ERROR EIO VM_PAGER_AGAIN EAGAIN VM_PAGER_UNLOCK EBUSY VM_PAGER_REFAULT ERESTART
for async i/o requests, it used to be possible for the request to be convert to sync, and the pager would return VM_PAGER_OK or VM_PAGER_PEND to indicate whether the caller should perform post-i/o cleanup. this is no longer allowed; pagers must now return 0 to indicate that the async i/o was successfully started, and the caller never needs to worry about doing the post-i/o cleanup.
|
| 1.47 |
09-Mar-2001 |
chs |
add UBC memory-usage balancing. we track the number of pages in use for each of the basic types (anonymous data, executable image, cached files) and prevent the pagedaemon from reusing a given page if that would reduce the count of that type of page below a sysctl-setable minimum threshold. the thresholds are controlled via three new sysctl tunables: vm.anonmin, vm.vnodemin, and vm.vtextmin. these tunables are the percentages of pageable memory reserved for each usage, and we do not allow the sum of the minimums to be more than 95% so that there's always some memory that can be reused.
|
| 1.46 |
22-Feb-2001 |
enami |
branches: 1.46.2; When shrinking file size, don't dispose of a page still in use.
|
| 1.45 |
18-Feb-2001 |
chs |
in uvn_flush(), add a fast path for the case where the vnode has no pages. update the comment above this function while I'm here.
|
| 1.44 |
08-Feb-2001 |
chs |
remove a debug printf() that has outlived its usefulness.
|
| 1.43 |
06-Feb-2001 |
chs |
in uvn_flush(), interpret a "stop" value of 0 as meaning all pages at offsets equal to or higher than "start". use this in uvm_vnp_setsize() instead of the vnode's size since there can be pages past EOF.
|
| 1.42 |
28-Jan-2001 |
thorpej |
Page scanner improvements, behavior is actually a bit more like Mach VM's now. Specific changes: - Pages now need not have all of their mappings removed before being put on the inactive list. They only need to have the "referenced" attribute cleared. This makes putting pages onto the inactive list much more efficient. In order to eliminate redundant clearings of "refrenced", callers of uvm_pagedeactivate() must now do this themselves. - When checking the "modified" attribute for a page (for clearing PG_CLEAN), make sure to only do it if PG_CLEAN is currently set on the page (saves a potentially expensive pmap operation). - When scanning the inactive list, if a page is referenced, reactivate it (this part was actually added in uvm_pdaemon.c,v 1.27). This now works properly now that pages on the inactive list are allowed to have mappings. - When scanning the inactive list and considering a page for freeing, remove all mappings, and then check the "modified" attribute if the page is marked PG_CLEAN. - When scanning the active list, if the page was referenced since its last sweep by the scanner, don't deactivate it. (This part was actually added in uvm_pdaemon.c,v 1.28.)
These changes greatly improve interactive performance during moderate to high memory and I/O load.
|
| 1.41 |
08-Jan-2001 |
chs |
in uvn_flush(), when PGO_SYNCIO is specified then we should wait for pending i/os to complete before returning even if PGO_CLEANIT is not specified. this fixes two races:
(1) NFS write rpcs vs. setattr operations which truncate the file. if the truncate doesn't wait for pending writes to complete then a later write rpc completion can undo the effect of the truncate. this problem has been reported by several people.
(2) write i/os in disk-based filesystem vs. the disk block being freed by a truncation, allocated to a new file, and written again with different data. if the disk driver reorders the requests and does the second i/o first, the old data will clobber the new, corrupting the new file. I haven't heard of anyone experiencing this problem yet, but it's fixed now anyway.
|
| 1.40 |
16-Dec-2000 |
chs |
in uvn_flush(), don't deactivate busy pages.
|
| 1.39 |
06-Dec-2000 |
chs |
in uvn_findpage(), only increment the counter of vnode pages if we succeed in allocating a page.
from Lars Heidieker <lars@heidieker.de> in PR 11636.
|
| 1.38 |
30-Nov-2000 |
simonb |
Move uvm_pgcnt_vnode and uvm_pgcnt_anon into uvmexp (as vnodepages and anonpages), and add vtextpages which is currently unused but will be used to trace the number of pages used by vtext vnodes.
|
| 1.37 |
27-Nov-2000 |
chs |
Initial integration of the Unified Buffer Cache project.
|
| 1.36 |
24-Nov-2000 |
chs |
g/c unused pager ops "asyncget" and "aiodone".
|
| 1.35 |
27-Jun-2000 |
mrg |
remove include of <vm/vm.h>
|
| 1.34 |
26-Jun-2000 |
mrg |
remove/move more mach vm header files:
<vm/pglist.h> -> <uvm/uvm_pglist.h> <vm/vm_inherit.h> -> <uvm/uvm_inherit.h> <vm/vm_kern.h> -> into <uvm/uvm_extern.h> <vm/vm_object.h> -> nothing <vm/vm_pager.h> -> into <uvm/uvm_pager.h>
also includes a bunch of <vm/vm_page.h> include removals (due to redudancy with <vm/vm.h>), and a scattering of other similar headers.
|
|
Revision tags: netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.33 |
19-May-2000 |
thorpej |
branches: 1.33.4; Tell uvm_pagermapin() the direction of the I/O so that it can map with only the protection that it needs.
|
| 1.32 |
03-Apr-2000 |
chs |
remove the "shareprot" pagerop. it's not needed anymore since share maps are long gone.
|
| 1.31 |
27-Mar-2000 |
kleink |
Kill duplicate uvn_attach() prototype (public, already in uvm_vnode.h).
|
| 1.30 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
| 1.29 |
13-Mar-2000 |
soren |
Fix doubled 'the's in comments.
|
|
Revision tags: chs-ubc2-newbase
|
| 1.28 |
28-Jan-2000 |
chs |
remove a debug printf that has outlived its usefulness.
|
|
Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base
|
| 1.27 |
19-Oct-1999 |
chs |
put various debugging printfs under #ifdef DEBUG.
|
| 1.26 |
12-Sep-1999 |
chs |
branches: 1.26.2; 1.26.4; 1.26.6; eliminate the PMAP_NEW option by making it required for all ports. ports which previously had no support for PMAP_NEW now implement the pmap_k* interfaces as wrappers around the non-k versions.
|
|
Revision tags: chs-ubc2-base
|
| 1.25 |
22-Jul-1999 |
thorpej |
Garbage collect thread_sleep()/thread_wakeup() left over from the old Mach VM code. Also nuke iprintf(), which was no longer used anywhere.
Add proclist locking where appropriate.
|
| 1.24 |
22-Jul-1999 |
thorpej |
0 -> FALSE in a few places.
|
| 1.23 |
11-Apr-1999 |
chs |
add a `flags' argument to uvm_pagealloc_strat(). define a flag UVM_PGA_USERESERVE to allow non-kernel object allocations to use pages from the reserve. use the new flag for allocations in pmap modules.
|
|
Revision tags: netbsd-1-4-base
|
| 1.22 |
25-Mar-1999 |
mrg |
branches: 1.22.2; remove now >1 year old pre-release message.
|
| 1.21 |
25-Mar-1999 |
sommerfe |
Prevent deadlock cited in PR4629 from crashing the system. (copyout and system call now just return EFAULT). A complete fix will presumably have to wait for UBC and/or for vnode locking protocols to be revamped to allow use of shared locks.
|
| 1.20 |
24-Mar-1999 |
cgd |
after discussion with chuck, nuke pgo_attach from uvm_pagerops
|
| 1.19 |
04-Mar-1999 |
chs |
fix printf arg types.
|
| 1.18 |
29-Jan-1999 |
bouyer |
A small typo fix, + enclose "used_vnode_size = %qu" debug printf inside #ifdef DEBUG/#endif
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.17 |
04-Nov-1998 |
chs |
branches: 1.17.2; we must unlock a vp's object's lock before calling vrele().
|
| 1.16 |
18-Oct-1998 |
chs |
shift by PAGE_SHIFT instead of multiplying or dividing by PAGE_SIZE.
|
| 1.15 |
13-Aug-1998 |
eeh |
Merge paddr_t changes into the main branch.
|
| 1.14 |
09-Aug-1998 |
perry |
bzero->memset, bcopy->memcpy, bcmp->memcmp
|
|
Revision tags: eeh-paddr_t-base
|
| 1.13 |
07-Jul-1998 |
thorpej |
branches: 1.13.2; Add support for mmap'ing disk block devices.
|
| 1.12 |
24-Jun-1998 |
sommerfe |
Always include fifos; "not an option any more".
|
| 1.11 |
22-Jun-1998 |
sommerfe |
defopt for options FIFO
|
| 1.10 |
05-May-1998 |
kleink |
Remove inclusions of syscall (and syscall argument) related header files; we don't need them here.
|
| 1.9 |
11-Mar-1998 |
chuck |
bug fix: when doing uvm_vnp_sync() actually skip over blocked uvn's so that we don't try and sync them later. should get rid of the "uvm_vnp_sync: dying vnode on sync list" related warnings that were occuring during a "make install."
|
| 1.8 |
09-Mar-1998 |
mrg |
KNF.
|
| 1.7 |
01-Mar-1998 |
fvdl |
Merge with Lite2 + local changes
|
| 1.6 |
19-Feb-1998 |
thorpej |
Include the NFS option header.
|
| 1.5 |
18-Feb-1998 |
mrg |
bug fix from chuck: uvm_vnp_terminate panic when /sbin/init was unlinked
|
| 1.4 |
10-Feb-1998 |
mrg |
- add defopt's for UVM, UVMHIST and PMAP_NEW. - remove unnecessary UVMHIST_DECL's.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 perseant-exfatfs-base-20240630 perseant-exfatfs-base bouyer-sunxi-drm-base cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base perseant-stdc-iso10646-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE yamt-pagecache-base9 yamt-pagecache-tag8 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE rmind-smpnet-nbase rmind-smpnet-base agc-symver-base tls-maxphys-base yamt-pagecache-base8 yamt-pagecache-base7 netbsd-5-2-RELEASE netbsd-5-2-RC1 yamt-pagecache-base6 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-nb5-pq3-base netbsd-5-1-RELEASE yamt-nfs-mp-base11 netbsd-5-1-RC4 uebayasi-xip-base2 yamt-nfs-mp-base10 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 rmind-uvmplock-base yamt-nfs-mp-base9 uebayasi-xip-base netbsd-5-0-2-RELEASE yamt-nfs-mp-base8 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 jym-xensuspend-nbase yamt-nfs-mp-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 jym-xensuspend-base netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base haad-dm-base1 haad-dm-base simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 keiichi-mipv6-nbase mjf-devfs2-base keiichi-mipv6-base bouyer-xeni386-merge1 vmlocking2-base3 bouyer-xeni386-nbase yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 bouyer-xeni386-base yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base mjf-devfs-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base jmcneill-pm-base hpcarm-cleanup-base mjf-ufs-trans-base yamt-idlelwp-base8 reinoud-bufcleanup-base vmlocking-base ad-audiomp-base post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 yamt-splraiseipl-base newlock2-base yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 elad-kernelauth-nbase yamt-pdpolicy-base4 yamt-pdpolicy-base3 yamt-pdpolicy-base2 yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base yamt-readahead-base3 yamt-readahead-base2 yamt-readahead-base yamt-vop-base3 yamt-vop-base2 thorpej-vnode-attr-base yamt-vop-base yamt-km-base4 yamt-km-base3 yamt-km-base2 yamt-km-base kent-audio2-base ktrace-lwp-base nathanw_sa_before_merge gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base gehenna-devsw-base eeh-devprop-base newlock-base ifpoll-base thorpej-mips-cache-base kqueue-base
|
| 1.11 |
15-Sep-2001 |
chs |
a whole bunch of changes to improve performance and robustness under load:
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places.
The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
|
|
Revision tags: pre-chs-ubcperf thorpej-devvp-base thorpej_scsipi_beforemerge thorpej_scsipi_nbase thorpej_scsipi_base
|
| 1.10 |
27-Nov-2000 |
chs |
branches: 1.10.2; 1.10.4; 1.10.6; Initial integration of the Unified Buffer Cache project.
|
|
Revision tags: netbsd-1-5-PATCH003 netbsd-1-5-PATCH002 netbsd-1-5-PATCH001 netbsd-1-5-RELEASE netbsd-1-5-BETA2 netbsd-1-5-BETA netbsd-1-5-ALPHA2 netbsd-1-5-base minoura-xpg4dl-base
|
| 1.9 |
26-Mar-2000 |
kleink |
Merge parts of chs-ubc2 into the trunk: Add a new type voff_t (defined as a synonym for off_t) to describe offsets into uvm objects, and update the appropriate interfaces to use it, the most visible effect being the ability to mmap() file offsets beyond the range of a vaddr_t.
Originally by Chuck Silvers; blame me for problems caused by merging this into non-UBC.
|
|
Revision tags: chs-ubc2-newbase wrstuden-devbsize-19991221 wrstuden-devbsize-base comdex-fall-1999-base fvdl-softdep-base chs-ubc2-base
|
| 1.8 |
21-Jun-1999 |
thorpej |
branches: 1.8.2; Protect prototypes, certain macros, and inlines from userland.
|
|
Revision tags: netbsd-1-4-PATCH003 netbsd-1-4-PATCH002 kame_141_19991130 netbsd-1-4-PATCH001 kame_14_19990705 kame_14_19990628 netbsd-1-4-RELEASE netbsd-1-4-base
|
| 1.7 |
25-Mar-1999 |
mrg |
branches: 1.7.4; remove now >1 year old pre-release message.
|
|
Revision tags: kenh-if-detach-base chs-ubc-base
|
| 1.6 |
13-Aug-1998 |
eeh |
branches: 1.6.2; Merge paddr_t changes into the main branch.
|
|
Revision tags: eeh-paddr_t-base
|
| 1.5 |
09-Mar-1998 |
mrg |
branches: 1.5.2; KNF.
|
| 1.4 |
10-Feb-1998 |
perry |
add/cleanup multiple inclusion protection.
|
| 1.3 |
07-Feb-1998 |
mrg |
restore rcsids
|
| 1.2 |
06-Feb-1998 |
thorpej |
RCS ID police.
|
| 1.1 |
05-Feb-1998 |
mrg |
branches: 1.1.1; Initial revision
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.80 |
06-May-2024 |
skrll |
Fix 32bit UVMHIST builds
|
| 1.79 |
03-May-2024 |
skrll |
More debug.
|
| 1.78 |
18-Apr-2024 |
skrll |
Fix types in pmap_page_clear_attributes so that the top bits of the u_long mdpg_attrs aren't dropped giving atomic_cas_ulong no chance of completing if any of the top bits is set.
Update pmap_page_set_attributes for consistency.
An ATF test run completed for me with this fix.
port-riscv/58006: ATF tests no longer complete on riscv-riscv64
|
| 1.77 |
23-Mar-2024 |
skrll |
Default pmap_stealdebug to false
|
| 1.76 |
05-Mar-2024 |
skrll |
Change the PMAP_STEAL_MEMORY debug output from aprint_debug.
The new printfs are conditional on pmap_stealdebug and the DEBUG compile option. The former defaults to true, but can be changed at a boot -d ddb prompt.
|
|
Revision tags: thorpej-ifq-base thorpej-altq-separation-base
|
| 1.75 |
26-Feb-2023 |
skrll |
ci_data.cpu_kcpuset -> ci_kcpuset
NFCI.
|
|
Revision tags: netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base
|
| 1.74 |
03-Nov-2022 |
skrll |
branches: 1.74.2; Provide MI PMAP support on AARCH64
|
| 1.73 |
02-Nov-2022 |
skrll |
KNF
|
| 1.72 |
28-Oct-2022 |
skrll |
MI PMAP EFI_RUNTIME support
|
| 1.71 |
27-Oct-2022 |
skrll |
No need to hold the pmap_tlb_miss_lock when calling pmap_segtab_destroy
|
| 1.70 |
27-Oct-2022 |
skrll |
Rename pm_count to pm_refcnt
|
| 1.69 |
26-Oct-2022 |
skrll |
MI PMAP hardware page table walker support.
This is based on code given to me by Matt Thomas a long time ago with many updates and bugs fixes from me.
|
| 1.68 |
23-Oct-2022 |
skrll |
Correct the pmap_kstart_segtab entry in pmap_kern_segtab
|
|
Revision tags: bouyer-sunxi-drm-base
|
| 1.67 |
15-Sep-2022 |
skrll |
whitespace - remove spaces before tabs
|
| 1.66 |
12-Sep-2022 |
skrll |
A simplification and some minor whitespace
|
| 1.65 |
07-May-2022 |
rin |
Introduce PMAP_PV_TRACK_ONLY_STUBS option, by which only empty stubs for global functions in pmap_pvt.h are provided, instead of real support for PV tracking.
Necessary for powerpc: Only one sub-arch (oea) has PV tracking support. Others (booke/ibm4xx) do not at the moment (probably never for ibm4xx), but __HAVE_PMAP_PV_TRACK is necessary, so that modules can be shared by all of sub-archs.
|
| 1.64 |
09-Apr-2022 |
riastradh |
sys: Use membar_release/acquire around reference drop.
This just goes through my recent reference count membar audit and changes membar_exit to membar_release and membar_enter to membar_acquire -- this should make everything cheaper on most CPUs without hurting correctness, because membar_acquire is generally cheaper than membar_enter.
|
| 1.63 |
12-Mar-2022 |
riastradh |
sys: Membar audit around reference count releases.
If two threads are using an object that is freed when the reference count goes to zero, we need to ensure that all memory operations related to the object happen before freeing the object.
Using an atomic_dec_uint_nv(&refcnt) == 0 ensures that only one thread takes responsibility for freeing, but it's not enough to ensure that the other thread's memory operations happen before the freeing.
Consider:
Thread A Thread B obj->foo = 42; obj->baz = 73; mumble(&obj->bar); grumble(&obj->quux); /* membar_exit(); */ /* membar_exit(); */ atomic_dec -- not last atomic_dec -- last /* membar_enter(); */ KASSERT(invariant(obj->foo, obj->bar)); free_stuff(obj);
The memory barriers ensure that
obj->foo = 42; mumble(&obj->bar);
in thread A happens before
KASSERT(invariant(obj->foo, obj->bar)); free_stuff(obj);
in thread B. Without them, this ordering is not guaranteed.
So in general it is necessary to do
membar_exit(); if (atomic_dec_uint_nv(&obj->refcnt) != 0) return; membar_enter();
to release a reference, for the `last one out hit the lights' style of reference counting. (This is in contrast to the style where one thread blocks new references and then waits under a lock for existing ones to drain with a condvar -- no membar needed thanks to mutex(9).)
I searched for atomic_dec to find all these. Obviously we ought to have a better abstraction for this because there's so much copypasta. This is a stop-gap measure to fix actual bugs until we have that. It would be nice if an abstraction could gracefully handle the different styles of reference counting in use -- some years ago I drafted an API for this, but making it cover everything got a little out of hand (particularly with struct vnode::v_usecount) and I ended up setting it aside to work on psref/localcount instead for better scalability.
I got bored of adding #ifdef __HAVE_ATOMIC_AS_MEMBAR everywhere, so I only put it on things that look performance-critical on 5sec review. We should really adopt membar_enter_preatomic/membar_exit_postatomic or something (except they are applicable only to atomic r/m/w, not to atomic_load/store_*, making the naming annoying) and get rid of all the ifdefs.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base
|
| 1.62 |
17-Apr-2021 |
mrg |
remove KERNHIST_INIT_STATIC(). it stradles the line between usable early in boot and broken early in boot by requiring a partly static structure with another structure that must be present by the time any uses are performed. theoretically platform code could allocate a chunk while seting up memory and assign it here, giving a dynamic sizing for the entry list, but the reality is that all users have a statically allocated entry list as well.
the existing KERNHIST_LINK_STATIC() is used in conjunction with KERNHIST_INITIALIZER() instead.
this stops a NULL pointer deref when the _LOG() macro is called before the storage is linked in, which happens with GCC 10 on OCTEON with UVMHIST enabled, crashing in very early kernel init.
|
|
Revision tags: thorpej-futex-base
|
| 1.61 |
19-Mar-2021 |
skrll |
branches: 1.61.2; Support pmap_growkernel and KASAN shadow mapping of the new KVA.
Neither mips nor ppc booke actually use pmap_growkernel (at present).
Thanks to rin@ for testing a similar patch on ppc booke.
|
| 1.60 |
13-Mar-2021 |
skrll |
s/pfi_faultpte/&p/ for consistency with arm / other uses of ptep
|
| 1.59 |
13-Mar-2021 |
skrll |
Don't use %jx for 0 or 1 - just use %jd in UVMHIST_LOG format.
|
| 1.58 |
20-Dec-2020 |
skrll |
Support __HAVE_PMAP_PV_TRACK in sys/uvm/pmap based pmaps (aka common pmap)
|
| 1.57 |
08-Oct-2020 |
skrll |
branches: 1.57.2; %#jx vs %jx consistency in UVMHIST_LOG
|
| 1.56 |
24-Sep-2020 |
skrll |
Whitespace
|
| 1.55 |
20-Aug-2020 |
mrg |
move pmap segtab history into a new history of only 1000 entries, but will overflow much slower than the main pmap history.
move various debug info into kernhist. make pte array checker into an array and use it in pmap_segtab_release() and pmap_pte_reserve(). move check before MD callback(), incase it wants to change ptes for some reason (they're passed in, but this callback is currently always NULL.)
clean up some history logs to reduce the number of lines required.
|
| 1.54 |
19-Aug-2020 |
simonb |
Remove trailing \n from UVMHIST_LOG() format strings.
|
| 1.53 |
11-Aug-2020 |
skrll |
More UVMHIST_LOG. Remove some commented output printfs.
|
| 1.52 |
11-Aug-2020 |
skrll |
Fix a comment
|
| 1.51 |
07-Aug-2020 |
skrll |
Provide a pmap_segtab_deactivate for symmetry with pmap_segtab_activate and use it in pmap_deactivate
Call pmap_md_xtab_{,de}activate from pmap_segtab_{,de}activate to be used for PMAP_HWPAGEWALKER and any caches ops that might be required.
Provide empty (for now) pmap_md_xtab_{,de}activate functions on the platforms that use sys/uvm/pmap
|
| 1.50 |
18-Jul-2020 |
skrll |
Always call pmap_segtab_activate in pmap_activate. pmap_segtab_activate does the right thing if called with non-curlwp.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
| 1.49 |
12-Apr-2020 |
skrll |
Use UVMHIST_CALLARGS
|
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.48 |
14-Mar-2020 |
ad |
branches: 1.48.2; pmap_remove_all(): Return a boolean value to indicate the behaviour. If true, all mappings have been removed, the pmap is totally cleared out, and UVM can then avoid doing the work to call pmap_remove() for each map entry. If false, either nothing has been done, or some helpful arch-specific voodoo has taken place.
|
| 1.47 |
12-Mar-2020 |
thorpej |
pmap_tlb_miss_lock needs to be globally visible.
|
| 1.46 |
11-Mar-2020 |
thorpej |
With DEBUG defined, it's possible to execute a TLB-vs-segmap consistency check from a (soft) interrupt handler. But if a platform does not otherwise require the pmap_tlb_miss_lock, then where will be a brief window of inconsistency that, while harmless, will still fire an assertion in the consistency check.
Fix this with the following changes: 1- Refactor the pmap_tlb_miss_lock into MI code and rename it from pmap_tlb_miss_lock_{enter,exit}() to pmap_tlb_miss_lock_{enter,exit}(). MD code can still define the "md" hooks as necessary, and if so, will override the common implementation. 2- Provde a pmap_bootstrap_common() function to perform common pmap bootstrap operations, namely initializing the pmap_tlb_miss_lock if it's needed. If MD code overrides the implementation, it's responsible for initializing its own lock. 3- Call pmap_bootstrap_common() from the mips, powerpc booke, and riscv pmap_bootstrap() routines. (This required adding one for riscv.) 4- Switch powerpc booke to the common pmap_tlb_miss_lock. 5- Enable pmap_tlb_miss_lock if DEBUG is defined, even if it's not otherwise required.
PR port-mips/55062 (Failed assertion in pmap_md_tlb_check_entry())
|
|
Revision tags: is-mlppp-base ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.45 |
18-Dec-2019 |
skrll |
Remove duplicate #includes
|
|
Revision tags: phil-wifi-20191119
|
| 1.44 |
20-Oct-2019 |
skrll |
Define and use VM_PAGEMD_PVLIST_EMPTY_P
|
| 1.43 |
20-Oct-2019 |
skrll |
Remove KASSERT(!VM_PAGEMD_PVLIST_LOCKED_P(mdpg)) - can only assert that it is owned
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base
|
| 1.42 |
12-Jul-2019 |
skrll |
Provide and use PV_ISKENTER_P. NFCI.
|
| 1.41 |
19-Jun-2019 |
skrll |
Make a comment generic and not MIPS specific
|
|
Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202
|
| 1.40 |
30-Oct-2017 |
pgoyette |
branches: 1.40.2; 1.40.6; Remove unneeded casts to (uintptr_t). This is already taken care of in the xxxHIST_LOG() macros.
No need to pull-up to -8 - the extra cast really won't hurt anything.
|
| 1.39 |
30-Oct-2017 |
pgoyette |
And replace an instance of "%p" conversion with "%#jx"
|
| 1.38 |
30-Oct-2017 |
kre |
Remove a stray '"' (obvious typo) and add a couple of casts that are probably needed.
|
| 1.37 |
28-Oct-2017 |
pgoyette |
Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
| 1.36 |
07-Sep-2017 |
skrll |
There's no need to call pmap_tlb_invalidate_addr if pmap_remove_all was called and PMAP_DEFERRED_ACTIVATE is set.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
| 1.35 |
24-Jun-2017 |
skrll |
Use pte_set
|
|
Revision tags: netbsd-8-base prg-localcount2-base3
|
| 1.34 |
12-May-2017 |
skrll |
branches: 1.34.2; Sprinkle some KASSERTs
|
|
Revision tags: prg-localcount2-base2
|
| 1.33 |
07-May-2017 |
skrll |
Fix a comment
|
|
Revision tags: prg-localcount2-base1
|
| 1.32 |
28-Apr-2017 |
skrll |
Remove unused LNAME macro
|
| 1.31 |
28-Apr-2017 |
skrll |
Fix a UVMHIST_LOG after the "%s" removal
|
|
Revision tags: prg-localcount2-base pgoyette-localcount-20170426
|
| 1.30 |
22-Apr-2017 |
skrll |
branches: 1.30.2; Improve a comment
|
| 1.29 |
22-Apr-2017 |
skrll |
Trailing whitespace
|
|
Revision tags: bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320
|
| 1.28 |
02-Mar-2017 |
mrg |
avoid using %s in UVMHIST.
|
|
Revision tags: nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107
|
| 1.27 |
23-Dec-2016 |
skrll |
branches: 1.27.2; PHYSMEM -> PHYSSEG to fix build
|
| 1.26 |
23-Dec-2016 |
cherry |
"Make NetBSD great again!"
Introduce uvm_hotplug(9) to the kernel.
Many thanks, in no particular order to:
TNF, for funding the project.
Chuck Silvers - for multiple API reviews and feedback. Nick Hudson - for testing on multiple architectures and bugfix patches. Everyone who helped with boot testing.
KeK (http://www.kek.org.in) for hosting the primary developers.
|
|
Revision tags: nick-nhusb-base-20161204
|
| 1.25 |
01-Dec-2016 |
mrg |
extend the pmap_activate/pmap_deactivate UVMHIST logs to include the pid, lid, and either l_name or p_comm.
|
|
Revision tags: pgoyette-localcount-20161104
|
| 1.24 |
05-Oct-2016 |
skrll |
Move some code before pmap_enter_pv in pmap_enter so that when we are re-mapping a VA to a new PA the old mapping is removed first. This means the cache alias code need to do less work and works better with the last va tracking.
|
|
Revision tags: nick-nhusb-base-20161004
|
| 1.23 |
30-Sep-2016 |
skrll |
Increment resident_count if we're remapping onto new PA as pmap_remove -> pmap_pte_remote will decrement it
|
| 1.22 |
16-Sep-2016 |
matt |
When removing a page, make sure to clear its execness regardless of whether the page is clean or dirty. This fixes the problem of execpages leaking into the freepage lists.
|
|
Revision tags: localcount-20160914
|
| 1.21 |
20-Aug-2016 |
mrg |
put a variable under the #ifdef it's only used in.
|
| 1.20 |
18-Aug-2016 |
matt |
Don't track kenter_pa/kremove PVs unless we are worrying about cache aliasing.
|
|
Revision tags: pgoyette-localcount-20160806
|
| 1.19 |
05-Aug-2016 |
jakllsch |
Only include `static inline pmap_asid_check()` if it might be used.
Should fix HEAD-llvm evbppc autobuild.
|
|
Revision tags: pgoyette-localcount-20160726 pgoyette-localcount-base
|
| 1.18 |
14-Jul-2016 |
skrll |
branches: 1.18.2; Spell PMAP_TLB_NEED_SHOOTDOWN correctly
|
| 1.17 |
14-Jul-2016 |
skrll |
Trailing whitespace
|
| 1.16 |
11-Jul-2016 |
maya |
Fix build by removing accidential duplicate line.
|
| 1.15 |
11-Jul-2016 |
matt |
Changes so that MIPS can use the common pmap. Change/augment the virtual cache alias callbacks.
|
|
Revision tags: nick-nhusb-base-20160907
|
| 1.14 |
07-Jul-2016 |
msaitoh |
KNF. Remove extra spaces. No functional change.
|
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
|
| 1.13 |
05-Nov-2015 |
pgoyette |
Remove unnecessary #include for sys/shm.h - there's nothing here that needs anything from there.
|
|
Revision tags: nick-nhusb-base-20150921
|
| 1.12 |
11-Jun-2015 |
matt |
Add virtual_start to pmap_limits. This allows MD to steal address space before pmap_bootstrap.
|
|
Revision tags: nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
| 1.11 |
03-Feb-2015 |
nonaka |
Disable pmap_md_tlb_check_entry, when MP.
|
| 1.10 |
26-Jan-2015 |
nonaka |
Avoid race condition between PTE update and TLB miss walk.
|
| 1.9 |
05-Jan-2015 |
nonaka |
Use PMAP_TLB_MAX instead of MAXCPUS.
|
| 1.8 |
25-Dec-2014 |
nonaka |
fix build failure when UVMHIST is defined.
|
| 1.7 |
24-Dec-2014 |
nonaka |
fix compile failure.
|
| 1.6 |
22-Dec-2014 |
nonaka |
pmap->pm_active and pmap->pm_onproc must be destroyed.
|
| 1.5 |
19-Dec-2014 |
nonaka |
Initialize pmap->pm_active and pmap->pm_onproc. Avoid "panic: kernel diagnostic assertion "!pmap_tlb_intersecting_onproc_p(pm, ti)" failed: file "/usr/src/sys/uvm/pmap/pmap_tlb.c", line 762".
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.4 |
25-Feb-2014 |
martin |
branches: 1.4.6; Mark a potentially unused variable
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1
|
| 1.3 |
22-Jul-2013 |
matt |
In the non-MP case, just initialize onproc to NULL.
|
| 1.2 |
17-Jul-2013 |
matt |
Make this kcpuset_t instead of the private __cpuset_t Add improvements for single TLB implementation (PPC, ARM).
|
|
Revision tags: riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.1 |
03-Oct-2012 |
christos |
branches: 1.1.2; 1.1.4; 1.1.10; move from common/pmap/tlb -> uvm/pmap
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| 1.28 |
25-Nov-2024 |
skrll |
Sprinkle #ifdef _KERNEL
|
|
Revision tags: perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.27 |
18-Apr-2024 |
skrll |
branches: 1.27.2; Fix types in pmap_page_clear_attributes so that the top bits of the u_long mdpg_attrs aren't dropped giving atomic_cas_ulong no chance of completing if any of the top bits is set.
Update pmap_page_set_attributes for consistency.
An ATF test run completed for me with this fix.
port-riscv/58006: ATF tests no longer complete on riscv-riscv64
|
|
Revision tags: netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base
|
| 1.26 |
03-Nov-2022 |
skrll |
branches: 1.26.2; _KERNEL_OPT protection
|
| 1.25 |
03-Nov-2022 |
skrll |
Provide MI PMAP support on AARCH64
|
| 1.24 |
27-Oct-2022 |
skrll |
Rename pm_count to pm_refcnt
|
| 1.23 |
27-Oct-2022 |
skrll |
Fix the crash(1) build for mips platforms
|
| 1.22 |
26-Oct-2022 |
skrll |
MI PMAP hardware page table walker support.
This is based on code given to me by Matt Thomas a long time ago with many updates and bugs fixes from me.
|
|
Revision tags: bouyer-sunxi-drm-base
|
| 1.21 |
07-May-2022 |
rin |
Introduce PMAP_PV_TRACK_ONLY_STUBS option, by which only empty stubs for global functions in pmap_pvt.h are provided, instead of real support for PV tracking.
Necessary for powerpc: Only one sub-arch (oea) has PV tracking support. Others (booke/ibm4xx) do not at the moment (probably never for ibm4xx), but __HAVE_PMAP_PV_TRACK is necessary, so that modules can be shared by all of sub-archs.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.20 |
19-Mar-2021 |
skrll |
Support pmap_growkernel and KASAN shadow mapping of the new KVA.
Neither mips nor ppc booke actually use pmap_growkernel (at present).
Thanks to rin@ for testing a similar patch on ppc booke.
|
| 1.19 |
21-Dec-2020 |
skrll |
Remove variable in function declaration argument
|
| 1.18 |
20-Dec-2020 |
skrll |
Support __HAVE_PMAP_PV_TRACK in sys/uvm/pmap based pmaps (aka common pmap)
|
| 1.17 |
20-Aug-2020 |
mrg |
branches: 1.17.2; move pmap segtab history into a new history of only 1000 entries, but will overflow much slower than the main pmap history.
move various debug info into kernhist. make pte array checker into an array and use it in pmap_segtab_release() and pmap_pte_reserve(). move check before MD callback(), incase it wants to change ptes for some reason (they're passed in, but this callback is currently always NULL.)
clean up some history logs to reduce the number of lines required.
|
| 1.16 |
07-Aug-2020 |
skrll |
Provide a pmap_segtab_deactivate for symmetry with pmap_segtab_activate and use it in pmap_deactivate
Call pmap_md_xtab_{,de}activate from pmap_segtab_{,de}activate to be used for PMAP_HWPAGEWALKER and any caches ops that might be required.
Provide empty (for now) pmap_md_xtab_{,de}activate functions on the platforms that use sys/uvm/pmap
|
| 1.15 |
08-Jul-2020 |
skrll |
Comment updates
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.14 |
15-Mar-2020 |
rin |
Fix build for ports using uvm/pmap; pmap_remove_all() returns a boolean.
|
| 1.13 |
11-Mar-2020 |
thorpej |
With DEBUG defined, it's possible to execute a TLB-vs-segmap consistency check from a (soft) interrupt handler. But if a platform does not otherwise require the pmap_tlb_miss_lock, then where will be a brief window of inconsistency that, while harmless, will still fire an assertion in the consistency check.
Fix this with the following changes: 1- Refactor the pmap_tlb_miss_lock into MI code and rename it from pmap_tlb_miss_lock_{enter,exit}() to pmap_tlb_miss_lock_{enter,exit}(). MD code can still define the "md" hooks as necessary, and if so, will override the common implementation. 2- Provde a pmap_bootstrap_common() function to perform common pmap bootstrap operations, namely initializing the pmap_tlb_miss_lock if it's needed. If MD code overrides the implementation, it's responsible for initializing its own lock. 3- Call pmap_bootstrap_common() from the mips, powerpc booke, and riscv pmap_bootstrap() routines. (This required adding one for riscv.) 4- Switch powerpc booke to the common pmap_tlb_miss_lock. 5- Enable pmap_tlb_miss_lock if DEBUG is defined, even if it's not otherwise required.
PR port-mips/55062 (Failed assertion in pmap_md_tlb_check_entry())
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE is-mlppp-base ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609
|
| 1.12 |
01-Jun-2019 |
maxv |
Misc changes in RISC-V. Start changing the memory layout, too.
|
| 1.11 |
20-May-2019 |
skrll |
Usee __BIT()
|
| 1.10 |
20-May-2019 |
skrll |
Trailing whitespace
|
|
Revision tags: isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
| 1.9 |
24-Jun-2017 |
skrll |
branches: 1.9.4; 1.9.8; Trailing whitespace
|
| 1.8 |
24-Jun-2017 |
skrll |
Multiple inclusion protection define consistency
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
| 1.7 |
11-Jul-2016 |
matt |
Changes so that MIPS can use the common pmap. Change/augment the virtual cache alias callbacks.
|
|
Revision tags: nick-nhusb-base-20160907
|
| 1.6 |
07-Jul-2016 |
msaitoh |
KNF. Remove extra spaces. No functional change.
|
|
Revision tags: nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
| 1.5 |
11-Jun-2015 |
matt |
Add virtual_start to pmap_limits. This allows MD to steal address space before pmap_bootstrap.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.4 |
18-Mar-2014 |
riastradh |
branches: 1.4.6; Merge riastradh-drm2 to HEAD.
|
|
Revision tags: riastradh-drm2-base3 riastradh-drm2-base2 riastradh-drm2-base1
|
| 1.3 |
17-Jul-2013 |
matt |
Make this kcpuset_t instead of the private __cpuset_t Add improvements for single TLB implementation (PPC, ARM).
|
|
Revision tags: riastradh-drm2-base
|
| 1.2 |
02-Jul-2013 |
matt |
branches: 1.2.2; Split tlb related stuff into pmap_tlb.h so that can be used for ASID mgmt for non-soft TLB pmaps.
|
|
Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.1 |
03-Oct-2012 |
christos |
branches: 1.1.2; 1.1.4; move from common/pmap/tlb -> uvm/pmap
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.2 |
27-Apr-2023 |
skrll |
Correct a type.
|
| 1.1 |
20-Apr-2023 |
skrll |
Provide a shared pmap_devmap implementation and convert all pmap_devmap arrays to use DEVMAP_ENTRY{,_END}
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
|
| 1.2 |
25-Nov-2024 |
skrll |
Sprinkle #ifdef _KERNEL
|
|
Revision tags: perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.1 |
20-Apr-2023 |
skrll |
branches: 1.1.6; Provide a shared pmap_devmap implementation and convert all pmap_devmap arrays to use DEVMAP_ENTRY{,_END}
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.15 |
08-May-2022 |
rin |
Oops, correct misleading #endif comment.
It seems I need a cup of coffee...
|
| 1.14 |
08-May-2022 |
rin |
Improve wording a bit in a comment for the previous.
|
| 1.13 |
08-May-2022 |
rin |
For PMAP_PV_TRACK_ONLY_STUBS, comment out pmap_pv_{,un}track().
If modules call these functions, the result should be an inconsistent state.
Such modules require real PV-tracking support, anyway.
The best we can do should be to make two symbols undefined, and prevent these modules from loaded.
|
| 1.12 |
07-May-2022 |
rin |
Introduce PMAP_PV_TRACK_ONLY_STUBS option, by which only empty stubs for global functions in pmap_pvt.h are provided, instead of real support for PV tracking.
Necessary for powerpc: Only one sub-arch (oea) has PV tracking support. Others (booke/ibm4xx) do not at the moment (probably never for ibm4xx), but __HAVE_PMAP_PV_TRACK is necessary, so that modules can be shared by all of sub-archs.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base thorpej-i2c-spi-conf-base
|
| 1.11 |
21-Jul-2021 |
skrll |
need <sys/param.h> for COHERENCY_UNIT
Minor KNF along the way.
|
|
Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| 1.10 |
16-Mar-2020 |
ad |
branches: 1.10.8; Use C99-ism to reduce ifdefs. Pointed out by christos@.
|
| 1.9 |
16-Mar-2020 |
ad |
pmap_pv_track(): use PMAP_PAGE_INIT() otherwise the x86 pmap pukes.
|
|
Revision tags: is-mlppp-base ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.8 |
01-Jan-2020 |
martin |
Revert previous (include of sys/param.h) - the headers requiring this have been fixed.
|
| 1.7 |
28-Dec-2019 |
martin |
Add mising sys/param.h include (for COHERENCY_UNIT, now needed in uvm headers)
|
| 1.6 |
18-Dec-2019 |
skrll |
KNF
|
| 1.5 |
09-Dec-2019 |
riastradh |
Convert pmap_pvt to atomic_load/store.
|
| 1.4 |
07-Dec-2019 |
jmcneill |
sys/atomic.h for membar_*
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319
|
| 1.3 |
07-Feb-2016 |
riastradh |
branches: 1.3.16; 1.3.20; Use IPL_NONE for pserialized lock. Assert sleepable. (OOPS.)
|
|
Revision tags: nick-nhusb-base-20151226
|
| 1.2 |
11-Nov-2015 |
skrll |
branches: 1.2.2; Remove #if 0 / #endif includes
|
| 1.1 |
11-Nov-2015 |
skrll |
Split out the pmap_pv_track stuff for use by others.
Discussed with riastradh@
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.3 |
16-Feb-2022 |
riastradh |
pmap_pvt.h: Fix bogus include.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
| 1.2 |
24-Jun-2017 |
skrll |
branches: 1.2.4; Multiple inclusion protection define consistency
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
|
| 1.1 |
11-Nov-2015 |
skrll |
branches: 1.1.2; Split out the pmap_pv_track stuff for use by others.
Discussed with riastradh@
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.33 |
23-Jul-2023 |
skrll |
KASSERT -> KASSERTMSG
|
| 1.32 |
01-Jul-2023 |
skrll |
Fix build when KERNHIST defined, but not UVMHIST
|
| 1.31 |
21-Dec-2022 |
skrll |
Rename pmap_md_pdetab_destroy to pmap_md_pdetab_fini to match pmap_md_pdetab_init.
Call pmap_md_pdetab_fini from pmap_segtab_destroy.
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base
|
| 1.30 |
27-Oct-2022 |
skrll |
In pmap_pte_reserve ensure we're atomically swapping out an invalid entry otherwise concurrent updates might both think they've updated the entry.
|
| 1.29 |
26-Oct-2022 |
skrll |
MI PMAP hardware page table walker support.
This is based on code given to me by Matt Thomas a long time ago with many updates and bugs fixes from me.
|
|
Revision tags: bouyer-sunxi-drm-base
|
| 1.28 |
25-Sep-2022 |
skrll |
Rename pmap_segtab_t *stp to stb for consistency with a future pmap_pdetab_t *ptb. pmap_pdetab_t *ptp would be far too confusing.
NFC. Same code before and after.
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.27 |
13-Mar-2021 |
skrll |
Consistently use %#jx instead of 0x%jx or just %jx in UVMHIST_LOG formats
|
| 1.26 |
08-Oct-2020 |
skrll |
branches: 1.26.2; %#jx vs %jx consistency in UVMHIST_LOG
|
| 1.25 |
24-Sep-2020 |
skrll |
Whitespace
|
| 1.24 |
10-Sep-2020 |
rin |
Cast pointer arguments of UVMHIST_CALLARGS() into uintptr_t.
Appease GCC9 -Wpointer-to-int-cast on ILP32 environments.
|
| 1.23 |
22-Aug-2020 |
skrll |
Remove pte_zero_p and simply check against 0.
|
| 1.22 |
22-Aug-2020 |
skrll |
Remove the #if defined(__mips_n64) && PAGE_SIZE == 8192 and make the check MI - all PTs are PAGE_SIZE aligned
|
| 1.21 |
22-Aug-2020 |
skrll |
Trailing whitespace
|
| 1.20 |
20-Aug-2020 |
mrg |
fix hpcmips and evbppc builds (wrong type in panic()).
|
| 1.19 |
20-Aug-2020 |
mrg |
move pmap segtab history into a new history of only 1000 entries, but will overflow much slower than the main pmap history.
move various debug info into kernhist. make pte array checker into an array and use it in pmap_segtab_release() and pmap_pte_reserve(). move check before MD callback(), incase it wants to change ptes for some reason (they're passed in, but this callback is currently always NULL.)
clean up some history logs to reduce the number of lines required.
|
| 1.18 |
18-Aug-2020 |
simonb |
Fix small tyop in a comment.
|
| 1.17 |
18-Aug-2020 |
skrll |
Improve a panic message ever so slightly
|
| 1.16 |
17-Aug-2020 |
mrg |
add pmaphist calls around seg_tab[] manipulation. hopefully will help find what causes this:
panic: pmap_segtab_alloc: pm_segtab.seg_tab[1010] != 0 (0x980000004eeb6068): from free list
|
| 1.15 |
07-Aug-2020 |
skrll |
Provide a pmap_segtab_deactivate for symmetry with pmap_segtab_activate and use it in pmap_deactivate
Call pmap_md_xtab_{,de}activate from pmap_segtab_{,de}activate to be used for PMAP_HWPAGEWALKER and any caches ops that might be required.
Provide empty (for now) pmap_md_xtab_{,de}activate functions on the platforms that use sys/uvm/pmap
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3
|
| 1.14 |
24-Feb-2020 |
rin |
0x%p --> %p for non-external codes.
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.13 |
18-Dec-2019 |
skrll |
branches: 1.13.2; KNF
|
| 1.12 |
14-Dec-2019 |
ad |
Use pageq.list instead of listq.list.
|
|
Revision tags: phil-wifi-20191119
|
| 1.11 |
20-Oct-2019 |
skrll |
Whitespace
|
| 1.10 |
23-Sep-2019 |
skrll |
Use "segmap" for uvm_wait message in pmap_segtab_alloc
|
| 1.9 |
18-Sep-2019 |
skrll |
s/pte/ptep/ in pmap_pte_process for consistency with other code. NFCI.
|
| 1.8 |
18-Sep-2019 |
skrll |
Whitespace
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 isaki-audio2-base
|
| 1.7 |
08-Mar-2019 |
msaitoh |
s/ the the / the /
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3
|
| 1.6 |
12-May-2017 |
skrll |
branches: 1.6.8; 1.6.12; KASSERT -> KASSERTMSG
|
| 1.5 |
12-May-2017 |
skrll |
Trailing whitespace
|
|
Revision tags: prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204
|
| 1.4 |
23-Nov-2016 |
mrg |
branches: 1.4.6; fix the start index generation in pmap_segtab_release() to ensure it fits in the actual array. fixes N64 binaries from triggering later panic. move the panic check itself into a common function that is called from a couple of new places too.
|
|
Revision tags: pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
| 1.3 |
11-Jul-2016 |
matt |
branches: 1.3.2; Changes so that MIPS can use the common pmap. Change/augment the virtual cache alias callbacks.
|
|
Revision tags: nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
| 1.2 |
11-Jun-2015 |
matt |
Use PMAP_MAP_POOLPAGE instead of POOL_PHYSTOV since we use PMAP_UNMAP_POOLPAGE. Use PMAP_ALLOC_POOLPAGE instead of pmap_md_alloc_poolpage. Cleanup some panic messages.
|
|
Revision tags: netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 tls-maxphys-base yamt-pagecache-base6
|
| 1.1 |
03-Oct-2012 |
christos |
branches: 1.1.2; 1.1.14; 1.1.16; 1.1.18; 1.1.20; move from common/pmap/tlb -> uvm/pmap
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
| 1.5 |
13-Apr-2020 |
skrll |
Trailing whitespace
|
|
Revision tags: phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.4 |
18-Dec-2019 |
skrll |
branches: 1.4.6; KNF
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-8-2-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
| 1.3 |
11-Jul-2016 |
matt |
branches: 1.3.16; 1.3.20; Changes so that MIPS can use the common pmap. Change/augment the virtual cache alias callbacks.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base tls-maxphys-base
|
| 1.2 |
02-Jul-2013 |
matt |
branches: 1.2.8; Split tlb related stuff into pmap_tlb.h so that can be used for ASID mgmt for non-soft TLB pmaps.
|
|
Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.1 |
03-Oct-2012 |
christos |
branches: 1.1.2; 1.1.4; move from common/pmap/tlb -> uvm/pmap
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-8-3-RELEASE netbsd-9-4-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 netbsd-8-2-RELEASE ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 netbsd-8-1-RELEASE netbsd-8-1-RC1 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 netbsd-8-0-RELEASE phil-wifi-base pgoyette-compat-0625 netbsd-8-0-RC2 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 netbsd-8-0-RC1 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 matt-nb8-mediatek-base nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
| 1.1 |
11-Jul-2016 |
matt |
branches: 1.1.4; 1.1.18; Changes so that MIPS can use the common pmap. Change/augment the virtual cache alias callbacks.
|
| 1.63 |
02-Sep-2025 |
skrll |
Don't log anything when !DIAGNOSTIC in pmap_tlb_pai_check as it's a no-op.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base
|
| 1.62 |
01-Jan-2024 |
skrll |
Appease KASSERTs for zero ASID CPUs (I mean harts)
|
|
Revision tags: thorpej-ifq-base thorpej-altq-separation-base
|
| 1.61 |
06-Oct-2023 |
skrll |
Support CPUs that might not have ASIDs in the common pmap.
|
| 1.60 |
01-Aug-2023 |
skrll |
Improve debug
|
| 1.59 |
12-Jun-2023 |
skrll |
Fix compile for non-MULTIPROCESSOR and PMAP_TLB_MAX > 1 builds
|
| 1.58 |
12-Jun-2023 |
skrll |
Fixup UVMHIST builds
|
| 1.57 |
22-Apr-2023 |
skrll |
KASSERT(kpreempt_disabled()) before accessing curcpu()
|
| 1.56 |
19-Feb-2023 |
skrll |
Spaces to TABs. NFCI.
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base
|
| 1.55 |
07-Nov-2022 |
skrll |
Fix UVMHIST build
|
| 1.54 |
26-Oct-2022 |
skrll |
MI PMAP hardware page table walker support.
This is based on code given to me by Matt Thomas a long time ago with many updates and bugs fixes from me.
|
| 1.53 |
20-Oct-2022 |
skrll |
Add a KASSERT to check that tlb_asid_t is a large enough type.
|
|
Revision tags: bouyer-sunxi-drm-base
|
| 1.52 |
04-Mar-2022 |
skrll |
Rmmove an incorrect KASSERT.
|
| 1.51 |
02-Jan-2022 |
christos |
fix KASSERTMSG issue
|
| 1.50 |
29-Dec-2021 |
skrll |
Remove duplicate KASSERT
|
| 1.49 |
27-Oct-2021 |
simonb |
TAB police.
|
| 1.48 |
27-Oct-2021 |
simonb |
When adjusting the max ASID count, check if ti->ti_asid_max == 0 as well. This defaults to 0 for the non-PMAP_TLB_NUM_PIDS case, so would skip the updated test.
Fix for port-pmax/56466 (which affects all MIPS).
ok srkll@
|
| 1.47 |
08-Oct-2021 |
skrll |
Fix a logic botch to actually apply the ASID limit returned by pmap_md_tlb_asid_max.
|
| 1.46 |
02-Oct-2021 |
skrll |
Pass the pmap in tlb_set_asid for the benefit of aarch64.
|
| 1.45 |
12-Sep-2021 |
skrll |
comment whitespace
|
|
Revision tags: thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base
|
| 1.44 |
04-May-2021 |
skrll |
Always expose pmap_tlb_update_addr now that all current PMAP_HWPAGEWALKERs (arm) users provide the required functions.
|
| 1.43 |
01-May-2021 |
skrll |
Revert previous
|
| 1.42 |
01-May-2021 |
skrll |
Expose pmap_tlb_update_addr to the PMAP_HWPAGEWALKER platforms
|
|
Revision tags: thorpej-cfargs-base thorpej-futex-base
|
| 1.41 |
24-Sep-2020 |
skrll |
branches: 1.41.6; Whitespace
|
| 1.40 |
22-Aug-2020 |
skrll |
Whitespace - line continutation alignment
|
| 1.39 |
19-Aug-2020 |
skrll |
KNF. Add some whitespace to the TLBINV_MAP macro and tlb_invalidate_op enum.
|
| 1.38 |
19-Aug-2020 |
skrll |
Unwrap short line KASSERT
|
| 1.37 |
19-Aug-2020 |
skrll |
Fix inverted logic test in pmap_tlb_shootdown_process for if the victim is onproc.
|
| 1.36 |
11-Aug-2020 |
skrll |
s/pmaphist/maphist/ for now
|
| 1.35 |
11-Aug-2020 |
skrll |
More UVMHIST_LOG. Remove some commented output printfs.
|
| 1.34 |
09-Aug-2020 |
skrll |
Don't kcpuset_clone every pmap_tlb_shootdown_bystanders. Instead allocate a kcpuset_t per cpu_info and use that.
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1
|
| 1.33 |
14-Apr-2020 |
skrll |
Fix UVMHIST bulid
|
| 1.32 |
12-Apr-2020 |
skrll |
Use UVMHIST_CALLARGS
|
|
Revision tags: phil-wifi-20200411
|
| 1.31 |
09-Apr-2020 |
skrll |
Make a comment less MIPS specific
|
|
Revision tags: bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.30 |
18-Dec-2019 |
skrll |
branches: 1.30.6; KNF
|
| 1.29 |
17-Dec-2019 |
skrll |
Fix a UVMHIST_LOG format
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
| 1.28 |
25-Feb-2018 |
jdolecek |
branches: 1.28.4; fix the DIAGNOSTIC function pmap_tlb_asid_count() to not expect that TLBINFO_ASID_INUSE_P() returns just 0 or 1; the underlying __BITMAP_ISSET() actually returns the matching bit nowadays, which caused miscounting
fixes PR kern/53054 by Sevan Janiyan
|
| 1.27 |
25-Feb-2018 |
jdolecek |
adjust KASSERT() triggered in PR port-cobalt/53054 to provide more info
|
| 1.26 |
21-Feb-2018 |
jdolecek |
KERNEL_PID is > 0 on powerpc/ibm4xx, need to mask all bits <0, KERNEL_PID> to avoid triggering KASSERT() checking allocated asid is bigger than KERNEL_PID; adjust also TLBINFO_ASID_INITIAL_FREE() accordingly
discussed with Nick
|
| 1.25 |
19-Feb-2018 |
jdolecek |
convert to use actual __BITMAP_*() macros from <sys/bitops.h>, and make it possible to override the ASID bitmap length; default to 256 ASIDs as before
XXX NFCI; compile tested only on evbpcc and evbmips, unfortunately didn't find any combination of port using the MI pmap_tlb.c and working in QEMU
|
| 1.24 |
19-Feb-2018 |
jdolecek |
a bit of DRY - add macro for initial free ASID count
|
| 1.23 |
19-Feb-2018 |
jdolecek |
make it possible to not use the icache evcnts
|
|
Revision tags: tls-maxphys-base-20171202
|
| 1.22 |
28-Oct-2017 |
pgoyette |
branches: 1.22.2; Update the kernhist(9) kernel history code to address issues identified in PR kern/52639, as well as some general cleaning-up...
(As proposed on tech-kern@ with additional changes and enhancements.)
Details of changes:
* All history arguments are now stored as uintmax_t values[1], both in the kernel and in the structures used for exporting the history data to userland via sysctl(9). This avoids problems on some architectures where passing a 64-bit (or larger) value to printf(3) can cause it to process the value as multiple arguments. (This can be particularly problematic when printf()'s format string is not a literal, since in that case the compiler cannot know how large each argument should be.)
* Update the data structures used for exporting kernel history data to include a version number as well as the length of history arguments.
* All [2] existing users of kernhist(9) have had their format strings updated. Each format specifier now includes an explicit length modifier 'j' to refer to numeric values of the size of uintmax_t.
* All [2] existing users of kernhist(9) have had their format strings updated to replace uses of "%p" with "%#jx", and the pointer arguments are now cast to (uintptr_t) before being subsequently cast to (uintmax_t). This is needed to avoid compiler warnings about casting "pointer to integer of a different size."
* All [2] existing users of kernhist(9) have had instances of "%s" or "%c" format strings replaced with numeric formats; several instances of mis-match between format string and argument list have been fixed.
* vmstat(1) has been modified to handle the new size of arguments in the history data as exported by sysctl(9).
* vmstat(1) now provides a warning message if the history requested with the -u option does not exist (previously, this condition was silently ignored, with only a single blank line being printed).
* vmstat(1) now checks the version and argument length included in the data exported via sysctl(9) and exits if they do not match the values with which vmstat was built.
* The kernhist(9) man-page has been updated to note the additional requirements imposed on the format strings, along with several other minor changes and enhancements.
[1] It would have been possible to use an explicit length (for example, uint64_t) for the history arguments. But that would require another "rototill" of all the users in the future when we add support for an architecture that supports a larger size. Also, the printf(3) format specifiers for explicitly-sized values, such as "%"PRIu64, are much more verbose (and less aesthetically appealing, IMHO) than simply using "%ju".
[2] I've tried very hard to find "all [the] existing users of kernhist(9)" but it is possible that I've missed some of them. I would be glad to update any stragglers that anyone identifies.
|
|
Revision tags: nick-nhusb-base-20170825 perseant-stdc-iso10646-base netbsd-8-base
|
| 1.21 |
26-May-2017 |
skrll |
branches: 1.21.2; Remove incorrect __diagused
|
| 1.20 |
26-May-2017 |
skrll |
Use the define name PMAP_HWPAGEWALKER and not PMAP_TLB_HWPAGEWALKER
|
|
Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104
|
| 1.19 |
09-Oct-2016 |
christos |
PR/51540: Henning Petersen: replace , with ;
|
|
Revision tags: nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726
|
| 1.18 |
23-Jul-2016 |
matt |
Lock the tlbinfo if it wasn't when doing a pmap_tlb_pai_check
|
|
Revision tags: pgoyette-localcount-base
|
| 1.17 |
14-Jul-2016 |
skrll |
branches: 1.17.2; Use KERNEL_PID instead of 0
|
| 1.16 |
14-Jul-2016 |
skrll |
Fix some comments.
|
| 1.15 |
14-Jul-2016 |
skrll |
Trailing whitespace
|
| 1.14 |
12-Jul-2016 |
skrll |
Fix typo for build check
|
| 1.13 |
11-Jul-2016 |
matt |
Changes so that MIPS can use the common pmap. Change/augment the virtual cache alias callbacks.
|
|
Revision tags: nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
| 1.12 |
11-Jun-2015 |
matt |
Don't call kcpuset_intersecting_p and then kcpuset_ffs_intersecting since that the last will tell use what we need to know.
|
|
Revision tags: nick-nhusb-base-20150606
|
| 1.11 |
18-Apr-2015 |
joerg |
pmap_tlb_intersecting_active_p is not used in some combinations of platform options as seen by recent ARM changes.
|
|
Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
|
| 1.10 |
29-Oct-2014 |
skrll |
branches: 1.10.2; s/0/KERNEL_PID/ for correctness
|
| 1.9 |
18-Oct-2014 |
skrll |
Minor comment update.
|
|
Revision tags: netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.8 |
03-Apr-2014 |
matt |
branches: 1.8.4; Change cpu_tlb_info definition based on PMAP_TLB_MAX instead of MULTIPROCESSOR
|
| 1.7 |
03-Apr-2014 |
matt |
Compare ASIDs, not pmaps.
|
| 1.6 |
03-Apr-2014 |
matt |
Make this compile on booke again.
|
|
Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
|
| 1.5 |
30-Mar-2014 |
matt |
Allow this to handle H/W tlbs. Some ARM allow for a cheap way to flush all entries using an ASID from the TLB. Add support for taking advantage of it. Most ARMs don't have an easy way to find out what's in the TLB so make record_asids can just say all ASIDs are in use. Fix some off by 1 errors.
|
| 1.4 |
18-Mar-2014 |
riastradh |
Merge riastradh-drm2 to HEAD.
|
|
Revision tags: riastradh-drm2-base3 riastradh-drm2-base2 riastradh-drm2-base1
|
| 1.3 |
17-Jul-2013 |
matt |
Make this kcpuset_t instead of the private __cpuset_t Add improvements for single TLB implementation (PPC, ARM).
|
|
Revision tags: riastradh-drm2-base
|
| 1.2 |
02-Jul-2013 |
matt |
branches: 1.2.2; Split tlb related stuff into pmap_tlb.h so that can be used for ASID mgmt for non-soft TLB pmaps.
|
|
Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.1 |
03-Oct-2012 |
christos |
branches: 1.1.2; 1.1.4; move from common/pmap/tlb -> uvm/pmap
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base perseant-exfatfs-base-20240630 perseant-exfatfs-base thorpej-ifq-base thorpej-altq-separation-base
|
| 1.17 |
06-Oct-2023 |
skrll |
Support CPUs that might not have ASIDs in the common pmap.
|
|
Revision tags: netbsd-10-1-RELEASE netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base
|
| 1.16 |
26-Oct-2022 |
skrll |
MI PMAP hardware page table walker support.
This is based on code given to me by Matt Thomas a long time ago with many updates and bugs fixes from me.
|
|
Revision tags: bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.15 |
19-Aug-2020 |
skrll |
KNF. Add some whitespace to the TLBINV_MAP macro and tlb_invalidate_op enum.
|
| 1.14 |
01-Aug-2020 |
skrll |
Provide a TLBINFO_OWNED
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
| 1.13 |
19-Feb-2018 |
jdolecek |
convert to use actual __BITMAP_*() macros from <sys/bitops.h>, and make it possible to override the ASID bitmap length; default to 256 ASIDs as before
XXX NFCI; compile tested only on evbpcc and evbmips, unfortunately didn't find any combination of port using the MI pmap_tlb.c and working in QEMU
|
| 1.12 |
19-Feb-2018 |
jdolecek |
make it possible to not use the icache evcnts
|
|
Revision tags: tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
| 1.11 |
24-Jun-2017 |
skrll |
Multiple inclusion protection define consistency
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base netbsd-8-base
|
| 1.10 |
26-May-2017 |
skrll |
Whitespace
|
|
Revision tags: prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
| 1.9 |
11-Jul-2016 |
matt |
Changes so that MIPS can use the common pmap. Change/augment the virtual cache alias callbacks.
|
|
Revision tags: nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921 nick-nhusb-base-20150606 nick-nhusb-base-20150406
|
| 1.8 |
02-Apr-2015 |
matt |
include <sys/evcnt.h>
|
| 1.7 |
05-Jan-2015 |
nonaka |
Use PMAP_TLB_MAX instead of MAXCPUS.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base tls-maxphys-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-base rmind-smpnet-nbase
|
| 1.6 |
03-Apr-2014 |
matt |
branches: 1.6.4; 1.6.8; 1.6.10; Change cpu_tlb_info definition based on PMAP_TLB_MAX instead of MULTIPROCESSOR
|
|
Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
|
| 1.5 |
30-Mar-2014 |
matt |
Allow this to handle H/W tlbs. Some ARM allow for a cheap way to flush all entries using an ASID from the TLB. Add support for taking advantage of it. Most ARMs don't have an easy way to find out what's in the TLB so make record_asids can just say all ASIDs are in use. Fix some off by 1 errors.
|
| 1.4 |
18-Mar-2014 |
riastradh |
Merge riastradh-drm2 to HEAD.
|
|
Revision tags: riastradh-drm2-base3 riastradh-drm2-base2 riastradh-drm2-base1
|
| 1.3 |
22-Jul-2013 |
matt |
branches: 1.3.2; If not MULTIPROCESSOR, just make cpu_tlb_info(ci) return &pmap_tlb0_info
|
| 1.2 |
17-Jul-2013 |
matt |
Make this kcpuset_t instead of the private __cpuset_t Add improvements for single TLB implementation (PPC, ARM).
|
|
Revision tags: riastradh-drm2-base
|
| 1.1 |
02-Jul-2013 |
matt |
branches: 1.1.2; Split tlb related stuff into pmap_tlb.h so that can be used for ASID mgmt for non-soft TLB pmaps.
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base
|
| 1.5 |
02-Oct-2021 |
skrll |
Pass the pmap in tlb_set_asid for the benefit of aarch64.
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 netbsd-9-2-RELEASE cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base netbsd-9-1-RELEASE bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 netbsd-9-0-RELEASE netbsd-9-0-RC2 ad-namecache-base2 ad-namecache-base1 ad-namecache-base netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-merge-20190127 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
| 1.4 |
24-Jun-2017 |
skrll |
branches: 1.4.4; Multiple inclusion protection define consistency
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
| 1.3 |
11-Jul-2016 |
matt |
Changes so that MIPS can use the common pmap. Change/augment the virtual cache alias callbacks.
|
|
Revision tags: nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226
|
| 1.2 |
21-Sep-2015 |
matt |
Update multiple inclusion macro
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base rmind-smpnet-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 tls-maxphys-base yamt-pagecache-base6
|
| 1.1 |
03-Oct-2012 |
christos |
branches: 1.1.2; 1.1.16; move from common/pmap/tlb -> uvm/pmap
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| 1.17 |
20-Dec-2020 |
skrll |
Support __HAVE_PMAP_PV_TRACK in sys/uvm/pmap based pmaps (aka common pmap)
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base is-mlppp-base phil-wifi-20200406 ad-namecache-base3 ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
| 1.16 |
30-Dec-2019 |
ad |
branches: 1.16.8; pg->phys_addr -> VM_PAGE_TO_PHYS().
|
|
Revision tags: phil-wifi-20191119
|
| 1.15 |
20-Oct-2019 |
skrll |
Define and use VM_PAGEMD_PVLIST_EMPTY_P
|
| 1.14 |
20-Oct-2019 |
skrll |
Whitespace
|
| 1.13 |
20-Oct-2019 |
skrll |
Re-order _P() macros to match bit definitions. NFCI
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base
|
| 1.12 |
12-Jul-2019 |
skrll |
Provide and use PV_ISKENTER_P. NFCI.
|
| 1.11 |
19-Jun-2019 |
christos |
use __nothing
|
| 1.10 |
19-Jun-2019 |
skrll |
Once more short line to unwrap
|
| 1.9 |
19-Jun-2019 |
skrll |
Unwrap short lines. NFCI.
|
|
Revision tags: phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422
|
| 1.8 |
19-Apr-2018 |
christos |
branches: 1.8.2; s/static inline/static __inline/g for consistency.
|
|
Revision tags: pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
| 1.7 |
24-Jun-2017 |
skrll |
branches: 1.7.4; 1.7.6; Use __BIT(0) for PV_KENTER. NFC.
|
| 1.6 |
24-Jun-2017 |
skrll |
Whitespace - comment alignment.
|
| 1.5 |
24-Jun-2017 |
skrll |
Multiple inclusion protection define consistency
|
| 1.4 |
07-Jun-2017 |
skrll |
Use __BIT(). No functional change.
|
|
Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
|
| 1.3 |
11-Jul-2016 |
matt |
Changes so that MIPS can use the common pmap. Change/augment the virtual cache alias callbacks.
|
|
Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 netbsd-7-0-1-RELEASE nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 netbsd-7-0-RELEASE nick-nhusb-base-20150921 netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 nick-nhusb-base-20150606 nick-nhusb-base-20150406 nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3 rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| 1.2 |
04-Mar-2014 |
matt |
branches: 1.2.6; use _KERNEL_OPT around #include
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7 yamt-pagecache-base6
|
| 1.1 |
03-Oct-2012 |
christos |
branches: 1.1.2; 1.1.4; move from common/pmap/tlb -> uvm/pmap
|