[U-Boot] [RFC 1/1] efi_loader: usage of cleanup_before_linux()

Alexander Graf agraf at csgraf.de
Thu Jul 18 18:53:01 UTC 2019


On 18.07.19 19:46, Heinrich Schuchardt wrote:
> Always call cleanup_before_linux() on ARM 32bit during ExitBootServices().
>
> This fixes a problem problem for booting BSD on ARM 32bit.
>
> Reported-by: Jonathan Gray <jsg at jsg.id.au>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>


NAK. Instead this should never call cleanup_before_linux() and we 
declare ourselves incompatible to old grub versions. That way we don't 
lure others into believing you could boot with caches disabled in a UEFI 
world.

Alex


> ---
>   lib/efi_loader/efi_boottime.c | 13 +------------
>   1 file changed, 1 insertion(+), 12 deletions(-)
>
> diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
> index 4f6e8d1679..171f485f6b 100644
> --- a/lib/efi_loader/efi_boottime.c
> +++ b/lib/efi_loader/efi_boottime.c
> @@ -39,14 +39,6 @@ LIST_HEAD(efi_register_notify_events);
>   /* Handle of the currently executing image */
>   static efi_handle_t current_image;
>
> -/*
> - * If we're running on nasty systems (32bit ARM booting into non-EFI Linux)
> - * we need to do trickery with caches. Since we don't want to break the EFI
> - * aware boot path, only apply hacks when loading exiting directly (breaking
> - * direct Linux EFI booting along the way - oh well).
> - */
> -static bool efi_is_direct_boot = true;
> -
>   #ifdef CONFIG_ARM
>   /*
>    * The "gd" pointer lives in a register on ARM and AArch64 that we declare
> @@ -1916,8 +1908,7 @@ static void efi_exit_caches(void)
>   	 * Grub on 32bit ARM needs to have caches disabled before jumping into
>   	 * a zImage, but does not know of all cache layers. Give it a hand.
>   	 */
> -	if (efi_is_direct_boot)
> -		cleanup_before_linux();
> +	cleanup_before_linux();
>   #endif
>   }
>
> @@ -2893,8 +2884,6 @@ efi_status_t EFIAPI efi_start_image(efi_handle_t image_handle,
>   	if (ret != EFI_SUCCESS)
>   		return EFI_EXIT(EFI_INVALID_PARAMETER);
>
> -	efi_is_direct_boot = false;
> -
>   	image_obj->exit_data_size = exit_data_size;
>   	image_obj->exit_data = exit_data;
>
> --
> 2.20.1
>


More information about the U-Boot mailing list