linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Luis R. Rodriguez" <mcgrof@kernel.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Andrzej Hajda <a.hajda@samsung.com>
Cc: "Luis R. Rodriguez" <mcgrof@kernel.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>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Grant Likely <grant.likely@secretlab.ca>,
	Mauro Carvalho Chehab <mchehab@osg.samsung.com>,
	Andrzej Hajda <a.hajda@samsung.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>
Subject: Re: [PATCH v5 2/5] driver core: Functional dependencies tracking support
Date: Tue, 8 Nov 2016 21:58:24 +0100	[thread overview]
Message-ID: <20161108205824.GA13978@wotan.suse.de> (raw)
In-Reply-To: <20161108194335.GA22680@kroah.com>

On Tue, Nov 08, 2016 at 08:43:35PM +0100, Greg Kroah-Hartman wrote:
> On Tue, Nov 08, 2016 at 08:21:04PM +0100, Luis R. Rodriguez wrote:
> > On Tue, Nov 08, 2016 at 07:45:41AM +0100, Greg Kroah-Hartman wrote:
> > > On Mon, Nov 07, 2016 at 10:22:50PM +0100, Luis R. Rodriguez wrote:
> > > > We have no explicit semantics to check if a driver / subsystem
> > > > supports deferred probe.
> > > 
> > > Why would we need such a thing?
> > 
> > It depends on the impact of a driver/subsystem not properly supporting
> > deffered probe, if this is no-op then such a need is not critical but
> > would be good to proactively inform developers / users so they avoid 
> > its use, if this will cause issues its perhaps best to make this a
> > no-op through a check. AFAICT reviewing implications of not supporting
> > deferred probe on drivers/subsytsems for this framework is not clearly
> > spelled out, if we start considering re-using this framework for probe
> > ordering I'd hate to see issues come up without this corner case being
> > concretely considered.
> 
> It should not matter to the driver core if a subsystem, or a driver,
> supports or does not support deferred probe.

That was my impression as well -- however Rafael noted this as an area
worth highlighting. So perhaps he can elaborate.

But at least as per my notes I do have here Geert Uytterhoeven reminding
us that:

  "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/003425.html

This sounds more like the existing deffered probe solution has detrimental
unexpected effects on some drivers / subsystems -- its not clear *why*, but
its worth reviewing if there are other drivers and seeing if we need this
annotation.

> It's a quick and simple solution to a complex problem that works well.

We all agree. The recent discussions over probe ordering are simply
optimization considerations -- should the time incurred to use deferred
probe be X and the time incurred when using an alternative is Y and we
determine the time Y is < X we have a winning alternative. Part of my
own big issue with deferred probe is a) its extremely non-deterministic,
b) it seems some folks have thought about similar problems and we might
really be able to do better. I'm not convinced that the functional
dependencies patches are the panacea for probe ordering, and while it
was not intended for that, some folks are assuming it could be. To really
vet this prospect we must really consider what other subsystem have done
and review other alternatives efforts.

> Yes, you can iterate a
> lot of times, but that's fine, we have time at boot to do that (and
> really, it is fast.)

Deferred probe is left for late_initcall() [1] -- this *assumes* that the
driver/subsystem can be loaded so late, and as per Andrzej this solution
isunacceptable/undesirable. So it would be unfair and incorrect to categorize
all drivers in the same boat, in fact given this lone fact it may be
worth revisiting the idea I mentioned about a capability aspect to support
a late deferred probe later. We tend to assume its fine, however it does
not seem to be the case.

[1] drivers/base/dd.c:late_initcall(deferred_probe_initcall);

> > Furthermore -- how does this framework compare to Andrzej's resource tracking
> > solution? I confess I have not had a chance yet to review yet but in light of
> > this question it would be good to know if Andrzej's framework also requires
> > deferred probe as similar concerns would exist there as well.
> 
> I have no idea what "framework" you are talking about here, do you have
> a pointer to patches?

I'm surprised given Andrzej did both Cc you on his patches [2] *and* chimed
in on Rafael's patches to indicate that we likely can integrate PM concerns
into his own "framework" [3]. There was no resolution to this discussion, however
its not IMHO sufficient to brush off Andrzej's points in particular because
Andrzej *is* indicating that his framework:

- Eliminates deferred probe and resulting late_initcall(), consumer registers
callbacks informing when given resources (clock, regulator, etc) becomes
available
- Properly handle resource disappearance (driver unbind, hotplug)
- Track resources which are not vital to the device, but can influence behavior
- Offers simplified resource allocation
- Can be easily expanded to help with power management

Granted I have not reviewed this yet but it at least was on my radar, and
I do believe its worth reviewing this further given the generally expressed
interest to see if we can have a common framework to address both ordering
problems, suspend and probe. At a quick glance the "ghost provider" idea
seems like a rather crazy idea but hey, there may be some goods in there.

It was sad both Andrzej and yourself could not attend the complex dependencies
tracks -- I think it would have been useful. I don't expect us to address a
resolution to probe ordering immediately -- but I am in the hopes we at least
can keep an open mind about the similarity of the problems and see if we can
aim for a clean elegant solution that might help both.

[2] https://lwn.net/Articles/625454/
[3] http://thread.gmane.org/gmane.linux.kernel/2087152

  Luis

  reply	other threads:[~2016-11-08 20:58 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 [this message]
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
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=20161108205824.GA13978@wotan.suse.de \
    --to=mcgrof@kernel.org \
    --cc=a.hajda@samsung.com \
    --cc=broonie@kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=geert@linux-m68k.org \
    --cc=grant.likely@secretlab.ca \
    --cc=gregkh@linuxfoundation.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=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).