1 /* 2 * 3 * (C) COPYRIGHT 2011-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 20 /* ***** IMPORTANT: THIS IS NOT A NORMAL HEADER FILE ***** 21 * ***** DO NOT INCLUDE DIRECTLY ***** 22 * ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */ 23 24 /* 25 * The purpose of this header file is just to contain a list of trace code idenitifers 26 * 27 * Each identifier is wrapped in a macro, so that its string form and enum form can be created 28 * 29 * Each macro is separated with a comma, to allow insertion into an array initializer or enum definition block. 30 * 31 * This allows automatic creation of an enum and a corresponding array of strings 32 * 33 * Before #including, the includer MUST #define KBASE_TRACE_CODE_MAKE_CODE. 34 * After #including, the includer MUST #under KBASE_TRACE_CODE_MAKE_CODE. 35 * 36 * e.g.: 37 * #define KBASE_TRACE_CODE( X ) KBASE_TRACE_CODE_ ## X 38 * typedef enum 39 * { 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 43 * } kbase_trace_code; 44 * 45 * IMPORTANT: THIS FILE MUST NOT BE USED FOR ANY OTHER PURPOSE OTHER THAN THE ABOVE 46 * 47 * 48 * The use of the macro here is: 49 * - KBASE_TRACE_CODE_MAKE_CODE( X ) 50 * 51 * Which produces: 52 * - For an enum, KBASE_TRACE_CODE_X 53 * - For a string, "X" 54 * 55 * 56 * For example: 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 ); 62 */ 63 64 #if 0 /* Dummy section to avoid breaking formatting */ 65 int dummy_array[] = { 66 #endif 67 68 /* 69 * Core events 70 */ 71 /* no info_val, no gpu_addr, no atom */ 72 KBASE_TRACE_CODE_MAKE_CODE(CORE_CTX_DESTROY), 73 /* no info_val, no gpu_addr, no atom */ 74 KBASE_TRACE_CODE_MAKE_CODE(CORE_CTX_HWINSTR_TERM), 75 /* info_val == GPU_IRQ_STATUS register */ 76 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ), 77 /* info_val == bits cleared */ 78 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_CLEAR), 79 /* info_val == GPU_IRQ_STATUS register */ 80 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_DONE), 81 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_SOFT_RESET), 82 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_HARD_RESET), 83 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_CLEAR), 84 /* GPU addr==dump address */ 85 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_SAMPLE), 86 KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_CLEAN_INV_CACHES), 87 /* 88 * Job Slot management events 89 */ 90 /* info_val==irq rawstat at start */ 91 KBASE_TRACE_CODE_MAKE_CODE(JM_IRQ), 92 /* info_val==jobs processed */ 93 KBASE_TRACE_CODE_MAKE_CODE(JM_IRQ_END), 94 /* In the following: 95 * 96 * - ctx is set if a corresponding job found (NULL otherwise, e.g. some soft-stop cases) 97 * - uatom==kernel-side mapped uatom address (for correlation with user-side) 98 */ 99 /* info_val==exit code; gpu_addr==chain gpuaddr */ 100 KBASE_TRACE_CODE_MAKE_CODE(JM_JOB_DONE), 101 /* gpu_addr==JS_HEAD_NEXT written, info_val==lower 32 bits of affinity */ 102 KBASE_TRACE_CODE_MAKE_CODE(JM_SUBMIT), 103 /* gpu_addr is as follows: 104 * - If JS_STATUS active after soft-stop, val==gpu addr written to 105 * JS_HEAD on submit 106 * - otherwise gpu_addr==0 */ 107 KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP), 108 KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP_0), 109 KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP_1), 110 /* gpu_addr==JS_HEAD read */ 111 KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP), 112 /* gpu_addr==JS_HEAD read */ 113 KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP_0), 114 /* gpu_addr==JS_HEAD read */ 115 KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP_1), 116 /* gpu_addr==JS_TAIL read */ 117 KBASE_TRACE_CODE_MAKE_CODE(JM_UPDATE_HEAD), 118 /* gpu_addr is as follows: 119 * - If JS_STATUS active before soft-stop, val==JS_HEAD 120 * - otherwise gpu_addr==0 121 */ 122 /* gpu_addr==JS_HEAD read */ 123 KBASE_TRACE_CODE_MAKE_CODE(JM_CHECK_HEAD), 124 KBASE_TRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS), 125 KBASE_TRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS_DONE), 126 /* info_val == is_scheduled */ 127 KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_NON_SCHEDULED), 128 /* info_val == is_scheduled */ 129 KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_SCHEDULED), 130 KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_DONE), 131 /* info_val == nr jobs submitted */ 132 KBASE_TRACE_CODE_MAKE_CODE(JM_SLOT_SOFT_OR_HARD_STOP), 133 /* gpu_addr==JS_HEAD_NEXT last written */ 134 KBASE_TRACE_CODE_MAKE_CODE(JM_SLOT_EVICT), 135 KBASE_TRACE_CODE_MAKE_CODE(JM_SUBMIT_AFTER_RESET), 136 KBASE_TRACE_CODE_MAKE_CODE(JM_BEGIN_RESET_WORKER), 137 KBASE_TRACE_CODE_MAKE_CODE(JM_END_RESET_WORKER), 138 /* 139 * Job dispatch events 140 */ 141 /* gpu_addr==value to write into JS_HEAD */ 142 KBASE_TRACE_CODE_MAKE_CODE(JD_DONE), 143 /* gpu_addr==value to write into JS_HEAD */ 144 KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_WORKER), 145 /* gpu_addr==value to write into JS_HEAD */ 146 KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_WORKER_END), 147 /* gpu_addr==value to write into JS_HEAD */ 148 KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_TRY_RUN_NEXT_JOB), 149 /* gpu_addr==0, info_val==0, uatom==0 */ 150 KBASE_TRACE_CODE_MAKE_CODE(JD_ZAP_CONTEXT), 151 /* gpu_addr==value to write into JS_HEAD */ 152 KBASE_TRACE_CODE_MAKE_CODE(JD_CANCEL), 153 /* gpu_addr==value to write into JS_HEAD */ 154 KBASE_TRACE_CODE_MAKE_CODE(JD_CANCEL_WORKER), 155 /* 156 * Scheduler Core events 157 */ 158 KBASE_TRACE_CODE_MAKE_CODE(JS_RETAIN_CTX_NOLOCK), 159 /* gpu_addr==value to write into JS_HEAD */ 160 KBASE_TRACE_CODE_MAKE_CODE(JS_ADD_JOB), 161 /* gpu_addr==last value written/would be written to JS_HEAD */ 162 KBASE_TRACE_CODE_MAKE_CODE(JS_REMOVE_JOB), 163 KBASE_TRACE_CODE_MAKE_CODE(JS_RETAIN_CTX), 164 KBASE_TRACE_CODE_MAKE_CODE(JS_RELEASE_CTX), 165 KBASE_TRACE_CODE_MAKE_CODE(JS_TRY_SCHEDULE_HEAD_CTX), 166 /* gpu_addr==value to write into JS_HEAD */ 167 KBASE_TRACE_CODE_MAKE_CODE(JS_JOB_DONE_TRY_RUN_NEXT_JOB), 168 /* gpu_addr==value to write into JS_HEAD */ 169 KBASE_TRACE_CODE_MAKE_CODE(JS_JOB_DONE_RETRY_NEEDED), 170 /* kctx is the one being evicted, info_val == kctx to put in */ 171 KBASE_TRACE_CODE_MAKE_CODE(JS_FAST_START_EVICTS_CTX), 172 KBASE_TRACE_CODE_MAKE_CODE(JS_AFFINITY_SUBMIT_TO_BLOCKED), 173 /* info_val == lower 32 bits of affinity */ 174 KBASE_TRACE_CODE_MAKE_CODE(JS_AFFINITY_CURRENT), 175 /* info_val == lower 32 bits of affinity */ 176 KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REQUEST_CORES_FAILED), 177 /* info_val == lower 32 bits of affinity */ 178 KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REGISTER_INUSE_FAILED), 179 /* info_val == lower 32 bits of rechecked affinity */ 180 KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REQUEST_ON_RECHECK_FAILED), 181 /* info_val == lower 32 bits of rechecked affinity */ 182 KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REGISTER_ON_RECHECK_FAILED), 183 /* info_val == lower 32 bits of affinity */ 184 KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_AFFINITY_WOULD_VIOLATE), 185 /* info_val == the ctx attribute now on ctx */ 186 KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_ON_CTX), 187 /* info_val == the ctx attribute now on runpool */ 188 KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_ON_RUNPOOL), 189 /* info_val == the ctx attribute now off ctx */ 190 KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_OFF_CTX), 191 /* info_val == the ctx attribute now off runpool */ 192 KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_OFF_RUNPOOL), 193 /* 194 * Scheduler Policy events 195 */ 196 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_INIT_CTX), 197 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TERM_CTX), 198 /* info_val == whether it was evicted */ 199 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TRY_EVICT_CTX), 200 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_FOREACH_CTX_JOBS), 201 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_ENQUEUE_CTX), 202 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_HEAD_CTX), 203 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_RUNPOOL_ADD_CTX), 204 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_RUNPOOL_REMOVE_CTX), 205 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_JOB), 206 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_JOB_IRQ), 207 /* gpu_addr==JS_HEAD to write if the job were run */ 208 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_ENQUEUE_JOB), 209 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TIMER_START), 210 KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TIMER_END), 211 /* 212 * Power Management Events 213 */ 214 KBASE_TRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERING_UP), 215 KBASE_TRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERED_UP), 216 KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON), 217 KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON_TILER), 218 KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON_L2), 219 KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF), 220 KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF_TILER), 221 KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF_L2), 222 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED), 223 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED_TILER), 224 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED_L2), 225 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED), 226 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED_TILER), 227 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE), 228 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE_TILER), 229 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE), 230 KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE_TILER), 231 /* PM_DESIRED_REACHED: gpu_addr == pm.gpu_in_desired_state */ 232 KBASE_TRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED), 233 KBASE_TRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED_TILER), 234 KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_SHADER_INUSE), 235 KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_TILER_INUSE), 236 KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_SHADER_NEEDED), 237 KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_TILER_NEEDED), 238 KBASE_TRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_SHADER_INUSE), 239 KBASE_TRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_TILER_INUSE), 240 KBASE_TRACE_CODE_MAKE_CODE(PM_UNREQUEST_CHANGE_SHADER_NEEDED), 241 KBASE_TRACE_CODE_MAKE_CODE(PM_UNREQUEST_CHANGE_TILER_NEEDED), 242 KBASE_TRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_SHADER_NEEDED), 243 KBASE_TRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_TILER_NEEDED), 244 KBASE_TRACE_CODE_MAKE_CODE(PM_WAKE_WAITERS), 245 KBASE_TRACE_CODE_MAKE_CODE(PM_CONTEXT_ACTIVE), 246 KBASE_TRACE_CODE_MAKE_CODE(PM_CONTEXT_IDLE), 247 KBASE_TRACE_CODE_MAKE_CODE(PM_GPU_ON), 248 KBASE_TRACE_CODE_MAKE_CODE(PM_GPU_OFF), 249 /* info_val == policy number, or -1 for "Already changing" */ 250 KBASE_TRACE_CODE_MAKE_CODE(PM_SET_POLICY), 251 KBASE_TRACE_CODE_MAKE_CODE(PM_CA_SET_POLICY), 252 /* info_val == policy number */ 253 KBASE_TRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_INIT), 254 /* info_val == policy number */ 255 KBASE_TRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_TERM), 256 /* Unused code just to make it easier to not have a comma at the end. 257 * All other codes MUST come before this */ 258 KBASE_TRACE_CODE_MAKE_CODE(DUMMY) 259 260 #if 0 /* Dummy section to avoid breaking formatting */ 261 }; 262 #endif 263 264 /* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */ 265