From: Matthew Garrett <mgarr...@aurora.tech> CONFIG_SYS_BOOT_RAMDISK_HIGH copies the initrd out of the FIT and into correctly aligned RAM, but the addresses used for this are then discarded by the x86 bootm code. Fix that.
Signed-off-by: Matthew Garrett <mgarr...@aurora.tech> --- arch/x86/lib/bootm.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/arch/x86/lib/bootm.c b/arch/x86/lib/bootm.c index c4446b1f9c6..cabf18fccb7 100644 --- a/arch/x86/lib/bootm.c +++ b/arch/x86/lib/bootm.c @@ -72,6 +72,7 @@ int arch_fixup_memory_node(void *blob) /* Subcommand: PREP */ static int boot_prep_linux(struct bootm_headers *images) { + ulong initrd_start, initrd_size; char *cmd_line_dest = NULL; struct legacy_img_hdr *hdr; int is_zimage = 0; @@ -134,10 +135,16 @@ static int boot_prep_linux(struct bootm_headers *images) goto error; } + if (IS_ENABLED(CONFIG_SYS_BOOT_RAMDISK_HIGH)) { + initrd_start = images->initrd_start; + initrd_size = images->initrd_end - images->initrd_start; + } else { + initrd_start = images->rd_start; + initrd_size = images->rd_end - images->rd_start; + } printf("Setup at %#08lx\n", images->ep); ret = setup_zimage((void *)images->ep, cmd_line_dest, - 0, images->rd_start, - images->rd_end - images->rd_start, 0); + 0, initrd_start, initrd_size, 0); if (ret) { printf("## Setting up boot parameters failed ...\n"); -- 2.47.0