#
1.25 |
|
11-May-2020 |
riastradh |
Teach percpu to run constructors on CPU attach.
This should make percpu work reliably for things like cprng_strong much earlier -- not just after all CPUs have been detected. This is also necessary (though not on its own sufficient) for CPU hotplug.
|
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.24 |
|
07-Feb-2020 |
thorpej |
Add percpu_foreach_xcall(), which is like percpu_foreach(), except it runs the callback on the target CPU.
|
#
1.23 |
|
01-Feb-2020 |
riastradh |
KNF
|
#
1.22 |
|
01-Feb-2020 |
riastradh |
Use __read_mostly and gather related __cacheline_aligned together.
Should save a few bytes of kernel.
|
#
1.21 |
|
01-Feb-2020 |
riastradh |
New function percpu_create.
Associates a constructor and destructor with the percpu. Currently the constructor runs immediately, but in principle we could use the same API for future CPU hotplug support.
This lets you sleep for allocation or draining users before deallocation when setting up or tearing down a percpu -- currently we have many abuses of percpu_foreach in tree for that purpose.
Proposed on tech-kern: https://mail-index.NetBSD.org/tech-kern/2020/01/30/msg026036.html
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.20 |
|
05-Dec-2019 |
riastradh |
branches: 1.20.2; Allow equality in this assertion.
This can happen if we lose the race mentioned in percpu_cpu_swap.
|
Revision tags: phil-wifi-20191119
|
#
1.19 |
|
18-Sep-2019 |
kamil |
Decorate percpu_cpu_swap() with __noubsan
|
Revision tags: 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
|
#
1.18 |
|
31-May-2017 |
chs |
branches: 1.18.10; vmem_alloc() with VM_SLEEP cannot fail, so percpu_alloc() cannot fail either.
|
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 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.17 |
|
27-Nov-2014 |
uebayasi |
branches: 1.17.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-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.16 |
|
27-Jan-2012 |
para |
branches: 1.16.6; 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.15 |
|
02-Sep-2011 |
dyoung |
branches: 1.15.2; 1.15.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.14 |
|
27-Jul-2011 |
uebayasi |
These don't need uvm/uvm_extern.h.
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.13 |
|
13-May-2011 |
rmind |
Sprinkle __cacheline_aligned and __read_mostly.
|
#
1.12 |
|
19-Apr-2011 |
martin |
Relax an assertion
|
#
1.11 |
|
14-Apr-2011 |
matt |
Add a KASSERT
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 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.10 |
|
21-Oct-2009 |
rmind |
branches: 1.10.4; 1.10.6; 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 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.9 |
|
15-Dec-2008 |
ad |
Start percpu allocation at (ALIGNBYTES + 1) to avoid problem with importing offset zero to vmem.
|
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 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.8 |
|
03-May-2008 |
yamt |
branches: 1.8.8; 1.8.10; - encrypt/decrypt offsets if DIAGNOSTIC. - add an assertion. these changes allow to detect a use of uninitialized percpu_t *.
|
#
1.7 |
|
28-Apr-2008 |
ad |
Add MI code to support in-kernel preemption. Preemption is deferred by one of the following:
- Holding kernel_lock (indicating that the code is not MT safe). - Bracketing critical sections with kpreempt_disable/kpreempt_enable. - Holding the interrupt priority level above IPL_NONE.
Statistics on kernel preemption are reported via event counters, and where preemption is deferred for some reason, it's also reported via lockstat. The LWP priority at which preemption is triggered is tuneable via sysctl.
|
Revision tags: yamt-nfs-mp-base
|
#
1.6 |
|
27-Apr-2008 |
ad |
branches: 1.6.2; - Rename crit_enter/crit_exit to kpreempt_disable/kpreempt_enable. DragonflyBSD uses the crit names for something quite different. - Add a kpreempt_disabled function for diagnostic assertions. - Add inline versions of kpreempt_enable/kpreempt_disable for primitives. - Make some more changes for preemption safety to the x86 pmap.
|
#
1.5 |
|
26-Apr-2008 |
yamt |
fix a comment.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.4 |
|
09-Apr-2008 |
thorpej |
branches: 1.4.2; Make the percpu API a little more friendly: - percpu_getptr() is now called percpu_getref() and implicitly disables preemption (via crit_enter()) when it is called. - Added percpu_putref() which implicitly reenables preemption (via crit_exit()).
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 matt-armv6-nbase keiichi-mipv6-nbase keiichi-mipv6-base
|
#
1.3 |
|
17-Mar-2008 |
yamt |
branches: 1.3.2; - simplify ASSERT_SLEEPABLE. - move it from proc.h to systm.h. - add some more checks. - make it a little more lkm friendly.
|
Revision tags: hpcarm-cleanup-base nick-net80211-sync-base mjf-devfs-base bouyer-xeni386-base bouyer-xeni386-nbase
|
#
1.2 |
|
17-Jan-2008 |
yamt |
branches: 1.2.2; 1.2.4; 1.2.6; 1.2.8; 1.2.12; - add a cpu_info pointer argument to percpu_callback_t. - unexport percpu_zero. - add some comments.
|
#
1.1 |
|
14-Jan-2008 |
yamt |
add a per-cpu storage allocator.
|
#
1.24 |
|
07-Feb-2020 |
thorpej |
Add percpu_foreach_xcall(), which is like percpu_foreach(), except it runs the callback on the target CPU.
|
#
1.23 |
|
01-Feb-2020 |
riastradh |
KNF
|
#
1.22 |
|
01-Feb-2020 |
riastradh |
Use __read_mostly and gather related __cacheline_aligned together.
Should save a few bytes of kernel.
|
#
1.21 |
|
01-Feb-2020 |
riastradh |
New function percpu_create.
Associates a constructor and destructor with the percpu. Currently the constructor runs immediately, but in principle we could use the same API for future CPU hotplug support.
This lets you sleep for allocation or draining users before deallocation when setting up or tearing down a percpu -- currently we have many abuses of percpu_foreach in tree for that purpose.
Proposed on tech-kern: https://mail-index.NetBSD.org/tech-kern/2020/01/30/msg026036.html
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.20 |
|
05-Dec-2019 |
riastradh |
Allow equality in this assertion.
This can happen if we lose the race mentioned in percpu_cpu_swap.
|
Revision tags: phil-wifi-20191119
|
#
1.19 |
|
18-Sep-2019 |
kamil |
Decorate percpu_cpu_swap() with __noubsan
|
Revision tags: 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
|
#
1.18 |
|
31-May-2017 |
chs |
vmem_alloc() with VM_SLEEP cannot fail, so percpu_alloc() cannot fail either.
|
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 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.17 |
|
27-Nov-2014 |
uebayasi |
branches: 1.17.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-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.16 |
|
27-Jan-2012 |
para |
branches: 1.16.6; 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.15 |
|
02-Sep-2011 |
dyoung |
branches: 1.15.2; 1.15.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.14 |
|
27-Jul-2011 |
uebayasi |
These don't need uvm/uvm_extern.h.
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.13 |
|
13-May-2011 |
rmind |
Sprinkle __cacheline_aligned and __read_mostly.
|
#
1.12 |
|
19-Apr-2011 |
martin |
Relax an assertion
|
#
1.11 |
|
14-Apr-2011 |
matt |
Add a KASSERT
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 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.10 |
|
21-Oct-2009 |
rmind |
branches: 1.10.4; 1.10.6; 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 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.9 |
|
15-Dec-2008 |
ad |
Start percpu allocation at (ALIGNBYTES + 1) to avoid problem with importing offset zero to vmem.
|
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 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.8 |
|
03-May-2008 |
yamt |
branches: 1.8.8; 1.8.10; - encrypt/decrypt offsets if DIAGNOSTIC. - add an assertion. these changes allow to detect a use of uninitialized percpu_t *.
|
#
1.7 |
|
28-Apr-2008 |
ad |
Add MI code to support in-kernel preemption. Preemption is deferred by one of the following:
- Holding kernel_lock (indicating that the code is not MT safe). - Bracketing critical sections with kpreempt_disable/kpreempt_enable. - Holding the interrupt priority level above IPL_NONE.
Statistics on kernel preemption are reported via event counters, and where preemption is deferred for some reason, it's also reported via lockstat. The LWP priority at which preemption is triggered is tuneable via sysctl.
|
Revision tags: yamt-nfs-mp-base
|
#
1.6 |
|
27-Apr-2008 |
ad |
branches: 1.6.2; - Rename crit_enter/crit_exit to kpreempt_disable/kpreempt_enable. DragonflyBSD uses the crit names for something quite different. - Add a kpreempt_disabled function for diagnostic assertions. - Add inline versions of kpreempt_enable/kpreempt_disable for primitives. - Make some more changes for preemption safety to the x86 pmap.
|
#
1.5 |
|
26-Apr-2008 |
yamt |
fix a comment.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.4 |
|
09-Apr-2008 |
thorpej |
branches: 1.4.2; Make the percpu API a little more friendly: - percpu_getptr() is now called percpu_getref() and implicitly disables preemption (via crit_enter()) when it is called. - Added percpu_putref() which implicitly reenables preemption (via crit_exit()).
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 matt-armv6-nbase keiichi-mipv6-nbase keiichi-mipv6-base
|
#
1.3 |
|
17-Mar-2008 |
yamt |
branches: 1.3.2; - simplify ASSERT_SLEEPABLE. - move it from proc.h to systm.h. - add some more checks. - make it a little more lkm friendly.
|
Revision tags: hpcarm-cleanup-base nick-net80211-sync-base mjf-devfs-base bouyer-xeni386-base bouyer-xeni386-nbase
|
#
1.2 |
|
17-Jan-2008 |
yamt |
branches: 1.2.2; 1.2.4; 1.2.6; 1.2.8; 1.2.12; - add a cpu_info pointer argument to percpu_callback_t. - unexport percpu_zero. - add some comments.
|
#
1.1 |
|
14-Jan-2008 |
yamt |
add a per-cpu storage allocator.
|
#
1.23 |
|
01-Feb-2020 |
riastradh |
KNF
|
#
1.22 |
|
01-Feb-2020 |
riastradh |
Use __read_mostly and gather related __cacheline_aligned together.
Should save a few bytes of kernel.
|
#
1.21 |
|
01-Feb-2020 |
riastradh |
New function percpu_create.
Associates a constructor and destructor with the percpu. Currently the constructor runs immediately, but in principle we could use the same API for future CPU hotplug support.
This lets you sleep for allocation or draining users before deallocation when setting up or tearing down a percpu -- currently we have many abuses of percpu_foreach in tree for that purpose.
Proposed on tech-kern: https://mail-index.NetBSD.org/tech-kern/2020/01/30/msg026036.html
|
Revision tags: ad-namecache-base2 ad-namecache-base1 ad-namecache-base
|
#
1.20 |
|
05-Dec-2019 |
riastradh |
Allow equality in this assertion.
This can happen if we lose the race mentioned in percpu_cpu_swap.
|
Revision tags: phil-wifi-20191119
|
#
1.19 |
|
18-Sep-2019 |
kamil |
Decorate percpu_cpu_swap() with __noubsan
|
Revision tags: 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
|
#
1.18 |
|
31-May-2017 |
chs |
vmem_alloc() with VM_SLEEP cannot fail, so percpu_alloc() cannot fail either.
|
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 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.17 |
|
27-Nov-2014 |
uebayasi |
branches: 1.17.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-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.16 |
|
27-Jan-2012 |
para |
branches: 1.16.6; 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.15 |
|
02-Sep-2011 |
dyoung |
branches: 1.15.2; 1.15.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.14 |
|
27-Jul-2011 |
uebayasi |
These don't need uvm/uvm_extern.h.
|
Revision tags: rmind-uvmplock-nbase cherry-xenmp-base rmind-uvmplock-base
|
#
1.13 |
|
13-May-2011 |
rmind |
Sprinkle __cacheline_aligned and __read_mostly.
|
#
1.12 |
|
19-Apr-2011 |
martin |
Relax an assertion
|
#
1.11 |
|
14-Apr-2011 |
matt |
Add a KASSERT
|
Revision tags: bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 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.10 |
|
21-Oct-2009 |
rmind |
branches: 1.10.4; 1.10.6; 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 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.9 |
|
15-Dec-2008 |
ad |
Start percpu allocation at (ALIGNBYTES + 1) to avoid problem with importing offset zero to vmem.
|
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 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.8 |
|
03-May-2008 |
yamt |
branches: 1.8.8; 1.8.10; - encrypt/decrypt offsets if DIAGNOSTIC. - add an assertion. these changes allow to detect a use of uninitialized percpu_t *.
|
#
1.7 |
|
28-Apr-2008 |
ad |
Add MI code to support in-kernel preemption. Preemption is deferred by one of the following:
- Holding kernel_lock (indicating that the code is not MT safe). - Bracketing critical sections with kpreempt_disable/kpreempt_enable. - Holding the interrupt priority level above IPL_NONE.
Statistics on kernel preemption are reported via event counters, and where preemption is deferred for some reason, it's also reported via lockstat. The LWP priority at which preemption is triggered is tuneable via sysctl.
|
Revision tags: yamt-nfs-mp-base
|
#
1.6 |
|
27-Apr-2008 |
ad |
branches: 1.6.2; - Rename crit_enter/crit_exit to kpreempt_disable/kpreempt_enable. DragonflyBSD uses the crit names for something quite different. - Add a kpreempt_disabled function for diagnostic assertions. - Add inline versions of kpreempt_enable/kpreempt_disable for primitives. - Make some more changes for preemption safety to the x86 pmap.
|
#
1.5 |
|
26-Apr-2008 |
yamt |
fix a comment.
|
Revision tags: yamt-pf42-baseX yamt-pf42-base
|
#
1.4 |
|
09-Apr-2008 |
thorpej |
branches: 1.4.2; Make the percpu API a little more friendly: - percpu_getptr() is now called percpu_getref() and implicitly disables preemption (via crit_enter()) when it is called. - Added percpu_putref() which implicitly reenables preemption (via crit_exit()).
|
Revision tags: ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 matt-armv6-nbase keiichi-mipv6-nbase keiichi-mipv6-base
|
#
1.3 |
|
17-Mar-2008 |
yamt |
branches: 1.3.2; - simplify ASSERT_SLEEPABLE. - move it from proc.h to systm.h. - add some more checks. - make it a little more lkm friendly.
|
Revision tags: hpcarm-cleanup-base nick-net80211-sync-base mjf-devfs-base bouyer-xeni386-base bouyer-xeni386-nbase
|
#
1.2 |
|
17-Jan-2008 |
yamt |
branches: 1.2.2; 1.2.4; 1.2.6; 1.2.8; 1.2.12; - add a cpu_info pointer argument to percpu_callback_t. - unexport percpu_zero. - add some comments.
|
#
1.1 |
|
14-Jan-2008 |
yamt |
add a per-cpu storage allocator.
|