spl: remove usage of CMD_BOOTx from image parsing

Using CMD_* configs from spl doesn't make logical sense. Therefore
this patch replaces the checks for CMD_BOOTx with newly added library
symbols LIB_BOOT[IMZ] and SPL_LIB_BOOT[IMZ] which are enabled by their
respective CMD_* or SPL_* counterparts.

On platforms with non-secure falcon mode, SPL_BOOTZ is enabled by
default for 32-bit ARM systems and SPL_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 $(PHASE_)LIB_BOOTx instead which are in turn selected by both
CMD_BOOTx and SPL_BOOTx as required.

Signed-off-by: Anshul Dalal <anshuld@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Anshul Dalal
2025-10-27 19:47:02 +05:30
committed by Tom Rini
parent 9094482ca7
commit 823e453987
6 changed files with 48 additions and 10 deletions

View File

@@ -7,6 +7,10 @@ lib-$(CONFIG_USE_PRIVATE_LIBGCC) += ashldi3.o ashrdi3.o lshrdi3.o \
lib1funcs.o uldivmod.o div0.o \
div64.o muldi3.o
obj-$(CONFIG_$(PHASE_)LIB_BOOTI) += image.o
obj-$(CONFIG_$(PHASE_)LIB_BOOTZ) += zimage.o
obj-$(CONFIG_$(PHASE_)LIB_BOOTM) += bootm.o
ifdef CONFIG_CPU_V7M
obj-y += vectors_m.o crt0.o
else ifdef CONFIG_ARM64
@@ -30,15 +34,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

View File

@@ -6,8 +6,8 @@
# Copyright (C) 2017 Andes Technology Corporation
# Rick Chen, Andes Technology Corporation <rick@andestech.com>
obj-$(CONFIG_CMD_BOOTM) += bootm.o
obj-$(CONFIG_CMD_BOOTI) += bootm.o image.o
obj-$(CONFIG_$(PHASE_)LIB_BOOTM) += bootm.o
obj-$(CONFIG_$(PHASE_)LIB_BOOTI) += image.o
obj-$(CONFIG_CMD_GO) += boot.o
obj-y += cache.o
obj-$(CONFIG_SIFIVE_CACHE) += sifive_cache.o

View File

@@ -33,6 +33,24 @@ config TIMESTAMP
loaded that does not, the message 'Wrong FIT format: no timestamp'
is shown.
config LIB_BOOTI
bool
config LIB_BOOTM
bool
config LIB_BOOTZ
bool
config SPL_LIB_BOOTI
bool
config SPL_LIB_BOOTM
bool
config SPL_LIB_BOOTZ
bool
config BUTTON_CMD
bool "Support for running a command if a button is held during boot"
depends on CMDLINE

View File

@@ -284,6 +284,7 @@ config CMD_BOOTD
config CMD_BOOTM
bool "bootm"
default y
select LIB_BOOTM
help
Boot an application image from the memory.
@@ -360,6 +361,8 @@ config BOOTM_ELF
config CMD_BOOTZ
bool "bootz"
select LIB_BOOTZ
select LIB_BOOTM
help
Boot the Linux zImage
@@ -367,6 +370,8 @@ config CMD_BOOTI
bool "booti"
depends on ARM64 || RISCV || SANDBOX
default y
select LIB_BOOTI
select LIB_BOOTM
help
Boot an AArch64 Linux Kernel image from memory.

View File

@@ -1216,6 +1216,22 @@ config SPL_OS_BOOT_SECURE
to use falcon mode by disabling certain inherently non-securable options
in the SPL boot flow.
config SPL_BOOTZ
bool "Allow booting a zImage style Linux kernel from SPL"
depends on SPL_OS_BOOT && !SPL_OS_BOOT_SECURE
default y if ARM && !ARM64
select SPL_LIB_BOOTZ
help
Boot a linux zimage from memory in falcon boot.
config SPL_BOOTI
bool "Allow booting an Image style Linux kernel from SPL"
depends on SPL_OS_BOOT && !SPL_OS_BOOT_SECURE
default y if ARM64 || RISCV
select SPL_LIB_BOOTI
help
Boot an uncompressed linux kernel image from memory in falcon boot.
config SPL_OS_BOOT_ARGS
bool "Allow SPL to load args for kernel in falcon mode"
depends on (SPL_OS_BOOT || SPL_LOAD_FIT_OPENSBI_OS_BOOT) && !SPL_OS_BOOT_SECURE

View File

@@ -340,7 +340,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 (IS_ENABLED(CONFIG_SPL_OS_BOOT) && IS_ENABLED(CONFIG_SPL_BOOTI)) {
ulong start, size;
if (!booti_setup((ulong)header, &start, &size, 0)) {
@@ -354,7 +354,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 (IS_ENABLED(CONFIG_SPL_OS_BOOT) &&
IS_ENABLED(CONFIG_SPL_BOOTZ)) {
ulong start, end;
if (!bootz_setup((ulong)header, &start, &end)) {