On Wed, Sep 1, 2021 at 9:55 PM Saravana Kannan <saravanak@xxxxxxxxxx> wrote: > > We don't want fw_devlink creating device links for bus devices as > they'll never probe. So mark those device node with this flag. > > Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx> > --- > drivers/of/platform.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/of/platform.c b/drivers/of/platform.c > index 74afbb7a4f5e..42b3936d204a 100644 > --- a/drivers/of/platform.c > +++ b/drivers/of/platform.c > @@ -392,6 +392,22 @@ static int of_platform_bus_create(struct device_node *bus, > if (!dev || !of_match_node(matches, bus)) > return 0; > > + /* > + * If the bus node has only one compatible string value and it has > + * matched as a bus node, it's never going to get probed by a device > + * driver. So flag it as such so that fw_devlink knows not to create > + * device links with this device. > + * > + * This doesn't catch all devices that'll never probe, but this is good > + * enough for now. > + * > + * This doesn't really work for PPC because of how it uses > + * of_platform_bus_probe() to add normal devices. So ignore PPC cases. > + */ > + if (!IS_ENABLED(CONFIG_PPC) && > + of_property_count_strings(bus, "compatible") == 1) > + bus->fwnode.flags |= FWNODE_FLAG_NOT_DEVICE; This looks fragile relying on 1 compatible string, and the DT flags in this code have been fragile too. I'm pretty sure we have cases of simple-bus or simple-mfd that also have another compatible. Couldn't we solve this with a simple driver? Make 'simple-pm-bus' driver work for other cases? BTW, this patch doesn't even work for simple-pm-bus. A driver for simple-bus may cause issues if there's a more specific driver to bind to as we don't handle that. It's simply whichever matches first. Rob