[PATCH 09/10] efi: Drop EFI_GRUB_ARM32_WORKAROUND
Peter Robinson
pbrobinson at gmail.com
Wed Jan 7 03:35:16 CET 2026
As stated in the cover letter, this should be sent separately so it
can be assessed on it's own merit.
On Wed, 7 Jan 2026 at 00:33, Simon Glass <sjg at chromium.org> wrote:
>
> From: Simon Glass <sjg at chromium.org>
>
> This work-around dates from 2019 and grub 2.04 which is quite old. New
> builds of grub don't have the problem and old boards presumably use an
> older U-Boot, so don't need this.
Just because something is quite old doesn't mean it's not still
needed, please describe the what the work around achieves, why it's
not needed any longer, the benefits of dropping the workaround, eg
does it slow boot process down?
> Drop it.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> Signed-off-by: Simon Glass <simon.glass at canonical.com>
> ---
>
> configs/mt7623n_bpir2_defconfig | 1 -
> lib/efi_loader/Kconfig | 10 ----------
> lib/efi_loader/efi_boottime.c | 26 --------------------------
> 3 files changed, 37 deletions(-)
>
> diff --git a/configs/mt7623n_bpir2_defconfig b/configs/mt7623n_bpir2_defconfig
> index 404380558f2..d75168a72ed 100644
> --- a/configs/mt7623n_bpir2_defconfig
> +++ b/configs/mt7623n_bpir2_defconfig
> @@ -13,7 +13,6 @@ CONFIG_DEFAULT_DEVICE_TREE="mt7623n-bananapi-bpi-r2"
> CONFIG_TARGET_MT7623=y
> CONFIG_SYS_BOOTM_LEN=0x4000000
> CONFIG_SYS_LOAD_ADDR=0x84000000
> -# CONFIG_EFI_GRUB_ARM32_WORKAROUND is not set
> CONFIG_FIT=y
> CONFIG_FIT_VERBOSE=y
> CONFIG_DISTRO_DEFAULTS=y
> diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> index 13e44be1d06..5585c841c27 100644
> --- a/lib/efi_loader/Kconfig
> +++ b/lib/efi_loader/Kconfig
> @@ -505,16 +505,6 @@ config EFI_LOADER_BOUNCE_BUFFER
> hardware we can create a bounce buffer so that payloads don't have to
> worry about platform details.
>
> -config EFI_GRUB_ARM32_WORKAROUND
> - bool "Workaround for GRUB on 32bit ARM"
> - default n if ARCH_BCM283X || ARCH_SUNXI || ARCH_QEMU
> - default y
> - depends on ARM && !ARM64
> - help
> - GRUB prior to version 2.04 requires U-Boot to disable caches. This
> - workaround currently is also needed on systems with caches that
> - cannot be managed via CP15.
> -
> config EFI_ESRT
> bool "Enable the UEFI ESRT generation"
> depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
> diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
> index 0bc66ee61a8..c31ee53cde6 100644
> --- a/lib/efi_loader/efi_boottime.c
> +++ b/lib/efi_loader/efi_boottime.c
> @@ -2139,29 +2139,6 @@ error:
> return EFI_EXIT(ret);
> }
>
> -/**
> - * efi_exit_caches() - fix up caches for EFI payloads if necessary
> - */
> -static void efi_exit_caches(void)
> -{
> -#if defined(CONFIG_EFI_GRUB_ARM32_WORKAROUND)
> - /*
> - * Boooting Linux via GRUB prior to version 2.04 fails on 32bit ARM if
> - * caches are enabled.
> - *
> - * TODO:
> - * According to the UEFI spec caches that can be managed via CP15
> - * operations should be enabled. Caches requiring platform information
> - * to manage should be disabled. This should not happen in
> - * ExitBootServices() but before invoking any UEFI binary is invoked.
> - *
> - * We want to keep the current workaround while GRUB prior to version
> - * 2.04 is still in use.
> - */
> - cleanup_before_linux();
> -#endif
> -}
> -
> /**
> * efi_exit_boot_services() - stop all boot services
> * @image_handle: handle of the loaded image
> @@ -2245,9 +2222,6 @@ static efi_status_t EFIAPI efi_exit_boot_services(efi_handle_t image_handle,
> /* Patch out unsupported runtime function */
> efi_runtime_detach();
>
> - /* Fix up caches for EFI payloads if necessary */
> - efi_exit_caches();
> -
> /* Disable boot time services */
> systab.con_in_handle = NULL;
> systab.con_in = NULL;
> --
> 2.43.0
>
More information about the U-Boot
mailing list