Hi Muchun, 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? > } > > #ifdef CONFIG_NUMA > -- > 2.54.0 > -- Sincerely yours, Mike.
