136e40df3SAnna-Maria Behnsen /* SPDX-License-Identifier: GPL-2.0-only */
236e40df3SAnna-Maria Behnsen 
336e40df3SAnna-Maria Behnsen #undef TRACE_SYSTEM
436e40df3SAnna-Maria Behnsen #define TRACE_SYSTEM timer_migration
536e40df3SAnna-Maria Behnsen 
636e40df3SAnna-Maria Behnsen #if !defined(_TRACE_TIMER_MIGRATION_H) || defined(TRACE_HEADER_MULTI_READ)
736e40df3SAnna-Maria Behnsen #define _TRACE_TIMER_MIGRATION_H
836e40df3SAnna-Maria Behnsen 
936e40df3SAnna-Maria Behnsen #include <linux/tracepoint.h>
1036e40df3SAnna-Maria Behnsen 
1136e40df3SAnna-Maria Behnsen /* Group events */
1236e40df3SAnna-Maria Behnsen TRACE_EVENT(tmigr_group_set,
1336e40df3SAnna-Maria Behnsen 
1436e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_group *group),
1536e40df3SAnna-Maria Behnsen 
1636e40df3SAnna-Maria Behnsen 	TP_ARGS(group),
1736e40df3SAnna-Maria Behnsen 
1836e40df3SAnna-Maria Behnsen 	TP_STRUCT__entry(
1936e40df3SAnna-Maria Behnsen 		__field( void *,	group		)
2036e40df3SAnna-Maria Behnsen 		__field( unsigned int,	lvl		)
2136e40df3SAnna-Maria Behnsen 		__field( unsigned int,	numa_node	)
2236e40df3SAnna-Maria Behnsen 	),
2336e40df3SAnna-Maria Behnsen 
2436e40df3SAnna-Maria Behnsen 	TP_fast_assign(
2536e40df3SAnna-Maria Behnsen 		__entry->group		= group;
2636e40df3SAnna-Maria Behnsen 		__entry->lvl		= group->level;
2736e40df3SAnna-Maria Behnsen 		__entry->numa_node	= group->numa_node;
2836e40df3SAnna-Maria Behnsen 	),
2936e40df3SAnna-Maria Behnsen 
3036e40df3SAnna-Maria Behnsen 	TP_printk("group=%p lvl=%d numa=%d",
3136e40df3SAnna-Maria Behnsen 		  __entry->group, __entry->lvl, __entry->numa_node)
3236e40df3SAnna-Maria Behnsen );
3336e40df3SAnna-Maria Behnsen 
3436e40df3SAnna-Maria Behnsen TRACE_EVENT(tmigr_connect_child_parent,
3536e40df3SAnna-Maria Behnsen 
3636e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_group *child),
3736e40df3SAnna-Maria Behnsen 
3836e40df3SAnna-Maria Behnsen 	TP_ARGS(child),
3936e40df3SAnna-Maria Behnsen 
4036e40df3SAnna-Maria Behnsen 	TP_STRUCT__entry(
4136e40df3SAnna-Maria Behnsen 		__field( void *,	child		)
4236e40df3SAnna-Maria Behnsen 		__field( void *,	parent		)
4336e40df3SAnna-Maria Behnsen 		__field( unsigned int,	lvl		)
4436e40df3SAnna-Maria Behnsen 		__field( unsigned int,	numa_node	)
4536e40df3SAnna-Maria Behnsen 		__field( unsigned int,	num_children	)
46*835a9a67SAnna-Maria Behnsen 		__field( u32,		groupmask	)
4736e40df3SAnna-Maria Behnsen 	),
4836e40df3SAnna-Maria Behnsen 
4936e40df3SAnna-Maria Behnsen 	TP_fast_assign(
5036e40df3SAnna-Maria Behnsen 		__entry->child		= child;
5136e40df3SAnna-Maria Behnsen 		__entry->parent		= child->parent;
5236e40df3SAnna-Maria Behnsen 		__entry->lvl		= child->parent->level;
5336e40df3SAnna-Maria Behnsen 		__entry->numa_node	= child->parent->numa_node;
5436e40df3SAnna-Maria Behnsen 		__entry->num_children	= child->parent->num_children;
55*835a9a67SAnna-Maria Behnsen 		__entry->groupmask	= child->groupmask;
5636e40df3SAnna-Maria Behnsen 	),
5736e40df3SAnna-Maria Behnsen 
58*835a9a67SAnna-Maria Behnsen 	TP_printk("group=%p groupmask=%0x parent=%p lvl=%d numa=%d num_children=%d",
59*835a9a67SAnna-Maria Behnsen 		  __entry->child,  __entry->groupmask, __entry->parent,
6036e40df3SAnna-Maria Behnsen 		  __entry->lvl, __entry->numa_node, __entry->num_children)
6136e40df3SAnna-Maria Behnsen );
6236e40df3SAnna-Maria Behnsen 
6336e40df3SAnna-Maria Behnsen TRACE_EVENT(tmigr_connect_cpu_parent,
6436e40df3SAnna-Maria Behnsen 
6536e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_cpu *tmc),
6636e40df3SAnna-Maria Behnsen 
6736e40df3SAnna-Maria Behnsen 	TP_ARGS(tmc),
6836e40df3SAnna-Maria Behnsen 
6936e40df3SAnna-Maria Behnsen 	TP_STRUCT__entry(
7036e40df3SAnna-Maria Behnsen 		__field( void *,	parent		)
7136e40df3SAnna-Maria Behnsen 		__field( unsigned int,	cpu		)
7236e40df3SAnna-Maria Behnsen 		__field( unsigned int,	lvl		)
7336e40df3SAnna-Maria Behnsen 		__field( unsigned int,	numa_node	)
7436e40df3SAnna-Maria Behnsen 		__field( unsigned int,	num_children	)
75*835a9a67SAnna-Maria Behnsen 		__field( u32,		groupmask	)
7636e40df3SAnna-Maria Behnsen 	),
7736e40df3SAnna-Maria Behnsen 
7836e40df3SAnna-Maria Behnsen 	TP_fast_assign(
7936e40df3SAnna-Maria Behnsen 		__entry->parent		= tmc->tmgroup;
8036e40df3SAnna-Maria Behnsen 		__entry->cpu		= tmc->cpuevt.cpu;
8136e40df3SAnna-Maria Behnsen 		__entry->lvl		= tmc->tmgroup->level;
8236e40df3SAnna-Maria Behnsen 		__entry->numa_node	= tmc->tmgroup->numa_node;
8336e40df3SAnna-Maria Behnsen 		__entry->num_children	= tmc->tmgroup->num_children;
84*835a9a67SAnna-Maria Behnsen 		__entry->groupmask	= tmc->groupmask;
8536e40df3SAnna-Maria Behnsen 	),
8636e40df3SAnna-Maria Behnsen 
87*835a9a67SAnna-Maria Behnsen 	TP_printk("cpu=%d groupmask=%0x parent=%p lvl=%d numa=%d num_children=%d",
88*835a9a67SAnna-Maria Behnsen 		  __entry->cpu,	 __entry->groupmask, __entry->parent,
8936e40df3SAnna-Maria Behnsen 		  __entry->lvl, __entry->numa_node, __entry->num_children)
9036e40df3SAnna-Maria Behnsen );
9136e40df3SAnna-Maria Behnsen 
9236e40df3SAnna-Maria Behnsen DECLARE_EVENT_CLASS(tmigr_group_and_cpu,
9336e40df3SAnna-Maria Behnsen 
9436e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask),
9536e40df3SAnna-Maria Behnsen 
9636e40df3SAnna-Maria Behnsen 	TP_ARGS(group, state, childmask),
9736e40df3SAnna-Maria Behnsen 
9836e40df3SAnna-Maria Behnsen 	TP_STRUCT__entry(
9936e40df3SAnna-Maria Behnsen 		__field( void *,	group		)
10036e40df3SAnna-Maria Behnsen 		__field( void *,	parent		)
10136e40df3SAnna-Maria Behnsen 		__field( unsigned int,	lvl		)
10236e40df3SAnna-Maria Behnsen 		__field( unsigned int,	numa_node	)
10336e40df3SAnna-Maria Behnsen 		__field( u32,		childmask	)
10436e40df3SAnna-Maria Behnsen 		__field( u8,		active		)
10536e40df3SAnna-Maria Behnsen 		__field( u8,		migrator	)
10636e40df3SAnna-Maria Behnsen 	),
10736e40df3SAnna-Maria Behnsen 
10836e40df3SAnna-Maria Behnsen 	TP_fast_assign(
10936e40df3SAnna-Maria Behnsen 		__entry->group		= group;
11036e40df3SAnna-Maria Behnsen 		__entry->parent		= group->parent;
11136e40df3SAnna-Maria Behnsen 		__entry->lvl		= group->level;
11236e40df3SAnna-Maria Behnsen 		__entry->numa_node	= group->numa_node;
11336e40df3SAnna-Maria Behnsen 		__entry->childmask	= childmask;
11436e40df3SAnna-Maria Behnsen 		__entry->active		= state.active;
11536e40df3SAnna-Maria Behnsen 		__entry->migrator	= state.migrator;
11636e40df3SAnna-Maria Behnsen 	),
11736e40df3SAnna-Maria Behnsen 
11836e40df3SAnna-Maria Behnsen 	TP_printk("group=%p lvl=%d numa=%d active=%0x migrator=%0x "
11936e40df3SAnna-Maria Behnsen 		  "parent=%p childmask=%0x",
12036e40df3SAnna-Maria Behnsen 		  __entry->group, __entry->lvl, __entry->numa_node,
12136e40df3SAnna-Maria Behnsen 		  __entry->active, __entry->migrator,
12236e40df3SAnna-Maria Behnsen 		  __entry->parent, __entry->childmask)
12336e40df3SAnna-Maria Behnsen );
12436e40df3SAnna-Maria Behnsen 
12536e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_group_and_cpu, tmigr_group_set_cpu_inactive,
12636e40df3SAnna-Maria Behnsen 
12736e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask),
12836e40df3SAnna-Maria Behnsen 
12936e40df3SAnna-Maria Behnsen 	TP_ARGS(group, state, childmask)
13036e40df3SAnna-Maria Behnsen );
13136e40df3SAnna-Maria Behnsen 
13236e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_group_and_cpu, tmigr_group_set_cpu_active,
13336e40df3SAnna-Maria Behnsen 
13436e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask),
13536e40df3SAnna-Maria Behnsen 
13636e40df3SAnna-Maria Behnsen 	TP_ARGS(group, state, childmask)
13736e40df3SAnna-Maria Behnsen );
13836e40df3SAnna-Maria Behnsen 
13936e40df3SAnna-Maria Behnsen /* CPU events*/
14036e40df3SAnna-Maria Behnsen DECLARE_EVENT_CLASS(tmigr_cpugroup,
14136e40df3SAnna-Maria Behnsen 
14236e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_cpu *tmc),
14336e40df3SAnna-Maria Behnsen 
14436e40df3SAnna-Maria Behnsen 	TP_ARGS(tmc),
14536e40df3SAnna-Maria Behnsen 
14636e40df3SAnna-Maria Behnsen 	TP_STRUCT__entry(
14736e40df3SAnna-Maria Behnsen 		__field( u64,		wakeup	)
14836e40df3SAnna-Maria Behnsen 		__field( void *,	parent	)
14936e40df3SAnna-Maria Behnsen 		__field( unsigned int,	cpu	)
15036e40df3SAnna-Maria Behnsen 
15136e40df3SAnna-Maria Behnsen 	),
15236e40df3SAnna-Maria Behnsen 
15336e40df3SAnna-Maria Behnsen 	TP_fast_assign(
15436e40df3SAnna-Maria Behnsen 		__entry->wakeup		= tmc->wakeup;
15536e40df3SAnna-Maria Behnsen 		__entry->parent		= tmc->tmgroup;
15636e40df3SAnna-Maria Behnsen 		__entry->cpu		= tmc->cpuevt.cpu;
15736e40df3SAnna-Maria Behnsen 	),
15836e40df3SAnna-Maria Behnsen 
15936e40df3SAnna-Maria Behnsen 	TP_printk("cpu=%d parent=%p wakeup=%llu", __entry->cpu, __entry->parent, __entry->wakeup)
16036e40df3SAnna-Maria Behnsen );
16136e40df3SAnna-Maria Behnsen 
16236e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_new_timer,
16336e40df3SAnna-Maria Behnsen 
16436e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_cpu *tmc),
16536e40df3SAnna-Maria Behnsen 
16636e40df3SAnna-Maria Behnsen 	TP_ARGS(tmc)
16736e40df3SAnna-Maria Behnsen );
16836e40df3SAnna-Maria Behnsen 
16936e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_active,
17036e40df3SAnna-Maria Behnsen 
17136e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_cpu *tmc),
17236e40df3SAnna-Maria Behnsen 
17336e40df3SAnna-Maria Behnsen 	TP_ARGS(tmc)
17436e40df3SAnna-Maria Behnsen );
17536e40df3SAnna-Maria Behnsen 
17636e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_online,
17736e40df3SAnna-Maria Behnsen 
17836e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_cpu *tmc),
17936e40df3SAnna-Maria Behnsen 
18036e40df3SAnna-Maria Behnsen 	TP_ARGS(tmc)
18136e40df3SAnna-Maria Behnsen );
18236e40df3SAnna-Maria Behnsen 
18336e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_offline,
18436e40df3SAnna-Maria Behnsen 
18536e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_cpu *tmc),
18636e40df3SAnna-Maria Behnsen 
18736e40df3SAnna-Maria Behnsen 	TP_ARGS(tmc)
18836e40df3SAnna-Maria Behnsen );
18936e40df3SAnna-Maria Behnsen 
19036e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_cpugroup, tmigr_handle_remote_cpu,
19136e40df3SAnna-Maria Behnsen 
19236e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_cpu *tmc),
19336e40df3SAnna-Maria Behnsen 
19436e40df3SAnna-Maria Behnsen 	TP_ARGS(tmc)
19536e40df3SAnna-Maria Behnsen );
19636e40df3SAnna-Maria Behnsen 
19736e40df3SAnna-Maria Behnsen DECLARE_EVENT_CLASS(tmigr_idle,
19836e40df3SAnna-Maria Behnsen 
19936e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt),
20036e40df3SAnna-Maria Behnsen 
20136e40df3SAnna-Maria Behnsen 	TP_ARGS(tmc, nextevt),
20236e40df3SAnna-Maria Behnsen 
20336e40df3SAnna-Maria Behnsen 	TP_STRUCT__entry(
20436e40df3SAnna-Maria Behnsen 		__field( u64,		nextevt)
20536e40df3SAnna-Maria Behnsen 		__field( u64,		wakeup)
20636e40df3SAnna-Maria Behnsen 		__field( void *,	parent)
20736e40df3SAnna-Maria Behnsen 		__field( unsigned int,	cpu)
20836e40df3SAnna-Maria Behnsen 	),
20936e40df3SAnna-Maria Behnsen 
21036e40df3SAnna-Maria Behnsen 	TP_fast_assign(
21136e40df3SAnna-Maria Behnsen 		__entry->nextevt	= nextevt;
21236e40df3SAnna-Maria Behnsen 		__entry->wakeup		= tmc->wakeup;
21336e40df3SAnna-Maria Behnsen 		__entry->parent		= tmc->tmgroup;
21436e40df3SAnna-Maria Behnsen 		__entry->cpu		= tmc->cpuevt.cpu;
21536e40df3SAnna-Maria Behnsen 	),
21636e40df3SAnna-Maria Behnsen 
21736e40df3SAnna-Maria Behnsen 	TP_printk("cpu=%d parent=%p nextevt=%llu wakeup=%llu",
21836e40df3SAnna-Maria Behnsen 		  __entry->cpu, __entry->parent, __entry->nextevt, __entry->wakeup)
21936e40df3SAnna-Maria Behnsen );
22036e40df3SAnna-Maria Behnsen 
22136e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_idle, tmigr_cpu_idle,
22236e40df3SAnna-Maria Behnsen 
22336e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt),
22436e40df3SAnna-Maria Behnsen 
22536e40df3SAnna-Maria Behnsen 	TP_ARGS(tmc, nextevt)
22636e40df3SAnna-Maria Behnsen );
22736e40df3SAnna-Maria Behnsen 
22836e40df3SAnna-Maria Behnsen DEFINE_EVENT(tmigr_idle, tmigr_cpu_new_timer_idle,
22936e40df3SAnna-Maria Behnsen 
23036e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt),
23136e40df3SAnna-Maria Behnsen 
23236e40df3SAnna-Maria Behnsen 	TP_ARGS(tmc, nextevt)
23336e40df3SAnna-Maria Behnsen );
23436e40df3SAnna-Maria Behnsen 
23536e40df3SAnna-Maria Behnsen TRACE_EVENT(tmigr_update_events,
23636e40df3SAnna-Maria Behnsen 
23736e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_group *child, struct tmigr_group *group,
23836e40df3SAnna-Maria Behnsen 		 union tmigr_state childstate,	union tmigr_state groupstate,
23936e40df3SAnna-Maria Behnsen 		 u64 nextevt),
24036e40df3SAnna-Maria Behnsen 
24136e40df3SAnna-Maria Behnsen 	TP_ARGS(child, group, childstate, groupstate, nextevt),
24236e40df3SAnna-Maria Behnsen 
24336e40df3SAnna-Maria Behnsen 	TP_STRUCT__entry(
24436e40df3SAnna-Maria Behnsen 		__field( void *,	child			)
24536e40df3SAnna-Maria Behnsen 		__field( void *,	group			)
24636e40df3SAnna-Maria Behnsen 		__field( u64,		nextevt			)
24736e40df3SAnna-Maria Behnsen 		__field( u64,		group_next_expiry	)
24836e40df3SAnna-Maria Behnsen 		__field( u64,		child_evt_expiry	)
24936e40df3SAnna-Maria Behnsen 		__field( unsigned int,	group_lvl		)
25036e40df3SAnna-Maria Behnsen 		__field( unsigned int,	child_evtcpu		)
25136e40df3SAnna-Maria Behnsen 		__field( u8,		child_active		)
25236e40df3SAnna-Maria Behnsen 		__field( u8,		group_active		)
25336e40df3SAnna-Maria Behnsen 	),
25436e40df3SAnna-Maria Behnsen 
25536e40df3SAnna-Maria Behnsen 	TP_fast_assign(
25636e40df3SAnna-Maria Behnsen 		__entry->child			= child;
25736e40df3SAnna-Maria Behnsen 		__entry->group			= group;
25836e40df3SAnna-Maria Behnsen 		__entry->nextevt		= nextevt;
25936e40df3SAnna-Maria Behnsen 		__entry->group_next_expiry	= group->next_expiry;
26036e40df3SAnna-Maria Behnsen 		__entry->child_evt_expiry	= child ? child->groupevt.nextevt.expires : 0;
26136e40df3SAnna-Maria Behnsen 		__entry->group_lvl		= group->level;
26236e40df3SAnna-Maria Behnsen 		__entry->child_evtcpu		= child ? child->groupevt.cpu : 0;
26336e40df3SAnna-Maria Behnsen 		__entry->child_active		= childstate.active;
26436e40df3SAnna-Maria Behnsen 		__entry->group_active		= groupstate.active;
26536e40df3SAnna-Maria Behnsen 	),
26636e40df3SAnna-Maria Behnsen 
26736e40df3SAnna-Maria Behnsen 	TP_printk("child=%p group=%p group_lvl=%d child_active=%0x group_active=%0x "
26836e40df3SAnna-Maria Behnsen 		  "nextevt=%llu next_expiry=%llu child_evt_expiry=%llu child_evtcpu=%d",
26936e40df3SAnna-Maria Behnsen 		  __entry->child, __entry->group, __entry->group_lvl, __entry->child_active,
27036e40df3SAnna-Maria Behnsen 		  __entry->group_active,
27136e40df3SAnna-Maria Behnsen 		  __entry->nextevt, __entry->group_next_expiry, __entry->child_evt_expiry,
27236e40df3SAnna-Maria Behnsen 		  __entry->child_evtcpu)
27336e40df3SAnna-Maria Behnsen );
27436e40df3SAnna-Maria Behnsen 
27536e40df3SAnna-Maria Behnsen TRACE_EVENT(tmigr_handle_remote,
27636e40df3SAnna-Maria Behnsen 
27736e40df3SAnna-Maria Behnsen 	TP_PROTO(struct tmigr_group *group),
27836e40df3SAnna-Maria Behnsen 
27936e40df3SAnna-Maria Behnsen 	TP_ARGS(group),
28036e40df3SAnna-Maria Behnsen 
28136e40df3SAnna-Maria Behnsen 	TP_STRUCT__entry(
28236e40df3SAnna-Maria Behnsen 		__field( void * ,	group	)
28336e40df3SAnna-Maria Behnsen 		__field( unsigned int ,	lvl	)
28436e40df3SAnna-Maria Behnsen 	),
28536e40df3SAnna-Maria Behnsen 
28636e40df3SAnna-Maria Behnsen 	TP_fast_assign(
28736e40df3SAnna-Maria Behnsen 		__entry->group		= group;
28836e40df3SAnna-Maria Behnsen 		__entry->lvl		= group->level;
28936e40df3SAnna-Maria Behnsen 	),
29036e40df3SAnna-Maria Behnsen 
29136e40df3SAnna-Maria Behnsen 	TP_printk("group=%p lvl=%d",
29236e40df3SAnna-Maria Behnsen 		   __entry->group, __entry->lvl)
29336e40df3SAnna-Maria Behnsen );
29436e40df3SAnna-Maria Behnsen 
29536e40df3SAnna-Maria Behnsen #endif /*  _TRACE_TIMER_MIGRATION_H */
29636e40df3SAnna-Maria Behnsen 
29736e40df3SAnna-Maria Behnsen /* This part must be outside protection */
29836e40df3SAnna-Maria Behnsen #include <trace/define_trace.h>
299