
On 8/9/24 12:53, Ilias Apalodimas wrote:
On Wed, 7 Aug 2024 at 20:12, Jerome Forissier jerome.forissier@linaro.org wrote:
wget followed by bootefi currently fails as follows:
U-Boot> wget 200000 192.168.0.30:helloworld.efi Waiting for Ethernet connection... done. HTTP/1.0 200 OK Packets received 13, Transfer Successful Bytes transferred = 12720 (31b0 hex) U-Boot> bootefi 200000 No UEFI binary known at 200000 U-Boot>
Fix the problem by adding the missing efi_set_bootdev() call.
Signed-off-by: Jerome Forissier jerome.forissier@linaro.org
net/wget.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/net/wget.c b/net/wget.c index 0e4dc5159d0..cf7681a4e79 100644 --- a/net/wget.c +++ b/net/wget.c @@ -8,6 +8,7 @@ #include <command.h> #include <display_options.h> #include <env.h> +#include <efi_loader.h> #include <image.h> #include <lmb.h> #include <mapmem.h> @@ -429,6 +430,9 @@ static void wget_handler(uchar *pkt, u16 dport, case WGET_TRANSFERRED: printf("Packets received %d, Transfer Successful\n", packets); net_set_state(wget_loop_state);
efi_set_bootdev("Net", "", image_url,
map_sysmem(image_load_addr, 0),
net_boot_file_size);
Don't you need an unmap_sysmem() once this completes?
I wondered the same thing but where should the unmap call happen? This pattern exists in boot/bootmeth_efi.c, cmd/load.c, fs/fs.c and net/tftp.c. In this series I have blindly copied it into net/wget.c and net/lwip/wget.c and net/lwip/tftp.c as well. It seems it does somthing in the sandbox only so do we really care?
Thanks,