diff options
author | Ben Peddell <klightspeed@killerwolves.net> | 2014-04-22 18:40:47 +0530 |
---|---|---|
committer | Ishan Mittal <imittal@nvidia.com> | 2014-04-30 11:39:19 +0530 |
commit | d3d4b5561b05926e62571fb093fe387c1c7a130f (patch) | |
tree | 7d049e1e9957b02fede79221f666df2145e145c9 /arch/arm/mm | |
parent | dc31bb148fa3a4751bb0ca10508d109f556b4124 (diff) |
ARM: 7941/2: Fix incorrect FDT initrd parameter override
Commit 65939301acdb (arm: set initrd_start/initrd_end for fdt scan)
caused the FDT initrd_start and initrd_end to override the
phys_initrd_start and phys_initrd_size set by the initrd= kernel
parameter. With this patch initrd_start and initrd_end will be
overridden if phys_initrd_start and phys_initrd_size are set by the
kernel initrd= parameter.
Fixes: 65939301acdb (arm: set initrd_start/initrd_end for fdt scan)
(cherry picked from commit 4c235cb9e35407bdb4a2debeef4dc8721e8f91f2)
Conflicts:
arch/arm/mm/init.c
Change-Id: Ie88bf6e12b69dc99bfd7f40c5d9c09ab6fbe65c1
Signed-off-by: Ben Peddell <klightspeed@killerwolves.net>
Acked-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/init.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 99ce71e488b2..78a39215b089 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c @@ -341,6 +341,12 @@ void __init arm_memblock_init(struct meminfo *mi, struct machine_desc *mdesc) memblock_reserve(__pa(_stext), ALIGN(_end - _stext, PMD_SIZE)); #endif #ifdef CONFIG_BLK_DEV_INITRD + /* FDT scan will populate initrd_start */ + if (initrd_start && !phys_initrd_size) { + phys_initrd_start = __virt_to_phys(initrd_start); + phys_initrd_size = initrd_end - initrd_start; + } + initrd_start = initrd_end = 0; if (phys_initrd_size && !memblock_is_region_memory(phys_initrd_start, phys_initrd_size)) { pr_err("INITRD: 0x%08llx+0x%08lx is not a memory region - disabling initrd\n", |