[U-Boot] [PATCH 1/7] MIPS: bootm: add missing initramfs relocation

Daniel Schwierzeck daniel.schwierzeck at gmail.com
Sun Nov 16 01:52:01 CET 2014


The initramfs is currently only relocated if the user calls
the bootm ramdisk subcommand. If bootm should be used without
subcommands, the arch-specific bootm code needs to implement
the relocation.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck at gmail.com>
---

 arch/mips/lib/bootm.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/arch/mips/lib/bootm.c b/arch/mips/lib/bootm.c
index 71bb0d2..f947fd6 100644
--- a/arch/mips/lib/bootm.c
+++ b/arch/mips/lib/bootm.c
@@ -52,6 +52,20 @@ void arch_lmb_reserve(struct lmb *lmb)
 	lmb_reserve(lmb, sp, CONFIG_SYS_SDRAM_BASE + gd->ram_size - sp);
 }
 
+static int boot_setup_linux(bootm_headers_t *images)
+{
+	int ret;
+	ulong rd_len;
+
+	rd_len = images->rd_end - images->rd_start;
+	ret = boot_ramdisk_high(&images->lmb, images->rd_start,
+		rd_len, &images->initrd_start, &images->initrd_end);
+	if (ret)
+		return ret;
+
+	return 0;
+}
+
 static void linux_cmdline_init(void)
 {
 	linux_argc = 1;
@@ -224,6 +238,8 @@ static void boot_jump_linux(bootm_headers_t *images)
 int do_bootm_linux(int flag, int argc, char * const argv[],
 			bootm_headers_t *images)
 {
+	int ret;
+
 	/* No need for those on MIPS */
 	if (flag & BOOTM_STATE_OS_BD_T)
 		return -1;
@@ -243,6 +259,10 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
 		return 0;
 	}
 
+	ret = boot_setup_linux(images);
+	if (ret)
+		return ret;
+
 	boot_cmdline_linux(images);
 	boot_prep_linux(images);
 	boot_jump_linux(images);
-- 
2.1.3



More information about the U-Boot mailing list