3 * (C) COPYRIGHT ARM Limited. All rights reserved.
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
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.
20 /* ***** IMPORTANT: THIS IS NOT A NORMAL HEADER FILE *****
21 * ***** DO NOT INCLUDE DIRECTLY *****
22 * ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */
25 * The purpose of this header file is just to contain a list of trace code idenitifers
27 * Each identifier is wrapped in a macro, so that its string form and enum form can be created
29 * Each macro is separated with a comma, to allow insertion into an array initializer or enum definition block.
31 * This allows automatic creation of an enum and a corresponding array of strings
33 * Before #including, the includer MUST #define KBASE_TRACE_CODE_MAKE_CODE.
34 * After #including, the includer MUST #under KBASE_TRACE_CODE_MAKE_CODE.
37 * #define KBASE_TRACE_CODE( X ) KBASE_TRACE_CODE_ ## X
40 * #define KBASE_TRACE_CODE_MAKE_CODE( X ) KBASE_TRACE_CODE( X )
41 * #include "mali_kbase_trace_defs.h"
42 * #undef KBASE_TRACE_CODE_MAKE_CODE
45 * IMPORTANT: THIS FILE MUST NOT BE USED FOR ANY OTHER PURPOSE OTHER THAN THE ABOVE
48 * The use of the macro here is:
49 * - KBASE_TRACE_CODE_MAKE_CODE( X )
52 * - For an enum, KBASE_TRACE_CODE_X
57 * - KBASE_TRACE_CODE_MAKE_CODE( JM_JOB_COMPLETE ) expands to:
58 * - KBASE_TRACE_CODE_JM_JOB_COMPLETE for the enum
59 * - "JM_JOB_COMPLETE" for the string
60 * - To use it to trace an event, do:
61 * - KBASE_TRACE_ADD( kbdev, JM_JOB_COMPLETE, subcode, kctx, uatom, val );
64 #if 0 /* Dummy section to avoid breaking formatting */
71 KBASE_TRACE_CODE_MAKE_CODE(CORE_CTX_DESTROY), /* no info_val, no gpu_addr, no atom */
72 KBASE_TRACE_CODE_MAKE_CODE(CORE_CTX_HWINSTR_TERM), /* no info_val, no gpu_addr, no atom */
73 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ), /* info_val == GPU_IRQ_STATUS register */
74 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_CLEAR), /* info_val == bits cleared */
75 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_DONE), /* info_val == GPU_IRQ_STATUS register */
76 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_SOFT_RESET),
77 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_HARD_RESET),
78 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_CLEAR),
79 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_SAMPLE), /* GPU addr==dump address */
80 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_CLEAN_INV_CACHES),
83 * Job Slot management events
85 KBASE_TRACE_CODE_MAKE_CODE(JM_IRQ), /* info_val==irq rawstat at start */
86 KBASE_TRACE_CODE_MAKE_CODE(JM_IRQ_END),
87 /* info_val==jobs processed */
90 * - ctx is set if a corresponding job found (NULL otherwise, e.g. some soft-stop cases)
91 * - uatom==kernel-side mapped uatom address (for correlation with user-side)
93 KBASE_TRACE_CODE_MAKE_CODE(JM_JOB_DONE), /* info_val==exit code; gpu_addr==chain gpuaddr */
94 KBASE_TRACE_CODE_MAKE_CODE(JM_SUBMIT),
95 /* gpu_addr==JSn_HEAD_NEXT written, info_val==lower 32 bits of affinity */
96 /* gpu_addr is as follows:
97 * - If JSn_STATUS active after soft-stop, val==gpu addr written to JSn_HEAD on submit
98 * - otherwise gpu_addr==0 */
99 KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP),
100 KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP_0),
101 KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP_1),
102 KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP), /* gpu_addr==JSn_HEAD read */
103 KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP_0), /* gpu_addr==JSn_HEAD read */
104 KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP_1), /* gpu_addr==JSn_HEAD read */
105 KBASE_TRACE_CODE_MAKE_CODE(JM_UPDATE_HEAD), /* gpu_addr==JSn_TAIL read */
106 /* gpu_addr is as follows:
107 * - If JSn_STATUS active before soft-stop, val==JSn_HEAD
108 * - otherwise gpu_addr==0 */
109 KBASE_TRACE_CODE_MAKE_CODE(JM_CHECK_HEAD), /* gpu_addr==JSn_HEAD read */
110 KBASE_TRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS),
111 KBASE_TRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS_DONE),
112 KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_NON_SCHEDULED), /* info_val == is_scheduled */
113 KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_SCHEDULED),
114 /* info_val == is_scheduled */
115 KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_DONE),
116 KBASE_TRACE_CODE_MAKE_CODE(JM_SLOT_SOFT_OR_HARD_STOP), /* info_val == nr jobs submitted */
117 KBASE_TRACE_CODE_MAKE_CODE(JM_SLOT_EVICT), /* gpu_addr==JSn_HEAD_NEXT last written */
118 KBASE_TRACE_CODE_MAKE_CODE(JM_SUBMIT_AFTER_RESET),
119 KBASE_TRACE_CODE_MAKE_CODE(JM_BEGIN_RESET_WORKER),
120 KBASE_TRACE_CODE_MAKE_CODE(JM_END_RESET_WORKER),
122 * Job dispatch events
124 KBASE_TRACE_CODE_MAKE_CODE(JD_DONE),/* gpu_addr==value to write into JSn_HEAD */
125 KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_WORKER), /* gpu_addr==value to write into JSn_HEAD */
126 KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_WORKER_END),
127 /* gpu_addr==value to write into JSn_HEAD */
128 KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_TRY_RUN_NEXT_JOB),
129 /* gpu_addr==value to write into JSn_HEAD */
130 KBASE_TRACE_CODE_MAKE_CODE(JD_ZAP_CONTEXT), /* gpu_addr==0, info_val==0, uatom==0 */
131 KBASE_TRACE_CODE_MAKE_CODE(JD_CANCEL),
132 /* gpu_addr==value to write into JSn_HEAD */
133 KBASE_TRACE_CODE_MAKE_CODE(JD_CANCEL_WORKER),
134 /* gpu_addr==value to write into JSn_HEAD */
136 * Scheduler Core events
138 KBASE_TRACE_CODE_MAKE_CODE(JS_RETAIN_CTX_NOLOCK),
139 KBASE_TRACE_CODE_MAKE_CODE(JS_ADD_JOB), /* gpu_addr==value to write into JSn_HEAD */
140 KBASE_TRACE_CODE_MAKE_CODE(JS_REMOVE_JOB), /* gpu_addr==last value written/would be written to JSn_HEAD */
141 KBASE_TRACE_CODE_MAKE_CODE(JS_RETAIN_CTX),
142 KBASE_TRACE_CODE_MAKE_CODE(JS_RELEASE_CTX),
143 KBASE_TRACE_CODE_MAKE_CODE(JS_TRY_SCHEDULE_HEAD_CTX),
144 KBASE_TRACE_CODE_MAKE_CODE(JS_JOB_DONE_TRY_RUN_NEXT_JOB), /* gpu_addr==value to write into JSn_HEAD */
145 KBASE_TRACE_CODE_MAKE_CODE(JS_JOB_DONE_RETRY_NEEDED),
146 /* gpu_addr==value to write into JSn_HEAD */
147 KBASE_TRACE_CODE_MAKE_CODE(JS_FAST_START_EVICTS_CTX),
148 /* kctx is the one being evicted, info_val == kctx to put in */
149 KBASE_TRACE_CODE_MAKE_CODE(JS_AFFINITY_SUBMIT_TO_BLOCKED),
150 KBASE_TRACE_CODE_MAKE_CODE(JS_AFFINITY_CURRENT), /* info_val == lower 32 bits of affinity */
151 KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REQUEST_CORES_FAILED),
152 /* info_val == lower 32 bits of affinity */
153 KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REGISTER_INUSE_FAILED),
154 /* info_val == lower 32 bits of affinity */
155 KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REQUEST_ON_RECHECK_FAILED), /* info_val == lower 32 bits of rechecked affinity */
156 KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REGISTER_ON_RECHECK_FAILED), /* info_val == lower 32 bits of rechecked affinity */
157 KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_AFFINITY_WOULD_VIOLATE),
158 /* info_val == lower 32 bits of affinity */
159 KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_ON_CTX), /* info_val == the ctx attribute now on ctx */
160 KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_ON_RUNPOOL),
161 /* info_val == the ctx attribute now on runpool */
162 KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_OFF_CTX),/* info_val == the ctx attribute now off ctx */
163 KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_OFF_RUNPOOL), /* info_val == the ctx attribute now off runpool */
165 * Scheduler Policy events
167 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_INIT_CTX),
168 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TERM_CTX),
169 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TRY_EVICT_CTX), /* info_val == whether it was evicted */
170 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_FOREACH_CTX_JOBS),
171 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_ENQUEUE_CTX),
172 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_HEAD_CTX),
173 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_RUNPOOL_ADD_CTX),
174 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_RUNPOOL_REMOVE_CTX),
175 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_JOB),
176 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_JOB_IRQ),
177 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_ENQUEUE_JOB), /* gpu_addr==JSn_HEAD to write if the job were run */
178 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TIMER_START),
179 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TIMER_END),
181 * Power Management Events
183 KBASE_TRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERING_UP),
184 KBASE_TRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERED_UP),
185 KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON),
186 KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON_TILER),
187 KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON_L2),
188 KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF),
189 KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF_TILER),
190 KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF_L2),
191 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED),
192 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED_TILER),
193 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED_L2),
194 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED),
195 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED_TILER),
196 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE),
197 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE_TILER),
198 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE),
199 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE_TILER),
200 /* PM_DESIRED_REACHED: gpu_addr == pm.gpu_in_desired_state */
201 KBASE_TRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED),
202 KBASE_TRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED_TILER),
203 KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_SHADER_INUSE),
204 KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_TILER_INUSE),
205 KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_SHADER_NEEDED),
206 KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_TILER_NEEDED),
207 KBASE_TRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_SHADER_INUSE),
208 KBASE_TRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_TILER_INUSE),
209 KBASE_TRACE_CODE_MAKE_CODE(PM_UNREQUEST_CHANGE_SHADER_NEEDED),
210 KBASE_TRACE_CODE_MAKE_CODE(PM_UNREQUEST_CHANGE_TILER_NEEDED),
211 KBASE_TRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_SHADER_NEEDED),
212 KBASE_TRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_TILER_NEEDED),
213 KBASE_TRACE_CODE_MAKE_CODE(PM_WAKE_WAITERS),
214 KBASE_TRACE_CODE_MAKE_CODE(PM_CONTEXT_ACTIVE),
215 KBASE_TRACE_CODE_MAKE_CODE(PM_CONTEXT_IDLE),
216 KBASE_TRACE_CODE_MAKE_CODE(PM_GPU_ON),
217 KBASE_TRACE_CODE_MAKE_CODE(PM_GPU_OFF),
218 KBASE_TRACE_CODE_MAKE_CODE(PM_SET_POLICY), /* info_val == policy number, or -1 for "Already changing" */
219 KBASE_TRACE_CODE_MAKE_CODE(PM_CA_SET_POLICY),
221 KBASE_TRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_INIT), /* info_val == policy number */
222 KBASE_TRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_TERM), /* info_val == policy number */
223 /* Unused code just to make it easier to not have a comma at the end.
224 * All other codes MUST come before this */
225 KBASE_TRACE_CODE_MAKE_CODE(DUMMY)
228 #if 0 /* Dummy section to avoid breaking formatting */
232 /* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */