freebsd-skq/sys/vm
markj b368231e1d Fix pre-SI_SUB_CPU initialization of per-CPU counters.
r336020 introduced pcpu_page_alloc(), replacing page_alloc() as the
backend allocator for PCPU UMA zones.  Unlike page_alloc(), it does
not honour malloc(9) flags such as M_ZERO or M_NODUMP, so fix that.

r336020 also changed counter(9) to initialize each counter using a
CPU_FOREACH() loop instead of an SMP rendezvous.  Before SI_SUB_CPU,
smp_rendezvous() will only execute the callback on the current CPU
(i.e., CPU 0), so only one counter gets zeroed.  The rest are zeroed
by virtue of the fact that UMA gratuitously zeroes slabs when importing
them into a zone.

Prior to SI_SUB_CPU, all_cpus is clear, so with r336020 we weren't
zeroing vm_cnt counters during boot: the CPU_FOREACH() loop had no
effect, and pcpu_page_alloc() didn't honour M_ZERO.  Fix this by
iterating over the full range of CPU IDs when zeroing counters,
ignoring whether the corresponding bits in all_cpus are set.

Reported and tested by:	pho (previous version)
Reviewed by:		kib (previous version)
Differential Revision:	https://reviews.freebsd.org/D16190
2018-07-10 00:18:12 +00:00
..
_vm_radix.h
default_pager.c
device_pager.c
memguard.c
memguard.h
phys_pager.c
pmap.h
redzone.c
redzone.h
sg_pager.c
swap_pager.c Handle the race between fork/vm_object_split() and faults. 2018-06-14 19:41:02 +00:00
swap_pager.h
uma_core.c Fix pre-SI_SUB_CPU initialization of per-CPU counters. 2018-07-10 00:18:12 +00:00
uma_dbg.c
uma_dbg.h
uma_int.h Sort uma_zone fields according to 64 byte cache line with adjacent line 2018-06-23 08:10:09 +00:00
uma.h Back pcpu zone with domain correct pages 2018-07-06 02:06:03 +00:00
vm_domainset.c Use the canonical check for reservation support. 2018-05-19 23:49:13 +00:00
vm_domainset.h
vm_extern.h Make UMA and malloc(9) return non-executable memory in most cases. 2018-06-13 17:04:41 +00:00
vm_fault.c Typo. 2018-05-30 16:48:48 +00:00
vm_glue.c
vm_init.c Make UMA and malloc(9) return non-executable memory in most cases. 2018-06-13 17:04:41 +00:00
vm_kern.c Make UMA and malloc(9) return non-executable memory in most cases. 2018-06-13 17:04:41 +00:00
vm_kern.h Make UMA and malloc(9) return non-executable memory in most cases. 2018-06-13 17:04:41 +00:00
vm_map.c Save a call to pmap_remove() if entry cannot have any pages mapped. 2018-07-06 12:44:48 +00:00
vm_map.h inline atomics and allow tied modules to inline locks 2018-07-02 19:48:38 +00:00
vm_meter.c
vm_mmap.c Use a single, consistent approach to returning success versus failure in 2018-06-04 16:28:06 +00:00
vm_object.c
vm_object.h
vm_page.c Create a new macro for static DPCPU data. 2018-07-05 17:13:37 +00:00
vm_page.h inline atomics and allow tied modules to inline locks 2018-07-02 19:48:38 +00:00
vm_pageout.c Correct the description of vm_pageout_scan_inactive() after r334508. 2018-06-04 16:46:36 +00:00
vm_pageout.h
vm_pagequeue.h Make UMA and malloc(9) return non-executable memory in most cases. 2018-06-13 17:04:41 +00:00
vm_pager.c
vm_pager.h
vm_param.h
vm_phys.c Allow callers to vm_phys_split_pages() to specify whether insertion should 2018-07-05 02:08:57 +00:00
vm_phys.h Update the physical page selection strategy used by vm_page_import() so 2018-06-26 18:29:56 +00:00
vm_radix.c vm: stop passing M_ZERO when allocating radix nodes 2018-06-24 13:08:05 +00:00
vm_radix.h
vm_reserv.c Use the ticks since the last update to reduce hysteresis in the partpopq and 2018-07-07 01:54:45 +00:00
vm_reserv.h
vm_swapout_dummy.c
vm_swapout.c
vm_unix.c Split kern_break from sys_break and use it in linuxulator 2018-06-27 14:45:13 +00:00
vm.h
vnode_pager.c
vnode_pager.h