| // SPDX-License-Identifier: GPL-2.0-only | 
 | #include <linux/highmem.h> | 
 | #include <linux/export.h> | 
 | #include <linux/swap.h> /* for totalram_pages */ | 
 | #include <linux/memblock.h> | 
 |  | 
 | void __init set_highmem_pages_init(void) | 
 | { | 
 | 	struct zone *zone; | 
 | 	int nid; | 
 |  | 
 | 	/* | 
 | 	 * Explicitly reset zone->managed_pages because set_highmem_pages_init() | 
 | 	 * is invoked before memblock_free_all() | 
 | 	 */ | 
 | 	reset_all_zones_managed_pages(); | 
 | 	for_each_zone(zone) { | 
 | 		unsigned long zone_start_pfn, zone_end_pfn; | 
 |  | 
 | 		if (!is_highmem(zone)) | 
 | 			continue; | 
 |  | 
 | 		zone_start_pfn = zone->zone_start_pfn; | 
 | 		zone_end_pfn = zone_start_pfn + zone->spanned_pages; | 
 |  | 
 | 		nid = zone_to_nid(zone); | 
 | 		printk(KERN_INFO "Initializing %s for node %d (%08lx:%08lx)\n", | 
 | 				zone->name, nid, zone_start_pfn, zone_end_pfn); | 
 |  | 
 | 		add_highpages_with_active_regions(nid, zone_start_pfn, | 
 | 				 zone_end_pfn); | 
 | 	} | 
 | } |