On Mon, May 11, 2026 at 02:13:52AM +0900, Sang-Heon Jeon wrote:
> Commit 60f20d84dc81 ("of/fdt: Rework early_init_dt_scan_chosen() to
> call directly") changed early_init_dt_scan_chosen() to be called
> directly instead of via of_scan_flat_dt(). After this change,
> early_init_dt_scan_chosen_ppc() does not behave as intended in either
> case below:
> 
> - /chosen(or /chosen@0) exists: early_init_dt_scan_chosen() always 
>   succeeds, so early_init_dt_scan_chosen_ppc() then reads properties
>   from the root node (first iteration) instead of chosen node.
> 
> - /chosen does not exist:
>   - Until commit 064e32dc5b03 ("of: fdt: Honor CONFIG_CMDLINE* even without
>     /chosen node, take 2"), early_init_dt_scan_chosen() returns -ENOENT
>     and early_init_dt_scan_chosen_ppc() returns 0. So of_scan_flat_dt()
>     iterates over all remaining nodes. Not a bug but unnecessary.
>   - After above commit, early_init_dt_scan_chosen() returns 0 and
>     early_init_dt_scan_chosen_ppc() returns 1. So it reads properties
>     from the root node (first iteration) instead of chosen node, same as
>     the chosen node exist case above.
> 
> Instead of using of_scan_flat_dt() for chosen node handling, first call
> early_init_dt_scan_chosen() directly to handle common chosen node
> properties. Then call early_init_dt_scan_chosen_ppc(), which is updated
> to handle powerpc-specific chosen node properties.
> 
> Both now look up chosen node directly to avoid reading from the wrong node.
> 
> Fixes: 60f20d84dc81 ("of/fdt: Rework early_init_dt_scan_chosen() to call 
> directly")
> Signed-off-by: Sang-Heon Jeon <[email protected]>

Reviewed-by: Rob Herring (Arm) <[email protected]>

Reply via email to