diff --git a/sys/dev/nvdimm/nvdimm_e820.c b/sys/dev/nvdimm/nvdimm_e820.c index f216143893e7..420c597b89bf 100644 --- a/sys/dev/nvdimm/nvdimm_e820.c +++ b/sys/dev/nvdimm/nvdimm_e820.c @@ -121,7 +121,7 @@ nvdimm_e820_create_spas(device_t dev) sc = device_get_softc(dev); error = 0; - nfit_sa = (ACPI_NFIT_SYSTEM_ADDRESS) { 0 }; + nfit_sa = (ACPI_NFIT_SYSTEM_ADDRESS) { {0} }; if (bootverbose) nvdimm_e820_dump_prams(dev, __func__, -1); diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c index 92b438e4ee1d..460bc3bd7a8a 100644 --- a/sys/vm/uma_core.c +++ b/sys/vm/uma_core.c @@ -585,6 +585,9 @@ zone_timeout(uma_zone_t zone) uma_keg_t keg = zone->uz_keg; u_int slabs; + if ((zone->uz_flags & UMA_ZFLAG_CACHE) != 0) + return; + KEG_LOCK(keg); /* * Expand the keg hash table. @@ -1081,7 +1084,8 @@ zone_reclaim(uma_zone_t zone, int waitok, bool drain) * we're running. Normally the uma_rwlock would protect us but we * must be able to release and acquire the right lock for each keg. */ - keg_drain(zone->uz_keg); + if ((zone->uz_flags & UMA_ZFLAG_CACHE) == 0) + keg_drain(zone->uz_keg); ZONE_LOCK(zone); zone->uz_flags &= ~UMA_ZFLAG_RECLAIMING; wakeup(zone); @@ -2027,6 +2031,8 @@ zone_foreach(void (*zfunc)(uma_zone_t)) LIST_FOREACH(zone, &keg->uk_zones, uz_link) zfunc(zone); } + LIST_FOREACH(zone, &uma_cachezones, uz_link) + zfunc(zone); if (__predict_true(booted == BOOT_RUNNING)) rw_runlock(&uma_rwlock); } @@ -3969,7 +3975,8 @@ uma_print_zone(uma_zone_t zone) printf("zone: %s(%p) size %d maxitems %ju flags %#x\n", zone->uz_name, zone, zone->uz_size, (uintmax_t)zone->uz_max_items, zone->uz_flags); - if (zone->uz_lockptr != &zone->uz_lock) + if (zone->uz_lockptr != &zone->uz_lock && + (zone->uz_flags & UMA_ZFLAG_CACHE) == 0) uma_print_keg(zone->uz_keg); CPU_FOREACH(i) { cache = &zone->uz_cpu[i];