All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukas Wunner <lukas@wunner.de>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Linux PM list <linux-pm@vger.kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.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>,
	"Luis R. Rodriguez" <mcgrof@suse.com>
Subject: Re: [RFC/RFT][PATCH v2 5/7] PM / runtime: Flag to indicate PM sleep transitions in progress
Date: Tue, 13 Sep 2016 00:52:53 +0200	[thread overview]
Message-ID: <20160912225253.GA1033@wunner.de> (raw)
In-Reply-To: <6063056.2MKrxSTWdb@vostro.rjw.lan>

On Mon, Sep 12, 2016 at 11:25:36PM +0200, Rafael J. Wysocki wrote:
> On Monday, September 12, 2016 04:07:27 PM Lukas Wunner wrote:
> > On Thu, Sep 08, 2016 at 11:29:48PM +0200, Rafael J. Wysocki wrote:
> > > Introduce a new flag in struct dev_pm_info, pm_sleep_in_progress, to
> > > indicate that runtime PM has been disabled because of a PM sleep
> > > transition in progress.
> > [...]
> > > That will allow helpers like pm_runtime_get_sync() to be called
> > > during system sleep transitions without worrying about possible
> > > error codes they may return because runtime PM is disabled at
> > > that point.
> > 
> > I have a suspicion that this patch papers over the direct_complete bug
> > I reported Sep 10 and that the patch is unnecessary once that bug is
> > fixed.
> 
> It doesn't paper over anything, but it may not be necessary anyway.
> 
> > AFAICS, runtime PM is only disabled in two places during the system
> > sleep process: In __device_suspend() for devices using direct_complete,
> > and __device_suspend_late() for all devices.
> > 
> > In both of these phases (dpm_suspend() and dpm_suspend_late()), the
> > device tree is walked bottom-up. Since we've reordered consumers to
> > the back of dpm_list, they will be treated *before* their suppliers.
> > Thus, runtime PM is disabled on the consumers first, and only later
> > on the suppliers.
> > 
> > Then how can it be that runtime PM is already disabled on the supplier?
> 
> Actually, I think that this was a consequence of a bug in
> device_reorder_to_tail() that was present in the previous iteration
> of the patchset (it walked suppliers instead of consumers).
> 
> > The only scenario I can imagine is that the supplier chose to exercise
> > direct_complete, thus was pm_runtime_disabled() in the __device_suspend()
> > phase, and the consumer did *not* choose to exercise direct_complete and
> > later tried to runtime resume its suppliers and itself.
> > 
> > I assume this patch is a replacement for Marek's [v2 08/10].
> > @Marek, does this scenario match with what you witnessed?
> 
> It is not strictly a replacement for it.  The Marek's patch was the
> reason to post it, but I started to think about this earlier.
> 
> Some people have complained to me about having to deal with error codes
> returned by the runtime PM framework during system suspend, so I thought
> it might be useful to deal with that too.
> 
> That said it probably is not necessary right now.

Understood, thanks for providing this context which was unknown to me.

I'm wondering if it's necessary to introduce a new "pm_sleep_in_progress"
flag. We've already got "is_prepared", "is_suspended", "is_late_suspended",
"is_noirq_suspended", so we should have a pretty good idea of the fact
that the device is going to sleep and which stage it's in.

E.g. (dev->power.direct_complete || dev->power.is_suspended) covers a bit
more than the time frame when runtime PM is disabled for system sleep,
but might perhaps still suffice as a proxy.

Should a new flag be unavoidable, setting it directly in
__device_suspend_late(), device_resume_early(), __device_suspend()
and device_resume() would result in a smaller patch. (E.g. you
wouldn't have to modify the prototype of pm_runtime_enable().)

Thanks,

Lukas

  reply	other threads:[~2016-09-12 22:52 UTC|newest]

Thread overview: 147+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20160913095858eucas1p267ec2397c9e4577f94557e4a38498164@eucas1p2.samsung.com>
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 [this message]
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
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-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  0:59                 ` Luis R. Rodriguez
2016-11-10  7:14                 ` Laurent Pinchart
2016-11-10 22:04                   ` Luis R. Rodriguez
2016-11-10 22:04                     ` Luis R. Rodriguez
2016-11-10 22:40                     ` Greg Kroah-Hartman
2016-11-10 22:40                       ` Greg Kroah-Hartman
2016-11-11  0:08                       ` Laurent Pinchart
2016-11-11  0:08                         ` Laurent Pinchart
2016-11-13 10:59                         ` Greg Kroah-Hartman
2016-11-13 10:59                           ` Greg Kroah-Hartman
2016-11-14 14:50                           ` Luis R. Rodriguez
2016-11-14 14:50                             ` Luis R. Rodriguez
2016-11-14  8:15                         ` Geert Uytterhoeven
2016-11-14  8:15                           ` Geert Uytterhoeven
2016-11-10  8:46                 ` Geert Uytterhoeven
2016-11-10 22:12                   ` Luis R. Rodriguez
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=20160912225253.GA1033@wunner.de \
    --to=lukas@wunner.de \
    --cc=broonie@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=khilman@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=mcgrof@suse.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.