@@ -139,9 +139,13 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path,
*
* @source_buffer: memory address of the UEFI image
* @source_size: size of the UEFI image
+ * @device: EFI device-path
+ * @image: EFI image-path
* 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 *device,
+ struct efi_device_path *image)
{
efi_handle_t mem_handle = NULL, handle;
struct efi_device_path *file_path = NULL;
@@ -149,7 +153,7 @@ static efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
efi_status_t ret;
u16 *load_options;
- if (!bootefi_device_path || !bootefi_image_path) {
+ if (!device || !image) {
log_debug("Not loaded from disk\n");
/*
* Special case for efi payload not loaded from disk,
@@ -170,9 +174,8 @@ static efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
goto out;
msg_path = file_path;
} else {
- file_path = efi_dp_concat(bootefi_device_path,
- bootefi_image_path, 0);
- msg_path = bootefi_image_path;
+ file_path = efi_dp_concat(device, image, 0);
+ msg_path = image;
log_debug("Loaded from disk\n");
}
@@ -209,7 +212,7 @@ out:
/**
* efi_binary_run() - run loaded UEFI image
*
- * @image: memory address of the UEFI image
+ * @image_ptr: memory address of the UEFI image
* @size: size of the UEFI image
* @fdt: device-tree
*
@@ -218,7 +221,7 @@ out:
*
* Return: status code
*/
-efi_status_t efi_binary_run(void *image, size_t size, void *fdt)
+efi_status_t efi_binary_run(void *image_ptr, size_t size, void *fdt)
{
efi_status_t ret;
@@ -234,5 +237,6 @@ efi_status_t efi_binary_run(void *image, size_t size, void *fdt)
if (ret != EFI_SUCCESS)
return ret;
- return efi_run_image(image, size);
+ return efi_run_image(image_ptr, size, bootefi_image_path,
+ bootefi_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> --- lib/efi_loader/efi_bootbin.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-)