[PATCH v2 3/7] efi_loader: Update efi_run_image() to accept image and device path

Ilias Apalodimas ilias.apalodimas at linaro.org
Thu Dec 12 08:43:25 CET 2024


On Thu, 12 Dec 2024 at 00:38, Simon Glass <sjg at chromium.org> wrote:
>
> 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 at chromium.org>
> ---
>
> Changes in v2:
> - Adjust argument ordering for efi_run_image()
>
>  lib/efi_loader/efi_bootbin.c | 20 ++++++++++++--------
>  1 file changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/lib/efi_loader/efi_bootbin.c b/lib/efi_loader/efi_bootbin.c
> index ec8f4e4f7f4..8febd325f34 100644
> --- a/lib/efi_loader/efi_bootbin.c
> +++ b/lib/efi_loader/efi_bootbin.c
> @@ -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,
> @@ -169,9 +173,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");
>         }
>
> @@ -208,7 +211,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
>   *
> @@ -217,7 +220,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)

The * is enough, please drop the _ptr rename

>  {
>         efi_status_t ret;
>
> @@ -233,5 +236,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_device_path,
> +                            bootefi_image_path);
>  }
> --
> 2.34.1
>

With the ptr rename removed
Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>


More information about the U-Boot mailing list