efi_loader: bootefi hello should use loadaddr
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Mon, 28 Aug 2017 16:54:30 +0000 (18:54 +0200)
committerAlexander Graf <agraf@suse.de>
Mon, 18 Sep 2017 21:53:56 +0000 (23:53 +0200)
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@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
cmd/bootefi.c

index 3196d86040729487186c241e9b7c36d597bbb6f2..c65c619d6363045fab06de3a9674eded7dc42d6c 100644 (file)
@@ -299,7 +299,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;
                memcpy((char *)addr, __efi_hello_world_begin, size);
        } else
 #endif