|
@@ -737,12 +737,15 @@ void __init early_init_devtree(void *params)
|
|
|
|
|
|
of_scan_flat_dt(early_init_dt_scan_root, NULL);
|
|
|
of_scan_flat_dt(early_init_dt_scan_memory_ppc, NULL);
|
|
|
- setup_initial_memory_limit(memstart_addr, first_memblock_size);
|
|
|
|
|
|
/* Save command line for /proc/cmdline and then parse parameters */
|
|
|
strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
|
|
|
parse_early_param();
|
|
|
|
|
|
+ /* make sure we've parsed cmdline for mem= before this */
|
|
|
+ if (memory_limit)
|
|
|
+ first_memblock_size = min(first_memblock_size, memory_limit);
|
|
|
+ setup_initial_memory_limit(memstart_addr, first_memblock_size);
|
|
|
/* Reserve MEMBLOCK regions used by kernel, initrd, dt, etc... */
|
|
|
memblock_reserve(PHYSICAL_START, __pa(klimit) - PHYSICAL_START);
|
|
|
/* If relocatable, reserve first 32k for interrupt vectors etc. */
|