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 <tr...@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.morri...@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.morri...@timesys.com>
Cc: Tom Rini <tr...@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)))
-- 
2.30.2

Reply via email to