On Tue, Jul 16, 2024 at 11:48 AM Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > On Wed, Jul 10, 2024 at 10:14 PM Stephen Boyd <sboyd@xxxxxxxxxx> wrote: > > We'd like to apply overlays to the root node in KUnit so we can test > > platform devices created as children of the root node. > > > > On some architectures (powerpc), the root node isn't marked with > > OF_POPULATED_BUS. If an overlay tries to modify the root node on these > > platforms it will fail, while on other platforms, such as ARM, it will > > succeed. This is because the root node is marked with OF_POPULATED_BUS > > by of_platform_default_populate_init() calling > > of_platform_default_populate() with NULL as the first argument. > > > > Loosen the requirement here so that platform devices can be created for > > nodes created as children of the root node via DT overlays even if the > > platform bus wasn't populated for the root node. > > > > Reviewed-by: Rob Herring (Arm) <robh@xxxxxxxxxx> > > Cc: Saravana Kannan <saravanak@xxxxxxxxxx> > > Signed-off-by: Stephen Boyd <sboyd@xxxxxxxxxx> > > --- a/drivers/of/platform.c > > +++ b/drivers/of/platform.c > > @@ -732,11 +732,14 @@ static int of_platform_notify(struct notifier_block *nb, > > struct of_reconfig_data *rd = arg; > > struct platform_device *pdev_parent, *pdev; > > bool children_left; > > + struct device_node *parent; > > > > switch (of_reconfig_get_state_change(action, rd)) { > > case OF_RECONFIG_CHANGE_ADD: > > - /* verify that the parent is a bus */ > > - if (!of_node_check_flag(rd->dn->parent, OF_POPULATED_BUS)) > > + parent = rd->dn->parent; > > + /* verify that the parent is a bus (or the root node) */ > > + if (!of_node_is_root(parent) && > > + of_node_check_flag(parent, OF_POPULATED_BUS)) > > Oh, you inverted the check for of_node_check_flag(); was that > intentional? Re-adding the "!" fixes all issues for me. I have sent a fix. https://lore.kernel.org/a9ada686e1f1c6f496e423deaf108f1bcfd94d7d.1721123679.git.geert+renesas@xxxxxxxxx/ Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds