From: Ulf Hansson <ulf.hansson@linaro.org>
To: Wolfram Sang <wsa@the-dreams.de>,
"Rafael J . Wysocki" <rjw@rjwysocki.net>,
Len Brown <lenb@kernel.org>,
linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org
Cc: Kevin Hilman <khilman@kernel.org>,
Jarkko Nikula <jarkko.nikula@linux.intel.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
Jisheng Zhang <jszhang@marvell.com>,
John Stultz <john.stultz@linaro.org>,
Guodong Xu <guodong.xu@linaro.org>,
Sumit Semwal <sumit.semwal@linaro.org>,
Haojian Zhuang <haojian.zhuang@linaro.org>,
linux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org,
Ulf Hansson <ulf.hansson@linaro.org>
Subject: [PATCH 4/9] PM / ACPI: Split code validating need for runtime resume in ->prepare()
Date: Wed, 21 Jun 2017 21:21:23 +0200 [thread overview]
Message-ID: <1498072888-14782-5-git-send-email-ulf.hansson@linaro.org> (raw)
In-Reply-To: <1498072888-14782-1-git-send-email-ulf.hansson@linaro.org>
Move the code dealing with validation of whether runtime resuming the
device is needed during system suspend.
In this way it becomes more clear for what circumstances ACPI is prevented
from trying the direct_complete path.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/acpi/device_pm.c | 37 ++++++++++++++++++++++++-------------
1 file changed, 24 insertions(+), 13 deletions(-)
diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c
index d38acbc..ee51e75 100644
--- a/drivers/acpi/device_pm.c
+++ b/drivers/acpi/device_pm.c
@@ -933,6 +933,27 @@ int acpi_dev_resume_early(struct device *dev)
}
EXPORT_SYMBOL_GPL(acpi_dev_resume_early);
+static bool acpi_dev_needs_resume(struct device *dev, struct acpi_device *adev)
+{
+ u32 sys_target = acpi_target_system_state();
+ int ret, state;
+
+ if (device_may_wakeup(dev) != !!adev->wakeup.prepare_count)
+ return true;
+
+ if (sys_target == ACPI_STATE_S0)
+ return false;
+
+ if (adev->power.flags.dsw_present)
+ return true;
+
+ ret = acpi_dev_pm_get_state(dev, adev, sys_target, NULL, &state);
+ if (ret)
+ return true;
+
+ return !(state == adev->power.state);
+}
+
/**
* acpi_subsys_prepare - Prepare device for system transition to a sleep state.
* @dev: Device to prepare.
@@ -940,26 +961,16 @@ EXPORT_SYMBOL_GPL(acpi_dev_resume_early);
int acpi_subsys_prepare(struct device *dev)
{
struct acpi_device *adev = ACPI_COMPANION(dev);
- u32 sys_target;
- int ret, state;
+ int ret;
ret = pm_generic_prepare(dev);
if (ret < 0)
return ret;
- if (!adev || !pm_runtime_suspended(dev)
- || device_may_wakeup(dev) != !!adev->wakeup.prepare_count)
- return 0;
-
- sys_target = acpi_target_system_state();
- if (sys_target == ACPI_STATE_S0)
- return 1;
-
- if (adev->power.flags.dsw_present)
+ if (!adev || !pm_runtime_suspended(dev))
return 0;
- ret = acpi_dev_pm_get_state(dev, adev, sys_target, NULL, &state);
- return !ret && state == adev->power.state;
+ return !acpi_dev_needs_resume(dev, adev);
}
EXPORT_SYMBOL_GPL(acpi_subsys_prepare);
--
2.7.4
next prev parent reply other threads:[~2017-06-21 19:21 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-21 19:21 [PATCH 0/9] PM / ACPI / i2c: Fix system suspend and deploy runtime PM centric path for ACPI Ulf Hansson
2017-06-21 19:21 ` [PATCH 1/9] i2c: designware: Fix system suspend Ulf Hansson
2017-06-21 23:31 ` Rafael J. Wysocki
2017-06-22 10:49 ` Mika Westerberg
2017-06-22 11:16 ` Jarkko Nikula
2017-06-27 7:55 ` Jarkko Nikula
2017-06-28 14:01 ` Ulf Hansson
2017-06-28 14:51 ` Rafael J. Wysocki
2017-06-28 15:06 ` Ulf Hansson
2017-06-22 14:41 ` Rafael J. Wysocki
2017-06-22 21:37 ` Ulf Hansson
2017-06-22 22:01 ` Rafael J. Wysocki
2017-06-26 16:49 ` Ulf Hansson
2017-06-26 19:39 ` Grygorii Strashko
2017-06-26 21:11 ` Rafael J. Wysocki
2017-06-27 7:33 ` Jarkko Nikula
2017-06-27 15:25 ` Rafael J. Wysocki
2017-06-28 14:31 ` Ulf Hansson
2017-06-28 16:52 ` Grygorii Strashko
2017-09-08 3:23 ` [1/9] " Wangtao (Kevin, Kirin)
2017-09-08 8:29 ` Ulf Hansson
2017-09-12 9:44 ` Wangtao (Kevin, Kirin)
2017-06-21 19:21 ` [PATCH 2/9] PM / ACPI: Restore acpi_subsys_complete() Ulf Hansson
2017-06-21 19:21 ` [PATCH 3/9] PM / Sleep: Remove pm_complete_with_resume_check() Ulf Hansson
2017-06-21 19:21 ` Ulf Hansson [this message]
2017-06-21 21:35 ` [PATCH 4/9] PM / ACPI: Split code validating need for runtime resume in ->prepare() Rafael J. Wysocki
2017-06-21 19:21 ` [PATCH 5/9] PM / ACPI: Split acpi_lpss_suspend_late|resume_early() Ulf Hansson
2017-06-21 19:21 ` [PATCH 6/9] PM / ACPI: Provide option to disable direct_complete for ACPI devices Ulf Hansson
2017-06-21 21:42 ` Rafael J. Wysocki
2017-06-22 9:35 ` Ulf Hansson
2017-06-22 14:38 ` Rafael J. Wysocki
2017-06-22 21:29 ` Ulf Hansson
2017-06-22 21:33 ` Rafael J. Wysocki
2017-06-21 19:21 ` [PATCH 7/9] PM / ACPI: Enable the runtime PM centric approach for system sleep Ulf Hansson
2017-06-21 21:47 ` Rafael J. Wysocki
2017-06-22 9:42 ` Ulf Hansson
2017-06-22 14:32 ` Rafael J. Wysocki
2017-06-22 21:14 ` Ulf Hansson
2017-06-22 21:28 ` Rafael J. Wysocki
2017-06-21 19:21 ` [PATCH 8/9] PM / ACPI: Avoid runtime resuming device in acpi_subsys_suspend|freeze() Ulf Hansson
2017-06-21 19:21 ` [PATCH 9/9] i2c: designware: Deploy the runtime PM centric approach for system sleep Ulf Hansson
2017-06-21 22:39 ` [PATCH 0/9] PM / ACPI / i2c: Fix system suspend and deploy runtime PM centric path for ACPI John Stultz
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=1498072888-14782-5-git-send-email-ulf.hansson@linaro.org \
--to=ulf.hansson@linaro.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=guodong.xu@linaro.org \
--cc=haojian.zhuang@linaro.org \
--cc=jarkko.nikula@linux.intel.com \
--cc=john.stultz@linaro.org \
--cc=jszhang@marvell.com \
--cc=khilman@kernel.org \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mika.westerberg@linux.intel.com \
--cc=rjw@rjwysocki.net \
--cc=sumit.semwal@linaro.org \
--cc=wsa@the-dreams.de \
/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 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).