diff options
| author | Paul Burton <paul.burton@mips.com> | 2018-11-12 17:18:01 -0500 |
|---|---|---|
| committer | Paul Burton <paul.burton@mips.com> | 2018-11-15 18:42:15 -0500 |
| commit | 1229ace4a4a2e2c982a32fb075dc1bf95423924f (patch) | |
| tree | d0e002986e4908a0a7fea38cb27d835800ea88b1 | |
| parent | 25517ed4e99b3be4244dfd61d1e5c753b09faf2c (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.c | 12 | ||||
| -rw-r--r-- | arch/mips/sgi-ip27/ip27-memory.c | 11 |
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 | ||
| 249 | void __init paging_init(void) | 251 | void __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); | |||
| 455 | void __init paging_init(void) | 456 | void __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 | } |
