[PATCH 5/9] fdt: Correct condition for bloblist existing
Ilias Apalodimas
ilias.apalodimas at linaro.org
Wed Jun 5 07:32:26 CEST 2024
Hi Simon,
On Wed, 5 Jun 2024 at 06:26, Simon Glass <sjg at chromium.org> wrote:
>
> On some boards, the bloblist is created in SPL once SDRAM is ready. It
> cannot be accessed until that point, so is not available early in SPL.
>
> Add a condition to avoid a hang in this case.
>
> This fixes a hang in chromebook_coral
>
> Fixes: 70fe2385943 ("fdt: Allow the devicetree to come from a bloblist")
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> lib/fdtdec.c | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/lib/fdtdec.c b/lib/fdtdec.c
> index b2c59ab3818..b141244e3b9 100644
> --- a/lib/fdtdec.c
> +++ b/lib/fdtdec.c
> @@ -1669,8 +1669,16 @@ int fdtdec_setup(void)
> {
> int ret = -ENOENT;
>
> - /* If allowing a bloblist, check that first */
> - if (CONFIG_IS_ENABLED(BLOBLIST)) {
> + /*
> + * If allowing a bloblist, check that first. This would be better
> + * handled with an OF_BLOBLIST Kconfig, but that caused far too much
> + * argument, so add a hack here, used e.g. by chromebook_coral
> + * The necessary test is whether the previous stage passed a bloblist,
> + * not whether this one creates one.
> + */
> + if (CONFIG_IS_ENABLED(OF_BLOBLIST) &&
> + (spl_prev_phase() != PHASE_TPL ||
> + !IS_ENABLED(CONFIG_TPL_BLOBLIST))) {
The same condition exists in common/bloblist.c.
Carve out a function --e.g
bool can can_enable_bloblist(void)
return ....
instead of open coding that
Thanks
/Ilias
> ret = bloblist_maybe_init();
> if (!ret) {
> gd->fdt_blob = bloblist_find(BLOBLISTT_CONTROL_FDT, 0);
> --
> 2.34.1
>
More information about the U-Boot
mailing list