This is part of a series of patches intended to enable first-touch numa policies for UMA by default. It also reduces the cost of uma_zalloc/zfree by approximately 30% each in my tests.
This locks each domain in the keg independently. Most keg fields that were non-domain were already read-only. uk_pages and uk_free become ud_pages and ud_free which is slightly annoying but not problematic. This allows your capacity to drain buckets to scale up with the number of nodes.
Because hash uses the keg lock and for simplicity elsewhere we force all !NUMA domains to use keg domain 0. It would be possible to limit this impact only to hash zones.