Re: [PATCH 01/12] mm/sparse: move mem_section init to sparse_extreme_init()
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
Date: 2026-09-10 12:52:35
Also in:
linux-cxl, linux-fsdevel, linux-mm, lkml
On Wed, Sep 09, 2026 at 03:32:54PM +0200, David Hildenbrand (Arm) wrote:
Let's just avoid another pair of ifdef inside a function. While at it, switch to INTERNODE_CACHE_BYTES by just defining a fallback in cache.h as well, given that the x86 variant already provides one. Signed-off-by: David Hildenbrand (Arm) <david@kernel.org>
Nic ecleanup, one nit below. Reviewed-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>
quoted hunk ↗ jump to hunk
--- include/linux/cache.h | 1 + mm/sparse.c | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-)diff --git a/include/linux/cache.h b/include/linux/cache.h index e69768f50d532..b6e857b985bca 100644 --- a/include/linux/cache.h +++ b/include/linux/cache.h@@ -89,6 +89,7 @@ */ #ifndef INTERNODE_CACHE_SHIFT #define INTERNODE_CACHE_SHIFT L1_CACHE_SHIFT +#define INTERNODE_CACHE_BYTES (1 << INTERNODE_CACHE_SHIFT)
NIT: 1UL?
quoted hunk ↗ jump to hunk
#endif #if !defined(____cacheline_internodealigned_in_smp)diff --git a/mm/sparse.c b/mm/sparse.c index 9349ed6326c01..6a6d258862904 100644 --- a/mm/sparse.c +++ b/mm/sparse.c@@ -103,11 +103,22 @@ int __meminit sparse_index_init(unsigned long section_nr, int nid) return 0; } + +static void __init sparse_extreme_init(void) +{ + const unsigned long size = sizeof(struct mem_section *) * NR_SECTION_ROOTS; + + mem_section = memblock_alloc_or_panic(size, INTERNODE_CACHE_BYTES); +} #else /* !SPARSEMEM_EXTREME */ int __meminit sparse_index_init(unsigned long section_nr, int nid) { return 0; } + +static void __init sparse_extreme_init(void) +{ +} #endif /*@@ -197,13 +208,7 @@ void __init sparse_sections_init(void) unsigned long start, end; int i, nid; -#ifdef CONFIG_SPARSEMEM_EXTREME - unsigned long size, align; - - size = sizeof(struct mem_section *) * NR_SECTION_ROOTS; - align = 1 << (INTERNODE_CACHE_SHIFT); - mem_section = memblock_alloc_or_panic(size, align); -#endif + sparse_extreme_init(); for_each_mem_pfn_range(i, MAX_NUMNODES, &start, &end, &nid) memory_present(nid, start, end); --2.43.0
-- Cheers, Lorenzo