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