All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Allen Yu <alleny@nvidia.com>, Pavel Machek <pavel@ucw.cz>,
	Len Brown <len.brown@intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/1] PM / Runtime: let rpm_resume fail if rpm disabled and device suspended.
Date: Fri, 20 Jun 2014 15:33:25 +0200	[thread overview]
Message-ID: <2531875.1yYGe4dtjp@vostro.rjw.lan> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1406191020140.1247-100000@iolanthe.rowland.org>

On Thursday, June 19, 2014 10:34:01 AM Alan Stern wrote:
> On Thu, 19 Jun 2014, Rafael J. Wysocki wrote:
> 
> > Well, we used to have the notion that runtime_status is not meaningful for
> > devices with dev->power.disable_depth greater than 0 (except for the special
> > case in the suspend code path where we know why it is greater than 0).  I think
> > it was useful. :-)
> 
> Did we really have that notion?  My memory is a little cloudy, but I 
> thought we decided that runtime_status would not be meaningful when 
> dev->power.runtime_error was set -- not when dev->power.disable_depth 
> was greater than 0.  Am I mixed up?

Well, we clearly did, because we added things like

pm_runtime_set_active()
pm_runtime_set_suspended()

which allow the status to be changed without doing anything to the device
while power.disable_depth is greater than 0.

> In any case, I think it is reasonable to regard runtime_status as 
> meaningful when disable_depth > 0.

So we need to remove the above helpers and modify all code using them.

> The PM core isn't allowed to invoke the runtime callbacks at such times,
> that's all.  This makes perfect sense for a device that doesn't support
> power management and hence must always be at full power.  Or when a driver
> knows that runtime_status is out of agreement with the device's actual
> power state and wants to update runtime_status directly.

That's what it is supposed to use the above helpers for, isn't it?

Devices that don't support power management, but that we want to use
drivers supporting power management with are clearly a special case, so
perhaps we should treat them as such instead of trying to modity the core
to silently cover this case too automatically?

> > > So pm_runtime_resume() and pm_request_resume() would still fail, but 
> > > pm_runtime_get() and pm_runtime_get_sync() would work?  I'm not sure 
> > > about the reason for this distinction.
> > 
> > The meaning of pm_runtime_get()/pm_runtime_get_sync() is "prevent the
> > device from being suspended from now on and resume it if necessary" while
> > "runtime PM disabled and runtime_status == RPM_ACTIVE" may be interpreted
> > as "not necessary to resume", so it is reasonable to special case this
> > particular situation for these particular routines IMHO.
> 
> By the same reasoning, the meaning of pm_runtime_resume() is "resume 
> the device now if necsesary".  Since "runtime PM disabled and 
> runtime_status == RPM_ACTIVE" means "not necessary to resume", isn't it 
> logical for pm_runtime_resume() also to succeed under that condition?

My point really is that pm_runtime_get()/pm_runtime_get_sync() actually carry
out two operations, (1) incrementing the usage counter and (2) resuming the
device if need be.  It is not particularly clear if/when the result of (2)
should determine the return value of (1) and (2) together, so there is some
freedom in that area which we can use to cover special cases.  That's all.

I'm perfectly fine with leaving the code as is, though.  You wanted to change it. :-)

Rafael


  reply	other threads:[~2014-06-20 13:15 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-14 10:03 [PATCH 1/1] PM / Runtime: let rpm_resume fail if rpm disabled and device suspended Allen Yu
2014-06-14 10:03 ` Allen Yu
2014-06-14 14:32 ` Alan Stern
2014-06-14 14:32   ` Alan Stern
2014-06-16  3:03   ` Allen Yu
2014-06-16 14:43     ` Alan Stern
2014-06-16 17:40 ` Alan Stern
2014-06-16 17:40   ` Alan Stern
2014-06-16 21:29   ` Rafael J. Wysocki
2014-06-17 14:11     ` Alan Stern
2014-06-17 14:11       ` Alan Stern
2014-06-17 20:26       ` Rafael J. Wysocki
2014-06-17 20:37         ` Rafael J. Wysocki
2014-06-17 20:46           ` Rafael J. Wysocki
2014-06-18 15:30             ` Alan Stern
2014-06-18 15:30               ` Alan Stern
2014-06-18 23:57               ` Rafael J. Wysocki
2014-06-19  8:23                 ` Allen Yu
2014-06-19  8:23                   ` Allen Yu
2014-06-19 13:55                   ` Rafael J. Wysocki
2014-06-19 14:34                     ` Allen Yu
2014-06-19 14:34                       ` Allen Yu
2014-06-20 14:04                       ` Rafael J. Wysocki
2014-06-19 14:56                   ` Alan Stern
2014-06-19 19:25                     ` Kevin Hilman
2014-06-19 19:25                       ` Kevin Hilman
2014-06-19 20:13                       ` Alan Stern
2014-06-20 13:20                         ` Rafael J. Wysocki
2014-06-20 14:48                           ` Alan Stern
2014-06-20 21:34                             ` Kevin Hilman
2014-06-20 21:34                               ` Kevin Hilman
2014-06-22 13:40                               ` Rafael J. Wysocki
2014-06-22 13:24                             ` Rafael J. Wysocki
2014-06-20 21:31                         ` Kevin Hilman
2014-06-20 21:31                           ` Kevin Hilman
2014-06-21 13:34                           ` Alan Stern
2014-06-22 13:35                             ` Rafael J. Wysocki
2014-06-23 18:57                             ` Kevin Hilman
2014-06-23 18:57                               ` Kevin Hilman
2014-06-19 14:34                 ` Alan Stern
2014-06-19 14:34                   ` Alan Stern
2014-06-20 13:33                   ` Rafael J. Wysocki [this message]
2014-06-20 14:43                     ` Alan Stern
2014-06-20 14:43                       ` Alan Stern
2014-06-22 13:21                       ` Rafael J. Wysocki
2014-06-22 16:45                         ` Alan Stern
2014-06-22 16:45                           ` Alan Stern
2014-06-24 23:38                           ` Rafael J. Wysocki
2014-06-27 18:27                             ` [RFC] Add "rpm_not_supported" flag Alan Stern
2014-06-27 19:22                               ` Greg Kroah-Hartman
2014-06-27 20:11                                 ` Alan Stern
2014-06-27 20:50                                   ` Greg Kroah-Hartman
2014-06-28 15:32                                     ` Alan Stern
2014-06-30 13:52                                       ` Rafael J. Wysocki
2014-06-30 14:42                                         ` Alan Stern
2014-07-01 23:18                                           ` Rafael J. Wysocki
2014-07-02 14:27                                             ` Alan Stern
2014-07-02 17:56                                               ` Greg Kroah-Hartman
2014-07-03 21:16                                               ` Rafael J. Wysocki
2014-07-03 21:17                                                 ` Alan Stern
2014-07-16 22:40                                               ` Rafael J. Wysocki
2014-07-16 23:03                                                 ` Greg Kroah-Hartman
2014-07-16 23:27                                                   ` Rafael J. Wysocki
2014-07-17 14:27                                                     ` Alan Stern
2014-07-18  0:48                                                       ` Rafael J. Wysocki

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=2531875.1yYGe4dtjp@vostro.rjw.lan \
    --to=rjw@rjwysocki.net \
    --cc=alleny@nvidia.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=stern@rowland.harvard.edu \
    /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.