Thread (10 messages) 10 messages, 3 authors, 2016-03-01

Re: [PATCH v2 2/3] PM / sleep: try to runtime suspend for direct complete

From: dbasehore . <hidden>
Date: 2016-03-01 21:48:17
Also in: linux-scsi, lkml

On Sat, Feb 27, 2016 at 5:31 PM, Rafael J. Wysocki [off-list ref] wrote:
On Wednesday, February 24, 2016 04:22:27 PM Derek Basehore wrote:
quoted
This tries to runtime suspend devices that are still active for direct
complete. This is for cases such as autosuspend delays which leaves
devices able to runtime suspend but still active. It's beneficial in
this case to runtime suspend the device to take advantage of direct
complete when possible.

Signed-off-by: Derek Basehore <redacted>
Reviewed-by: Eric Caruso <redacted>
---
 drivers/base/power/main.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index e0017d9..9693032 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -1380,7 +1380,12 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
              goto Complete;

      if (dev->power.direct_complete) {
-             if (pm_runtime_status_suspended(dev)) {
+             /*
+              * Check if we're runtime suspended. If not, try to runtime
+              * suspend for autosuspend cases.
+              */
+             if (pm_runtime_status_suspended(dev) ||
+                 !pm_runtime_suspend(dev)) {
                      pm_runtime_disable(dev);
                      if (pm_runtime_status_suspended(dev))
                              goto Complete;
This can be done somewhat simpler, because pm_runtime_suspend() will check
if the device has already been suspended:

        ret = pm_runtime_suspend(dev);
        if (ret >= 0) {

and you don't need the extra pm_runtime_status_suspended(dev) check.

Thanks,
Rafael
I'll look into simplifying it for the next patch set.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help