]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/mm_init.c: get the highest zone directly
authorWei Yang <richard.weiyang@gmail.com>
Wed, 5 Jun 2024 07:13:37 +0000 (07:13 +0000)
committerMike Rapoport (IBM) <rppt@kernel.org>
Thu, 6 Jun 2024 04:55:15 +0000 (07:55 +0300)
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>
Link: https://lore.kernel.org/all/20240605071339.15330-1-richard.weiyang@gmail.com
Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
mm/mm_init.c

index bdbd800b043609ba3b5835dbe351582728419acf..6eda9367730b62c8fc8118f44ad84b3d4553c57a 100644 (file)
@@ -2140,7 +2140,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 */
@@ -2167,12 +2167,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,
@@ -2200,7 +2196,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));