1 /*
2  *
3  * (C) COPYRIGHT 2012-2016 ARM Limited. All rights reserved.
4  *
5  * This program is free software and is provided to you under the terms of the
6  * GNU General Public License version 2 as published by the Free Software
7  * Foundation, and any use by you of this program is subject to the terms
8  * of such GNU licence.
9  *
10  * A copy of the licence is included with the program, and can also be obtained
11  * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
12  * Boston, MA  02110-1301, USA.
13  *
14  */
15 
16 
17 
18 
19 
20 #undef TRACE_SYSTEM
21 #define TRACE_SYSTEM mali_timeline
22 
23 #if !defined(_MALI_TIMELINE_H) || defined(TRACE_HEADER_MULTI_READ)
24 #define _MALI_TIMELINE_H
25 
26 #include <linux/tracepoint.h>
27 
28 TRACE_EVENT(mali_timeline_atoms_in_flight,
29 
30 	TP_PROTO(u64 ts_sec,
31 		u32 ts_nsec,
32 		int tgid,
33 		int count),
34 
35 	TP_ARGS(ts_sec,
36 		ts_nsec,
37 		tgid,
38 		count),
39 
40 	TP_STRUCT__entry(
41 			__field(u64, ts_sec)
42 			__field(u32, ts_nsec)
43 			__field(int, tgid)
44 			__field(int, count)
45 	),
46 
47 	TP_fast_assign(
48 		__entry->ts_sec = ts_sec;
49 		__entry->ts_nsec = ts_nsec;
50 		__entry->tgid = tgid;
51 		__entry->count = count;
52 	),
53 
54 	TP_printk("%i,%i.%.9i,%i,%i", CTX_SET_NR_ATOMS_IN_FLIGHT,
55 				(int)__entry->ts_sec,
56 				(int)__entry->ts_nsec,
57 				__entry->tgid,
58 				__entry->count)
59 );
60 
61 
62 TRACE_EVENT(mali_timeline_atom,
63 
64 	TP_PROTO(u64 ts_sec,
65 		u32 ts_nsec,
66 		int event_type,
67 		int tgid,
68 		int atom_id),
69 
70 	TP_ARGS(ts_sec,
71 		ts_nsec,
72 		event_type,
73 		tgid,
74 		atom_id),
75 
76 	TP_STRUCT__entry(
77 			__field(u64, ts_sec)
78 			__field(u32, ts_nsec)
79 			__field(int, event_type)
80 			__field(int, tgid)
81 			__field(int, atom_id)
82 	),
83 
84 	TP_fast_assign(
85 		__entry->ts_sec = ts_sec;
86 		__entry->ts_nsec = ts_nsec;
87 		__entry->event_type = event_type;
88 		__entry->tgid = tgid;
89 		__entry->atom_id = atom_id;
90 	),
91 
92 	TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type,
93 			(int)__entry->ts_sec,
94 			(int)__entry->ts_nsec,
95 			__entry->tgid,
96 			__entry->atom_id,
97 			__entry->atom_id)
98 );
99 
100 TRACE_EVENT(mali_timeline_gpu_slot_active,
101 
102 	TP_PROTO(u64 ts_sec,
103 		u32 ts_nsec,
104 		int event_type,
105 		int tgid,
106 		int js,
107 		int count),
108 
109 	TP_ARGS(ts_sec,
110 		ts_nsec,
111 		event_type,
112 		tgid,
113 		js,
114 		count),
115 
116 	TP_STRUCT__entry(
117 			__field(u64, ts_sec)
118 			__field(u32, ts_nsec)
119 			__field(int, event_type)
120 			__field(int, tgid)
121 			__field(int, js)
122 			__field(int, count)
123 	),
124 
125 	TP_fast_assign(
126 		__entry->ts_sec = ts_sec;
127 		__entry->ts_nsec = ts_nsec;
128 		__entry->event_type = event_type;
129 		__entry->tgid = tgid;
130 		__entry->js = js;
131 		__entry->count = count;
132 	),
133 
134 	TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type,
135 			(int)__entry->ts_sec,
136 			(int)__entry->ts_nsec,
137 			__entry->tgid,
138 			__entry->js,
139 			__entry->count)
140 );
141 
142 TRACE_EVENT(mali_timeline_gpu_slot_action,
143 
144 	TP_PROTO(u64 ts_sec,
145 		u32 ts_nsec,
146 		int event_type,
147 		int tgid,
148 		int js,
149 		int count),
150 
151 	TP_ARGS(ts_sec,
152 		ts_nsec,
153 		event_type,
154 		tgid,
155 		js,
156 		count),
157 
158 	TP_STRUCT__entry(
159 			__field(u64, ts_sec)
160 			__field(u32, ts_nsec)
161 			__field(int, event_type)
162 			__field(int, tgid)
163 			__field(int, js)
164 			__field(int, count)
165 	),
166 
167 	TP_fast_assign(
168 		__entry->ts_sec = ts_sec;
169 		__entry->ts_nsec = ts_nsec;
170 		__entry->event_type = event_type;
171 		__entry->tgid = tgid;
172 		__entry->js = js;
173 		__entry->count = count;
174 	),
175 
176 	TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type,
177 			(int)__entry->ts_sec,
178 			(int)__entry->ts_nsec,
179 			__entry->tgid,
180 			__entry->js,
181 			__entry->count)
182 );
183 
184 TRACE_EVENT(mali_timeline_gpu_power_active,
185 
186 	TP_PROTO(u64 ts_sec,
187 		u32 ts_nsec,
188 		int event_type,
189 		int active),
190 
191 	TP_ARGS(ts_sec,
192 		ts_nsec,
193 		event_type,
194 		active),
195 
196 	TP_STRUCT__entry(
197 			__field(u64, ts_sec)
198 			__field(u32, ts_nsec)
199 			__field(int, event_type)
200 			__field(int, active)
201 	),
202 
203 	TP_fast_assign(
204 		__entry->ts_sec = ts_sec;
205 		__entry->ts_nsec = ts_nsec;
206 		__entry->event_type = event_type;
207 		__entry->active = active;
208 	),
209 
210 	TP_printk("%i,%i.%.9i,0,%i", __entry->event_type,
211 			(int)__entry->ts_sec,
212 			(int)__entry->ts_nsec,
213 			__entry->active)
214 
215 );
216 
217 TRACE_EVENT(mali_timeline_l2_power_active,
218 
219 	TP_PROTO(u64 ts_sec,
220 		u32 ts_nsec,
221 		int event_type,
222 		int state),
223 
224 	TP_ARGS(ts_sec,
225 		ts_nsec,
226 		event_type,
227 		state),
228 
229 	TP_STRUCT__entry(
230 			__field(u64, ts_sec)
231 			__field(u32, ts_nsec)
232 			__field(int, event_type)
233 			__field(int, state)
234 	),
235 
236 	TP_fast_assign(
237 		__entry->ts_sec = ts_sec;
238 		__entry->ts_nsec = ts_nsec;
239 		__entry->event_type = event_type;
240 		__entry->state = state;
241 	),
242 
243 	TP_printk("%i,%i.%.9i,0,%i", __entry->event_type,
244 			(int)__entry->ts_sec,
245 			(int)__entry->ts_nsec,
246 			__entry->state)
247 
248 );
249 TRACE_EVENT(mali_timeline_pm_event,
250 
251 	TP_PROTO(u64 ts_sec,
252 		u32 ts_nsec,
253 		int event_type,
254 		int pm_event_type,
255 		unsigned int pm_event_id),
256 
257 	TP_ARGS(ts_sec,
258 		ts_nsec,
259 		event_type,
260 		pm_event_type,
261 		pm_event_id),
262 
263 	TP_STRUCT__entry(
264 			__field(u64, ts_sec)
265 			__field(u32, ts_nsec)
266 			__field(int, event_type)
267 			__field(int, pm_event_type)
268 			__field(unsigned int, pm_event_id)
269 	),
270 
271 	TP_fast_assign(
272 		__entry->ts_sec = ts_sec;
273 		__entry->ts_nsec = ts_nsec;
274 		__entry->event_type = event_type;
275 		__entry->pm_event_type = pm_event_type;
276 		__entry->pm_event_id = pm_event_id;
277 	),
278 
279 	TP_printk("%i,%i.%.9i,0,%i,%u", __entry->event_type,
280 			(int)__entry->ts_sec,
281 			(int)__entry->ts_nsec,
282 			__entry->pm_event_type, __entry->pm_event_id)
283 
284 );
285 
286 TRACE_EVENT(mali_timeline_slot_atom,
287 
288 	TP_PROTO(u64 ts_sec,
289 		u32 ts_nsec,
290 		int event_type,
291 		int tgid,
292 		int js,
293 		int atom_id),
294 
295 	TP_ARGS(ts_sec,
296 		ts_nsec,
297 		event_type,
298 		tgid,
299 		js,
300 		atom_id),
301 
302 	TP_STRUCT__entry(
303 			__field(u64, ts_sec)
304 			__field(u32, ts_nsec)
305 			__field(int, event_type)
306 			__field(int, tgid)
307 			__field(int, js)
308 			__field(int, atom_id)
309 	),
310 
311 	TP_fast_assign(
312 		__entry->ts_sec = ts_sec;
313 		__entry->ts_nsec = ts_nsec;
314 		__entry->event_type = event_type;
315 		__entry->tgid = tgid;
316 		__entry->js = js;
317 		__entry->atom_id = atom_id;
318 	),
319 
320 	TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type,
321 			(int)__entry->ts_sec,
322 			(int)__entry->ts_nsec,
323 			__entry->tgid,
324 			__entry->js,
325 			__entry->atom_id)
326 );
327 
328 TRACE_EVENT(mali_timeline_pm_checktrans,
329 
330 	TP_PROTO(u64 ts_sec,
331 		u32 ts_nsec,
332 		int trans_code,
333 		int trans_id),
334 
335 	TP_ARGS(ts_sec,
336 		ts_nsec,
337 		trans_code,
338 		trans_id),
339 
340 	TP_STRUCT__entry(
341 			__field(u64, ts_sec)
342 			__field(u32, ts_nsec)
343 			__field(int, trans_code)
344 			__field(int, trans_id)
345 	),
346 
347 	TP_fast_assign(
348 		__entry->ts_sec = ts_sec;
349 		__entry->ts_nsec = ts_nsec;
350 		__entry->trans_code = trans_code;
351 		__entry->trans_id = trans_id;
352 	),
353 
354 	TP_printk("%i,%i.%.9i,0,%i", __entry->trans_code,
355 			(int)__entry->ts_sec,
356 			(int)__entry->ts_nsec,
357 			__entry->trans_id)
358 
359 );
360 
361 TRACE_EVENT(mali_timeline_context_active,
362 
363 	TP_PROTO(u64 ts_sec,
364 		u32 ts_nsec,
365 		int count),
366 
367 	TP_ARGS(ts_sec,
368 		ts_nsec,
369 		count),
370 
371 	TP_STRUCT__entry(
372 			__field(u64, ts_sec)
373 			__field(u32, ts_nsec)
374 			__field(int, count)
375 	),
376 
377 	TP_fast_assign(
378 		__entry->ts_sec = ts_sec;
379 		__entry->ts_nsec = ts_nsec;
380 		__entry->count = count;
381 	),
382 
383 	TP_printk("%i,%i.%.9i,0,%i", SW_SET_CONTEXT_ACTIVE,
384 			(int)__entry->ts_sec,
385 			(int)__entry->ts_nsec,
386 			__entry->count)
387 );
388 
389 #endif /* _MALI_TIMELINE_H */
390 
391 #undef TRACE_INCLUDE_PATH
392 #define TRACE_INCLUDE_PATH .
393 
394 /* This part must be outside protection */
395 #include <trace/define_trace.h>
396 
397