1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * include/trace/events/host1x.h 4 * 5 * host1x event logging to ftrace. 6 * 7 * Copyright (c) 2010-2013, NVIDIA Corporation. 8 */ 9 10 #undef TRACE_SYSTEM 11 #define TRACE_SYSTEM host1x 12 13 #if !defined(_TRACE_HOST1X_H) || defined(TRACE_HEADER_MULTI_READ) 14 #define _TRACE_HOST1X_H 15 16 #include <linux/ktime.h> 17 #include <linux/tracepoint.h> 18 19 struct host1x_bo; 20 21 DECLARE_EVENT_CLASS(host1x, 22 TP_PROTO(const char *name), 23 TP_ARGS(name), 24 TP_STRUCT__entry(__string(name, name)), 25 TP_fast_assign( 26 __assign_str(name); 27 ), 28 TP_printk("name=%s", __get_str(name)) 29 ); 30 31 DEFINE_EVENT(host1x, host1x_channel_open, 32 TP_PROTO(const char *name), 33 TP_ARGS(name) 34 ); 35 36 DEFINE_EVENT(host1x, host1x_channel_release, 37 TP_PROTO(const char *name), 38 TP_ARGS(name) 39 ); 40 41 DEFINE_EVENT(host1x, host1x_cdma_begin, 42 TP_PROTO(const char *name), 43 TP_ARGS(name) 44 ); 45 46 DEFINE_EVENT(host1x, host1x_cdma_end, 47 TP_PROTO(const char *name), 48 TP_ARGS(name) 49 ); 50 51 TRACE_EVENT(host1x_cdma_push, 52 TP_PROTO(const char *name, u32 op1, u32 op2), 53 54 TP_ARGS(name, op1, op2), 55 56 TP_STRUCT__entry( 57 __string(name, name) 58 __field(u32, op1) 59 __field(u32, op2) 60 ), 61 62 TP_fast_assign( 63 __assign_str(name); 64 __entry->op1 = op1; 65 __entry->op2 = op2; 66 ), 67 68 TP_printk("name=%s, op1=%08x, op2=%08x", 69 __get_str(name), __entry->op1, __entry->op2) 70 ); 71 72 TRACE_EVENT(host1x_cdma_push_wide, 73 TP_PROTO(const char *name, u32 op1, u32 op2, u32 op3, u32 op4), 74 75 TP_ARGS(name, op1, op2, op3, op4), 76 77 TP_STRUCT__entry( 78 __string(name, name) 79 __field(u32, op1) 80 __field(u32, op2) 81 __field(u32, op3) 82 __field(u32, op4) 83 ), 84 85 TP_fast_assign( 86 __assign_str(name); 87 __entry->op1 = op1; 88 __entry->op2 = op2; 89 __entry->op3 = op3; 90 __entry->op4 = op4; 91 ), 92 93 TP_printk("name=%s, op1=%08x, op2=%08x, op3=%08x op4=%08x", 94 __get_str(name), __entry->op1, __entry->op2, __entry->op3, 95 __entry->op4) 96 ); 97 98 TRACE_EVENT(host1x_cdma_push_gather, 99 TP_PROTO(const char *name, struct host1x_bo *bo, 100 u32 words, u32 offset, void *cmdbuf), 101 102 TP_ARGS(name, bo, words, offset, cmdbuf), 103 104 TP_STRUCT__entry( 105 __string(name, name) 106 __field(struct host1x_bo *, bo) 107 __field(u32, words) 108 __field(u32, offset) 109 __field(bool, cmdbuf) 110 __dynamic_array(u32, cmdbuf, words) 111 ), 112 113 TP_fast_assign( 114 if (cmdbuf) { 115 memcpy(__get_dynamic_array(cmdbuf), cmdbuf+offset, 116 words * sizeof(u32)); 117 } 118 __entry->cmdbuf = cmdbuf; 119 __assign_str(name); 120 __entry->bo = bo; 121 __entry->words = words; 122 __entry->offset = offset; 123 ), 124 125 TP_printk("name=%s, bo=%p, words=%u, offset=%d, contents=[%s]", 126 __get_str(name), __entry->bo, 127 __entry->words, __entry->offset, 128 __print_hex(__get_dynamic_array(cmdbuf), 129 __entry->cmdbuf ? __entry->words * 4 : 0)) 130 ); 131 132 TRACE_EVENT(host1x_channel_submit, 133 TP_PROTO(const char *name, u32 cmdbufs, u32 relocs, u32 syncpt_id, 134 u32 syncpt_incrs), 135 136 TP_ARGS(name, cmdbufs, relocs, syncpt_id, syncpt_incrs), 137 138 TP_STRUCT__entry( 139 __string(name, name) 140 __field(u32, cmdbufs) 141 __field(u32, relocs) 142 __field(u32, syncpt_id) 143 __field(u32, syncpt_incrs) 144 ), 145 146 TP_fast_assign( 147 __assign_str(name); 148 __entry->cmdbufs = cmdbufs; 149 __entry->relocs = relocs; 150 __entry->syncpt_id = syncpt_id; 151 __entry->syncpt_incrs = syncpt_incrs; 152 ), 153 154 TP_printk("name=%s, cmdbufs=%u, relocs=%u, syncpt_id=%u, " 155 "syncpt_incrs=%u", 156 __get_str(name), __entry->cmdbufs, __entry->relocs, 157 __entry->syncpt_id, __entry->syncpt_incrs) 158 ); 159 160 TRACE_EVENT(host1x_channel_submitted, 161 TP_PROTO(const char *name, u32 syncpt_base, u32 syncpt_max), 162 163 TP_ARGS(name, syncpt_base, syncpt_max), 164 165 TP_STRUCT__entry( 166 __string(name, name) 167 __field(u32, syncpt_base) 168 __field(u32, syncpt_max) 169 ), 170 171 TP_fast_assign( 172 __assign_str(name); 173 __entry->syncpt_base = syncpt_base; 174 __entry->syncpt_max = syncpt_max; 175 ), 176 177 TP_printk("name=%s, syncpt_base=%d, syncpt_max=%d", 178 __get_str(name), __entry->syncpt_base, __entry->syncpt_max) 179 ); 180 181 TRACE_EVENT(host1x_channel_submit_complete, 182 TP_PROTO(const char *name, int count, u32 thresh), 183 184 TP_ARGS(name, count, thresh), 185 186 TP_STRUCT__entry( 187 __string(name, name) 188 __field(int, count) 189 __field(u32, thresh) 190 ), 191 192 TP_fast_assign( 193 __assign_str(name); 194 __entry->count = count; 195 __entry->thresh = thresh; 196 ), 197 198 TP_printk("name=%s, count=%d, thresh=%d", 199 __get_str(name), __entry->count, __entry->thresh) 200 ); 201 202 TRACE_EVENT(host1x_wait_cdma, 203 TP_PROTO(const char *name, u32 eventid), 204 205 TP_ARGS(name, eventid), 206 207 TP_STRUCT__entry( 208 __string(name, name) 209 __field(u32, eventid) 210 ), 211 212 TP_fast_assign( 213 __assign_str(name); 214 __entry->eventid = eventid; 215 ), 216 217 TP_printk("name=%s, event=%d", __get_str(name), __entry->eventid) 218 ); 219 220 TRACE_EVENT(host1x_syncpt_load_min, 221 TP_PROTO(u32 id, u32 val), 222 223 TP_ARGS(id, val), 224 225 TP_STRUCT__entry( 226 __field(u32, id) 227 __field(u32, val) 228 ), 229 230 TP_fast_assign( 231 __entry->id = id; 232 __entry->val = val; 233 ), 234 235 TP_printk("id=%d, val=%d", __entry->id, __entry->val) 236 ); 237 238 TRACE_EVENT(host1x_syncpt_wait_check, 239 TP_PROTO(struct host1x_bo *bo, u32 offset, u32 syncpt_id, u32 thresh, 240 u32 min), 241 242 TP_ARGS(bo, offset, syncpt_id, thresh, min), 243 244 TP_STRUCT__entry( 245 __field(struct host1x_bo *, bo) 246 __field(u32, offset) 247 __field(u32, syncpt_id) 248 __field(u32, thresh) 249 __field(u32, min) 250 ), 251 252 TP_fast_assign( 253 __entry->bo = bo; 254 __entry->offset = offset; 255 __entry->syncpt_id = syncpt_id; 256 __entry->thresh = thresh; 257 __entry->min = min; 258 ), 259 260 TP_printk("bo=%p, offset=%05x, id=%d, thresh=%d, current=%d", 261 __entry->bo, __entry->offset, 262 __entry->syncpt_id, __entry->thresh, 263 __entry->min) 264 ); 265 266 #endif /* _TRACE_HOST1X_H */ 267 268 /* This part must be outside protection */ 269 #include <trace/define_trace.h> 270