aboutsummaryrefslogtreecommitdiff
path: root/cmd/fs.c
diff options
context:
space:
mode:
authorAlexander Graf2016-03-04 01:10:14 +0100
committerTom Rini2016-03-15 21:30:14 -0400
commit0f4060ebcb4f60287c456586cf089510e43ba339 (patch)
treebbcf2d01e545099b686ef123325022e3f3a25236 /cmd/fs.c
parentdea2174d9d941db2ec64997779771a4b4c3527c2 (diff)
efi_loader: Pass proper device path in on boot
EFI payloads can query for the device they were booted from. Because we have a disconnect between loading binaries and running binaries, we passed in a dummy device path so far. Unfortunately that breaks grub2's logic to find its configuration file from the same device it was booted from. This patch adds logic to have the "load" command call into our efi code to set the device path to the one we last loaded a binary from. With this grub2 properly detects where we got booted from and can find its configuration file, even when searching by-partition. Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'cmd/fs.c')
-rw-r--r--cmd/fs.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/cmd/fs.c b/cmd/fs.c
index 8f8f1b2bfcf..be8f2899e93 100644
--- a/cmd/fs.c
+++ b/cmd/fs.c
@@ -9,6 +9,7 @@
#include <common.h>
#include <command.h>
#include <fs.h>
+#include <efi_loader.h>
static int do_size_wrapper(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
@@ -26,6 +27,7 @@ U_BOOT_CMD(
static int do_load_wrapper(cmd_tbl_t *cmdtp, int flag, int argc,
char * const argv[])
{
+ efi_set_bootdev(argv[1], (argc > 2) ? argv[2] : "");
return do_load(cmdtp, flag, argc, argv, FS_TYPE_ANY);
}