Hi Simon,
On Fri, 28 Mar 2025 at 11:36, Simon Glass <[email protected]> wrote: > > The logic of this has become too confusing. > > The primary issue with the patch is that U-Boot needs to set up a > bloblist in the first phase where BLOBLIST is enabled. Subsequent > phases can then use that bloblist. > > But the first phase of U-Boot cannot assume that one exists. > > Reverting this commit seems like a better starting point for getting > things working for all use-cases. > > Note: The work to tidy this up is apparently underway. For this series, > a revert is the easiest path. > > This reverts commit 66131310d8ff1ba228f989b41bd8812f43be41c3. > > https://lore.kernel.org/u-boot/CAPnjgZ3hMHtiH=f5zkxnniofv_-vfryq1gn7qz5hku8wjo8...@mail.gmail.com/ > > Signed-off-by: Simon Glass <[email protected]> > --- > > (no changes since v1) > Is this same as something we discussed in the thread below? https://lore.kernel.org/u-boot/[email protected]/ I am a bit confused since I think we had agreed that it should not be reverted. Regards, Raymond > common/bloblist.c | 64 ++++++++++++++-------------------------------- > include/bloblist.h | 10 -------- > 2 files changed, 19 insertions(+), 55 deletions(-) > > diff --git a/common/bloblist.c b/common/bloblist.c > index bc752b5fdf5..3f8c7f669a7 100644 > --- a/common/bloblist.c > +++ b/common/bloblist.c > @@ -500,57 +500,37 @@ int bloblist_reloc(void *to, uint to_size) > return 0; > } > > -/* > - * Weak default function for getting bloblist from boot args. > - */ > -int __weak xferlist_from_boot_arg(ulong __always_unused addr, > - ulong __always_unused size) > -{ > - return -ENOENT; > -} > - > int bloblist_init(void) > { > bool fixed = IS_ENABLED(CONFIG_BLOBLIST_FIXED); > int ret = -ENOENT; > - ulong addr = 0, size; > - /* > - * If U-Boot is not in the first phase, an existing bloblist must be > - * at a fixed address. > - */ > - bool from_addr = fixed && !xpl_is_first_phase(); > - /* > - * If U-Boot is in the first phase that an arch custom routine should > - * install the bloblist passed from previous loader to this fixed > + ulong addr, size; > + bool expected; > + > + /** > + * We don't expect to find an existing bloblist in the first phase of > + * U-Boot that runs. Also we have no way to receive the address of an > + * allocated bloblist from a previous stage, so it must be at a fixed > * address. > */ > - bool from_boot_arg = fixed && xpl_is_first_phase(); > - > + expected = fixed && !xpl_is_first_phase(); > if (xpl_prev_phase() == PHASE_TPL && !IS_ENABLED(CONFIG_TPL_BLOBLIST)) > - from_addr = false; > + expected = false; > if (fixed) > addr = IF_ENABLED_INT(CONFIG_BLOBLIST_FIXED, > CONFIG_BLOBLIST_ADDR); > size = CONFIG_BLOBLIST_SIZE; > - > - if (from_boot_arg) > - ret = xferlist_from_boot_arg(addr, size); > - else if (from_addr) > + if (expected) { > ret = bloblist_check(addr, size); > - > - if (ret) > - log_warning("Bloblist at %lx not found (err=%d)\n", > - addr, ret); > - else > - /* Get the real size */ > - size = gd->bloblist->total_size; > - > + if (ret) { > + log_warning("Expected bloblist at %lx not found > (err=%d)\n", > + addr, ret); > + } else { > + /* Get the real size, if it is not what we expected */ > + size = gd->bloblist->total_size; > + } > + } > if (ret) { > - /* > - * If we don't have a bloblist from a fixed address, or the > one > - * in the fixed address is not valid. we must allocate the > - * memory for it now. > - */ > if (CONFIG_IS_ENABLED(BLOBLIST_ALLOC)) { > void *ptr = memalign(BLOBLIST_ALIGN, size); > > @@ -558,8 +538,7 @@ int bloblist_init(void) > return log_msg_ret("alloc", -ENOMEM); > addr = map_to_sysmem(ptr); > } else if (!fixed) { > - return log_msg_ret("BLOBLIST_FIXED is not enabled", > - ret); > + return log_msg_ret("!fixed", ret); > } > log_debug("Creating new bloblist size %lx at %lx\n", size, > addr); > @@ -572,11 +551,6 @@ int bloblist_init(void) > return log_msg_ret("ini", ret); > gd->flags |= GD_FLG_BLOBLIST_READY; > > -#ifdef DEBUG > - bloblist_show_stats(); > - bloblist_show_list(); > -#endif > - > return 0; > } > > diff --git a/include/bloblist.h b/include/bloblist.h > index dfe6a700e5e..191b9aa1d54 100644 > --- a/include/bloblist.h > +++ b/include/bloblist.h > @@ -500,14 +500,4 @@ static inline int bloblist_maybe_init(void) > */ > int bloblist_check_reg_conv(ulong rfdt, ulong rzero, ulong rsig); > > -/** > - * xferlist_from_boot_arg() - Get bloblist from the boot args and relocate it > - * to the specified address. > - * > - * @addr: Address for the bloblist > - * @size: Size of space reserved for the bloblist > - * Return: 0 if OK, else on error > - */ > -int xferlist_from_boot_arg(ulong addr, ulong size); > - > #endif /* __BLOBLIST_H */ > -- > 2.43.0 >

