Re: [PATCH 3/5] drm: convert drivers to use of_graph_get_remote_node

From: Russell King - ARM Linux
Date: Mon Feb 06 2017 - 12:34:57 EST


On Mon, Feb 06, 2017 at 05:23:06PM +0000, Liviu Dudau wrote:
> On Mon, Feb 06, 2017 at 11:09:49AM -0600, Rob Herring wrote:
> > On Mon, Feb 06, 2017 at 10:29:33AM +0000, Liviu Dudau wrote:
> > > On Fri, Feb 03, 2017 at 09:36:33PM -0600, Rob Herring wrote:
> > > > - /* add the remote encoder port as component */
> > > > - port = of_graph_get_remote_port_parent(ep);
> > > > - of_node_put(ep);
> > > > - if (!port || !of_device_is_available(port)) {
> > > > - of_node_put(port);
> > > > - return -EAGAIN;
> > >
> > > The HDLCD change looks reasonable except for this -EAGAIN business. I'll have to
> > > test your changes on my setup to see how this affects having the encoder as a module.
> >
> > What are you expecting to happen with -EAGAIN? This one was a bit of an
> > oddball.
>
> When both the HDLCD and the TDA998x drivers are compiled as modules, the
> order in which they are inserted can be somewhat random (due to testing).

Not really "due to testing" but if you run a real distro, they tend to
have a multi-threaded behaviour when loading kernel modules at boot.

> It is at that time when you want the probe of HDLCD to be retried on the
> insmod-ing of the tda998x.ko rather than fail entirely.

-EAGAIN doesn't get you that, and in any case, solving that problem is
exactly why the component API exists - so that DRM only comes up once
all the necessary components are available.

-EAGAIN also doesn't get you that from inside a probe function - such
an error will be reported in the kernel log, and no further action
will be taken (the device driver probe will be failed, and not
automatically retried.

The only case that we automatically retry is if a driver returns
-EPROBE_DEFER. Everything else causes a probe failure.

--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.