Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6791e36c authored by Arve Hjønnevåg's avatar Arve Hjønnevåg Committed by Rafael J. Wysocki
Browse files

PM / Sleep: Add wakeup_source_activate and wakeup_source_deactivate tracepoints



Add tracepoints to wakeup_source_activate and wakeup_source_deactivate.
Useful for checking that specific wakeup sources overlap as expected.

Signed-off-by: default avatarArve Hjønnevåg <arve@android.com>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent 30e3ce6d
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
#include <linux/suspend.h>
#include <linux/seq_file.h>
#include <linux/debugfs.h>
#include <trace/events/power.h>

#include "power.h"

@@ -374,12 +375,16 @@ EXPORT_SYMBOL_GPL(device_set_wakeup_enable);
 */
static void wakeup_source_activate(struct wakeup_source *ws)
{
	unsigned int cec;

	ws->active = true;
	ws->active_count++;
	ws->last_time = ktime_get();

	/* Increment the counter of events in progress. */
	atomic_inc(&combined_event_count);
	cec = atomic_inc_return(&combined_event_count);

	trace_wakeup_source_activate(ws->name, cec);
}

/**
@@ -454,7 +459,7 @@ EXPORT_SYMBOL_GPL(pm_stay_awake);
 */
static void wakeup_source_deactivate(struct wakeup_source *ws)
{
	unsigned int cnt, inpr;
	unsigned int cnt, inpr, cec;
	ktime_t duration;
	ktime_t now;

@@ -489,7 +494,8 @@ static void wakeup_source_deactivate(struct wakeup_source *ws)
	 * Increment the counter of registered wakeup events and decrement the
	 * couter of wakeup events in progress simultaneously.
	 */
	atomic_add(MAX_IN_PROGRESS, &combined_event_count);
	cec = atomic_add_return(MAX_IN_PROGRESS, &combined_event_count);
	trace_wakeup_source_deactivate(ws->name, cec);

	split_counters(&cnt, &inpr);
	if (!inpr && waitqueue_active(&wakeup_count_wait_queue))
+34 −0
Original line number Diff line number Diff line
@@ -65,6 +65,40 @@ TRACE_EVENT(machine_suspend,
	TP_printk("state=%lu", (unsigned long)__entry->state)
);

DECLARE_EVENT_CLASS(wakeup_source,

	TP_PROTO(const char *name, unsigned int state),

	TP_ARGS(name, state),

	TP_STRUCT__entry(
		__string(       name,           name            )
		__field(        u64,            state           )
	),

	TP_fast_assign(
		__assign_str(name, name);
		__entry->state = state;
	),

	TP_printk("%s state=0x%lx", __get_str(name),
		(unsigned long)__entry->state)
);

DEFINE_EVENT(wakeup_source, wakeup_source_activate,

	TP_PROTO(const char *name, unsigned int state),

	TP_ARGS(name, state)
);

DEFINE_EVENT(wakeup_source, wakeup_source_deactivate,

	TP_PROTO(const char *name, unsigned int state),

	TP_ARGS(name, state)
);

#ifdef CONFIG_EVENT_POWER_TRACING_DEPRECATED

/*