|
@@ -219,9 +219,13 @@ static int __init parse_bootparam(const bp_tag_t* tag)
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_OF
|
|
|
+bool __initdata dt_memory_scan = false;
|
|
|
|
|
|
void __init early_init_dt_add_memory_arch(u64 base, u64 size)
|
|
|
{
|
|
|
+ if (!dt_memory_scan)
|
|
|
+ return;
|
|
|
+
|
|
|
size &= PAGE_MASK;
|
|
|
add_sysmem_bank(MEMORY_TYPE_CONVENTIONAL, base, base + size);
|
|
|
}
|
|
@@ -233,20 +237,13 @@ void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
|
|
|
|
|
|
void __init early_init_devtree(void *params)
|
|
|
{
|
|
|
- /* Setup flat device-tree pointer */
|
|
|
- initial_boot_params = params;
|
|
|
+ if (sysmem.nr_banks == 0)
|
|
|
+ dt_memory_scan = true;
|
|
|
|
|
|
- /* Retrieve various informations from the /chosen node of the
|
|
|
- * device-tree, including the platform type, initrd location and
|
|
|
- * size, TCE reserve, and more ...
|
|
|
- */
|
|
|
- if (!command_line[0])
|
|
|
- of_scan_flat_dt(early_init_dt_scan_chosen, command_line);
|
|
|
+ early_init_dt_scan(params);
|
|
|
|
|
|
- /* Scan memory nodes and rebuild MEMBLOCKs */
|
|
|
- of_scan_flat_dt(early_init_dt_scan_root, NULL);
|
|
|
- if (sysmem.nr_banks == 0)
|
|
|
- of_scan_flat_dt(early_init_dt_scan_memory, NULL);
|
|
|
+ if (!command_line[0])
|
|
|
+ strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
|
|
|
}
|
|
|
|
|
|
static int __init xtensa_device_probe(void)
|