From: David Daney <david.daney@xxxxxxxxxx> 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> --- 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 e26a093..71dd16e 100644 --- a/arch/mips/include/asm/bootinfo.h +++ b/arch/mips/include/asm/bootinfo.h @@ -90,6 +90,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 fe39397..7a058821 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c @@ -189,9 +189,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: @@ -200,6 +206,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; @@ -824,6 +833,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; /* call board setup routine */ plat_mem_setup(); @@ -834,12 +844,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(); @@ -949,6 +960,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