diff mbox series

[RFC] k3: only require IMAGE_BOOT_FILES entries that the resolved bootloader provider actually deploys

Message ID 20260911070209.58601-1-francesco@dolcini.it
State New
Headers show
Series [RFC] k3: only require IMAGE_BOOT_FILES entries that the resolved bootloader provider actually deploys | expand

Commit Message

Francesco Dolcini Sept. 11, 2026, 7:02 a.m. UTC
From: Francesco Dolcini <francesco.dolcini@toradex.com>

IMAGE_BOOT_FILES on k3 machines unconditionally required two entries
that are only ever produced by u-boot-ti's own do_deploy:

- ti_logo_414x97_32bpp.bmp.gz (am62xx.inc, am62pxx.inc): installed only
  by do_deploy:append:am62xx()/do_deploy:append:am62pxx() in
  recipes-bsp/u-boot/u-boot-ti.inc.
- tiboot3-*-evm.bin (k3.inc): the naming scheme u-boot-ti's own
  uboot_deploy_config:append:k3r5()/uboot_deploy:append:k3r5() use for
  the reference EVM defconfigs, which preserve the tiboot3 basename as
  built from the board's defconfig.

Any BSP that overrides PREFERRED_PROVIDER_virtual/bootloader to a
different U-Boot recipe built from its own custom defconfig deploys
tiboot3 binaries (and, for am62xx/am62pxx, never deploys the splash
bmp at all) under a different naming, and ends up with boot file
entries that never get produced. For a literal filename entry (the
bmp case) this breaks wic/image boot-file assembly outright; for a
glob entry (the tiboot3 case) it silently contributes nothing. Either
way, downstream layers are left having to manually strip the entry
with IMAGE_BOOT_FILES:remove to "cope with" TI's own reference naming.

Only add each entry when the resolved bootloader provider actually is
one of the u-boot-ti* recipes that produce it.

Assisted-by: LLM
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
---
RFC: I noticed both of these while adjusting IMAGE_BOOT_FILES:remove
workarounds in a downstream layer to cope with these two entries when
using a non-u-boot-ti bootloader provider on k3 machines, and wanted
to flag the underlying issue upstream rather than just carry the
workaround silently. I don't plan to follow up on this thread myself,
so please feel free to take this patch, rework it, or fix the
underlying issue however you see fit if this approach isn't the one
you'd want.

 meta-ti-bsp/conf/machine/include/am62pxx.inc | 6 ++++--
 meta-ti-bsp/conf/machine/include/am62xx.inc  | 6 ++++--
 meta-ti-bsp/conf/machine/include/k3.inc      | 8 +++++++-
 3 files changed, 15 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/meta-ti-bsp/conf/machine/include/am62pxx.inc b/meta-ti-bsp/conf/machine/include/am62pxx.inc
index 6bf20ee43236..82ab22a5b751 100644
--- a/meta-ti-bsp/conf/machine/include/am62pxx.inc
+++ b/meta-ti-bsp/conf/machine/include/am62pxx.inc
@@ -16,5 +16,7 @@  MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "cnm-wave-fw"
 
 SERIAL_CONSOLES = "115200;ttyS2"
 
-# Bitmap image tarball for early splashscreen
-IMAGE_BOOT_FILES += "ti_logo_414x97_32bpp.bmp.gz"
+# Bitmap image tarball for early splashscreen. Only u-boot-ti's own do_deploy
+# installs this file, so skip requiring it when a different bootloader
+# recipe is selected (e.g. via PREFERRED_PROVIDER_virtual/bootloader).
+IMAGE_BOOT_FILES += "${@ 'ti_logo_414x97_32bpp.bmp.gz' if (d.getVar('PREFERRED_PROVIDER_virtual/bootloader') or '').startswith('u-boot-ti') else ''}"
diff --git a/meta-ti-bsp/conf/machine/include/am62xx.inc b/meta-ti-bsp/conf/machine/include/am62xx.inc
index fc20893bf1a2..14256b4ab5c7 100644
--- a/meta-ti-bsp/conf/machine/include/am62xx.inc
+++ b/meta-ti-bsp/conf/machine/include/am62xx.inc
@@ -8,8 +8,10 @@  MACHINE_FEATURES += "screen"
 require conf/machine/include/mesa-pvr.inc
 PREFERRED_PROVIDER_virtual/gpudriver ?= "${BSP_ROGUE_DRIVER_PROVIDER}"
 
-# Bitmap image tarball for early splashscreen
-IMAGE_BOOT_FILES += "ti_logo_414x97_32bpp.bmp.gz"
+# Bitmap image tarball for early splashscreen. Only u-boot-ti's own do_deploy
+# installs this file, so skip requiring it when a different bootloader
+# recipe is selected (e.g. via PREFERRED_PROVIDER_virtual/bootloader).
+IMAGE_BOOT_FILES += "${@ 'ti_logo_414x97_32bpp.bmp.gz' if (d.getVar('PREFERRED_PROVIDER_virtual/bootloader') or '').startswith('u-boot-ti') else ''}"
 
 TFA_BOARD = "lite"
 
diff --git a/meta-ti-bsp/conf/machine/include/k3.inc b/meta-ti-bsp/conf/machine/include/k3.inc
index 2ebbfb9e54f8..e3ec36e1c5c7 100644
--- a/meta-ti-bsp/conf/machine/include/k3.inc
+++ b/meta-ti-bsp/conf/machine/include/k3.inc
@@ -46,7 +46,13 @@  MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "ti-pka-fw"
 
 IMAGE_FSTYPES += "tar.xz wic.xz wic.bmap"
 
-IMAGE_BOOT_FILES += "${SPL_BINARYNAME} u-boot.${UBOOT_SUFFIX} tiboot3.bin tiboot3-*-evm.bin"
+IMAGE_BOOT_FILES += "${SPL_BINARYNAME} u-boot.${UBOOT_SUFFIX} tiboot3.bin"
+# tiboot3-*-evm.bin is the naming scheme u-boot-ti's own do_deploy uses for
+# the reference EVM defconfigs; a downstream bootloader recipe built from a
+# custom defconfig (e.g. via PREFERRED_PROVIDER_virtual/bootloader) deploys
+# tiboot3 binaries under its own naming instead, so only require this glob
+# when the resolved bootloader provider actually produces it.
+IMAGE_BOOT_FILES += "${@ 'tiboot3-*-evm.bin' if (d.getVar('PREFERRED_PROVIDER_virtual/bootloader') or '').startswith('u-boot-ti') else ''}"
 IMAGE_EFI_BOOT_FILES ?= "${IMAGE_BOOT_FILES}"
 
 EFI_PROVIDER ?= "grub-efi"