aboutsummaryrefslogtreecommitdiff
path: root/boot/bootmeth_efi.c
diff options
context:
space:
mode:
Diffstat (limited to 'boot/bootmeth_efi.c')
-rw-r--r--boot/bootmeth_efi.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/boot/bootmeth_efi.c b/boot/bootmeth_efi.c
index 446cb73140..00060f7d25 100644
--- a/boot/bootmeth_efi.c
+++ b/boot/bootmeth_efi.c
@@ -426,7 +426,6 @@ static int distro_efi_read_bootflow(struct udevice *dev, struct bootflow *bflow)
static int distro_efi_boot(struct udevice *dev, struct bootflow *bflow)
{
ulong kernel, fdt;
- char cmd[50];
int ret;
kernel = env_get_hex("kernel_addr_r", 0);
@@ -453,21 +452,18 @@ static int distro_efi_boot(struct udevice *dev, struct bootflow *bflow)
fdt = env_get_hex("fdt_addr_r", 0);
}
- /*
- * At some point we can add a real interface to bootefi so we can call
- * this directly. For now, go through the CLI, like distro boot.
- */
if (bflow->flags & BOOTFLOWF_USE_BUILTIN_FDT) {
log_debug("Booting with built-in fdt\n");
- snprintf(cmd, sizeof(cmd), "bootefi %lx", kernel);
+ if (efi_binary_run(map_sysmem(kernel, 0), 0,
+ EFI_FDT_USE_INTERNAL))
+ return log_msg_ret("run", -EINVAL);
} else {
log_debug("Booting with external fdt\n");
- snprintf(cmd, sizeof(cmd), "bootefi %lx %lx", kernel, fdt);
+ if (efi_binary_run(map_sysmem(kernel, 0), 0,
+ map_sysmem(fdt, 0)))
+ return log_msg_ret("run", -EINVAL);
}
- if (run_command(cmd, 0))
- return log_msg_ret("run", -EINVAL);
-
return 0;
}