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>
This commit is contained in:
Bart Van Assche 2019-06-05 09:12:37 -07:00 committed by Rafael J. Wysocki
parent 1ec0cd8286
commit 3540d38dd3

View File

@ -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);