No change to memory initialization, but this gets us ready for the next patches adding hotplug CPU and NUMA support for Octeon. Signed-off-by: David Daney <david.daney@xxxxxxxxxx> Signed-off-by: Carlos Munoz <cmunoz@xxxxxxxxxxxxxxxxxx> Signed-off-by: Steven J. Hill <steven.hill@xxxxxxxxxx> --- arch/mips/include/asm/bootinfo.h | 1 + arch/mips/kernel/setup.c | 30 +++++++++++++++++++++--------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/arch/mips/include/asm/bootinfo.h b/arch/mips/include/asm/bootinfo.h index a301a8f..199f9aa 100644 --- a/arch/mips/include/asm/bootinfo.h +++ b/arch/mips/include/asm/bootinfo.h @@ -92,6 +92,7 @@ extern unsigned long mips_machtype; #define BOOT_MEM_ROM_DATA 2 #define BOOT_MEM_RESERVED 3 #define BOOT_MEM_INIT_RAM 4 +#define BOOT_MEM_KERNEL 5 /* * A memory map that's built upon what was determined diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index 5f8b0a9..9e2bb5fd 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c @@ -190,9 +190,15 @@ static void __init print_memory_map(void) const int field = 2 * sizeof(unsigned long); for (i = 0; i < boot_mem_map.nr_map; i++) { - printk(KERN_INFO " memory: %0*Lx @ %0*Lx ", - field, (unsigned long long) boot_mem_map.map[i].size, - field, (unsigned long long) boot_mem_map.map[i].addr); + if (IS_ENABLED(CONFIG_RANDOMIZE_BASE) && + (boot_mem_map.map[i].type == BOOT_MEM_KERNEL)) + printk(KERN_INFO " memory: %.*s @ %.*s ", + field, "----------------", + field, "----------------"); + else + printk(KERN_INFO " memory: %0*Lx @ %0*Lx ", + field, (unsigned long long) boot_mem_map.map[i].size, + field, (unsigned long long) boot_mem_map.map[i].addr); switch (boot_mem_map.map[i].type) { case BOOT_MEM_RAM: @@ -201,6 +207,9 @@ static void __init print_memory_map(void) case BOOT_MEM_INIT_RAM: printk(KERN_CONT "(usable after init)\n"); break; + case BOOT_MEM_KERNEL: + printk(KERN_CONT "(kernel data and code)\n"); + break; case BOOT_MEM_ROM_DATA: printk(KERN_CONT "(ROM data)\n"); break; @@ -833,6 +842,7 @@ static void __init arch_mem_init(char **cmdline_p) { struct memblock_region *reg; extern void plat_mem_setup(void); + phys_addr_t kernel_begin, init_begin, init_end, kernel_end; #if defined(CONFIG_CMDLINE_BOOL) && defined(CONFIG_CMDLINE_OVERRIDE) strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE); @@ -871,12 +881,13 @@ static void __init arch_mem_init(char **cmdline_p) * into another memory section you don't want that to be * freed when the initdata is freed. */ - arch_mem_addpart(PFN_DOWN(__pa_symbol(&_text)) << PAGE_SHIFT, - PFN_UP(__pa_symbol(&_edata)) << PAGE_SHIFT, - BOOT_MEM_RAM); - arch_mem_addpart(PFN_UP(__pa_symbol(&__init_begin)) << PAGE_SHIFT, - PFN_DOWN(__pa_symbol(&__init_end)) << PAGE_SHIFT, - BOOT_MEM_INIT_RAM); + kernel_begin = PFN_DOWN(__pa_symbol(&_text)) << PAGE_SHIFT; + kernel_end = PFN_UP(__pa_symbol(&_end)) << PAGE_SHIFT; + init_begin = PFN_UP(__pa_symbol(&__init_begin)) << PAGE_SHIFT; + init_end = PFN_DOWN(__pa_symbol(&__init_end)) << PAGE_SHIFT; + arch_mem_addpart(kernel_begin, init_begin, BOOT_MEM_KERNEL); + arch_mem_addpart(init_end, kernel_end, BOOT_MEM_KERNEL); + arch_mem_addpart(init_begin, init_end, BOOT_MEM_INIT_RAM); pr_info("Determined physical RAM map:\n"); print_memory_map(); @@ -961,6 +972,7 @@ static void __init resource_init(void) case BOOT_MEM_RAM: case BOOT_MEM_INIT_RAM: case BOOT_MEM_ROM_DATA: + case BOOT_MEM_KERNEL: res->name = "System RAM"; res->flags |= IORESOURCE_SYSRAM; break; -- 2.1.4