Loading...
Note: File does not exist in v6.2.
1/* SPDX-License-Identifier: GPL-2.0-only */
2
3#undef TRACE_SYSTEM
4#define TRACE_SYSTEM timer_migration
5
6#if !defined(_TRACE_TIMER_MIGRATION_H) || defined(TRACE_HEADER_MULTI_READ)
7#define _TRACE_TIMER_MIGRATION_H
8
9#include <linux/tracepoint.h>
10
11/* Group events */
12TRACE_EVENT(tmigr_group_set,
13
14 TP_PROTO(struct tmigr_group *group),
15
16 TP_ARGS(group),
17
18 TP_STRUCT__entry(
19 __field( void *, group )
20 __field( unsigned int, lvl )
21 __field( unsigned int, numa_node )
22 ),
23
24 TP_fast_assign(
25 __entry->group = group;
26 __entry->lvl = group->level;
27 __entry->numa_node = group->numa_node;
28 ),
29
30 TP_printk("group=%p lvl=%d numa=%d",
31 __entry->group, __entry->lvl, __entry->numa_node)
32);
33
34TRACE_EVENT(tmigr_connect_child_parent,
35
36 TP_PROTO(struct tmigr_group *child),
37
38 TP_ARGS(child),
39
40 TP_STRUCT__entry(
41 __field( void *, child )
42 __field( void *, parent )
43 __field( unsigned int, lvl )
44 __field( unsigned int, numa_node )
45 __field( unsigned int, num_children )
46 __field( u32, groupmask )
47 ),
48
49 TP_fast_assign(
50 __entry->child = child;
51 __entry->parent = child->parent;
52 __entry->lvl = child->parent->level;
53 __entry->numa_node = child->parent->numa_node;
54 __entry->num_children = child->parent->num_children;
55 __entry->groupmask = child->groupmask;
56 ),
57
58 TP_printk("group=%p groupmask=%0x parent=%p lvl=%d numa=%d num_children=%d",
59 __entry->child, __entry->groupmask, __entry->parent,
60 __entry->lvl, __entry->numa_node, __entry->num_children)
61);
62
63TRACE_EVENT(tmigr_connect_cpu_parent,
64
65 TP_PROTO(struct tmigr_cpu *tmc),
66
67 TP_ARGS(tmc),
68
69 TP_STRUCT__entry(
70 __field( void *, parent )
71 __field( unsigned int, cpu )
72 __field( unsigned int, lvl )
73 __field( unsigned int, numa_node )
74 __field( unsigned int, num_children )
75 __field( u32, groupmask )
76 ),
77
78 TP_fast_assign(
79 __entry->parent = tmc->tmgroup;
80 __entry->cpu = tmc->cpuevt.cpu;
81 __entry->lvl = tmc->tmgroup->level;
82 __entry->numa_node = tmc->tmgroup->numa_node;
83 __entry->num_children = tmc->tmgroup->num_children;
84 __entry->groupmask = tmc->groupmask;
85 ),
86
87 TP_printk("cpu=%d groupmask=%0x parent=%p lvl=%d numa=%d num_children=%d",
88 __entry->cpu, __entry->groupmask, __entry->parent,
89 __entry->lvl, __entry->numa_node, __entry->num_children)
90);
91
92DECLARE_EVENT_CLASS(tmigr_group_and_cpu,
93
94 TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask),
95
96 TP_ARGS(group, state, childmask),
97
98 TP_STRUCT__entry(
99 __field( void *, group )
100 __field( void *, parent )
101 __field( unsigned int, lvl )
102 __field( unsigned int, numa_node )
103 __field( u32, childmask )
104 __field( u8, active )
105 __field( u8, migrator )
106 ),
107
108 TP_fast_assign(
109 __entry->group = group;
110 __entry->parent = group->parent;
111 __entry->lvl = group->level;
112 __entry->numa_node = group->numa_node;
113 __entry->childmask = childmask;
114 __entry->active = state.active;
115 __entry->migrator = state.migrator;
116 ),
117
118 TP_printk("group=%p lvl=%d numa=%d active=%0x migrator=%0x "
119 "parent=%p childmask=%0x",
120 __entry->group, __entry->lvl, __entry->numa_node,
121 __entry->active, __entry->migrator,
122 __entry->parent, __entry->childmask)
123);
124
125DEFINE_EVENT(tmigr_group_and_cpu, tmigr_group_set_cpu_inactive,
126
127 TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask),
128
129 TP_ARGS(group, state, childmask)
130);
131
132DEFINE_EVENT(tmigr_group_and_cpu, tmigr_group_set_cpu_active,
133
134 TP_PROTO(struct tmigr_group *group, union tmigr_state state, u32 childmask),
135
136 TP_ARGS(group, state, childmask)
137);
138
139/* CPU events*/
140DECLARE_EVENT_CLASS(tmigr_cpugroup,
141
142 TP_PROTO(struct tmigr_cpu *tmc),
143
144 TP_ARGS(tmc),
145
146 TP_STRUCT__entry(
147 __field( u64, wakeup )
148 __field( void *, parent )
149 __field( unsigned int, cpu )
150
151 ),
152
153 TP_fast_assign(
154 __entry->wakeup = tmc->wakeup;
155 __entry->parent = tmc->tmgroup;
156 __entry->cpu = tmc->cpuevt.cpu;
157 ),
158
159 TP_printk("cpu=%d parent=%p wakeup=%llu", __entry->cpu, __entry->parent, __entry->wakeup)
160);
161
162DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_new_timer,
163
164 TP_PROTO(struct tmigr_cpu *tmc),
165
166 TP_ARGS(tmc)
167);
168
169DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_active,
170
171 TP_PROTO(struct tmigr_cpu *tmc),
172
173 TP_ARGS(tmc)
174);
175
176DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_online,
177
178 TP_PROTO(struct tmigr_cpu *tmc),
179
180 TP_ARGS(tmc)
181);
182
183DEFINE_EVENT(tmigr_cpugroup, tmigr_cpu_offline,
184
185 TP_PROTO(struct tmigr_cpu *tmc),
186
187 TP_ARGS(tmc)
188);
189
190DEFINE_EVENT(tmigr_cpugroup, tmigr_handle_remote_cpu,
191
192 TP_PROTO(struct tmigr_cpu *tmc),
193
194 TP_ARGS(tmc)
195);
196
197DECLARE_EVENT_CLASS(tmigr_idle,
198
199 TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt),
200
201 TP_ARGS(tmc, nextevt),
202
203 TP_STRUCT__entry(
204 __field( u64, nextevt)
205 __field( u64, wakeup)
206 __field( void *, parent)
207 __field( unsigned int, cpu)
208 ),
209
210 TP_fast_assign(
211 __entry->nextevt = nextevt;
212 __entry->wakeup = tmc->wakeup;
213 __entry->parent = tmc->tmgroup;
214 __entry->cpu = tmc->cpuevt.cpu;
215 ),
216
217 TP_printk("cpu=%d parent=%p nextevt=%llu wakeup=%llu",
218 __entry->cpu, __entry->parent, __entry->nextevt, __entry->wakeup)
219);
220
221DEFINE_EVENT(tmigr_idle, tmigr_cpu_idle,
222
223 TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt),
224
225 TP_ARGS(tmc, nextevt)
226);
227
228DEFINE_EVENT(tmigr_idle, tmigr_cpu_new_timer_idle,
229
230 TP_PROTO(struct tmigr_cpu *tmc, u64 nextevt),
231
232 TP_ARGS(tmc, nextevt)
233);
234
235TRACE_EVENT(tmigr_update_events,
236
237 TP_PROTO(struct tmigr_group *child, struct tmigr_group *group,
238 union tmigr_state childstate, union tmigr_state groupstate,
239 u64 nextevt),
240
241 TP_ARGS(child, group, childstate, groupstate, nextevt),
242
243 TP_STRUCT__entry(
244 __field( void *, child )
245 __field( void *, group )
246 __field( u64, nextevt )
247 __field( u64, group_next_expiry )
248 __field( u64, child_evt_expiry )
249 __field( unsigned int, group_lvl )
250 __field( unsigned int, child_evtcpu )
251 __field( u8, child_active )
252 __field( u8, group_active )
253 ),
254
255 TP_fast_assign(
256 __entry->child = child;
257 __entry->group = group;
258 __entry->nextevt = nextevt;
259 __entry->group_next_expiry = group->next_expiry;
260 __entry->child_evt_expiry = child ? child->groupevt.nextevt.expires : 0;
261 __entry->group_lvl = group->level;
262 __entry->child_evtcpu = child ? child->groupevt.cpu : 0;
263 __entry->child_active = childstate.active;
264 __entry->group_active = groupstate.active;
265 ),
266
267 TP_printk("child=%p group=%p group_lvl=%d child_active=%0x group_active=%0x "
268 "nextevt=%llu next_expiry=%llu child_evt_expiry=%llu child_evtcpu=%d",
269 __entry->child, __entry->group, __entry->group_lvl, __entry->child_active,
270 __entry->group_active,
271 __entry->nextevt, __entry->group_next_expiry, __entry->child_evt_expiry,
272 __entry->child_evtcpu)
273);
274
275TRACE_EVENT(tmigr_handle_remote,
276
277 TP_PROTO(struct tmigr_group *group),
278
279 TP_ARGS(group),
280
281 TP_STRUCT__entry(
282 __field( void * , group )
283 __field( unsigned int , lvl )
284 ),
285
286 TP_fast_assign(
287 __entry->group = group;
288 __entry->lvl = group->level;
289 ),
290
291 TP_printk("group=%p lvl=%d",
292 __entry->group, __entry->lvl)
293);
294
295#endif /* _TRACE_TIMER_MIGRATION_H */
296
297/* This part must be outside protection */
298#include <trace/define_trace.h>