[PATCH 06/35] x86: Create a 32/64-bit selection for the app
Simon Glass
sjg at chromium.org
Thu Sep 9 10:57:22 CEST 2021
Hi Heinrich,
On Wed, 8 Sept 2021 at 11:40, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
>
>
> On 9/8/21 3:33 PM, Simon Glass wrote:
> > Most EFI implementations use 64-bit. In order to spupose a 64-bit app,
>
> %s/spupose/support
>
> > update the Kconfig to add an option for 32/64 bit. Update the prompt for
>
> This commit message is unclear. We already can compile U-Boot as an
> 64bit EFI application. "In order to support" would imply that we don't.
Which board are you talking about? There is only the 64-bit payload at
present, certainly no 64-bit app?
>
>
> > the existing option so it is clear it relates to the stub. Move both
> > up to just under the choice that controls them, since this looks better
> > and the menu.
> >
> > Use CONFIG_EFI_APP in the Makefile instead of CONFIG_TARGET_EFI_APP,
> > since the latter is specific to a single target and we will have two.
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> > arch/x86/cpu/intel_common/Makefile | 2 +-
> > lib/efi/Kconfig | 34 +++++++++++++++++++++++-------
> > 2 files changed, 27 insertions(+), 9 deletions(-)
> >
> > diff --git a/arch/x86/cpu/intel_common/Makefile b/arch/x86/cpu/intel_common/Makefile
> > index 8b9a810f66d..1dc17b45879 100644
> > --- a/arch/x86/cpu/intel_common/Makefile
> > +++ b/arch/x86/cpu/intel_common/Makefile
> > @@ -27,7 +27,7 @@ obj-y += fast_spi.o
> > obj-y += lpc.o
> > obj-y += lpss.o
> > obj-$(CONFIG_$(SPL_)INTEL_GENERIC_WIFI) += generic_wifi.o
> > -ifndef CONFIG_TARGET_EFI_APP
> > +ifndef CONFIG_EFI_APP
> > obj-$(CONFIG_$(SPL_TPL_)X86_32BIT_INIT) += microcode.o
> > ifndef CONFIG_$(SPL_)X86_64
> > obj-y += microcode.o
> > diff --git a/lib/efi/Kconfig b/lib/efi/Kconfig
> > index 93b85644920..e818cef0d15 100644
> > --- a/lib/efi/Kconfig
> > +++ b/lib/efi/Kconfig
> > @@ -26,18 +26,26 @@ config EFI_STUB
> >
> > endchoice
> >
> > -config EFI_RAM_SIZE
> > - hex "Amount of EFI RAM for U-Boot"
> > +choice
> > + prompt "EFI app 32/64-bit selection"
> > depends on EFI_APP
> > - default 0x2000000
> > help
> > - Set the amount of EFI RAM which is claimed by U-Boot for its own
> > - use. U-Boot allocates this from EFI on start-up (along with a few
> > - other smaller amounts) and it can never be increased after that.
> > - It is used as the RAM size in with U-Boot.
> > + EFI does not support mixing 32-bit and 64-bit modes. This is a
> > + significant problem because it means that you must build a stub with
> > + the correct type for EFI to load it correctly. If you are using
> > + 32-bit EFI, select 32-bit here, else select 64-bit. Failure to do
> > + this may produce no error message - it just won't start!
> > +
> > +config EFI_APP_32BIT
> > + bool "Produce an app for running with 32-bit EFI"
> > +
> > +config EFI_APP_64BIT
> > + bool "Produce an app for running with 64-bit EFI"
> > +
> > +endchoice
> >
> > choice
> > - prompt "EFI 32/64-bit selection"
> > + prompt "EFI stub 32/64-bit selection"
> > depends on EFI_STUB
> > help
> > EFI does not support mixing 32-bit and 64-bit modes. This is a
> > @@ -53,3 +61,13 @@ config EFI_STUB_64BIT
> > bool "Produce a stub for running with 64-bit EFI"
> >
> > endchoice
> > +
> > +config EFI_RAM_SIZE
> > + hex "Amount of EFI RAM for U-Boot"
> > + depends on EFI_APP
> > + default 0x2000000
>
> 32 MiB is quite small for loading a kernel and an initrd.
It does run nicely in qemu though without needing a special -m value.
What do you suggest?
Regards,
Simon
More information about the U-Boot
mailing list