diff mbox

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

Message ID 1475788135-32461-1-git-send-email-clg@kaod.org
State Deferred
Delegated to: Tom Rini
Headers show

Commit Message

Cédric Le Goater Oct. 6, 2016, 9:08 p.m. UTC
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(+)

Comments

Tom Rini Oct. 8, 2016, 1:44 p.m. UTC | #1
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.
Cédric Le Goater Oct. 9, 2016, 10:03 p.m. UTC | #2
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.
diff mbox

Patch

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