summaryrefslogtreecommitdiff
path: root/lib/efi_loader/efi_bootbin.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2025-01-23 15:07:24 -0700
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2025-01-26 11:06:57 +0100
commit21de624eb89c647a21b06a5b0f5b186838be1d17 (patch)
tree460b9a426fc254b7fd9f4048dabccfb54822ba02 /lib/efi_loader/efi_bootbin.c
parenta2338955fc1d3bb6de86ab4fb6e7c55ff189f4f0 (diff)
bootmeth_efi: Support PXE booting
Finish off the implementation so it is possible to boot an EFI app over a network. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'lib/efi_loader/efi_bootbin.c')
-rw-r--r--lib/efi_loader/efi_bootbin.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/efi_loader/efi_bootbin.c b/lib/efi_loader/efi_bootbin.c
index fdde536af7a..10ec5e9ada3 100644
--- a/lib/efi_loader/efi_bootbin.c
+++ b/lib/efi_loader/efi_bootbin.c
@@ -302,6 +302,9 @@ static const char *calc_dev_name(struct bootflow *bflow)
media_dev = dev_get_parent(bflow->dev);
if (!bflow->blk) {
+ if (device_get_uclass_id(media_dev) == UCLASS_ETH)
+ return "Net";
+
log_err("Cannot boot EFI app on media '%s'\n",
dev_get_uclass_name(media_dev));
@@ -342,7 +345,7 @@ efi_status_t efi_bootflow_run(struct bootflow *bflow)
ret = calculate_paths(dev_name, devnum_str, bflow->fname, &device,
&image);
if (ret)
- return ret;
+ return EFI_UNSUPPORTED;
if (bflow->flags & BOOTFLOWF_USE_BUILTIN_FDT) {
log_debug("Booting with built-in fdt\n");