Switch cache zones from early counters to real implementation.

Early counter mock can be only used on BSP for amd64, when APs try to
update it that causes random memory corruption.

N.B.  This is a temporary patch to plug the corruption for now, while
a proper solution for handling cache zones in zone_foreach() is being
developed.

In collaboration with:	pho
Reviewed by:	markj
Sponsored by:	The FreeBSD Foundation, Mellanox Technologies
This commit is contained in:
kib 2019-11-05 21:38:48 +00:00
parent 0007fbb540
commit e4c3b9879f

View File

@ -2198,6 +2198,7 @@ uma_startup2(void)
static void
uma_startup3(void)
{
uma_zone_t zone;
#ifdef INVARIANTS
TUNABLE_INT_FETCH("vm.debug.divisor", &dbg_divisor);
@ -2205,6 +2206,8 @@ uma_startup3(void)
uma_skip_cnt = counter_u64_alloc(M_WAITOK);
#endif
zone_foreach(zone_alloc_counters);
LIST_FOREACH(zone, &uma_cachezones, uz_link)
zone_alloc_counters(zone);
callout_init(&uma_callout, 1);
callout_reset(&uma_callout, UMA_TIMEOUT * hz, uma_timeout, NULL);
booted = BOOT_RUNNING;