From: Jacob Pan <jacob.jun.pan@linux.intel.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
Linux PM list <linux-pm@vger.kernel.org>,
ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
Aaron Lu <aaron.lu@intel.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Kevin Hilman <khilman@linaro.org>,
Ulf Hansson <ulf.hansson@linaro.org>
Subject: Re: [RFC][PATCH 2/3] PM / sleep: Mechanism to avoid resuming runtime-suspended devices unnecessarily
Date: Fri, 16 May 2014 08:20:55 -0700 [thread overview]
Message-ID: <20140516082055.40cd2bb4@ultegra> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1405151151560.910-100000@iolanthe.rowland.org>
On Thu, 15 May 2014 11:58:55 -0400 (EDT)
Alan Stern <stern@rowland.harvard.edu> wrote:
> On Thu, 15 May 2014, Jacob Pan wrote:
>
> > On Thu, 15 May 2014 10:29:42 -0400 (EDT)
> > Alan Stern <stern@rowland.harvard.edu> wrote:
> >
> > > On Thu, 15 May 2014, Jacob Pan wrote:
> > >
> > > > > > should we respect ignore_children flag here? not all parent
> > > > > > devices create children with proper .prepare() function.
> > > > > > this allows parents override children.
> > > > > > I am looking at USB, a USB device could have logical
> > > > > > children such as ep_xx, they don't go through the same
> > > > > > subsystem .prepare().
> > > > >
> > > > > Well, I'm not sure about that. Let me consider that for a
> > > > > while.
> > > > OK. let me be more clear about the situation i see in USB.
> > > > Correct me if I am wrong, a USB device will always has at least
> > > > one endpoint/ep_00 as a kid for control pipe, it is a logical
> > > > device. So when device_prepare() is called, its call back is
> > > > NULL which makes .direct_complete = 0. Since children device
> > > > suspend is called before parents, the parents .direct_complete
> > > > flag will always get cleared.
> > > >
> > > > What i am trying to achieve here is to see if we avoid resuming
> > > > built-in (hardwired connect_type) non-hub USB devices based on
> > > > this new patchset. E.g. we don't want to resume/suspend USB
> > > > camera every time in system suspend/resume cycle if they are
> > > > already rpm suspended. We can save ~100ms resume time for the
> > > > devices we have tested.
> > >
> > > This is a good point, but I don't think it is at all related to
> > > ignore_children.
> > >
> > > Instead, it seems that the best way to solve it would be to add a
> > > ->prepare() handler for usb_ep_device_type that would always turn
> > > on direct_complete.
> > >
> > yeah, that would solve the problem with EP device type. But what
> > about other subdevices. e.g. for USB camera, uvcvideo device? We
> > can add .prepare(return 1;) for each level but would it be better
> > to have a flag similar to ignore_children if not ignore_children
> > itself.
>
> Something like that could always be added.
or, how about if a device's .prepare() is NULL, we could
assume .direct_resume() should be set. i.e.
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -1539,7 +1539,7 @@ static int device_prepare(struct device *dev,
pm_message_t state) pm_runtime_put(dev);
return ret;
}
- dev->power.direct_complete = ret > 0 && state.event ==
PM_EVENT_SUSPEND
+ dev->power.direct_complete = (!callback || ret > 0) &&
state.event == PM_EVENT_SUSPEND && pm_runtime_suspended(dev);
dev_dbg(dev, "%s:direct_complete %d, info %s\n", __func__,
dev->power.direct_complete, info);
>
> > Actually, I don't understand why this is not related to
> > ignore_children. Could you explain?
>
> It's hard to explain why two things are totally separate. Much
> better for you to describe why you think they _are_ related, so that
> I can explain how you are wrong.
>
> > If the parent knows it can ignore children and already rpm
> > suspended, why do we still ask children?
>
> The "ignore_children" flag doesn't mean that the parent can ignore
> its children. It means that the PM core is allowed to do a runtime
> suspend of the parent while leaving the children at full power.
>
> In particular, it doesn't mean that the children's ->suspend()
> callback will work correctly if it is called while the parent is
> runtime suspended.
that explains my question about ignore_chilren flag. thanks.
>
> Alan Stern
>
[Jacob Pan]
next prev parent reply other threads:[~2014-05-16 15:20 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-13 1:02 [RFC][PATCH 0/3] PM / sleep: Avoid resuming runtime-suspended devices during system suspend Rafael J. Wysocki
2014-05-13 1:03 ` [RFC][PATCH 1/3] PM / sleep: Move runtime PM barrier invocation to device_prepare() Rafael J. Wysocki
2014-05-13 9:16 ` Ulf Hansson
2014-05-13 10:35 ` Rafael J. Wysocki
2014-05-13 10:59 ` Ulf Hansson
2014-05-13 15:07 ` Rafael J. Wysocki
2014-05-13 15:19 ` Rafael J. Wysocki
2014-05-13 1:10 ` [RFC][PATCH 2/3] PM / sleep: Mechanism to avoid resuming runtime-suspended devices unnecessarily Rafael J. Wysocki
2014-05-13 9:30 ` Ulf Hansson
2014-05-13 14:49 ` Alan Stern
2014-05-13 15:13 ` Rafael J. Wysocki
2014-05-13 15:12 ` Alan Stern
2014-05-13 15:43 ` Rafael J. Wysocki
2014-05-13 15:46 ` Alan Stern
2014-05-13 16:16 ` Rafael J. Wysocki
2014-05-13 16:19 ` Alan Stern
2014-05-13 21:29 ` Rafael J. Wysocki
2014-05-14 14:53 ` Alan Stern
2014-05-15 11:13 ` Rafael J. Wysocki
2014-05-16 0:45 ` [PATCH 0/3] (was: Re: PM / sleep: Mechanism to avoid resuming runtime-suspended devices unnecessarily) Rafael J. Wysocki
2014-05-16 0:46 ` [PATCH 1/3] PM / sleep: Mechanism to avoid resuming runtime-suspended devices unnecessarily Rafael J. Wysocki
2014-05-16 14:27 ` Alan Stern
2014-05-16 21:10 ` Rafael J. Wysocki
2014-05-16 0:47 ` [PATCH 2/3] PM / sleep: Update device PM documentation to cover direct_complete Rafael J. Wysocki
2014-05-16 0:48 ` [PATCH 3/3][Resend] ACPI / PM: Avoid resuming devices in ACPI PM domain during system suspend Rafael J. Wysocki
2014-05-16 22:18 ` [PATCH 3/3][update] " Rafael J. Wysocki
2014-05-15 12:06 ` [RFC][PATCH 2/3] PM / sleep: Mechanism to avoid resuming runtime-suspended devices unnecessarily Ulf Hansson
2014-05-15 12:55 ` Rafael J. Wysocki
2014-05-15 17:35 ` Kevin Hilman
2014-05-14 22:24 ` Jacob Pan
2014-05-15 11:11 ` Rafael J. Wysocki
2014-05-15 13:09 ` Jacob Pan
2014-05-15 14:29 ` Alan Stern
2014-05-15 7:03 ` Jacob Pan
2014-05-15 15:58 ` Alan Stern
2014-05-16 15:20 ` Jacob Pan [this message]
2014-05-16 21:08 ` Rafael J. Wysocki
2014-05-19 9:18 ` Jacob Pan
2014-05-19 19:53 ` Alan Stern
2014-05-19 20:13 ` Rafael J. Wysocki
2014-05-19 20:20 ` Rafael J. Wysocki
2014-05-13 1:10 ` [RFC][PATCH 3/3] ACPI / PM: Avoid resuming devices in ACPI PM domain during system suspend Rafael J. Wysocki
2014-05-13 14:45 ` [RFC][PATCH 0/3] PM / sleep: Avoid resuming runtime-suspended devices " Alan Stern
2014-05-13 15:25 ` Rafael J. Wysocki
2014-05-13 15:25 ` Alan Stern
2014-05-13 15:46 ` 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=20140516082055.40cd2bb4@ultegra \
--to=jacob.jun.pan@linux.intel.com \
--cc=aaron.lu@intel.com \
--cc=khilman@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mika.westerberg@linux.intel.com \
--cc=rjw@rjwysocki.net \
--cc=stern@rowland.harvard.edu \
--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.