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

David Hildenbrand (Arm)
2026-03-20T22:13:44Z

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.

v1 -> v2:
* Added "mm/memory_hotplug: fix possible race in scan_movable_pages()"
* Update the comment above section_deactivate()
* Reordered the flags in sparse_init_one_section()
* Patch description improvements

---
David Hildenbrand (Arm) (15):
mm/memory_hotplug: fix possible race in scan_movable_pages()
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 | 35 ++-
mm/mm_init.c | 2 +-
mm/sparse-vmemmap.c | 304 +++++++++++++++++++++++
mm/sparse.c | 539 +----------------------------------------
9 files changed, 377 insertions(+), 606 deletions(-)
---
base-commit: 3f4f1faa33544d0bd724e32980b6f211c3a9bc7b
change-id: 20260320-sparsemem_cleanups-ce4ddb2c47de

Best regards,
--
David Hildenbrand (Arm) <david@kernel.org>