This work made me think why do we even have CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER ? This really should be the default behavior for all systems. Yet, it is enabled only on x86_64. We could clean up an already messy sparse.c if we removed this config, and enabled its path for all arches. We would not break anything because if we cannot allocate one large mmap_map we still fallback to allocating a page at a time the same as what happens when CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=n. Pavel