MIPS: Loongson3,SGI-IP27: Simplify max_low_pfn calculation

Both the Loongson3 & SGI-IP27 platforms set max_low_pfn to the last
available PFN describing memory. They both do it in paging_init() which
is later than ideal since max_low_pfn is used before that function is
called. Simplify both platforms to trivially initialize max_low_pfn
using the end address of DRAM, and do it earlier in prom_meminit().

Signed-off-by: Paul Burton <paul.burton@mips.com>
Suggested-by: Mike Rapoport <rppt@linux.ibm.com>
Tested-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Patchwork: https://patchwork.linux-mips.org/patch/21104/
References: https://patchwork.linux-mips.org/patch/21031/
Cc: Huacai Chen <chenhc@lemote.com>
Cc: Mike Rapoport <rppt@linux.ibm.com>
Cc: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Cc: linux-mips@linux-mips.org

Changed files
+3 -20
arch
mips
loongson64
loongson-3
sgi-ip27
+2 -10
arch/mips/loongson64/loongson-3/numa.c
··· 231 231 cpumask_clear(&__node_data[(node)]->cpumask); 232 232 } 233 233 } 234 + max_low_pfn = PHYS_PFN(memblock_end_of_DRAM()); 235 + 234 236 for (cpu = 0; cpu < loongson_sysconf.nr_cpus; cpu++) { 235 237 node = cpu / loongson_sysconf.cores_per_node; 236 238 if (node >= num_online_nodes()) ··· 250 248 251 249 void __init paging_init(void) 252 250 { 253 - unsigned node; 254 251 unsigned long zones_size[MAX_NR_ZONES] = {0, }; 255 252 256 253 pagetable_init(); 257 - 258 - for_each_online_node(node) { 259 - unsigned long start_pfn, end_pfn; 260 - 261 - get_pfn_range_for_nid(node, &start_pfn, &end_pfn); 262 - 263 - if (end_pfn > max_low_pfn) 264 - max_low_pfn = end_pfn; 265 - } 266 254 #ifdef CONFIG_ZONE_DMA32 267 255 zones_size[ZONE_DMA32] = MAX_DMA32_PFN; 268 256 #endif
+1 -10
arch/mips/sgi-ip27/ip27-memory.c
··· 435 435 436 436 mlreset(); 437 437 szmem(); 438 + max_low_pfn = PHYS_PFN(memblock_end_of_DRAM()); 438 439 439 440 for (node = 0; node < MAX_COMPACT_NODES; node++) { 440 441 if (node_online(node)) { ··· 456 455 void __init paging_init(void) 457 456 { 458 457 unsigned long zones_size[MAX_NR_ZONES] = {0, }; 459 - unsigned node; 460 458 461 459 pagetable_init(); 462 - 463 - for_each_online_node(node) { 464 - unsigned long start_pfn, end_pfn; 465 - 466 - get_pfn_range_for_nid(node, &start_pfn, &end_pfn); 467 - 468 - if (end_pfn > max_low_pfn) 469 - max_low_pfn = end_pfn; 470 - } 471 460 zones_size[ZONE_NORMAL] = max_low_pfn; 472 461 free_area_init_nodes(zones_size); 473 462 }