mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
bootstd: Make efi_mgr bootmeth work for non-sandbox setups
Enable the bootflow based on this bootmeth if the BootOrder EFI variable is set. Signed-off-by: Mark Kettenis <kettenis@openbsd.org> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
073bf4a57d
commit
f2bfa0cb17
1 changed files with 16 additions and 1 deletions
|
@ -14,6 +14,8 @@
|
||||||
#include <bootmeth.h>
|
#include <bootmeth.h>
|
||||||
#include <command.h>
|
#include <command.h>
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
|
#include <efi_loader.h>
|
||||||
|
#include <efi_variable.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct efi_mgr_priv - private info for the efi-mgr driver
|
* struct efi_mgr_priv - private info for the efi-mgr driver
|
||||||
|
@ -46,13 +48,26 @@ static int efi_mgr_check(struct udevice *dev, struct bootflow_iter *iter)
|
||||||
static int efi_mgr_read_bootflow(struct udevice *dev, struct bootflow *bflow)
|
static int efi_mgr_read_bootflow(struct udevice *dev, struct bootflow *bflow)
|
||||||
{
|
{
|
||||||
struct efi_mgr_priv *priv = dev_get_priv(dev);
|
struct efi_mgr_priv *priv = dev_get_priv(dev);
|
||||||
|
efi_status_t ret;
|
||||||
|
efi_uintn_t size;
|
||||||
|
u16 *bootorder;
|
||||||
|
|
||||||
if (priv->fake_dev) {
|
if (priv->fake_dev) {
|
||||||
bflow->state = BOOTFLOWST_READY;
|
bflow->state = BOOTFLOWST_READY;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* To be implemented */
|
ret = efi_init_obj_list();
|
||||||
|
if (ret)
|
||||||
|
return log_msg_ret("init", ret);
|
||||||
|
|
||||||
|
/* Enable this method if the "BootOrder" UEFI exists. */
|
||||||
|
bootorder = efi_get_var(u"BootOrder", &efi_global_variable_guid,
|
||||||
|
&size);
|
||||||
|
if (bootorder) {
|
||||||
|
bflow->state = BOOTFLOWST_READY;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue