From: Kaitao Cheng Date: Sat, 21 Mar 2026 12:08:47 +0000 (+0800) Subject: mm: mark early-init static variables with __meminitdata X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c4a9439a5a372c6c0eb7cd2bc9dbb2494699e98d;p=thirdparty%2Flinux.git mm: mark early-init static variables with __meminitdata Static variables defined inside __meminit functions should also be marked with __meminitdata, so that their storage is placed in the .init.data section and reclaimed with free_initmem(), thereby reducing permanent .bss memory usage when CONFIG_MEMORY_HOTPLUG is disabled. Link: https://lkml.kernel.org/r/20260321120847.8159-1-pilgrimtao@gmail.com Signed-off-by: Kaitao Cheng Reviewed-by: Andrew Morton Cc: David Hildenbrand Cc: Liam Howlett Cc: Lorenzo Stoakes (Oracle) Cc: Michal Hocko Cc: Mike Rapoport Cc: Suren Baghdasaryan Signed-off-by: Andrew Morton --- diff --git a/mm/mm_init.c b/mm/mm_init.c index 4324b93ccebdb..79f93f2a90cf2 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -812,7 +812,7 @@ void __meminit reserve_bootmem_region(phys_addr_t start, static bool __meminit overlap_memmap_init(unsigned long zone, unsigned long *pfn) { - static struct memblock_region *r; + static struct memblock_region *r __meminitdata; if (mirrored_kernelcore && zone == ZONE_MOVABLE) { if (!r || *pfn >= memblock_region_memory_end_pfn(r)) { diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index 24a37676cecbb..6eadb9d116e43 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c @@ -62,7 +62,7 @@ void * __meminit vmemmap_alloc_block(unsigned long size, int node) if (slab_is_available()) { gfp_t gfp_mask = GFP_KERNEL|__GFP_RETRY_MAYFAIL|__GFP_NOWARN; int order = get_order(size); - static bool warned; + static bool warned __meminitdata; struct page *page; page = alloc_pages_node(node, gfp_mask, order);