[PATCH 1/1] efi_loader: require at least 128 KiB of stack space

Ilias Apalodimas ilias.apalodimas at linaro.org
Tue Feb 17 11:03:22 CET 2026


On Tue, 17 Feb 2026 at 11:24, Ilias Apalodimas
<ilias.apalodimas at linaro.org> wrote:
>
> On Tue, 17 Feb 2026 at 10:46, Heinrich Schuchardt
> <heinrich.schuchardt at canonical.com> wrote:
> >
> > On 2/17/26 09:18, Ilias Apalodimas wrote:
> > > Hi Heinrich,
> > >
> > > On Tue, 17 Feb 2026 at 09:47, Heinrich Schuchardt
> > > <heinrich.schuchardt at canonical.com> wrote:
> > >>
> > >> The UEFI specification requires at least 128 KiB stack space. Consider this
> > >> value as a prerequisite for CONFIG_EFI_LOADER.
> > >>
> > >> Mention the requirement in the CONFIG_STACK_SPACE description and decribe
> > >> that the UEFI sub-system uses CONFIG_STACK_SPACE when defining the memory
> > >> map.
> > >>
> > >> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> > >> ---
> > >>   Kconfig                | 8 +++++---
> > >>   lib/efi_loader/Kconfig | 2 ++
> > >>   2 files changed, 7 insertions(+), 3 deletions(-)
> > >>
> > >> diff --git a/Kconfig b/Kconfig
> > >> index ce25ea24a60..99b3cd62526 100644
> > >> --- a/Kconfig
> > >> +++ b/Kconfig
> > >> @@ -615,9 +615,11 @@ config STACK_SIZE
> > >>          default 0x4000 if ARCH_STM32
> > >>          default 0x1000000
> > >>          help
> > >> -         Define Max stack size that can be used by U-Boot. This value is used
> > >> -         by the UEFI sub-system. On some boards initrd_high is calculated as
> > >> -         base stack pointer minus this stack size.
> > >> +         Define Max stack size that can be used by U-Boot. The UEFI sub-system
> > >> +         considers this value when setting up the memory map. The UEFI
> > >> +         specification requires 128 KiB or more of available stack space. On
> > >> +         some boards initrd_high is calculated as base stack pointer minus this
> > >> +         stack size.
> > >>
> > >>   config SYS_MEM_TOP_HIDE
> > >>          hex "Exclude some memory from U-Boot / OS information"
> > >> diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> > >> index 13e44be1d06..450ffa61c0a 100644
> > >> --- a/lib/efi_loader/Kconfig
> > >> +++ b/lib/efi_loader/Kconfig
> > >> @@ -15,6 +15,8 @@ config EFI_LOADER
> > >>          # We need EFI_STUB_32BIT to be set on x86_32 with EFI_STUB
> > >>          depends on !EFI_STUB || !X86 || X86_64 || EFI_STUB_32BIT
> > >>          depends on !EFI_APP
> > >> +       # The EFI specification requires 128 KiB or more of stack space
> > >> +       depends on STACK_SIZE >= 0x20000
> > >
> > > Won't this disable EFI for ARCH_STM32 devices? Those define the
> > > default stack size as 0x4000.
> >
> > The UEFI specification explicitly requires an enabled MMU.
> > The ARMv7-M architecture does not offer it.
>
> There was a discussion about this earlier and we decided to keep it
> alive though. IIRC Mark explained why we can keep it enabled.

Ok looking at this again, the symbol for v7 is CONFIG_ARCH_STM32MP not
CONFIG_ARCH_STM32

Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>

>
> Thanks
> /Ilias
> >
> > Best regards
> >
> > Heinrich
> >
> > >
> > > Thanks
> > > /Ilias
> > >>          default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
> > >>          select EFI
> > >>          select CHARSET
> > >> --
> > >> 2.51.0
> > >>
> >


More information about the U-Boot mailing list