xref: /OK3568_Linux_fs/kernel/drivers/gpu/arm/midgard/mali_linux_kbase_trace.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  *
3  * (C) COPYRIGHT 2014 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 #if !defined(_TRACE_MALI_KBASE_H) || defined(TRACE_HEADER_MULTI_READ)
20 #define _TRACE_MALI_KBASE_H
21 
22 #undef TRACE_SYSTEM
23 #define TRACE_SYSTEM mali
24 
25 #include <linux/tracepoint.h>
26 
27 DECLARE_EVENT_CLASS(mali_slot_template,
28 	TP_PROTO(int jobslot, unsigned int info_val),
29 	TP_ARGS(jobslot, info_val),
30 	TP_STRUCT__entry(
31 		__field(unsigned int, jobslot)
32 		__field(unsigned int, info_val)
33 	),
34 	TP_fast_assign(
35 		__entry->jobslot = jobslot;
36 		__entry->info_val = info_val;
37 	),
38 	TP_printk("jobslot=%u info=%u", __entry->jobslot, __entry->info_val)
39 );
40 
41 #define DEFINE_MALI_SLOT_EVENT(name) \
42 DEFINE_EVENT(mali_slot_template, mali_##name, \
43 	TP_PROTO(int jobslot, unsigned int info_val), \
44 	TP_ARGS(jobslot, info_val))
45 DEFINE_MALI_SLOT_EVENT(JM_SUBMIT);
46 DEFINE_MALI_SLOT_EVENT(JM_JOB_DONE);
47 DEFINE_MALI_SLOT_EVENT(JM_UPDATE_HEAD);
48 DEFINE_MALI_SLOT_EVENT(JM_CHECK_HEAD);
49 DEFINE_MALI_SLOT_EVENT(JM_SOFTSTOP);
50 DEFINE_MALI_SLOT_EVENT(JM_SOFTSTOP_0);
51 DEFINE_MALI_SLOT_EVENT(JM_SOFTSTOP_1);
52 DEFINE_MALI_SLOT_EVENT(JM_HARDSTOP);
53 DEFINE_MALI_SLOT_EVENT(JM_HARDSTOP_0);
54 DEFINE_MALI_SLOT_EVENT(JM_HARDSTOP_1);
55 DEFINE_MALI_SLOT_EVENT(JM_SLOT_SOFT_OR_HARD_STOP);
56 DEFINE_MALI_SLOT_EVENT(JM_SLOT_EVICT);
57 DEFINE_MALI_SLOT_EVENT(JM_BEGIN_RESET_WORKER);
58 DEFINE_MALI_SLOT_EVENT(JM_END_RESET_WORKER);
59 DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REGISTER_ON_RECHECK_FAILED);
60 DEFINE_MALI_SLOT_EVENT(JS_AFFINITY_SUBMIT_TO_BLOCKED);
61 DEFINE_MALI_SLOT_EVENT(JS_AFFINITY_CURRENT);
62 DEFINE_MALI_SLOT_EVENT(JD_DONE_TRY_RUN_NEXT_JOB);
63 DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REQUEST_CORES_FAILED);
64 DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REGISTER_INUSE_FAILED);
65 DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REQUEST_ON_RECHECK_FAILED);
66 DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_AFFINITY_WOULD_VIOLATE);
67 DEFINE_MALI_SLOT_EVENT(JS_JOB_DONE_TRY_RUN_NEXT_JOB);
68 DEFINE_MALI_SLOT_EVENT(JS_JOB_DONE_RETRY_NEEDED);
69 DEFINE_MALI_SLOT_EVENT(JS_POLICY_DEQUEUE_JOB);
70 DEFINE_MALI_SLOT_EVENT(JS_POLICY_DEQUEUE_JOB_IRQ);
71 #undef DEFINE_MALI_SLOT_EVENT
72 
73 DECLARE_EVENT_CLASS(mali_refcount_template,
74 	TP_PROTO(int refcount, unsigned int info_val),
75 	TP_ARGS(refcount, info_val),
76 	TP_STRUCT__entry(
77 		__field(unsigned int, refcount)
78 		__field(unsigned int, info_val)
79 	),
80 	TP_fast_assign(
81 		__entry->refcount = refcount;
82 		__entry->info_val = info_val;
83 	),
84 	TP_printk("refcount=%u info=%u", __entry->refcount, __entry->info_val)
85 );
86 
87 #define DEFINE_MALI_REFCOUNT_EVENT(name) \
88 DEFINE_EVENT(mali_refcount_template, mali_##name, \
89 	TP_PROTO(int refcount, unsigned int info_val), \
90 	TP_ARGS(refcount, info_val))
91 DEFINE_MALI_REFCOUNT_EVENT(JS_RETAIN_CTX_NOLOCK);
92 DEFINE_MALI_REFCOUNT_EVENT(JS_ADD_JOB);
93 DEFINE_MALI_REFCOUNT_EVENT(JS_REMOVE_JOB);
94 DEFINE_MALI_REFCOUNT_EVENT(JS_RETAIN_CTX);
95 DEFINE_MALI_REFCOUNT_EVENT(JS_RELEASE_CTX);
96 DEFINE_MALI_REFCOUNT_EVENT(JS_TRY_SCHEDULE_HEAD_CTX);
97 DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_INIT_CTX);
98 DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_TERM_CTX);
99 DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_ENQUEUE_CTX);
100 DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_DEQUEUE_HEAD_CTX);
101 DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_TRY_EVICT_CTX);
102 DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_RUNPOOL_ADD_CTX);
103 DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_RUNPOOL_REMOVE_CTX);
104 DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_FOREACH_CTX_JOBS);
105 DEFINE_MALI_REFCOUNT_EVENT(PM_CONTEXT_ACTIVE);
106 DEFINE_MALI_REFCOUNT_EVENT(PM_CONTEXT_IDLE);
107 #undef DEFINE_MALI_REFCOUNT_EVENT
108 
109 DECLARE_EVENT_CLASS(mali_add_template,
110 	TP_PROTO(int gpu_addr, unsigned int info_val),
111 	TP_ARGS(gpu_addr, info_val),
112 	TP_STRUCT__entry(
113 		__field(unsigned int, gpu_addr)
114 		__field(unsigned int, info_val)
115 	),
116 	TP_fast_assign(
117 		__entry->gpu_addr = gpu_addr;
118 		__entry->info_val = info_val;
119 	),
120 	TP_printk("gpu_addr=%u info=%u", __entry->gpu_addr, __entry->info_val)
121 );
122 
123 #define DEFINE_MALI_ADD_EVENT(name) \
124 DEFINE_EVENT(mali_add_template, mali_##name, \
125 	TP_PROTO(int gpu_addr, unsigned int info_val), \
126 	TP_ARGS(gpu_addr, info_val))
127 DEFINE_MALI_ADD_EVENT(CORE_CTX_DESTROY);
128 DEFINE_MALI_ADD_EVENT(CORE_CTX_HWINSTR_TERM);
129 DEFINE_MALI_ADD_EVENT(CORE_GPU_IRQ);
130 DEFINE_MALI_ADD_EVENT(CORE_GPU_IRQ_CLEAR);
131 DEFINE_MALI_ADD_EVENT(CORE_GPU_IRQ_DONE);
132 DEFINE_MALI_ADD_EVENT(CORE_GPU_SOFT_RESET);
133 DEFINE_MALI_ADD_EVENT(CORE_GPU_HARD_RESET);
134 DEFINE_MALI_ADD_EVENT(CORE_GPU_PRFCNT_SAMPLE);
135 DEFINE_MALI_ADD_EVENT(CORE_GPU_PRFCNT_CLEAR);
136 DEFINE_MALI_ADD_EVENT(CORE_GPU_CLEAN_INV_CACHES);
137 DEFINE_MALI_ADD_EVENT(JD_DONE_WORKER);
138 DEFINE_MALI_ADD_EVENT(JD_DONE_WORKER_END);
139 DEFINE_MALI_ADD_EVENT(JD_CANCEL_WORKER);
140 DEFINE_MALI_ADD_EVENT(JD_DONE);
141 DEFINE_MALI_ADD_EVENT(JD_CANCEL);
142 DEFINE_MALI_ADD_EVENT(JD_ZAP_CONTEXT);
143 DEFINE_MALI_ADD_EVENT(JM_IRQ);
144 DEFINE_MALI_ADD_EVENT(JM_IRQ_END);
145 DEFINE_MALI_ADD_EVENT(JM_FLUSH_WORKQS);
146 DEFINE_MALI_ADD_EVENT(JM_FLUSH_WORKQS_DONE);
147 DEFINE_MALI_ADD_EVENT(JM_ZAP_NON_SCHEDULED);
148 DEFINE_MALI_ADD_EVENT(JM_ZAP_SCHEDULED);
149 DEFINE_MALI_ADD_EVENT(JM_ZAP_DONE);
150 DEFINE_MALI_ADD_EVENT(JM_SUBMIT_AFTER_RESET);
151 DEFINE_MALI_ADD_EVENT(JM_JOB_COMPLETE);
152 DEFINE_MALI_ADD_EVENT(JS_FAST_START_EVICTS_CTX);
153 DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_ON_RUNPOOL);
154 DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_OFF_RUNPOOL);
155 DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_ON_CTX);
156 DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_OFF_CTX);
157 DEFINE_MALI_ADD_EVENT(JS_POLICY_TIMER_END);
158 DEFINE_MALI_ADD_EVENT(JS_POLICY_TIMER_START);
159 DEFINE_MALI_ADD_EVENT(JS_POLICY_ENQUEUE_JOB);
160 DEFINE_MALI_ADD_EVENT(PM_CORES_CHANGE_DESIRED);
161 DEFINE_MALI_ADD_EVENT(PM_JOB_SUBMIT_AFTER_POWERING_UP);
162 DEFINE_MALI_ADD_EVENT(PM_JOB_SUBMIT_AFTER_POWERED_UP);
163 DEFINE_MALI_ADD_EVENT(PM_PWRON);
164 DEFINE_MALI_ADD_EVENT(PM_PWRON_TILER);
165 DEFINE_MALI_ADD_EVENT(PM_PWRON_L2);
166 DEFINE_MALI_ADD_EVENT(PM_PWROFF);
167 DEFINE_MALI_ADD_EVENT(PM_PWROFF_TILER);
168 DEFINE_MALI_ADD_EVENT(PM_PWROFF_L2);
169 DEFINE_MALI_ADD_EVENT(PM_CORES_POWERED);
170 DEFINE_MALI_ADD_EVENT(PM_CORES_POWERED_TILER);
171 DEFINE_MALI_ADD_EVENT(PM_CORES_POWERED_L2);
172 DEFINE_MALI_ADD_EVENT(PM_DESIRED_REACHED);
173 DEFINE_MALI_ADD_EVENT(PM_DESIRED_REACHED_TILER);
174 DEFINE_MALI_ADD_EVENT(PM_UNREQUEST_CHANGE_SHADER_NEEDED);
175 DEFINE_MALI_ADD_EVENT(PM_REQUEST_CHANGE_SHADER_NEEDED);
176 DEFINE_MALI_ADD_EVENT(PM_REGISTER_CHANGE_SHADER_NEEDED);
177 DEFINE_MALI_ADD_EVENT(PM_REGISTER_CHANGE_SHADER_INUSE);
178 DEFINE_MALI_ADD_EVENT(PM_RELEASE_CHANGE_SHADER_INUSE);
179 DEFINE_MALI_ADD_EVENT(PM_CORES_AVAILABLE);
180 DEFINE_MALI_ADD_EVENT(PM_CORES_AVAILABLE_TILER);
181 DEFINE_MALI_ADD_EVENT(PM_CORES_CHANGE_AVAILABLE);
182 DEFINE_MALI_ADD_EVENT(PM_CORES_CHANGE_AVAILABLE_TILER);
183 DEFINE_MALI_ADD_EVENT(PM_GPU_ON);
184 DEFINE_MALI_ADD_EVENT(PM_GPU_OFF);
185 DEFINE_MALI_ADD_EVENT(PM_SET_POLICY);
186 DEFINE_MALI_ADD_EVENT(PM_CURRENT_POLICY_INIT);
187 DEFINE_MALI_ADD_EVENT(PM_CURRENT_POLICY_TERM);
188 DEFINE_MALI_ADD_EVENT(PM_CA_SET_POLICY);
189 DEFINE_MALI_ADD_EVENT(PM_WAKE_WAITERS);
190 #undef DEFINE_MALI_ADD_EVENT
191 
192 #endif /* _TRACE_MALI_KBASE_H */
193 
194 #undef TRACE_INCLUDE_PATH
195 #undef linux
196 #define TRACE_INCLUDE_PATH .
197 #undef TRACE_INCLUDE_FILE
198 #define TRACE_INCLUDE_FILE mali_linux_kbase_trace
199 
200 /* This part must be outside protection */
201 #include <trace/define_trace.h>
202