aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base
diff options
context:
space:
mode:
authorBart Van Assche <bvanassche@acm.org>2019-06-05 09:12:37 -0700
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2019-06-14 11:06:35 +0200
commit3540d38dd38308b811c6ddaf2fde03e9948cc1c1 (patch)
tree4a9b76fc9083e10bcb5294d93331dfbd20c3b6ce /drivers/base
parentPM: hibernate: powerpc: Expose pfn_is_nosave() prototype (diff)
downloadlinux-dev-3540d38dd38308b811c6ddaf2fde03e9948cc1c1.tar.xz
linux-dev-3540d38dd38308b811c6ddaf2fde03e9948cc1c1.zip
PM: sleep: Show how long dpm_suspend_start() and dpm_suspend_end() take
When debugging device driver power management code it is convenient to know how much time is spent in the "suspend start" and "suspend end" phases. Hence log the time spent in these phases. Signed-off-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/power/main.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index dcfc0a36c8f7..1e84b8aa220f 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -1631,17 +1631,20 @@ int dpm_suspend_late(pm_message_t state)
*/
int dpm_suspend_end(pm_message_t state)
{
- int error = dpm_suspend_late(state);
+ ktime_t starttime = ktime_get();
+ int error;
+
+ error = dpm_suspend_late(state);
if (error)
- return error;
+ goto out;
error = dpm_suspend_noirq(state);
- if (error) {
+ if (error)
dpm_resume_early(resume_event(state));
- return error;
- }
- return 0;
+out:
+ dpm_show_time(starttime, state, error, "end");
+ return error;
}
EXPORT_SYMBOL_GPL(dpm_suspend_end);
@@ -2034,6 +2037,7 @@ int dpm_prepare(pm_message_t state)
*/
int dpm_suspend_start(pm_message_t state)
{
+ ktime_t starttime = ktime_get();
int error;
error = dpm_prepare(state);
@@ -2042,6 +2046,7 @@ int dpm_suspend_start(pm_message_t state)
dpm_save_failed_step(SUSPEND_PREPARE);
} else
error = dpm_suspend(state);
+ dpm_show_time(starttime, state, error, "start");
return error;
}
EXPORT_SYMBOL_GPL(dpm_suspend_start);