
On Tue, 11 Jun 2024 at 13:54, Simon Glass sjg@chromium.org wrote:
Hi Raymond,
On Mon, 10 Jun 2024 at 13:13, Raymond Mao raymond.mao@linaro.org wrote:
Hi Simon,
On Tue, 4 Jun 2024 at 23:27, Simon Glass sjg@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@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.
I am a bit confused. First of all the comment is innapropriate. We went through a lengthy discussion on BLOBLIST/OF_BLOSLIST etc and, even Tom chimed in and we made up our minds. Why are you adding this comment now? Why do code comments have to illustrate your personal opinion -- which was rejected?
Grepping for OF_BLOBLIST, I can't find any matches, so is the above if a typo?
Thanks /Ilias
* 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