[PATCH 00/14] mm: memory hot(un)plug and SPARSEMEM cleanups

David Hildenbrand (Arm)
2026-03-17T16:57:01Z

Some cleanups around memory hot(un)plug and SPARSEMEM. In essence,
we can limit CONFIG_MEMORY_HOTPLUG to CONFIG_SPARSEMEM_VMEMMAP,
remove some dead code, and move all the hotplug bits over to
mm/sparse-vmemmap.c.

Some further/related cleanups around other unnecessary code
(memory hole handling and complicated usemap allocation).

I have some further sparse.c cleanups lying around, and I'm planning
on getting rid of bootmem_info.c entirely.

Cross-compiled on a bunch of machines. Hot(un)plug tested with virtio-mem.

Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Axel Rasmussen <axelrasmussen@google.com>
Cc: Yuanchu Xie <yuanchu@google.com>
Cc: Wei Xu <weixugc@google.com>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Michal Hocko <mhocko@suse.com>

David Hildenbrand (Arm) (14):
mm/memory_hotplug: remove for_each_valid_pfn() usage
mm/sparse: remove WARN_ONs from (online|offline)_mem_sections()
mm/Kconfig: make CONFIG_MEMORY_HOTPLUG depend on
CONFIG_SPARSEMEM_VMEMMAP
mm/memory_hotplug: simplify check_pfn_span()
mm/sparse: remove !CONFIG_SPARSEMEM_VMEMMAP leftovers for
CONFIG_MEMORY_HOTPLUG
mm/bootmem_info: remove handling for !CONFIG_SPARSEMEM_VMEMMAP
mm/bootmem_info: avoid using sparse_decode_mem_map()
mm/sparse: remove sparse_decode_mem_map()
mm/sparse: remove CONFIG_MEMORY_HOTPLUG-specific usemap allocation
handling
mm: prepare to move subsection_map_init() to mm/sparse-vmemmap.c
mm/sparse: drop set_section_nid() from sparse_add_section()
mm/sparse: move sparse_init_one_section() to internal.h
mm/sparse: move __section_mark_present() to internal.h
mm/sparse: move memory hotplug bits to sparse-vmemmap.c

include/linux/memory_hotplug.h | 2 -
include/linux/mmzone.h | 6 +-
mm/Kconfig | 2 +-
mm/bootmem_info.c | 46 +--
mm/internal.h | 47 +++
mm/memory_hotplug.c | 24 +-
mm/mm_init.c | 2 +-
mm/sparse-vmemmap.c | 308 +++++++++++++++++++
mm/sparse.c | 539 +--------------------------------
9 files changed, 373 insertions(+), 603 deletions(-)

base-commit: 3f4f1faa33544d0bd724e32980b6f211c3a9bc7b
--
2.43.0