Falcon Mode Support For Uncompressed Kernel Images
Tom Rini
trini at konsulko.com
Tue Apr 19 22:30:29 CEST 2022
On Wed, Feb 02, 2022 at 04:53:11PM -0500, Nathan Barrett-Morrison wrote:
> Hi Tom,
>
> I've attached version 2 of the patch. I believe this should adhere more
> closely to your suggestions.
>
> Keep in mind, CONFIG_IS_ENABLED will not work for checking
> CMD_BOOTI/CMD_BOOTZ in this case, as there is no CONFIG_SPL_CMD_BOOTx. So,
> I'm just directly checking if it's defined instead.
>
> I verified both CONFIG_IS_ENABLED() and IS_ENABLED() did not work.
>
> Sincerely,
> Nathan
>
> On Mon, Jan 31, 2022 at 10:35 AM Tom Rini <trini at konsulko.com> wrote:
>
> > On Mon, Jan 31, 2022 at 10:23:58AM -0500, Nathan Barrett-Morrison wrote:
> >
> > > 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?
> >
> > The code and logic overall needs a bit of refactoring to support
> > "booti", "bootz" and also FIT images. I believe FIT images are how
> > anyone doing falcon mode on arm64 has worked thus far. booti/bootz
> > should only be an option when CMD_BOOTI/Z is set, and FIT should depend
> > on SPL_LOAD_FIT already.
> >
> > --
> > Tom
> >
> From 5d37f2a930e7cb3455b6ec925ec6e67b40d4c022 Mon Sep 17 00:00:00 2001
> From: Nathan Barrett Morrison <nathan.morrison at timesys.com>
> Date: Wed, 2 Feb 2022 15:05:18 -0500
> Subject: [PATCH v2] 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 images (i.e. ARM64). This is only used while not booting via FIT image.
>
> Signed-off-by: Nathan Barrett-Morrison <nathan.morrison at timesys.com>
> Cc: Tom Rini <trini at konsulko.com>
> ---
> Changes for v2:
> - Remove original SPL_OS_BOOT_UNCOMPRESSED option and check via CMD_BOOTI and CMD_BOOTZ instead
>
> arch/arm/lib/Makefile | 5 ++++-
> common/spl/spl.c | 21 +++++++++++++++++++++
> 2 files changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
> index c48e1f622d..57e49f69f7 100644
> --- a/arch/arm/lib/Makefile
> +++ b/arch/arm/lib/Makefile
> @@ -36,7 +36,10 @@ 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
> +ifdef CONFIG_SPL_FRAMEWORK
> +obj-$(CONFIG_CMD_BOOTI) += image.o
> +obj-$(CONFIG_CMD_BOOTZ) += zimage.o
> +endif
> obj-$(CONFIG_OF_LIBFDT) += bootm-fdt.o
> endif
> ifdef CONFIG_ARM64
> diff --git a/common/spl/spl.c b/common/spl/spl.c
> index f51d1f3205..1f6b3f1ac8 100644
> --- a/common/spl/spl.c
> +++ b/common/spl/spl.c
> @@ -104,6 +104,11 @@ int __weak bootz_setup(ulong image, ulong *start, ulong *end)
> {
> return 1;
> }
> +
> +int __weak booti_setup(ulong image, ulong *relocated_addr, ulong *size, bool force_reloc)
> +{
> + return 1;
> +}
> #endif
>
> /* Weak default function for arch/board-specific fixups to the spl_image_info */
> @@ -354,6 +359,21 @@ int spl_parse_image_header(struct spl_image_info *spl_image,
> #endif
>
> #if CONFIG_IS_ENABLED(OS_BOOT)
> +#if defined(CMD_BOOTI)
> + ulong start, size;
> +
> + if (!booti_setup((ulong)header, &start, &size, 0)) {
> + spl_image->name = "Linux";
> + spl_image->os = IH_OS_LINUX;
> + spl_image->load_addr = start;
> + spl_image->entry_point = start;
> + spl_image->size = size;
> + debug(SPL_TPL_PROMPT
> + "payload Image, load addr: 0x%lx size: %d\n",
> + spl_image->load_addr, spl_image->size);
> + return 0;
> + }
> +#elif defined(CMD_BOOTZ)
> ulong start, end;
>
> if (!bootz_setup((ulong)header, &start, &end)) {
> @@ -367,6 +387,7 @@ int spl_parse_image_header(struct spl_image_info *spl_image,
> spl_image->load_addr, spl_image->size);
> return 0;
> }
> +#endif
> #endif
>
> if (!spl_parse_board_header(spl_image, (const void *)header, sizeof(*header)))
Sorry for the late response. Attached patches aren't picked up by
patchwork. I think this looks OK, but can you please re-send it
directly rather than as attachment? Thanks.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20220419/1c8f3803/attachment.sig>
More information about the U-Boot
mailing list