|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH-4.16 v3] xen/efi: Fix Grub2 boot on arm64
On 05.11.2021 12:21, Luca Fancellu wrote:
> --- a/xen/common/efi/boot.c
> +++ b/xen/common/efi/boot.c
> @@ -121,6 +121,8 @@ static char *get_value(const struct file *cfg, const char
> *section,
> static char *split_string(char *s);
> static CHAR16 *s2w(union string *str);
> static char *w2s(const union string *str);
> +static EFI_FILE_HANDLE get_parent_handle(EFI_LOADED_IMAGE *loaded_image,
> + CHAR16 **leaf);
> static bool read_file(EFI_FILE_HANDLE dir_handle, CHAR16 *name,
> struct file *file, const char *options);
> static bool read_section(const EFI_LOADED_IMAGE *image, const CHAR16 *name,
> @@ -167,7 +169,7 @@ static void __init PrintErr(const CHAR16 *s)
> }
>
> #ifndef CONFIG_HAS_DEVICE_TREE
> -static int __init efi_check_dt_boot(EFI_FILE_HANDLE dir_handle)
> +static int __init efi_check_dt_boot(EFI_LOADED_IMAGE *loaded_image)
> {
> return 0;
> }
> @@ -1225,9 +1227,6 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE
> *SystemTable)
>
> efi_arch_relocate_image(0);
>
> - /* Get the file system interface. */
> - dir_handle = get_parent_handle(loaded_image, &file_name);
> -
> if ( use_cfg_file )
> {
> UINTN depth, cols, rows, size;
With the dir_handle declaration also moved back here (as I did
indicated in reply to Stefano's proposal), ...
> @@ -1240,6 +1239,9 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE
> *SystemTable)
>
> gop = efi_get_gop();
>
> + /* Get the file system interface. */
> + dir_handle = get_parent_handle(loaded_image, &file_name);
> +
> /* Read and parse the config file. */
> if ( read_section(loaded_image, L"config", &cfg, NULL) )
> PrintStr(L"Using builtin config file\r\n");
> @@ -1362,14 +1364,14 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE
> *SystemTable)
> efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size));
> cfg.addr = 0;
>
> + dir_handle->Close(dir_handle);
> +
> if ( gop && !base_video )
> gop_mode = efi_find_gop_mode(gop, cols, rows, depth);
> }
>
> /* Get the number of boot modules specified on the DT or an error (<0) */
> - dt_modules_found = efi_check_dt_boot(dir_handle);
> -
> - dir_handle->Close(dir_handle);
> + dt_modules_found = efi_check_dt_boot(loaded_image);
>
> if ( dt_modules_found < 0 )
> /* efi_check_dt_boot throws some error */
>
... all of the quoted part
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
Down the road we will want to constify efi_check_dt_boot()'s parameter,
but that will require changes elsewhere as well.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |