Message ID | 20240531002613.5231-1-richard.weiyang@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/3] mm/mm_init.c: get the highest zone directly | expand |
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@gmail.com> Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org> > --- > 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 >
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));
We have recorded nr_zones in pgdat, just get it directly. Signed-off-by: Wei Yang <richard.weiyang@gmail.com> --- mm/mm_init.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)