268 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * include/trace/events/host1x.h4 *5 * host1x event logging to ftrace.6 *7 * Copyright (c) 2010-2013, NVIDIA Corporation.8 */9 10#undef TRACE_SYSTEM11#define TRACE_SYSTEM host1x12 13#if !defined(_TRACE_HOST1X_H) || defined(TRACE_HEADER_MULTI_READ)14#define _TRACE_HOST1X_H15 16#include <linux/ktime.h>17#include <linux/tracepoint.h>18 19struct host1x_bo;20 21DECLARE_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 29DEFINE_EVENT(host1x, host1x_channel_open,30 TP_PROTO(const char *name),31 TP_ARGS(name)32);33 34DEFINE_EVENT(host1x, host1x_channel_release,35 TP_PROTO(const char *name),36 TP_ARGS(name)37);38 39DEFINE_EVENT(host1x, host1x_cdma_begin,40 TP_PROTO(const char *name),41 TP_ARGS(name)42);43 44DEFINE_EVENT(host1x, host1x_cdma_end,45 TP_PROTO(const char *name),46 TP_ARGS(name)47);48 49TRACE_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 70TRACE_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 96TRACE_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 130TRACE_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 158TRACE_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 179TRACE_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 200TRACE_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 218TRACE_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 236TRACE_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