Hi Raymond,

On Tue, May 02, 2023 at 12:12:21PM -0700, Raymond Mao wrote:
> The boot variables automatically generated for removable medias
> should be with short form of device path without device nodes.
> This is a requirement for the case that a removable media is
> plugged into a different port but is still able to work with the
> existing boot variables.
>
> Signed-off-by: Raymond Mao <raymond....@linaro.org>
> ---
> Changes in v2
> - Ignore EFI_NOT_FOUND returned from
>   efi_bootmgr_update_media_device_boot_option which means no boot
>   options scanned.
> Changes in v3
> - Split the patch into moving and renaming functions and
>   individual patches for each changed functionality
>
>  cmd/bootmenu.c                    |  2 +-
>  cmd/eficonfig.c                   |  2 +-
>  include/efi_loader.h              |  2 +-
>  lib/efi_loader/efi_bootmgr.c      | 16 +++++++++++++---
>  lib/efi_loader/efi_disk.c         |  2 +-
>  lib/efi_loader/efi_variable.c     |  2 +-
>  lib/efi_loader/efi_variable_tee.c |  2 +-
>  7 files changed, 19 insertions(+), 9 deletions(-)

[...]

>   * @count:           number of efi handle
> + * @short_path:              use short form device path for matching
>   * Return:           status code
>   */
>  static efi_status_t efi_bootmgr_enumerate_boot_option(struct 
> eficonfig_media_boot_option *opt,
>                                                     efi_handle_t 
> *volume_handles,
> -                                                   efi_status_t count)
> +                                                   efi_status_t count,
> +                                                   bool short_path)

Are there cases where the normal device path is used? If not we can get rid
of the bool option entirely

>  {
>       u32 i;
>       struct efi_handler *handler;
> @@ -387,6 +389,13 @@ static efi_status_t 
> efi_bootmgr_enumerate_boot_option(struct eficonfig_media_boo
>               p = dev_name;
>               utf8_utf16_strncpy(&p, buf, strlen(buf));
>
> +             /* use short form device path */
> +             if (short_path) {
> +                     device_path = efi_dp_shorten(device_path);
> +                     if (!device_path)
> +                             continue;
> +             }
> +
>               lo.label = dev_name;
>               lo.attributes = LOAD_OPTION_ACTIVE;
>               lo.file_path = device_path;

 [...]

 Thanks
 /Ilias

Reply via email to