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