[U-Boot] [PATCH 1/1] efi_loader: bootefi hello should use loadaddr

Alexander Graf agraf at suse.de
Mon Aug 28 23:30:15 UTC 2017



On 28.08.17 18:54, Heinrich Schuchardt wrote:
> Command 'bootefi hello' currently uses CONFIG_SYS_LOAD_ADDR
> as loading address.
> 
> qemu machines have by default 128 MiB RAM.
> CONFIG_SYS_LOAD_ADDR for x86 is 0x20000000 (512 MiB).
> This causes 'bootefi hello' to fail.
> 
> We should use the environment variable loadaddr if available.
> It defaults to 0x1000000 (16 MiB) on qemu_x86.
> 
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> ---
>   cmd/bootefi.c | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/cmd/bootefi.c b/cmd/bootefi.c
> index 47771f87cc..a3768158a2 100644
> --- a/cmd/bootefi.c
> +++ b/cmd/bootefi.c
> @@ -300,7 +300,11 @@ static int do_bootefi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>   	if (!strcmp(argv[1], "hello")) {
>   		ulong size = __efi_hello_world_end - __efi_hello_world_begin;
>   
> -		addr = CONFIG_SYS_LOAD_ADDR;
> +		saddr = env_get("loadaddr");
> +		if (saddr)
> +			addr = simple_strtoul(saddr, NULL, 16);
> +		else
> +			addr = CONFIG_SYS_LOAD_ADDR;

I'm not terribly happy about that logic. Ideally I would want to have it 
load to *one* explicit address, not multiple ones.

Maybe we could just always memalign() a region?

Alternatively if we can not use memalign, I would rather drop the 
CONFIG_SYS_LOAD_ADDR branch and *only* rely on loadaddr.


Alex


More information about the U-Boot mailing list