On Fri, Oct 02, 2026 at 09:48:42AM +0800, Muchun Song wrote: > > > > On Oct 1, 2026, at 22:42, Mike Rapoport <[email protected]> wrote: > > > > Hi Muchun, > > Hi, > > > > > On Tue, Sep 29, 2026 at 01:32:31PM +0800, Muchun Song wrote: > >> For vmemmap-optimized sections, tail struct pages may be backed by > >> shared vmemmap pages. Those shared pages must carry the same page zone > >> ID as the struct pages initialized for the section. > >> > >> Warn in __init_single_page() if the shared tail page has a different > >> page_zone_id(), which would indicate inconsistent initialization. > >> > >> Signed-off-by: Muchun Song <[email protected]> > >> Acked-by: Qi Zheng <[email protected]> > >> --- > >> v3: > >> - Collect Acked-by from Qi Zheng > >> > >> v2: > >> - New patch. > >> --- > >> mm/mm_init.c | 3 +++ > >> 1 file changed, 3 insertions(+) > >> > >> diff --git a/mm/mm_init.c b/mm/mm_init.c > >> index 1650d6bc1211..bd02e8d06965 100644 > >> --- a/mm/mm_init.c > >> +++ b/mm/mm_init.c > >> @@ -609,6 +609,9 @@ void __meminit __init_single_page(struct page *page, > >> unsigned long pfn, > >> if (!is_highmem_idx(zone)) > >> set_page_address(page, __va(pfn << PAGE_SHIFT)); > >> #endif > >> + > >> VM_WARN_ON_ONCE(vmemmap_optimizable_order(pfn_to_section_compound_order(pfn)) > >> && > >> + page_zone_id(page + > >> VMEMMAP_OPTIMIZATION_NR_STRUCT_PAGES) != > >> + page_zone_id(page)); > > > > Hmm, page + VMEMMAP_OPTIMIZATION_NR_STRUCT_PAGES is initialized a tad later > > than page so it'll have stale data in the page->flags, won't it? > > Lance is right. The shared tail struct pages are already initialized by > vmemmap_shared_tail_page() during vmemmap population, so they're not stale. > The head 64 struct pages are initialized later — right here, after vmemmap > population.
Still it looks out of place here, can this check be done in sparse-vmemmap somehow? > Thanks, > Muchun > > > > >> } > >> > >> #ifdef CONFIG_NUMA > >> -- > >> 2.54.0 > >> > > > > -- > > Sincerely yours, > > Mike. > > -- Sincerely yours, Mike.
