162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci#include <linux/highmem.h> 362306a36Sopenharmony_ci#include <linux/export.h> 462306a36Sopenharmony_ci#include <linux/swap.h> /* for totalram_pages */ 562306a36Sopenharmony_ci#include <linux/memblock.h> 662306a36Sopenharmony_ci#include <asm/numa.h> 762306a36Sopenharmony_ci 862306a36Sopenharmony_civoid __init set_highmem_pages_init(void) 962306a36Sopenharmony_ci{ 1062306a36Sopenharmony_ci struct zone *zone; 1162306a36Sopenharmony_ci int nid; 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci /* 1462306a36Sopenharmony_ci * Explicitly reset zone->managed_pages because set_highmem_pages_init() 1562306a36Sopenharmony_ci * is invoked before memblock_free_all() 1662306a36Sopenharmony_ci */ 1762306a36Sopenharmony_ci reset_all_zones_managed_pages(); 1862306a36Sopenharmony_ci for_each_zone(zone) { 1962306a36Sopenharmony_ci unsigned long zone_start_pfn, zone_end_pfn; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci if (!is_highmem(zone)) 2262306a36Sopenharmony_ci continue; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci zone_start_pfn = zone->zone_start_pfn; 2562306a36Sopenharmony_ci zone_end_pfn = zone_start_pfn + zone->spanned_pages; 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci nid = zone_to_nid(zone); 2862306a36Sopenharmony_ci printk(KERN_INFO "Initializing %s for node %d (%08lx:%08lx)\n", 2962306a36Sopenharmony_ci zone->name, nid, zone_start_pfn, zone_end_pfn); 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci add_highpages_with_active_regions(nid, zone_start_pfn, 3262306a36Sopenharmony_ci zone_end_pfn); 3362306a36Sopenharmony_ci } 3462306a36Sopenharmony_ci} 35