Hi Raymond, On Mon, 10 Jun 2024 at 13:13, Raymond Mao <raymond....@linaro.org> wrote: > > Hi Simon, > > On Tue, 4 Jun 2024 at 23:27, Simon Glass <s...@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 <s...@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 > > I am a bit confused by this comment - It means you will not use OF_BLOBLIST, > but actually you are using it below. Is it a typo?
Basically it would be cleaner to have a separate, phase-specific Kconfig control as to whether the DT can come from the bloblist (I can't remember the Kconfig name I suggested, nor the patch as it was last year sometime). But for now I am adding this hack to get a few boards working again. > >> >> + * 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))) { >> ret = bloblist_maybe_init(); >> if (!ret) { >> gd->fdt_blob = bloblist_find(BLOBLISTT_CONTROL_FDT, >> 0); >> -- >> 2.34.1 >> > > Regards, > Raymond Regards, Simon