Hi Tom, On Thu, Mar 12, 2026 at 16:58, Tom Rini <[email protected]> wrote:
> On Thu, Mar 12, 2026 at 10:10:06AM +0100, Mattijs Korpershoek wrote: >> Hi Tom, >> >> Thank you for the patch. >> >> On Tue, Mar 10, 2026 at 10:26, Tom Rini <[email protected]> wrote: >> >> > The DFU_WRITE_ALT symbol is used both directly and indirectly (via >> > UPDATE_COMMON) for EFI capsule updates (FIT or raw), but does not depend >> > on DFU itself. Move this symbol outside of "if DFU" to remove a Kconfig >> > dependency problem. >> >> Looking at drivers/dfu/dfu_alt.c both dfu_write_by_name() and >> dfu_write_by_alt() seem to rely on functions from drivers/dfu/dfu.c such >> as dfu_init_env_entities(), dfu_get_entity() and more. >> >> Looking at UPDATE_COMMON, I see: >> config UPDATE_COMMON >> bool >> select DFU_WRITE_ALT >> imply CMD_TFTPBOOT >> >> And if we check the code in common/update.c, we can see that >> dfu_write_by_name() is called. >> >> So fit_update() calls >> dfu_write_by_name() which calls >> dfu_init_env_entities() which might no longer be defined when >> applying this patch. >> >> I'm not sure how is this supposed to work. Do we have to stub >> dfu_init_env_entities() ? > > So, to me the challenge is that DFU_TFTP, UPDATE_FIT and UPDATE_TFTP all > are the three users of UPDATE_COMMON and so DFU_WRITE_ALT. The first two > depend on DFU, but the latter does not. And there's nothing in-tree > using it, either (but it does compile I believe, or allyesconfig would > have failed). I see, thank you for explaining. I've done some testing on sandbox with the following diff: diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig index 280f9c9cfe77..5bc114bad064 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig @@ -16,9 +16,6 @@ CONFIG_EFI_SECURE_BOOT=y CONFIG_EFI_RT_VOLATILE_STORE=y CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y CONFIG_EFI_CAPSULE_ON_DISK=y -CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y -CONFIG_EFI_CAPSULE_AUTHENTICATE=y -CONFIG_EFI_CAPSULE_CRT_FILE="board/sandbox/capsule_pub_key_good.crt" CONFIG_BUTTON_CMD=y CONFIG_FIT=y CONFIG_FIT_CIPHER=y @@ -50,6 +47,7 @@ CONFIG_LOGF_FUNC=y CONFIG_DISPLAY_BOARDINFO_LATE=y # CONFIG_BOARD_INIT is not set CONFIG_STACKPROTECTOR=y +CONFIG_UPDATE_TFTP=y CONFIG_ANDROID_AB=y CONFIG_CMD_CPU=y CONFIG_CMD_UFETCH=y @@ -201,7 +199,6 @@ CONFIG_AES_SOFTWARE=y CONFIG_DM_DEMO=y CONFIG_DM_DEMO_SIMPLE=y CONFIG_DM_DEMO_SHAPE=y -CONFIG_DFU_SF=y CONFIG_DMA=y CONFIG_DMA_CHANNELS=y CONFIG_SANDBOX_DMA=y @@ -362,7 +359,6 @@ CONFIG_CONSOLE_ROTATION=y CONFIG_CONSOLE_TRUETYPE=y CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y CONFIG_I2C_EDID=y -CONFIG_VIDEO_SANDBOX_SDL=y CONFIG_VIDEO_BRIDGE=y CONFIG_VIDEO_BRIDGE_LVDS_CODEC=y CONFIG_VIDEO_DSI_HOST_SANDBOX=y We indeed have: $ grep -e CONFIG_DFU -e DFU_TFTP -e UPDATE_FIT -e UPDATE_TFTP .config CONFIG_UPDATE_TFTP=y CONFIG_UPDATE_TFTP_CNT_MAX=0 CONFIG_UPDATE_TFTP_MSEC_MAX=100 CONFIG_DFU_WRITE_ALT=y Reviewed-by: Mattijs Korpershoek <[email protected]> > > -- > Tom

