On 5/23/25 15:04, Ilias Apalodimas wrote:
The EFI boot manager relies on having an IP address before trying to
boot an EFI HTTP(s) boot entry. However, defining it as a boot or
pre-boot command is not always the right answer since it will
unconditionally add delay to the board boot, even if we don't boot
over the network.

So let's do a DHCP request from the boot manager, if 'ipaddr' is
empty and fail early if we don't have an address.

Signed-off-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>
---
  lib/efi_loader/efi_bootmgr.c | 7 +++++++
  1 file changed, 7 insertions(+)

diff --git a/lib/efi_loader/efi_bootmgr.c b/lib/efi_loader/efi_bootmgr.c
index c0df5cb9acd9..2076630648f7 100644
--- a/lib/efi_loader/efi_bootmgr.c
+++ b/lib/efi_loader/efi_bootmgr.c
@@ -479,6 +479,13 @@ static efi_status_t try_load_from_uri_path(struct 
efi_device_path_uri *uridp,
        if (!ctx)
                return EFI_OUT_OF_RESOURCES;

+       s = env_get("ipaddr");
+       if (!s && dhcp_run(0, NULL, false)) {
+               log_err("Error: Can't find a valid IP address\n");
+               ret = EFI_DEVICE_ERROR;
+               goto err;
+       }
+
        s = env_get("loadaddr");
        if (!s) {
                log_err("Error: loadaddr is not set\n");
--
2.49.0


Tested-by: Michal Simek <michal.si...@amd.com>

Thanks,
Michal

Reply via email to