PM / sleep: trace events for suspend/resume
Adds trace events that give finer resolution into suspend/resume. These events are graphed in the timelines generated by the analyze_suspend.py script. They represent large areas of time consumed that are typical to suspend and resume. The event is triggered by calling the function "trace_suspend_resume" with three arguments: a string (the name of the event to be displayed in the timeline), an integer (case specific number, such as the power state or cpu number), and a boolean (where true is used to denote the start of the timeline event, and false to denote the end). The suspend_resume trace event reproduces the data that the machine_suspend trace event did, so the latter has been removed. Signed-off-by: Todd Brandt <todd.e.brandt@intel.com> Acked-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
committed by
Rafael J. Wysocki
parent
3eba148d75
commit
bb3632c610
@@ -10,6 +10,7 @@
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <trace/events/power.h>
|
||||
|
||||
static LIST_HEAD(syscore_ops_list);
|
||||
static DEFINE_MUTEX(syscore_ops_lock);
|
||||
@@ -49,6 +50,7 @@ int syscore_suspend(void)
|
||||
struct syscore_ops *ops;
|
||||
int ret = 0;
|
||||
|
||||
trace_suspend_resume(TPS("syscore_suspend"), 0, true);
|
||||
pr_debug("Checking wakeup interrupts\n");
|
||||
|
||||
/* Return error code if there are any wakeup interrupts pending. */
|
||||
@@ -70,6 +72,7 @@ int syscore_suspend(void)
|
||||
"Interrupts enabled after %pF\n", ops->suspend);
|
||||
}
|
||||
|
||||
trace_suspend_resume(TPS("syscore_suspend"), 0, false);
|
||||
return 0;
|
||||
|
||||
err_out:
|
||||
@@ -92,6 +95,7 @@ void syscore_resume(void)
|
||||
{
|
||||
struct syscore_ops *ops;
|
||||
|
||||
trace_suspend_resume(TPS("syscore_resume"), 0, true);
|
||||
WARN_ONCE(!irqs_disabled(),
|
||||
"Interrupts enabled before system core resume.\n");
|
||||
|
||||
@@ -103,6 +107,7 @@ void syscore_resume(void)
|
||||
WARN_ONCE(!irqs_disabled(),
|
||||
"Interrupts enabled after %pF\n", ops->resume);
|
||||
}
|
||||
trace_suspend_resume(TPS("syscore_resume"), 0, false);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(syscore_resume);
|
||||
#endif /* CONFIG_PM_SLEEP */
|
||||
|
Reference in New Issue
Block a user