On Fri, Sep 29, 2023 at 02:57:42AM +0200, Heinrich Schuchardt wrote: > On 9/27/23 23:44, Jonas Karlman wrote: > > spl_board_prepare_for_boot() is not called before jumping/invoking atf, > > optee, opensbi or linux images. > > > > Jump to image at the end of board_init_r() to fix this. > > > > Signed-off-by: Jonas Karlman <jo...@kwiboo.se> > > --- > > This patch have dependencies on the following patches: > > > > spl: add __noreturn attribute to spl_invoke_opensbi function > > https://patchwork.ozlabs.org/patch/1827057/ > > > > spl: add __noreturn attribute to spl_invoke_atf function > > https://patchwork.ozlabs.org/patch/1831366/ > > > > spl: Drop the switch() statement for OS selection > > from the "spl: Preparation for Universal Payload" series > > https://patchwork.ozlabs.org/patch/1839731/ > > --- > > common/spl/spl.c | 12 +++++++----- > > 1 file changed, 7 insertions(+), 5 deletions(-) > > > > diff --git a/common/spl/spl.c b/common/spl/spl.c > > index f7608f14e365..79c39820262a 100644 > > --- a/common/spl/spl.c > > +++ b/common/spl/spl.c > > @@ -647,6 +647,8 @@ void board_init_r(gd_t *dummy1, ulong dummy2) > > BOOT_DEVICE_NONE, > > BOOT_DEVICE_NONE, > > }; > > + typedef void __noreturn (*jump_to_image_t)(struct spl_image_info *); > > + jump_to_image_t jump_to_image = &jump_to_image_no_args; > > struct spl_image_info spl_image; > > int ret, os; > > > > @@ -735,20 +737,20 @@ void board_init_r(gd_t *dummy1, ulong dummy2) > > } else if (CONFIG_IS_ENABLED(ATF) && os == IH_OS_ARM_TRUSTED_FIRMWARE) { > > debug("Jumping to U-Boot via ARM Trusted Firmware\n"); > > spl_fixup_fdt(spl_image_fdt_addr(&spl_image)); > > - spl_invoke_atf(&spl_image); > > + jump_to_image = &spl_invoke_atf; > > } else if (CONFIG_IS_ENABLED(OPTEE_IMAGE) && os == IH_OS_TEE) { > > debug("Jumping to U-Boot via OP-TEE\n"); > > spl_board_prepare_for_optee(spl_image_fdt_addr(&spl_image)); > > - jump_to_image_optee(&spl_image); > > + jump_to_image = &jump_to_image_optee; > > } else if (CONFIG_IS_ENABLED(OPENSBI) && os == IH_OS_OPENSBI) { > > debug("Jumping to U-Boot via RISC-V OpenSBI\n"); > > - spl_invoke_opensbi(&spl_image); > > + jump_to_image = &spl_invoke_opensbi; > > } else if (CONFIG_IS_ENABLED(OS_BOOT) && os == IH_OS_LINUX) { > > debug("Jumping to Linux\n"); > > if (IS_ENABLED(CONFIG_SPL_OS_BOOT)) > > spl_fixup_fdt((void *)SPL_PAYLOAD_ARGS_ADDR); > > spl_board_prepare_for_linux(); > > - jump_to_image_linux(&spl_image); > > + jump_to_image = &jump_to_image_linux; > > } else { > > debug("Unsupported OS image.. Jumping nevertheless..\n"); > > } > > @@ -788,7 +790,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) > > } > > > > spl_board_prepare_for_boot(); > > - jump_to_image_no_args(&spl_image); > > + jump_to_image(&spl_image); > > } > > > > /* > > In SPL we are fighting for every byte of binary size. > > What is the impact of this change on the code size? > > I would expect that your increasing it; especially if only one of the > CONFIG_OPTIONS is enabled. > > If so, NAK to this patch despite all elegance.
We aren't _that_ strict, no. And a very quick peek shows that this seems fine overall. Since you raised the question I'll do a quick world build but socfpga_agilex_vab (as a config I had size change results for in front of me for something else) shrank by 4 bytes with just the prerequsites and this patch applied. -- Tom
signature.asc
Description: PGP signature