[PATCH v2 12/15] mm/sparse: drop set_section_nid() from sparse_add_section()

David Hildenbrand (Arm)
2026-03-20T22:14:34Z

CONFIG_MEMORY_HOTPLUG is CONFIG_SPARSEMEM_VMEMMAP-only. And
CONFIG_SPARSEMEM_VMEMMAP implies that NODE_NOT_IN_PAGE_FLAGS cannot be set:
see include/linux/page-flags-layout.h

...
#elif defined(CONFIG_SPARSEMEM_VMEMMAP)
#error "Vmemmap: No space for nodes field in page flags"
...

Which implies that the node is always stored in page flags and
NODE_NOT_IN_PAGE_FLAGS cannot be set. Therefore,
set_section_nid() is a NOP on CONFIG_SPARSEMEM_VMEMMAP.

So let's remove the set_section_nid() call to prepare for moving
CONFIG_MEMORY_HOTPLUG to mm/sparse-vmemmap.c

Reviewed-by: Lorenzo Stoakes (Oracle) <ljs@kernel.org>
Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Signed-off-by: David Hildenbrand (Arm) <david@kernel.org>
---
mm/sparse.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/mm/sparse.c b/mm/sparse.c
index c96ac5e70c22..5c9cad390282 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -765,7 +765,6 @@ int __meminit sparse_add_section(int nid, unsigned long start_pfn,
page_init_poison(memmap, sizeof(struct page) * nr_pages);

ms = __nr_to_section(section_nr);
- set_section_nid(section_nr, nid);
__section_mark_present(ms, section_nr);

/* Align memmap to section boundary in the subsection case */

--
2.43.0