LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Alan Stern <stern@rowland.harvard.edu>
To: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Cc: Linux-pm mailing list <linux-pm@vger.kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Scot Doyle <lkml14@scotdoyle.com>,
	Dan Williams <dan.j.williams@intel.com>,
	Julius Werner <jwerner@chromium.org>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Pratyush Anand <pratyush.anand@st.com>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	USB list <linux-usb@vger.kernel.org>,
	Kernel development list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 6/6] USB / PM: Allow USB devices to remain runtime-suspended when sleeping
Date: Tue, 31 Mar 2015 13:09:32 -0400 (EDT)	[thread overview]
Message-ID: <Pine.LNX.4.44L0.1503311259340.1453-100000@iolanthe.rowland.org> (raw)
In-Reply-To: <1427818501-10201-7-git-send-email-tomeu.vizoso@collabora.com>

On Tue, 31 Mar 2015, Tomeu Vizoso wrote:

> Have dev_pm_ops.prepare return 1 for USB devices, interfaces, endpoints
> and ports so that USB devices can remain runtime-suspended when the
> system goes to a sleep state.
> 
> Also enable runtime PM for endpoints, which is another requirement for
> the above to work.
> 
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>

...

> diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
> index b1fb9ae..1498faa 100644
> --- a/drivers/usb/core/usb.c
> +++ b/drivers/usb/core/usb.c
> @@ -300,7 +300,7 @@ static int usb_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
>  
>  static int usb_dev_prepare(struct device *dev)
>  {
> -	return 0;		/* Implement eventually? */
> +	return 1;		/* Implement eventually? */
>  }

The rest of the patch is okay, but this part is wrong.  The documented
requirement is that the prepare callback should return 1 if the device
is already in the appropriate state.  This means it has to have the
right wakeup setting.

In other words, if the device is currently in runtime suspend with 
remote wakeup enabled, but device_may_wakeup() returns 0 (so that the 
device should be disabled for wakeup when the system goes into 
suspend), then the prepare callback has to return 0.

Therefore what you need to do here is something like this:

	struct usb_device	*udev = to_usb_device(dev);

	/* Return 0 if the current wakeup setting is wrong, otherwise 1 */
	if (udev->do_remote_wakeup && !device_may_wakeup(dev))
		return 0;
	return 1;

Aside from this issue, I like the patch set.  Do you think you can do 
something similar for drivers/scsi/scsi_pm.c?  I'm not aware of any 
wakeup-capable SCSI devices -- not disk or CD/DVD drives, anyway.

Alan Stern


  reply	other threads:[~2015-03-31 17:09 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-31 16:14 [PATCH 0/6] Allow UVC " Tomeu Vizoso
2015-03-31 16:14 ` [PATCH 1/6] [media] uvcvideo: Enable runtime PM of descendant devices Tomeu Vizoso
2015-03-31 16:14 ` [PATCH 2/6] [media] v4l2-core: Implement dev_pm_ops.prepare() Tomeu Vizoso
2015-03-31 16:14 ` [PATCH 3/6] Input: " Tomeu Vizoso
2015-03-31 16:14 ` [PATCH 4/6] [media] media-devnode: Implement dev_pm_ops.prepare callback Tomeu Vizoso
2015-03-31 16:14 ` [PATCH 5/6] Input: evdev - Enable runtime PM of the evdev input handler Tomeu Vizoso
2015-03-31 20:31   ` Dmitry Torokhov
2015-04-03 13:03     ` Tomeu Vizoso
2015-03-31 16:14 ` [PATCH 6/6] USB / PM: Allow USB devices to remain runtime-suspended when sleeping Tomeu Vizoso
2015-03-31 17:09   ` Alan Stern [this message]
2015-04-01 12:40     ` Oliver Neukum
2015-04-01 14:01       ` Alan Stern
2015-04-01 14:26         ` Oliver Neukum
2015-04-01 14:36           ` Alan Stern
2015-04-03 13:05     ` Tomeu Vizoso

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=Pine.LNX.4.44L0.1503311259340.1453-100000@iolanthe.rowland.org \
    --to=stern@rowland.harvard.edu \
    --cc=bigeasy@linutronix.de \
    --cc=dan.j.williams@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jwerner@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=lkml14@scotdoyle.com \
    --cc=pratyush.anand@st.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=tomeu.vizoso@collabora.com \
    --subject='Re: [PATCH 6/6] USB / PM: Allow USB devices to remain runtime-suspended when sleeping' \
    /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

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).