efi_loader: net: set EFI bootdevice device path to HTTP when loaded from wget
Set the device path of the efi boot device to an HTTP device path (as formed by efi_dp_from_http) when the next boot stage is loaded using wget (i.e., when wget is used with wget_info.set_bootdev=1). When loaded from HTTP, the device path should account for it so that the next boot stage is aware (e.g. grub only loads its http stack if it itself was loaded from http, and it checks this from its device path). Signed-off-by: Adriano Cordova <adrianox@gmail.com> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
committed by
Simon Glass
parent
bdf581abd2
commit
9d1ecb3bb7
@@ -260,10 +260,9 @@ static void httpc_result_cb(void *arg, httpc_result_t httpc_result,
|
||||
printf("%u bytes transferred in %lu ms (", rx_content_len, elapsed);
|
||||
print_size(rx_content_len / elapsed * 1000, "/s)\n");
|
||||
printf("Bytes transferred = %lu (%lx hex)\n", ctx->size, ctx->size);
|
||||
if (wget_info->set_bootdev) {
|
||||
efi_set_bootdev("Net", "", ctx->path, map_sysmem(ctx->saved_daddr, 0),
|
||||
if (wget_info->set_bootdev)
|
||||
efi_set_bootdev("Http", ctx->server_name, ctx->path, map_sysmem(ctx->saved_daddr, 0),
|
||||
rx_content_len);
|
||||
}
|
||||
wget_lwip_set_file_size(rx_content_len);
|
||||
if (env_set_hex("filesize", rx_content_len) ||
|
||||
env_set_hex("fileaddr", ctx->saved_daddr)) {
|
||||
|
||||
@@ -442,7 +442,7 @@ static void wget_handler(uchar *pkt, u16 dport,
|
||||
net_set_state(wget_loop_state);
|
||||
wget_info->file_size = net_boot_file_size;
|
||||
if (wget_info->method == WGET_HTTP_METHOD_GET && wget_info->set_bootdev) {
|
||||
efi_set_bootdev("Net", "", image_url,
|
||||
efi_set_bootdev("Http", NULL, image_url,
|
||||
map_sysmem(image_load_addr, 0),
|
||||
net_boot_file_size);
|
||||
env_set_hex("filesize", net_boot_file_size);
|
||||
|
||||
Reference in New Issue
Block a user