]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/bootmem_info: avoid using sparse_decode_mem_map()
authorDavid Hildenbrand (Arm) <david@kernel.org>
Fri, 20 Mar 2026 22:13:40 +0000 (23:13 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 5 Apr 2026 20:53:32 +0000 (13:53 -0700)
With SPARSEMEM_VMEMMAP, we can just do a pfn_to_page().  It is not super
clear whether the start_pfn is properly aligned ...  so let's just make
sure it is properly aligned to the start of the section.

We will soon might try to remove the bootmem info completely, for now,
just keep it working as is.

Link: https://lkml.kernel.org/r/20260320-sparsemem_cleanups-v2-8-096addc8800d@kernel.org
Signed-off-by: David Hildenbrand (Arm) <david@kernel.org>
Reviewed-by: Lorenzo Stoakes (Oracle) <ljs@kernel.org>
Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Cc: Axel Rasmussen <axelrasmussen@google.com>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Sidhartha Kumar <sidhartha.kumar@oracle.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Cc: Wei Xu <weixugc@google.com>
Cc: Yuanchu Xie <yuanchu@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/bootmem_info.c

index e61e08e249246497e2e4dcc9d48e39b43e599e09..3d7675a3ae048bacb7a4b89c4377a93e6c3748a6 100644 (file)
@@ -44,17 +44,16 @@ static void __init register_page_bootmem_info_section(unsigned long start_pfn)
 {
        unsigned long mapsize, section_nr, i;
        struct mem_section *ms;
-       struct page *page, *memmap;
        struct mem_section_usage *usage;
+       struct page *page;
 
+       start_pfn = SECTION_ALIGN_DOWN(start_pfn);
        section_nr = pfn_to_section_nr(start_pfn);
        ms = __nr_to_section(section_nr);
 
-       memmap = sparse_decode_mem_map(ms->section_mem_map, section_nr);
-
        if (!preinited_vmemmap_section(ms))
-               register_page_bootmem_memmap(section_nr, memmap,
-                               PAGES_PER_SECTION);
+               register_page_bootmem_memmap(section_nr, pfn_to_page(start_pfn),
+                                            PAGES_PER_SECTION);
 
        usage = ms->usage;
        page = virt_to_page(usage);