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