aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Burton <paul.burton@mips.com>2018-11-12 17:18:01 -0500
committerPaul Burton <paul.burton@mips.com>2018-11-15 18:42:15 -0500
commit1229ace4a4a2e2c982a32fb075dc1bf95423924f (patch)
treed0e002986e4908a0a7fea38cb27d835800ea88b1
parent25517ed4e99b3be4244dfd61d1e5c753b09faf2c (diff)
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
-rw-r--r--arch/mips/loongson64/loongson-3/numa.c12
-rw-r--r--arch/mips/sgi-ip27/ip27-memory.c11
2 files changed, 3 insertions, 20 deletions
diff --git a/arch/mips/loongson64/loongson-3/numa.c b/arch/mips/loongson64/loongson-3/numa.c
index 622761878cd1..60bf0a1cb757 100644
--- a/arch/mips/loongson64/loongson-3/numa.c
+++ b/arch/mips/loongson64/loongson-3/numa.c
@@ -231,6 +231,8 @@ static __init void prom_meminit(void)
231 cpumask_clear(&__node_data[(node)]->cpumask); 231 cpumask_clear(&__node_data[(node)]->cpumask);
232 } 232 }
233 } 233 }
234 max_low_pfn = PHYS_PFN(memblock_end_of_DRAM());
235
234 for (cpu = 0; cpu < loongson_sysconf.nr_cpus; cpu++) { 236 for (cpu = 0; cpu < loongson_sysconf.nr_cpus; cpu++) {
235 node = cpu / loongson_sysconf.cores_per_node; 237 node = cpu / loongson_sysconf.cores_per_node;
236 if (node >= num_online_nodes()) 238 if (node >= num_online_nodes())
@@ -248,19 +250,9 @@ static __init void prom_meminit(void)
248 250
249void __init paging_init(void) 251void __init paging_init(void)
250{ 252{
251 unsigned node;
252 unsigned long zones_size[MAX_NR_ZONES] = {0, }; 253 unsigned long zones_size[MAX_NR_ZONES] = {0, };
253 254
254 pagetable_init(); 255 pagetable_init();
255
256 for_each_online_node(node) {
257 unsigned long start_pfn, end_pfn;
258
259 get_pfn_range_for_nid(node, &start_pfn, &end_pfn);
260
261 if (end_pfn > max_low_pfn)
262 max_low_pfn = end_pfn;
263 }
264#ifdef CONFIG_ZONE_DMA32 256#ifdef CONFIG_ZONE_DMA32
265 zones_size[ZONE_DMA32] = MAX_DMA32_PFN; 257 zones_size[ZONE_DMA32] = MAX_DMA32_PFN;
266#endif 258#endif
diff --git a/arch/mips/sgi-ip27/ip27-memory.c b/arch/mips/sgi-ip27/ip27-memory.c
index d8b8444d6795..813d13f92957 100644
--- a/arch/mips/sgi-ip27/ip27-memory.c
+++ b/arch/mips/sgi-ip27/ip27-memory.c
@@ -435,6 +435,7 @@ void __init prom_meminit(void)
435 435
436 mlreset(); 436 mlreset();
437 szmem(); 437 szmem();
438 max_low_pfn = PHYS_PFN(memblock_end_of_DRAM());
438 439
439 for (node = 0; node < MAX_COMPACT_NODES; node++) { 440 for (node = 0; node < MAX_COMPACT_NODES; node++) {
440 if (node_online(node)) { 441 if (node_online(node)) {
@@ -455,18 +456,8 @@ extern void setup_zero_pages(void);
455void __init paging_init(void) 456void __init paging_init(void)
456{ 457{
457 unsigned long zones_size[MAX_NR_ZONES] = {0, }; 458 unsigned long zones_size[MAX_NR_ZONES] = {0, };
458 unsigned node;
459 459
460 pagetable_init(); 460 pagetable_init();
461
462 for_each_online_node(node) {
463 unsigned long start_pfn, end_pfn;
464
465 get_pfn_range_for_nid(node, &start_pfn, &end_pfn);
466
467 if (end_pfn > max_low_pfn)
468 max_low_pfn = end_pfn;
469 }
470 zones_size[ZONE_NORMAL] = max_low_pfn; 461 zones_size[ZONE_NORMAL] = max_low_pfn;
471 free_area_init_nodes(zones_size); 462 free_area_init_nodes(zones_size);
472} 463}