
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.mao@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