On Mon, Oct 28, 2019 at 5:00 PM Saravana Kannan <saravanak@xxxxxxxxxx> wrote: > > Some devices need to be initialized really early and can't wait for > driver core or drivers to be functional. These devices are typically > initialized without creating a struct device for their device nodes. > > If a supplier ends up being one of these devices, skip trying to add > device links to them. > > Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx> > --- > drivers/of/property.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/of/property.c b/drivers/of/property.c > index f16f85597ccc..21c9d251318a 100644 > --- a/drivers/of/property.c > +++ b/drivers/of/property.c > @@ -1038,6 +1038,7 @@ static int of_link_to_phandle(struct device *dev, struct device_node *sup_np, > struct device *sup_dev; > int ret = 0; > struct device_node *tmp_np = sup_np; > + int is_populated; > > of_node_get(sup_np); > /* > @@ -1062,9 +1063,10 @@ static int of_link_to_phandle(struct device *dev, struct device_node *sup_np, > return -EINVAL; > } > sup_dev = get_dev_from_fwnode(&sup_np->fwnode); > + is_populated = of_node_check_flag(sup_np, OF_POPULATED); > of_node_put(sup_np); > if (!sup_dev) > - return -EAGAIN; > + return is_populated ? 0 : -EAGAIN; You're only using the flag in one spot and a comment would be good here, so I'd just do: if (of_node_check_flag(sup_np, OF_POPULATED)) return 0; /* Early device without a struct device */ > if (!device_link_add(dev, sup_dev, dl_flags)) > ret = -EAGAIN; > put_device(sup_dev); > -- > 2.24.0.rc0.303.g954a862665-goog >