|
@@ -846,6 +846,34 @@ static void __init arch_mem_init(char **cmdline_p)
|
|
|
struct memblock_region *reg;
|
|
|
extern void plat_mem_setup(void);
|
|
|
|
|
|
+ /*
|
|
|
+ * Initialize boot_command_line to an innocuous but non-empty string in
|
|
|
+ * order to prevent early_init_dt_scan_chosen() from copying
|
|
|
+ * CONFIG_CMDLINE into it without our knowledge. We handle
|
|
|
+ * CONFIG_CMDLINE ourselves below & don't want to duplicate its
|
|
|
+ * content because repeating arguments can be problematic.
|
|
|
+ */
|
|
|
+ strlcpy(boot_command_line, " ", COMMAND_LINE_SIZE);
|
|
|
+
|
|
|
+ /* call board setup routine */
|
|
|
+ plat_mem_setup();
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Make sure all kernel memory is in the maps. The "UP" and
|
|
|
+ * "DOWN" are opposite for initdata since if it crosses over
|
|
|
+ * 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);
|
|
|
+
|
|
|
+ pr_info("Determined physical RAM map:\n");
|
|
|
+ print_memory_map();
|
|
|
+
|
|
|
#if defined(CONFIG_CMDLINE_BOOL) && defined(CONFIG_CMDLINE_OVERRIDE)
|
|
|
strlcpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
|
|
|
#else
|
|
@@ -873,26 +901,6 @@ static void __init arch_mem_init(char **cmdline_p)
|
|
|
}
|
|
|
#endif
|
|
|
#endif
|
|
|
-
|
|
|
- /* call board setup routine */
|
|
|
- plat_mem_setup();
|
|
|
-
|
|
|
- /*
|
|
|
- * Make sure all kernel memory is in the maps. The "UP" and
|
|
|
- * "DOWN" are opposite for initdata since if it crosses over
|
|
|
- * 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);
|
|
|
-
|
|
|
- pr_info("Determined physical RAM map:\n");
|
|
|
- print_memory_map();
|
|
|
-
|
|
|
strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
|
|
|
|
|
|
*cmdline_p = command_line;
|