[PATCH v6 1/4] spl: remove usage of CMD_BOOTx from image parsing
Anshul Dalal
anshuld at ti.com
Thu Apr 3 23:54:34 CEST 2025
Using CMD_* configs from spl doesn't make logical sense. Therefore this
patch replaces the checks for CMD_BOOTx with newly added configs
SPL_HAS_BOOTx.
SPL_HAS_BOOTZ is enabled by default for 32-bit ARM systems and
SPL_HAS_BOOTI is enabled by default for 64-bit ARM and RISCV.
The respective C files (image.c/zimage.c) are compiled based on library
symbols LIB_BOOTx instead which are in turn selected by both CMD_BOOTx
and SPL_HAS_BOOTx.
Signed-off-by: Anshul Dalal <anshuld at ti.com>
---
Tested:
* U-Boot CI: https://github.com/u-boot/u-boot/pull/757
Changes in v6:
* Add LIB_BOOTx library symbols
* Update existing configs ensuring no change in size or build failure
v5:
https://lore.kernel.org/all/20250314035505.4029331-1-anshuld@ti.com/
Changes in v5:
* Remove imply clause for CMD_BOOTZ instead add default y for
SPL_HAS_BOOTZ
* Update commit message to reflect the changes
* Remove 'More info' link
v4:
https://lore.kernel.org/u-boot/20250313032842.1189977-1-anshuld@ti.com/
Changes in v4:
* Don't set SPL_HAS_BOOTI for sandbox by default
* Updated prompts for SPL_HAS_BOOT[IZ]
* Removed check for SPL_HAS_FRAMEWORK from Makefile
v3:
https://lore.kernel.org/u-boot/20250312124757.789013-1-anshuld@ti.com/
Changes in v3:
* Add imply clause for CMD_BOOTZ to enable SPL_HAS_BOOTZ
* Fix broken check for bootz_setup
v2:
https://lore.kernel.org/u-boot/20250312094241.629707-1-anshuld@ti.com/
Changes in v2:
* Add SPL_HAS_BOOT[IZ] configs
v1:
https://lore.kernel.org/u-boot/20250311093709.3372104-1-anshuld@ti.com/
---
arch/arm/lib/Makefile | 9 +++------
cmd/Kconfig | 2 ++
common/spl/Kconfig | 16 ++++++++++++++++
common/spl/spl.c | 5 +++--
lib/Kconfig | 6 ++++++
5 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index 1c95dd6fed2..c0a0e1dad0e 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -7,6 +7,9 @@ lib-$(CONFIG_USE_PRIVATE_LIBGCC) += ashldi3.o ashrdi3.o lshrdi3.o \
lib1funcs.o uldivmod.o div0.o \
div64.o muldi3.o
+obj-$(CONFIG_LIB_BOOTI) += image.o
+obj-$(CONFIG_LIB_BOOTZ) += zimage.o
+
ifdef CONFIG_CPU_V7M
obj-y += vectors_m.o crt0.o
else ifdef CONFIG_ARM64
@@ -30,15 +33,9 @@ endif
obj-$(CONFIG_CPU_V7M) += cmd_boot.o
obj-$(CONFIG_OF_LIBFDT) += bootm-fdt.o
-obj-$(CONFIG_CMD_BOOTI) += bootm.o image.o
obj-$(CONFIG_CMD_BOOTM) += bootm.o
-obj-$(CONFIG_CMD_BOOTZ) += bootm.o zimage.o
else
obj-$(CONFIG_$(PHASE_)FRAMEWORK) += spl.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/cmd/Kconfig b/cmd/Kconfig
index 642cc1116e8..45224f1ae21 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -352,6 +352,7 @@ config BOOTM_ELF
config CMD_BOOTZ
bool "bootz"
+ select LIB_BOOTZ
help
Boot the Linux zImage
@@ -359,6 +360,7 @@ config CMD_BOOTI
bool "booti"
depends on ARM64 || RISCV || SANDBOX
default y
+ select LIB_BOOTI
help
Boot an AArch64 Linux Kernel image from memory.
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index 94e118f8465..7d7fd37cac6 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -1153,6 +1153,22 @@ config SPL_OS_BOOT
Enable booting directly to an OS from SPL.
for more info read doc/README.falcon
+config SPL_HAS_BOOTZ
+ bool "Allow booting a zImage style Linux kernel from SPL"
+ depends on SPL_OS_BOOT
+ default y if ARM && !ARM64
+ select LIB_BOOTZ
+ help
+ Boot a linux zimage from memory in falcon boot.
+
+config SPL_HAS_BOOTI
+ bool "Allow booting an Image style Linux kernel from SPL"
+ depends on SPL_OS_BOOT
+ default y if ARM64 || RISCV
+ select LIB_BOOTI
+ help
+ Boot an uncompressed linux kernel image from memory in falcon boot.
+
config SPL_PAYLOAD_ARGS_ADDR
hex "Address in memory to load 'args' file for Falcon Mode to"
depends on SPL_OS_BOOT || SPL_LOAD_FIT_OPENSBI_OS_BOOT
diff --git a/common/spl/spl.c b/common/spl/spl.c
index 76fd56dfe4b..445c3ef24fe 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -335,7 +335,7 @@ int spl_parse_image_header(struct spl_image_info *spl_image,
panic("** no mkimage signature but raw image not supported");
}
- if (CONFIG_IS_ENABLED(OS_BOOT) && IS_ENABLED(CONFIG_CMD_BOOTI)) {
+ if (CONFIG_IS_ENABLED(OS_BOOT) && IS_ENABLED(CONFIG_SPL_HAS_BOOTI)) {
ulong start, size;
if (!booti_setup((ulong)header, &start, &size, 0)) {
@@ -349,7 +349,8 @@ int spl_parse_image_header(struct spl_image_info *spl_image,
spl_image->load_addr, spl_image->size);
return 0;
}
- } else if (CONFIG_IS_ENABLED(OS_BOOT) && IS_ENABLED(CONFIG_CMD_BOOTZ)) {
+ } else if (CONFIG_IS_ENABLED(OS_BOOT) &&
+ IS_ENABLED(CONFIG_SPL_HAS_BOOTZ)) {
ulong start, end;
if (!bootz_setup((ulong)header, &start, &end)) {
diff --git a/lib/Kconfig b/lib/Kconfig
index 1a683dea670..8c39b3af7ad 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -1202,6 +1202,12 @@ config TEST_FDTDEC
bool "enable fdtdec test"
depends on OF_LIBFDT
+config LIB_BOOTI
+ bool
+
+config LIB_BOOTZ
+ bool
+
config LIB_DATE
bool
--
2.49.0
More information about the U-Boot
mailing list