linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Luis R. Rodriguez" <mcgrof@kernel.org>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: "Luis R. Rodriguez" <mcgrof@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Lukas Wunner <lukas@wunner.de>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Linux PM list <linux-pm@vger.kernel.org>,
	Alan Stern <stern@rowland.harvard.edu>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Tomeu Vizoso <tomeu.vizoso@collabora.com>,
	Mark Brown <broonie@kernel.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Kevin Hilman <khilman@kernel.org>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Grant Likely <grant.likely@secretlab.ca>,
	Mauro Carvalho Chehab <mchehab@osg.samsung.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Andrzej Hajda <a.hajda@samsung.com>,
	Christoph Hellwig <hch@infradead.org>,
	Arnd Bergmann <arnd@arndb.de>
Subject: Re: [PATCH v5 2/5] driver core: Functional dependencies tracking support
Date: Thu, 10 Nov 2016 23:04:07 +0100	[thread overview]
Message-ID: <20161110220407.GQ13978@wotan.suse.de> (raw)
In-Reply-To: <2305706.WydXUuMppH@avalon>

On Thu, Nov 10, 2016 at 09:14:32AM +0200, Laurent Pinchart wrote:
> Hi Luis,
> 
> On Wednesday 09 Nov 2016 16:59:30 Luis R. Rodriguez wrote:
> > On Wed, Nov 9, 2016 at 4:43 PM, Rafael J. Wysocki wrote:
> > > On Mon, Nov 7, 2016 at 10:22 PM, Luis R. Rodriguez wrote:
> > >> On Thu, Oct 27, 2016 at 05:25:51PM +0200, Greg Kroah-Hartman wrote:
> > >>> On Wed, Oct 26, 2016 at 01:19:02PM +0200, Lukas Wunner wrote:
> > >>>> Hi Rafael,
> > >>>> 
> > >>>> sorry for not responding to v5 of your series earlier, just sending
> > >>>> this out now in the hope that it reaches you before your travels.
> > >>>> 
> > >>>> On Mon, Oct 10, 2016 at 02:51:04PM +0200, Rafael J. Wysocki wrote:
> > >>>>> - Modify device_links_check_suppliers(),
> > >>>>> device_links_driver_bound(),
> > >>>>> 
> > >>>>>   device_links_no_driver(), device_links_driver_cleanup(),
> > >>>>>   device_links_busy(), and device_links_unbind_consumers() to walk
> > >>>>>   link lists under device_links_lock (to make the new "driver
> > >>>>>   presence tracking" mechanism work reliably).
> > >>>>
> > >>>> This change might increase boot time if drivers return -EPROBE_DEFER.
> > >>> 
> > >>> "might"?  Please verify this before guessing....
> > >>> 
> > >>> And don't make this more complex than needed before actually determining
> > >>> a real issue.
> > >> 
> > >> As clarified by Rafael at Plumbers, this functional dependencies
> > >> framework assumes your driver / subsystem supports deferred probe,
> > > 
> > > It isn't particularly clear what you mean by "support" here.
> > 
> > I noted some folks had reported issues, and you acknowledged that if
> > deferred probe was used in some drivers and if this created an issue
> > the same issue would be seen with this framework. AFAICT there are two
> > possible issues to consider:
> > 
> > 1) the one Geert Uytterhoeven noted. Again I'll note what he had mentioned
> > [0].
> > 
> >   "Some drivers / subsystems don’t support deferred probe yet, such failures
> > usually don’t blow up, but cause subtle malfunctioning. Example, an
> > Ethernet phy could not get its interrupt as the primary IRQ chip had not
> > been probed yet, it reverted to polling though. Sub-optimal." [0]
> > 
> > [0]
> > https://lists.linuxfoundation.org/pipermail/ksummit-discuss/2016-August/003
> > 425.html
> > 
> > Geert can you provide more details?
> 
> This is a more global issue. In many cases drivers depend on optional 
> resources. They are able to operate in a degraded mode (reduced feature set, 
> reduced performances, ...) when those resources are not present. They can 
> easily determine at probe time whether those resources are present, but have 
> no way to know, in case they're absent, whether they will be present at some 
> point in the near future (due to another driver probing the device providing 
> the resource for instance) or if they will never be present (for instance 
> because the required driver is missing).

I see thanks, so -EPROBE_DEFER assumes a late_initcall() would suffice to load
all necessary requirements.

> In the first case it would make sense  to defer probe,

So if the assumption is correct then it -EPROBE_DEFER should work.

> in the latter case deferring probe forever for missing 
> optional resources would prevent the device from being probed successfully at 
> all.

Right I see. And the driver core has no way to know what things *may* be
needed.

> The functional dependencies tracking patch series isn't meant to address this 
> issue.

Right, however it does track functional dependencies for suspend/run time PM
and we were certainly in hope this could help with probe ordering *later* in
the future. This is a separate topic. But more on point, the issue here is that
this framework relies on -EPROBE_DEFER -- so the issues discussed with it still
exist and should be properly documented.

> I can imagine a framework that would notify drivers of optional 
> resource availability after probe time, but it would come at a high cost for 
> drivers as switching between modes of operation at runtime based on the 
> availability of such resources would be way more complex than a mechanism 
> based on probe deferral.

Right, I see.

This is more forward looking, but -- if we had an annotation in Kconfig/turned
to a mod info section, or to start off with just a driver MODULE_SUGGESTS() macro
to start off with it might suffice for the driver core to request_module()
annotated dependencies, such requests could be explicitly suggested as
synchronous so init + probe do run together (as-is today), after which it
could know that all possible drivers that needed to be loaded should now be
loaded. If this sounds plausible to help, do we have drivers where we can
test this on? For instance, since the functional dependency framework
annotates functional dependencies for consumers/providers for suspend/resume
and un time PM could such MODULE_SUGGESTS() annotations be considered on the
consumers to suggest the provider drivers so their own probe yields to their
providers to try first ?

  Luis

> > 2) Since deferred probe relies on late_initcall() if your driver must
> > load earlier than this deferred probe can create an issue. Andrzej had
> > you identified a driver that ran into this and had issues ? If not
> > this seems like a semantics thing we should consider in extending the
> > documentation for drivers so that driver writers are aware of this
> > limitation. I would suppose candidates for this would be anything not
> > using module_init() or late_initcall() on their inits and have a
> > probe.
> > 
> > >> if it does not support its not clear what will happen....
> > > 
> > > I don't see any problems here, but if you see any, please just say
> > > what they are.
> > > 
> > >> We have no explicit semantics to check if a driver / subsystem
> > >> supports deferred probe.
> > > 
> > > That's correct, but then do we need it?
> > 
> > We can determine this by reviewing the two items above.
> 
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> 

-- 
Luis Rodriguez, SUSE LINUX GmbH
Maxfeldstrasse 5; D-90409 Nuernberg

  reply	other threads:[~2016-11-10 22:04 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-08 21:25 [RFC/RFT][PATCH v2 0/7] Functional dependencies between devices Rafael J. Wysocki
2016-09-08 21:26 ` [RFC/RFT][PATCH v2 1/7] driver core: Add a wrapper around __device_release_driver() Rafael J. Wysocki
2016-09-08 21:27 ` [RFC/RFT][PATCH v2 2/7] driver core: Functional dependencies tracking support Rafael J. Wysocki
2016-09-09  8:25   ` Ulf Hansson
2016-09-09 12:06     ` Mark Brown
2016-09-09 14:13       ` Ulf Hansson
2016-09-15  1:11     ` Rafael J. Wysocki
2016-09-11 13:40   ` Lukas Wunner
2016-09-11 20:43     ` Lukas Wunner
2016-09-14  1:21       ` Rafael J. Wysocki
2016-09-14  8:28         ` Lukas Wunner
2016-09-14 13:17           ` Rafael J. Wysocki
2016-09-08 21:28 ` [RFC/RFT][PATCH v2 3/7] PM / sleep: Make async suspend/resume of devices use device links Rafael J. Wysocki
2016-09-10 13:31   ` Lukas Wunner
2016-09-10 22:12     ` Rafael J. Wysocki
2016-09-08 21:29 ` [RFC/RFT][PATCH v2 4/7] PM / runtime: Pass flags argument to __pm_runtime_disable() Rafael J. Wysocki
2016-09-08 21:29 ` [RFC/RFT][PATCH v2 5/7] PM / runtime: Flag to indicate PM sleep transitions in progress Rafael J. Wysocki
2016-09-12 14:07   ` Lukas Wunner
2016-09-12 21:25     ` Rafael J. Wysocki
2016-09-12 22:52       ` Lukas Wunner
2016-09-13  7:21       ` Marek Szyprowski
2016-09-13 23:59         ` Rafael J. Wysocki
2016-09-08 21:30 ` [RFC/RFT][PATCH v2 6/7] PM / runtime: Use device links Rafael J. Wysocki
2016-09-12  9:47   ` Lukas Wunner
2016-09-12 13:57     ` Rafael J. Wysocki
2016-09-14  1:19       ` Rafael J. Wysocki
2016-09-08 21:31 ` [RFC/RFT][PATCH v2 7/7] PM / runtime: Optimize the use of " Rafael J. Wysocki
2016-09-08 21:35 ` [RFC/RFT][PATCH v2 0/7] Functional dependencies between devices Rafael J. Wysocki
2016-09-10 11:39 ` Lukas Wunner
2016-09-10 22:04   ` Rafael J. Wysocki
2016-09-13 17:57     ` Lukas Wunner
2016-09-13 23:18       ` Rafael J. Wysocki
2016-09-18 12:39         ` Lukas Wunner
     [not found] ` <CGME20160913095858eucas1p267ec2397c9e4577f94557e4a38498164@eucas1p2.samsung.com>
2016-09-13  9:58   ` Marek Szyprowski
2016-09-13 22:41     ` Rafael J. Wysocki
2016-09-18 11:23       ` Lukas Wunner
2016-09-15 22:03 ` [RFC/RFT][PATCH v3 0/5] " Rafael J. Wysocki
2016-09-15 22:04   ` [Resend][RFC/RFT][PATCH v3 1/5] driver core: Add a wrapper around __device_release_driver() Rafael J. Wysocki
2016-09-15 22:06   ` [RFC/RFT][PATCH v3 2/5] driver core: Functional dependencies tracking support Rafael J. Wysocki
2016-09-16  7:53     ` Marek Szyprowski
2016-09-16 12:06       ` Rafael J. Wysocki
2016-09-16 12:33     ` [Update][RFC/RFT][PATCH " Rafael J. Wysocki
2016-09-19 22:46       ` Lukas Wunner
2016-09-23 13:03         ` Lukas Wunner
2016-09-23 13:42         ` Rafael J. Wysocki
2016-09-26 16:51           ` Lukas Wunner
2016-09-27 12:16             ` Rafael J. Wysocki
2016-09-27  8:54       ` Lukas Wunner
2016-09-27 11:52         ` Rafael J. Wysocki
2016-09-28 10:43           ` Lukas Wunner
2016-09-28 11:31             ` Rafael J. Wysocki
2016-09-29 10:36               ` Lukas Wunner
2016-09-15 22:06   ` [RFC/RFT][PATCH v3 3/5] PM / sleep: Make async suspend/resume of devices use device links Rafael J. Wysocki
2016-09-15 22:07   ` [RFC/RFT][PATCH v3 4/5] PM / runtime: Use " Rafael J. Wysocki
2016-09-15 22:07   ` [RFC/RFT][PATCH v3 5/5] PM / runtime: Optimize the use of " Rafael J. Wysocki
2016-09-16  7:25   ` [RFC/RFT][PATCH v3 0/5] Functional dependencies between devices Marek Szyprowski
2016-09-16  7:57     ` Marek Szyprowski
2016-09-16 12:04       ` Rafael J. Wysocki
2016-09-27 12:34   ` Lukas Wunner
2016-09-28  0:33     ` Rafael J. Wysocki
2016-09-28 11:42       ` Lukas Wunner
2016-09-29  0:51         ` Rafael J. Wysocki
2016-11-15 18:50           ` Lukas Wunner
2016-09-29  0:24 ` [PATCH v4 " Rafael J. Wysocki
2016-09-29  0:25   ` [Resend][PATCH v4 1/5] driver core: Add a wrapper around __device_release_driver() Rafael J. Wysocki
2016-09-29  0:38   ` [PATCH v4 2/5] driver core: Functional dependencies tracking support Rafael J. Wysocki
2016-10-01  7:43     ` Lukas Wunner
2016-10-01 23:32       ` Rafael J. Wysocki
2016-09-29  0:38   ` [Resend][PATCH v4 3/5] PM / sleep: Make async suspend/resume of devices use device links Rafael J. Wysocki
2016-09-29  0:40   ` [PATCH v4 4/5] PM / runtime: Use " Rafael J. Wysocki
2016-09-29  0:41   ` [Rebase][PATCH v4 5/5] PM / runtime: Optimize the use of " Rafael J. Wysocki
2016-09-29  6:58   ` [PATCH v4 0/5] Functional dependencies between devices Marek Szyprowski
2016-09-29 12:27     ` Rafael J. Wysocki
2016-10-02 23:13   ` Lukas Wunner
2016-10-10 12:36 ` [PATCH v5 " Rafael J. Wysocki
2016-10-10 12:37   ` [Resend][PATCH v5 1/5] driver core: Add a wrapper around __device_release_driver() Rafael J. Wysocki
2016-10-10 12:51   ` [PATCH v5 2/5] driver core: Functional dependencies tracking support Rafael J. Wysocki
2016-10-26 11:19     ` Lukas Wunner
2016-10-27 15:25       ` Greg Kroah-Hartman
2016-10-28  9:57         ` Lukas Wunner
2016-11-07 21:22         ` Luis R. Rodriguez
2016-11-08  6:45           ` Greg Kroah-Hartman
2016-11-08 19:21             ` Luis R. Rodriguez
2016-11-08 19:43               ` Greg Kroah-Hartman
2016-11-08 20:58                 ` Luis R. Rodriguez
2016-11-09  6:45                   ` Greg Kroah-Hartman
2016-11-09  9:36                     ` Andrzej Hajda
2016-11-09  9:41                       ` Greg Kroah-Hartman
2016-11-13 16:58                   ` Lukas Wunner
2016-11-10  0:43           ` Rafael J. Wysocki
2016-11-10  0:59             ` Luis R. Rodriguez
2016-11-10  7:14               ` Laurent Pinchart
2016-11-10 22:04                 ` Luis R. Rodriguez [this message]
2016-11-10 22:40                   ` Greg Kroah-Hartman
2016-11-11  0:08                     ` Laurent Pinchart
2016-11-13 10:59                       ` Greg Kroah-Hartman
2016-11-14 14:50                         ` Luis R. Rodriguez
2016-11-14  8:15                       ` Geert Uytterhoeven
2016-11-10  8:46               ` Geert Uytterhoeven
2016-11-10 22:12                 ` Luis R. Rodriguez
2016-10-27 15:32     ` Greg Kroah-Hartman
2016-11-07 21:39     ` Luis R. Rodriguez
2016-11-10  1:07       ` Rafael J. Wysocki
2016-11-10  7:05       ` Laurent Pinchart
2016-11-10 23:09         ` Luis R. Rodriguez
2016-11-13 17:34       ` Lukas Wunner
2016-11-14 13:48         ` Luis R. Rodriguez
2016-11-14 15:48           ` Lukas Wunner
2016-11-14 16:00             ` Luis R. Rodriguez
2016-10-10 12:54   ` [PATCH v5 3/5] PM / sleep: Make async suspend/resume of devices use device links Rafael J. Wysocki
2016-10-10 12:56   ` [PATCH v5 4/5] PM / runtime: Use " Rafael J. Wysocki
2016-10-20 13:17     ` [Update][PATCH " Rafael J. Wysocki
2016-10-10 12:57   ` [Rebase][PATCH v5 5/5] PM / runtime: Optimize the use of " Rafael J. Wysocki
2016-10-18 10:46   ` [PATCH v5 0/5] Functional dependencies between devices Marek Szyprowski
2016-10-19 11:57     ` Rafael J. Wysocki
2016-10-20 10:21       ` Marek Szyprowski
2016-10-20 12:54         ` Rafael J. Wysocki
2016-10-27 15:32   ` Greg Kroah-Hartman
     [not found]   ` <5811F0CF.5000204@huawei.com>
2016-10-28  9:39     ` Lukas Wunner
2016-11-02 20:55       ` Hanjun Guo
2016-10-30 16:22 ` [PATCH v6 " Rafael J. Wysocki
2016-10-30 16:28   ` [Resend][PATCH v6 3/5] PM / sleep: Make async suspend/resume of devices use device links Rafael J. Wysocki
2016-10-30 16:29   ` [Resend][PATCH v6 1/5] driver core: Add a wrapper around __device_release_driver() Rafael J. Wysocki
2016-10-30 16:32   ` [PATCH v6 2/5] driver core: Functional dependencies tracking support Rafael J. Wysocki
2016-10-30 16:32   ` [PATCH v6 4/5] PM / runtime: Use device links Rafael J. Wysocki
2016-12-18 14:01     ` Lukas Wunner
2016-12-18 15:53       ` Rafael J. Wysocki
2016-12-18 16:37         ` Lukas Wunner
2016-12-19 12:38           ` Rafael J. Wysocki
2016-10-30 16:32   ` [Resend][PATCH v6 5/5] PM / runtime: Optimize the use of " Rafael J. Wysocki
2016-10-30 16:40   ` [PATCH v6 0/5] Functional dependencies between devices Rafael J. Wysocki
2016-10-31 17:47   ` Greg Kroah-Hartman
2016-11-01  3:50     ` Rafael J. Wysocki
2016-11-02  7:58     ` Marek Szyprowski
2016-11-05 12:10       ` Greg Kroah-Hartman
2016-11-07 21:15       ` Luis R. Rodriguez
2016-11-08  6:36         ` Marek Szyprowski
2016-11-08 20:14           ` Luis R. Rodriguez

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=20161110220407.GQ13978@wotan.suse.de \
    --to=mcgrof@kernel.org \
    --cc=a.hajda@samsung.com \
    --cc=arnd@arndb.de \
    --cc=broonie@kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=geert@linux-m68k.org \
    --cc=grant.likely@secretlab.ca \
    --cc=gregkh@linuxfoundation.org \
    --cc=hch@infradead.org \
    --cc=khilman@kernel.org \
    --cc=lars@metafoo.de \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=m.szyprowski@samsung.com \
    --cc=mchehab@osg.samsung.com \
    --cc=rafael@kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=stern@rowland.harvard.edu \
    --cc=tomeu.vizoso@collabora.com \
    --cc=ulf.hansson@linaro.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).