Falcon Mode Support For Uncompressed Kernel Images

Nathan Barrett-Morrison nathan.morrison at timesys.com
Mon Jan 31 16:23:58 CET 2022


Hi Tom,

Yea, I'm not sure if uncompressed ARM32 would work, but I don't believe it
was ever working to begin with... as bootz_setup is being called right now
( @ https://source.denx.de/u-boot/u-boot/-/blob/master/common/spl/spl.c#L366
)

My intent was for SPL_OS_BOOT_UNCOMPRESSED to only be used for platforms
which need booti_setup (ARM64, ...).

So... I could add a dependency on ARM64 in the config option or I could
remove the option altogether and let the booti_setup fail and fallback to
bootz_setup.  Would either of those work for you?

Sincerely,
Nathan

On Mon, Jan 31, 2022 at 10:11 AM Tom Rini <trini at konsulko.com> wrote:

> On Mon, Jan 17, 2022 at 07:58:00PM -0500, Nathan Barrett-Morrison wrote:
> > Hi All,
> >
> > While trying to bring up Falcon Mode boot on an ARM64 board, I discovered
> > that there is no path which allows you to use an uncompressed kernel
> image
> > (booti).  I've added this path and attached the relevant patch.
> >
> > I've made this a separate if/else CONFIG option instead of allowing both
> > bootz+booti paths to coexist, as it seems unlikely to me that there would
> > be such a board which needs both.  Most architectures use either bootz or
> > booti, but not both.
> >
> > Sincerely,
> > Nathan Barrett-Morrison
>
> > From d5542ccc2d4f81ac0442be8ca772a99e1a13b6dd Mon Sep 17 00:00:00 2001
> > From: Nathan Barrett-Morrison <nathan.morrison at timesys.com>
> > Date: Mon, 17 Jan 2022 19:42:10 -0500
> > Subject: [PATCH] Add in the ability to load and boot an uncompressed
> >  kernel image during the Falcon Mode boot sequence.  This is required for
> >  architectures which do not support compressed kernel image booting
> (i.e.,
> >  ARM64)
> >
> > Signed-off-by: Nathan Barrett-Morrison <nathan.morrison at timesys.com>
> > Cc: Tom Rini <trini at konsulko.com>
> > Cc: Aneesh V <aneesh at ti.com>
> > ---
> >  arch/arm/lib/Makefile |  2 +-
> >  common/spl/Kconfig    |  6 ++++++
> >  common/spl/spl.c      | 21 +++++++++++++++++++++
> >  3 files changed, 28 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
> > index c48e1f622d..24c9e3c1e5 100644
> > --- a/arch/arm/lib/Makefile
> > +++ b/arch/arm/lib/Makefile
> > @@ -36,7 +36,7 @@ obj-$(CONFIG_CMD_BOOTZ) += bootm.o zimage.o
> >  obj-$(CONFIG_SYS_L2_PL310) += cache-pl310.o
> >  else
> >  obj-$(CONFIG_$(SPL_TPL_)FRAMEWORK) += spl.o
> > -obj-$(CONFIG_SPL_FRAMEWORK) += zimage.o
> > +obj-$(CONFIG_SPL_FRAMEWORK) += zimage.o image.o
> >  obj-$(CONFIG_OF_LIBFDT) += bootm-fdt.o
> >  endif
> >  ifdef CONFIG_ARM64
> > diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> > index 4a739a7421..6d2ddddc9f 100644
> > --- a/common/spl/Kconfig
> > +++ b/common/spl/Kconfig
> > @@ -917,6 +917,12 @@ config SYS_OS_BASE
> >         Specify the address, where the OS image is found, which
> >         gets booted.
> >
> > +config SPL_OS_BOOT_UNCOMPRESSED
> > +     bool "Use uncompressed kernel image alongside Falcon Mode"
> > +     depends on SPL_SPI_LOAD
> > +     help
> > +       Use an uncompressed kernel image to boot.  This is targetting
> > +       architectures which use booti instead of bootz (i.e, ARM64).
> >  endif # SPL_OS_BOOT
>
> We shouldn't need another CONFIG option here, and this would then I
> believe fail to boot uncompressed arm32 images.  The real problem I
> think is that the code assumed bootm/bootz but needs to instead be more
> explicit in checking / supporting each and then also yes, adding booti
> support.  Following up with also supporting compressed Images may or may
> not take additional logic, I'm not sure off-hand.
>
> --
> Tom
>


More information about the U-Boot mailing list