On Fri, May 31, 2024 at 12:26:11AM +0000, Wei Yang wrote: > We have recorded nr_zones in pgdat, just get it directly. > > Signed-off-by: Wei Yang <richard.weiyang@xxxxxxxxx> Reviewed-by: Mike Rapoport (IBM) <rppt@xxxxxxxxxx> > --- > mm/mm_init.c | 12 ++++-------- > 1 file changed, 4 insertions(+), 8 deletions(-) > > diff --git a/mm/mm_init.c b/mm/mm_init.c > index aa83105b3a1b..2bcf87eab0c6 100644 > --- a/mm/mm_init.c > +++ b/mm/mm_init.c > @@ -2136,7 +2136,7 @@ static int __init deferred_init_memmap(void *data) > unsigned long first_init_pfn, flags; > unsigned long start = jiffies; > struct zone *zone; > - int zid, max_threads; > + int max_threads; > u64 i; > > /* Bind memory initialisation thread to a local node if possible */ > @@ -2163,12 +2163,8 @@ static int __init deferred_init_memmap(void *data) > */ > pgdat_resize_unlock(pgdat, &flags); > > - /* Only the highest zone is deferred so find it */ > - for (zid = 0; zid < MAX_NR_ZONES; zid++) { > - zone = pgdat->node_zones + zid; > - if (first_init_pfn < zone_end_pfn(zone)) > - break; > - } > + /* Only the highest zone is deferred */ > + zone = pgdat->node_zones + pgdat->nr_zones - 1; > > /* If the zone is empty somebody else may have cleared out the zone */ > if (!deferred_init_mem_pfn_range_in_zone(&i, zone, &spfn, &epfn, > @@ -2196,7 +2192,7 @@ static int __init deferred_init_memmap(void *data) > } > zone_empty: > /* Sanity check that the next zone really is unpopulated */ > - WARN_ON(++zid < MAX_NR_ZONES && populated_zone(++zone)); > + WARN_ON(pgdat->nr_zones < MAX_NR_ZONES && populated_zone(++zone)); > > pr_info("node %d deferred pages initialised in %ums\n", > pgdat->node_id, jiffies_to_msecs(jiffies - start)); > -- > 2.34.1 > -- Sincerely yours, Mike.