UMA_ZONE_VM is only for consumers that are involved in the KVA or page allocation path. Setting this restricts layout and prevents the allocation of pages for buckets. It should be used sparingly. It really doesn't have anything to do with low memory handling. If we're low on pages we already will avoid allocating buckets for any zone.
I would actually like it if all zones were able to allocate buckets from pages. It is almost safe on radix for direct map architectures. I may need a per-thread recursion flag to resolve that.