[U-Boot] [PATCH 1/1] efi_loader: remove efi_exit_caches()

Emmanuel Vadot manu at bidouilliste.com
Sat Nov 24 11:33:10 UTC 2018


On Thu, 15 Nov 2018 21:23:31 +0100
Alexander Graf <agraf at suse.de> wrote:

> 
> 
> On 15.11.18 06:34, Jonathan Gray wrote:
> > On Sun, Sep 23, 2018 at 02:33:47PM +0200, Heinrich Schuchardt wrote:
> >> Since GRUB patch d0c070179d4d ("arm/efi: Switch to arm64 linux loader",
> >> 2018-07-09) we do not need a workaround for GRUB on 32bit ARM anymore.
> >>
> >> So let's eliminate function efi_exit_caches().
> >>
> >> This will require Linux distributions to update grub-efi-arm to the GRUB
> >> git HEAD (a tag containing the aforementioned GRUB patch is not available
> >> yet).
> > 
> > OpenBSD/armv7 can no longer boot with U-Boot after this commit as
> > it currently does not explicitly invalidate/flush caches in efiboot.
> 
> Shoot. I thought I had included a revert of this patch for 2018.11, but
> apparently missed it :(.
> 
> I'll revert it for efi-next then. We will have to give this a good bit
> more thought.
> 
> 
> Alex

 Same problem for FreeBSD/armv{6,7}, I don't think that we should
disable the caches but we should at least flush them no ?

> > 
> >>
> >> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> >> ---
> >>  lib/efi_loader/efi_boottime.c | 28 ----------------------------
> >>  1 file changed, 28 deletions(-)
> >>
> >> diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
> >> index 2496608981..97eb19cd14 100644
> >> --- a/lib/efi_loader/efi_boottime.c
> >> +++ b/lib/efi_loader/efi_boottime.c
> >> @@ -26,14 +26,6 @@ LIST_HEAD(efi_obj_list);
> >>  /* List of all events */
> >>  LIST_HEAD(efi_events);
> >>  
> >> -/*
> >> - * 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
> >> @@ -1686,8 +1678,6 @@ static efi_status_t EFIAPI efi_start_image(efi_handle_t image_handle,
> >>  
> >>  	EFI_ENTRY("%p, %p, %p", image_handle, exit_data_size, exit_data);
> >>  
> >> -	efi_is_direct_boot = false;
> >> -
> >>  	/* call the image! */
> >>  	if (setjmp(&image_obj->exit_jmp)) {
> >>  		/*
> >> @@ -1795,21 +1785,6 @@ static efi_status_t EFIAPI efi_unload_image(efi_handle_t image_handle)
> >>  	return EFI_EXIT(EFI_SUCCESS);
> >>  }
> >>  
> >> -/**
> >> - * efi_exit_caches() - fix up caches for EFI payloads if necessary
> >> - */
> >> -static void efi_exit_caches(void)
> >> -{
> >> -#if defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
> >> -	/*
> >> -	 * 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();
> >> -#endif
> >> -}
> >> -
> >>  /**
> >>   * efi_exit_boot_services() - stop all boot services
> >>   * @image_handle: handle of the loaded image
> >> @@ -1863,9 +1838,6 @@ static efi_status_t EFIAPI efi_exit_boot_services(efi_handle_t image_handle,
> >>  
> >>  	board_quiesce_devices();
> >>  
> >> -	/* Fix up caches for EFI payloads if necessary */
> >> -	efi_exit_caches();
> >> -
> >>  	/* This stops all lingering devices */
> >>  	bootm_disable_interrupts();
> >>  
> >> -- 
> >> 2.19.0
> >>
> >> _______________________________________________
> >> U-Boot mailing list
> >> U-Boot at lists.denx.de
> >> https://lists.denx.de/listinfo/u-boot
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot


-- 
Emmanuel Vadot <manu at bidouilliste.com> <manu at freebsd.org>


More information about the U-Boot mailing list