[U-Boot] [RFC PATCH] bootm: fix ramdisk relocation

We are working on bringing to mainline a set of changes adding support for the Aspeed SoC and we have a couple of work around we are trying to elimitate first. This is one of them. The ramdisk is not relocated and Linux fails to boot. The current port does not use a device tree (yet) so that might be the most obvious culprit.
Thanks
Signed-off-by: Cédric Le Goater clg@kaod.org --- cmd/bootm.c | 3 +++ 1 file changed, 3 insertions(+)
Index: u-boot-v2016.09-aspeed-openbmc.git/cmd/bootm.c =================================================================== --- u-boot-v2016.09-aspeed-openbmc.git.orig/cmd/bootm.c +++ u-boot-v2016.09-aspeed-openbmc.git/cmd/bootm.c @@ -126,6 +126,9 @@ int do_bootm(cmd_tbl_t *cmdtp, int flag, return do_bootm_states(cmdtp, flag, argc, argv, BOOTM_STATE_START | BOOTM_STATE_FINDOS | BOOTM_STATE_FINDOTHER | BOOTM_STATE_LOADOS | +#ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH + BOOTM_STATE_RAMDISK | +#endif #if defined(CONFIG_PPC) || defined(CONFIG_MIPS) BOOTM_STATE_OS_CMDLINE | #endif

On Thu, Oct 06, 2016 at 11:08:55PM +0200, Cédric Le Goater wrote:
We are working on bringing to mainline a set of changes adding support for the Aspeed SoC and we have a couple of work around we are trying to elimitate first. This is one of them. The ramdisk is not relocated and Linux fails to boot. The current port does not use a device tree (yet) so that might be the most obvious culprit.
Thanks
Signed-off-by: Cédric Le Goater clg@kaod.org
I suspect that you want to have bootm_size set in your environment so that all relocations happen within that value and will remain visible to the kernel.

Hello,
On 10/08/2016 03:44 PM, Tom Rini wrote:
On Thu, Oct 06, 2016 at 11:08:55PM +0200, Cédric Le Goater wrote:
We are working on bringing to mainline a set of changes adding support for the Aspeed SoC and we have a couple of work around we are trying to elimitate first. This is one of them. The ramdisk is not relocated and Linux fails to boot. The current port does not use a device tree (yet) so that might be the most obvious culprit.
Thanks
Signed-off-by: Cédric Le Goater clg@kaod.org
I suspect that you want to have bootm_size set in your environment so that all relocations happen within that value and will remain visible to the kernel.
Well, I am discovering the code so I might be wrong in the way it should be used.
boot_ramdisk_high() does the copy to ram and relocation but it is not called as we are booting using ATAGS and a legacy image. This patch enables the copy but even in that case the load address of the image is not used, which can be a problem for the linux memblocks after boot.
So I am wondering if we should put some effort to fix this scenario. Or is it totally wrong and in that case, should we be using some other mechanism ?
Thanks,
C.
participants (2)
-
Cédric Le Goater
-
Tom Rini