Re: [PATCH v2] nios2: Only use built-in devicetree blob if configured to do so

From: Rob Herring
Date: Wed Mar 27 2024 - 17:37:47 EST


On Fri, Mar 22, 2024 at 1:54 AM Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
>
> Starting with commit 7b937cc243e5 ("of: Create of_root if no dtb provided
> by firmware"), attempts to boot nios2 images with an external devicetree
> blob result in a crash.
>
> Kernel panic - not syncing: early_init_dt_alloc_memory_arch:
> Failed to allocate 72 bytes align=0x40
>
> For nios2, a built-in devicetree blob always overrides devicetree blobs
> provided by ROMMON/BIOS. This includes the new dummy devicetree blob.
> Result is that the dummy devicetree blob is used even if an external
> devicetree blob is provided. Since the dummy devicetree blob does not
> include any memory information, memory allocations fail, resulting in
> the crash.
>
> To fix the problem, only use the built-in devicetree blob if
> CONFIG_NIOS2_DTB_SOURCE_BOOL is enabled.
>
> Fixes: 7b937cc243e5 ("of: Create of_root if no dtb provided by firmware")
> Cc: Frank Rowand <frowand.list@xxxxxxxxx>
> Cc: Stephen Boyd <sboyd@xxxxxxxxxx>
> Cc: Rob Herring <robh@xxxxxxxxxx>
> Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx>
> ---
> v2: Mark 'dtb' as __maybe_unused
>
> arch/nios2/kernel/prom.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)

I don't love the ifdef, but seems to be the least invasive for 6.9.

Reviewed-by: Rob Herring <robh@xxxxxxxxxx>

I have a somewhat more invasive change which checks for top-level
compatible existing to decide whether to use the built-in. That's more
risky as it would affect everyone. We're already doing that elsewhere
and found 1 board that didn't have one.

Rob