mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-08-19 13:41:31 +02:00
efi_loader: Update efi_run_image() to accept image and device path
Provide these globals as parameters to this function, on the way to making it possible to start an image without relying on the globals. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
parent
7a713ab1c6
commit
a70759898a
@ -157,9 +157,13 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path,
|
|||||||
*
|
*
|
||||||
* @source_buffer: memory address of the UEFI image
|
* @source_buffer: memory address of the UEFI image
|
||||||
* @source_size: size of the UEFI image
|
* @source_size: size of the UEFI image
|
||||||
|
* @dp_dev: EFI device-path
|
||||||
|
* @dp_img: EFI image-path
|
||||||
* Return: status code
|
* Return: status code
|
||||||
*/
|
*/
|
||||||
static efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
|
static efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size,
|
||||||
|
struct efi_device_path *dp_dev,
|
||||||
|
struct efi_device_path *dp_img)
|
||||||
{
|
{
|
||||||
efi_handle_t mem_handle = NULL, handle;
|
efi_handle_t mem_handle = NULL, handle;
|
||||||
struct efi_device_path *file_path = NULL;
|
struct efi_device_path *file_path = NULL;
|
||||||
@ -167,7 +171,7 @@ static efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
|
|||||||
efi_status_t ret;
|
efi_status_t ret;
|
||||||
u16 *load_options;
|
u16 *load_options;
|
||||||
|
|
||||||
if (!bootefi_device_path || !bootefi_image_path) {
|
if (!dp_img || !dp_img) {
|
||||||
log_debug("Not loaded from disk\n");
|
log_debug("Not loaded from disk\n");
|
||||||
/*
|
/*
|
||||||
* Special case for efi payload not loaded from disk,
|
* Special case for efi payload not loaded from disk,
|
||||||
@ -188,9 +192,8 @@ static efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
|
|||||||
goto out;
|
goto out;
|
||||||
msg_path = file_path;
|
msg_path = file_path;
|
||||||
} else {
|
} else {
|
||||||
file_path = efi_dp_concat(bootefi_device_path,
|
file_path = efi_dp_concat(dp_img, dp_img, 0);
|
||||||
bootefi_image_path, 0);
|
msg_path = dp_img;
|
||||||
msg_path = bootefi_image_path;
|
|
||||||
log_debug("Loaded from disk\n");
|
log_debug("Loaded from disk\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,5 +255,6 @@ efi_status_t efi_binary_run(void *image, size_t size, void *fdt)
|
|||||||
if (ret != EFI_SUCCESS)
|
if (ret != EFI_SUCCESS)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
return efi_run_image(image, size);
|
return efi_run_image(image, size, bootefi_device_path,
|
||||||
|
bootefi_image_path);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user