From: Philip Oberfichtner <pro@denx.de>
To: Tom Rini <trini@konsulko.com>
Cc: u-boot@lists.denx.de, Anshul Dalal <anshuld@ti.com>,
Dario Binacchi <dario.binacchi@amarulasolutions.com>,
Greg Malysa <malysagreg@gmail.com>,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
Jerome Forissier <jerome.forissier@linaro.org>,
Marek Vasut <marex@denx.de>,
Nathan Barrett-Morrison <nathan.morrison@timesys.com>,
Paul Kocialkowski <contact@paulk.fr>, Peng Fan <peng.fan@nxp.com>,
Peter Robinson <pbrobinson@gmail.com>,
Simon Glass <sjg@chromium.org>
Subject: Re: [PATCH v4 1/3] Makefile: Add size check for u-boot-with-spl.bin
Date: Tue, 29 Jul 2025 14:27:49 +0200 [thread overview]
Message-ID: <aIi-Rb3C_1i_IQDr@antares> (raw)
In-Reply-To: <20250728222531.GA1754718@bill-the-cat>
Hi Tom,
On Mon, Jul 28, 2025 at 04:25:31PM -0600, Tom Rini wrote:
> On Tue, Jul 08, 2025 at 12:39:57PM +0200, Philip Oberfichtner wrote:
>
> > Like other images, u-boot-with-spl.bin may be subject to size
> > restrictions. Extend CONFIG_SPL_SIZE_LIMIT to handle this case.
> >
> > Signed-off-by: Philip Oberfichtner <pro@denx.de>
> > ---
> >
> > Notes:
> > Changes in v4: none
> >
> > Changes in v3:
> > Reuse existing SPL_SIZE_LIMIT instead of implementing a new option
> >
> > Changes in v2: none
> >
> > Makefile | 1 +
> > common/spl/Kconfig | 2 +-
> > 2 files changed, 2 insertions(+), 1 deletion(-)
>
> This is not quite right enough, sorry. This causes a number of boards
> (evb-ast2600 ibm-sbp1 stm32746g-eval_spl stm32f746-disco_spl
> stm32f769-disco_spl) which have size checks and are fine to now fail
> their size checks, presumably because they're checking the "wrong" file
> now or similar.
Thanks for pointing that out. To sum it up: If those boards use
SPL_SIZE_LIMIT to restrict the size of an SPL-only image, then
u-boot-with-spl.bin, of course, can be too large and the build fails.
Plus in our previous discussion, we figured out why using
BOARD_SIZE_LIMIT also isn't suitable:
https://lore.kernel.org/u-boot/aD2EflR9DRYG-MY5@antares/
So from here I really don't see any better way than introducing yet
another CONFIG_*SIZE_LIMIT option.
But maybe we can however simplify and deduplicate some of the code. What
do you think about something like that (I have not yet tested it, just
a rough idea so far):
diff --git a/Makefile b/Makefile
index 32c036d531d..6f75b371e11 100644
--- a/Makefile
+++ b/Makefile
@@ -372,7 +372,7 @@ endif
define size_check
actual=$$( wc -c $1 | awk '{print $$1}'); \
limit=$$( printf "%d" $2 ); \
- if test $$actual -gt $$limit; then \
+ if test $$limit -gt 0 && test $$actual -gt $$limit; then \
echo "$1 exceeds file size limit:" >&2; \
echo " limit: $$(printf %#x $$limit) bytes" >&2; \
echo " actual: $$(printf %#x $$actual) bytes" >&2; \
@@ -939,30 +939,6 @@ LDPPFLAGS += \
#########################################################################
#########################################################################
-ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
-BOARD_SIZE_CHECK= @ $(call size_check,$@,$(CONFIG_BOARD_SIZE_LIMIT))
-else
-BOARD_SIZE_CHECK =
-endif
-
-ifneq ($(CONFIG_SPL_SIZE_LIMIT),0x0)
-SPL_SIZE_CHECK = @$(call size_check,$@,$$(tools/spl_size_limit))
-else
-SPL_SIZE_CHECK =
-endif
-
-ifneq ($(CONFIG_TPL_SIZE_LIMIT),0x0)
-TPL_SIZE_CHECK = @$(call size_check,$@,$(CONFIG_TPL_SIZE_LIMIT))
-else
-TPL_SIZE_CHECK =
-endif
-
-ifneq ($(CONFIG_VPL_SIZE_LIMIT),0x0)
-VPL_SIZE_CHECK = @$(call size_check,$@,$(CONFIG_VPL_SIZE_LIMIT))
-else
-VPL_SIZE_CHECK =
-endif
-
# Statically apply RELA-style relocations (currently arm64 only)
# This is useful for arm64 where static relocation needs to be performed on
# the raw binary, but certain simulators only accept an ELF file (but don't
@@ -1266,7 +1242,7 @@ endif
%.imx: $(IMX_DEPS) %.bin
$(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
- $(BOARD_SIZE_CHECK)
+ @ $(call size_check,$@,$(CONFIG_BOARD_SIZE_LIMIT))
%.vyb: %.imx
$(Q)$(MAKE) $(build)=arch/arm/cpu/armv7/vf610 $@
@@ -1367,12 +1343,12 @@ endif
u-boot-nodtb.bin: u-boot FORCE
$(call if_changed,objcopy_uboot)
- $(BOARD_SIZE_CHECK)
+ @ $(call size_check,$@,$(CONFIG_BOARD_SIZE_LIMIT))
u-boot.ldr: u-boot
$(CREATE_LDR_ENV)
$(LDR) -T $(CONFIG_LDR_CPU) -c $@ $< $(LDR_FLAGS)
- $(BOARD_SIZE_CHECK)
+ @ $(call size_check,$@,$(CONFIG_BOARD_SIZE_LIMIT))
# binman
# ---------------------------------------------------------------------------
@@ -1498,7 +1474,7 @@ u-boot-dtb.img u-boot.img u-boot.kwb u-boot.pbl u-boot-ivt.img: \
$(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SANDBOX),dts/dt.dtb) \
,$(UBOOT_BIN)) FORCE
$(call if_changed,mkimage)
- $(BOARD_SIZE_CHECK)
+ @ $(call size_check,$@,$(CONFIG_BOARD_SIZE_LIMIT))
ifeq ($(CONFIG_SPL_LOAD_FIT_FULL),y)
MKIMAGEFLAGS_u-boot.itb =
@@ -1513,12 +1489,12 @@ u-boot.itb: u-boot-nodtb.bin \
$(if $(CONFIG_MULTI_DTB_FIT),$(FINAL_DTB_CONTAINER)) \
$(U_BOOT_ITS) FORCE
$(call if_changed,mkfitimage)
- $(BOARD_SIZE_CHECK)
+ @ $(call size_check,$@,$(CONFIG_BOARD_SIZE_LIMIT))
endif
u-boot-with-spl.kwb: u-boot.bin spl/u-boot-spl.bin FORCE
$(call if_changed,mkimage)
- $(BOARD_SIZE_CHECK)
+ @ $(call size_check,$@,$(CONFIG_BOARD_SIZE_LIMIT))
u-boot.dis: u-boot
$(OBJDUMP) -d $< > $@
@@ -1535,7 +1511,7 @@ OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
--pad-to=$(CONFIG_SPL_PAD_TO)
u-boot-with-spl.bin: $(SPL_IMAGE) $(SPL_PAYLOAD) FORCE
$(call if_changed,pad_cat)
- $(SPL_SIZE_CHECK)
+ @$(call size_check,$@,$$(tools/spl_size_limit))
ifeq ($(CONFIG_ARCH_LPC32XX)$(CONFIG_SPL),yy)
MKIMAGEFLAGS_lpc32xx-spl.img = -T lpc32xximage -a $(CONFIG_SPL_TEXT_BASE)
@@ -2108,7 +2084,7 @@ u-boot.lds: $(LDSCRIPT) prepare FORCE
spl/u-boot-spl.bin: spl/u-boot-spl
@:
- $(SPL_SIZE_CHECK)
+ @$(call size_check,$@,$$(tools/spl_size_limit))
spl/u-boot-spl-dtb.bin: spl/u-boot-spl
@:
@@ -2133,14 +2109,14 @@ spl/boot.bin: spl/u-boot-spl
tpl/u-boot-tpl.bin: tpl/u-boot-tpl
@:
- $(TPL_SIZE_CHECK)
+ @$(call size_check,$@,$(CONFIG_TPL_SIZE_LIMIT))
tpl/u-boot-tpl: tools prepare $(if $(CONFIG_TPL_OF_CONTROL),dts/dt.dtb)
$(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.xpl all
vpl/u-boot-vpl.bin: vpl/u-boot-vpl
@:
- $(VPL_SIZE_CHECK)
+ @$(call size_check,$@,$(CONFIG_VPL_SIZE_LIMIT))
vpl/u-boot-vpl: tools prepare $(if $(CONFIG_TPL_OF_CONTROL),dts/dt.dtb)
$(Q)$(MAKE) obj=vpl -f $(srctree)/scripts/Makefile.xpl all
next prev parent reply other threads:[~2025-07-29 12:28 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-08 10:39 [PATCH v4 0/3] Add Onion Omega2/2+ board support Philip Oberfichtner
2025-07-08 10:39 ` [PATCH v4 1/3] Makefile: Add size check for u-boot-with-spl.bin Philip Oberfichtner
2025-07-08 11:31 ` Ilias Apalodimas
2025-07-08 14:34 ` Philip Oberfichtner
2025-07-10 8:32 ` Ilias Apalodimas
2025-07-28 22:25 ` Tom Rini
2025-07-29 12:27 ` Philip Oberfichtner [this message]
2025-07-29 14:22 ` Tom Rini
2025-07-30 12:41 ` Philip Oberfichtner
2025-07-08 10:39 ` [PATCH v4 2/3] mips: serial: Silence "unused variable" warning Philip Oberfichtner
2025-07-08 10:39 ` [PATCH v4 3/3] mips: mt7628: Add Onion Omega2/2+ board support Philip Oberfichtner
2025-07-17 8:04 ` [PATCH v4 0/3] " Philip Oberfichtner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aIi-Rb3C_1i_IQDr@antares \
--to=pro@denx.de \
--cc=anshuld@ti.com \
--cc=contact@paulk.fr \
--cc=dario.binacchi@amarulasolutions.com \
--cc=ilias.apalodimas@linaro.org \
--cc=jerome.forissier@linaro.org \
--cc=malysagreg@gmail.com \
--cc=marex@denx.de \
--cc=nathan.morrison@timesys.com \
--cc=pbrobinson@gmail.com \
--cc=peng.fan@nxp.com \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.