Commit c8ce94b8 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'mips_fixes_4.20_3' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux

Pull MIPS fixes from Paul Burton:
 "A few MIPS fixes for 4.20:

   - Re-enable the Cavium Octeon USB driver in its defconfig after it
     was accidentally removed back in 4.14.

   - Have early memblock allocations be performed bottom-up to more
     closely match the behaviour we used to have with bootmem, which
     seems a safer choice since we've seen fallout from the change made
     in the 4.20 merge window.

   - Simplify max_low_pfn calculation in the NUMA code for the Loongson3
     and SGI IP27 platforms to both clean up the code & ensure
     max_low_pfn has been set appropriately before it is used"

* tag 'mips_fixes_4.20_3' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
  MIPS: Loongson3,SGI-IP27: Simplify max_low_pfn calculation
  MIPS: Let early memblock_alloc*() allocate memories bottom-up
  MIPS: OCTEON: cavium_octeon_defconfig: re-enable OCTEON USB driver
parents 06e68fed 1229ace4
...@@ -140,6 +140,7 @@ CONFIG_RTC_CLASS=y ...@@ -140,6 +140,7 @@ CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_DS1307=y CONFIG_RTC_DRV_DS1307=y
CONFIG_STAGING=y CONFIG_STAGING=y
CONFIG_OCTEON_ETHERNET=y CONFIG_OCTEON_ETHERNET=y
CONFIG_OCTEON_USB=y
# CONFIG_IOMMU_SUPPORT is not set # CONFIG_IOMMU_SUPPORT is not set
CONFIG_RAS=y CONFIG_RAS=y
CONFIG_EXT4_FS=y CONFIG_EXT4_FS=y
......
...@@ -794,6 +794,7 @@ static void __init arch_mem_init(char **cmdline_p) ...@@ -794,6 +794,7 @@ static void __init arch_mem_init(char **cmdline_p)
/* call board setup routine */ /* call board setup routine */
plat_mem_setup(); plat_mem_setup();
memblock_set_bottom_up(true);
/* /*
* Make sure all kernel memory is in the maps. The "UP" and * Make sure all kernel memory is in the maps. The "UP" and
......
...@@ -2260,10 +2260,8 @@ void __init trap_init(void) ...@@ -2260,10 +2260,8 @@ void __init trap_init(void)
unsigned long size = 0x200 + VECTORSPACING*64; unsigned long size = 0x200 + VECTORSPACING*64;
phys_addr_t ebase_pa; phys_addr_t ebase_pa;
memblock_set_bottom_up(true);
ebase = (unsigned long) ebase = (unsigned long)
memblock_alloc_from(size, 1 << fls(size), 0); memblock_alloc_from(size, 1 << fls(size), 0);
memblock_set_bottom_up(false);
/* /*
* Try to ensure ebase resides in KSeg0 if possible. * Try to ensure ebase resides in KSeg0 if possible.
...@@ -2307,6 +2305,7 @@ void __init trap_init(void) ...@@ -2307,6 +2305,7 @@ void __init trap_init(void)
if (board_ebase_setup) if (board_ebase_setup)
board_ebase_setup(); board_ebase_setup();
per_cpu_trap_init(true); per_cpu_trap_init(true);
memblock_set_bottom_up(false);
/* /*
* Copy the generic exception handlers to their final destination. * Copy the generic exception handlers to their final destination.
......
...@@ -231,6 +231,8 @@ static __init void prom_meminit(void) ...@@ -231,6 +231,8 @@ static __init void prom_meminit(void)
cpumask_clear(&__node_data[(node)]->cpumask); cpumask_clear(&__node_data[(node)]->cpumask);
} }
} }
max_low_pfn = PHYS_PFN(memblock_end_of_DRAM());
for (cpu = 0; cpu < loongson_sysconf.nr_cpus; cpu++) { for (cpu = 0; cpu < loongson_sysconf.nr_cpus; cpu++) {
node = cpu / loongson_sysconf.cores_per_node; node = cpu / loongson_sysconf.cores_per_node;
if (node >= num_online_nodes()) if (node >= num_online_nodes())
...@@ -248,19 +250,9 @@ static __init void prom_meminit(void) ...@@ -248,19 +250,9 @@ static __init void prom_meminit(void)
void __init paging_init(void) void __init paging_init(void)
{ {
unsigned node;
unsigned long zones_size[MAX_NR_ZONES] = {0, }; unsigned long zones_size[MAX_NR_ZONES] = {0, };
pagetable_init(); pagetable_init();
for_each_online_node(node) {
unsigned long start_pfn, end_pfn;
get_pfn_range_for_nid(node, &start_pfn, &end_pfn);
if (end_pfn > max_low_pfn)
max_low_pfn = end_pfn;
}
#ifdef CONFIG_ZONE_DMA32 #ifdef CONFIG_ZONE_DMA32
zones_size[ZONE_DMA32] = MAX_DMA32_PFN; zones_size[ZONE_DMA32] = MAX_DMA32_PFN;
#endif #endif
......
...@@ -435,6 +435,7 @@ void __init prom_meminit(void) ...@@ -435,6 +435,7 @@ void __init prom_meminit(void)
mlreset(); mlreset();
szmem(); szmem();
max_low_pfn = PHYS_PFN(memblock_end_of_DRAM());
for (node = 0; node < MAX_COMPACT_NODES; node++) { for (node = 0; node < MAX_COMPACT_NODES; node++) {
if (node_online(node)) { if (node_online(node)) {
...@@ -455,18 +456,8 @@ extern void setup_zero_pages(void); ...@@ -455,18 +456,8 @@ extern void setup_zero_pages(void);
void __init paging_init(void) void __init paging_init(void)
{ {
unsigned long zones_size[MAX_NR_ZONES] = {0, }; unsigned long zones_size[MAX_NR_ZONES] = {0, };
unsigned node;
pagetable_init(); pagetable_init();
for_each_online_node(node) {
unsigned long start_pfn, end_pfn;
get_pfn_range_for_nid(node, &start_pfn, &end_pfn);
if (end_pfn > max_low_pfn)
max_low_pfn = end_pfn;
}
zones_size[ZONE_NORMAL] = max_low_pfn; zones_size[ZONE_NORMAL] = max_low_pfn;
free_area_init_nodes(zones_size); free_area_init_nodes(zones_size);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment