Message ID | 20250523130404.2646298-1-ilias.apalodimas@linaro.org |
---|---|
State | New |
Headers | show |
Series | efi_loader: Run dhcp if an http boot option is selected | expand |
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.apalodimas@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.simek@amd.com> Thanks, Michal
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");
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.apalodimas@linaro.org> --- lib/efi_loader/efi_bootmgr.c | 7 +++++++ 1 file changed, 7 insertions(+) -- 2.49.0