linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Saravana Kannan <saravanak@google.com>
To: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" 
	<devicetree@vger.kernel.org>, Rob Herring <robh+dt@kernel.org>,
	Frank Rowand <frowand.list@gmail.com>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/4] of: property: Do not link to disabled devices
Date: Thu, 16 Apr 2020 13:56:55 -0700	[thread overview]
Message-ID: <CAGETcx8_BUirqE4Nzj-U4hxVozFdX4n4dryF=D1OX_+EYQo=jA@mail.gmail.com> (raw)
In-Reply-To: <55611d3e028b6ea418cba1ef9d94fe7bf1e1b1fd.camel@suse.de>

On Thu, Apr 16, 2020 at 4:37 AM Nicolas Saenz Julienne
<nsaenzjulienne@suse.de> wrote:
>
> On Wed, 2020-04-15 at 11:30 -0700, Saravana Kannan wrote:
> > On Wed, Apr 15, 2020 at 8:06 AM Nicolas Saenz Julienne
> > <nsaenzjulienne@suse.de> wrote:
> > > When creating a consumer/supplier relationship between two devices, make
> > > sure the supplier node is actually active. Otherwise this will create a
> > > device link that will never be fulfilled. This, in the worst case
> > > scenario, will hang the system during boot.
> > >
> > > Note that, in practice, the fact that a device-tree represented
> > > consumer/supplier relationship isn't fulfilled will not prevent devices
> > > from successfully probing.
> > >
> > > Fixes: a3e1d1a7f5fc ("of: property: Add functional dependency link from DT
> > > bindings")
> > > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> > > ---
> > >  drivers/of/property.c | 7 +++++++
> > >  1 file changed, 7 insertions(+)
> > >
> > > diff --git a/drivers/of/property.c b/drivers/of/property.c
> > > index a8c2b13521b27..487685ff8bb19 100644
> > > --- a/drivers/of/property.c
> > > +++ b/drivers/of/property.c
> > > @@ -1052,6 +1052,13 @@ static int of_link_to_phandle(struct device *dev,
> > > struct device_node *sup_np,
> > >                 return -ENODEV;
> > >         }
> > >
> > > +       /* Don't allow linking a device node as consumer of a disabled node
> > > */
> > > +       if (!of_device_is_available(sup_np)) {
> > > +               dev_dbg(dev, "Not linking to %pOFP - Not available\n",
> > > sup_np);
> > > +               of_node_put(sup_np);
> > > +               return -ENODEV;
> > > +       }
> > > +
> >
> > Again, surprised I haven't hit this situation with the number of
> > disabled devices I have.
>
> I'll point out to the example that triggered this issue on my reply to patch
> #4.
>
> > The idea is right, but the implementation can be better. I think this
> > check needs to be the first check after the of_node_get(sup_np) --
> > before we do any of the "walk up to find the device" part.
> >
> > Otherwise, you could have a supplier device (the one with compatible
> > prop) that's available with a child node that's disabled. And the
> > phandle could be pointing to that disabled child node. If you don't do
> > this as the first check, you might still try to form a pointless
> > device link. It won't affect probing (because the actual struct device
> > will probe) but it's still a pointless device link and a pointless
> > delay in probing, etc.
>
> Agree, I'll update the patch.

I thought about it more. I think you should do this check in the loop
that's walking up to the "compatible" node because any node in that
path having status=disabled would/should disable this supplier if I
understand DT correctly. Technically we need to do this all the way up
to the root, but we'll do that if we have actual reports of that
causing problems. Otherwise, it's just wasteful.

-Saravana

  reply	other threads:[~2020-04-16 20:57 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-15 15:05 [PATCH 0/4] of: property: fw_devlink misc fixes Nicolas Saenz Julienne
2020-04-15 15:05 ` [PATCH 1/4] of: property: Fix create device links for all child-supplier dependencies Nicolas Saenz Julienne
2020-04-15 18:20   ` Saravana Kannan
2020-04-15 18:22   ` Saravana Kannan
2020-04-16 11:32     ` Nicolas Saenz Julienne
2020-04-15 15:05 ` [PATCH 2/4] of: property: Do not link to disabled devices Nicolas Saenz Julienne
2020-04-15 18:30   ` Saravana Kannan
2020-04-16 11:37     ` Nicolas Saenz Julienne
2020-04-16 20:56       ` Saravana Kannan [this message]
2020-04-15 15:05 ` [PATCH 3/4] of: property: Move of_link_to_phandle() Nicolas Saenz Julienne
2020-04-15 15:05 ` [PATCH 4/4] of: property: Avoid linking devices with circular dependencies Nicolas Saenz Julienne
2020-04-15 18:52   ` Saravana Kannan
2020-04-16 16:01     ` Nicolas Saenz Julienne
2020-04-16 20:57       ` Saravana Kannan
2020-04-16 20:58       ` [PATCH v1] of: property: Don't retry device_link_add() upon failure Saravana Kannan
2020-04-17 16:50         ` Nicolas Saenz Julienne
2020-04-17 18:16         ` Rob Herring
2020-04-17 20:30           ` Saravana Kannan
2020-04-28 17:11         ` Rob Herring
2020-04-15 18:17 ` [PATCH 0/4] of: property: fw_devlink misc fixes Saravana Kannan
2020-04-16 11:02   ` Nicolas Saenz Julienne
2020-04-16 20:56     ` Saravana Kannan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAGETcx8_BUirqE4Nzj-U4hxVozFdX4n4dryF=D1OX_+EYQo=jA@mail.gmail.com' \
    --to=saravanak@google.com \
    --cc=devicetree@vger.kernel.org \
    --cc=frowand.list@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nsaenzjulienne@suse.de \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).