0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #undef TRACE_SYSTEM
0011 #define TRACE_SYSTEM host1x
0012
0013 #if !defined(_TRACE_HOST1X_H) || defined(TRACE_HEADER_MULTI_READ)
0014 #define _TRACE_HOST1X_H
0015
0016 #include <linux/ktime.h>
0017 #include <linux/tracepoint.h>
0018
0019 struct host1x_bo;
0020
0021 DECLARE_EVENT_CLASS(host1x,
0022 TP_PROTO(const char *name),
0023 TP_ARGS(name),
0024 TP_STRUCT__entry(__field(const char *, name)),
0025 TP_fast_assign(__entry->name = name;),
0026 TP_printk("name=%s", __entry->name)
0027 );
0028
0029 DEFINE_EVENT(host1x, host1x_channel_open,
0030 TP_PROTO(const char *name),
0031 TP_ARGS(name)
0032 );
0033
0034 DEFINE_EVENT(host1x, host1x_channel_release,
0035 TP_PROTO(const char *name),
0036 TP_ARGS(name)
0037 );
0038
0039 DEFINE_EVENT(host1x, host1x_cdma_begin,
0040 TP_PROTO(const char *name),
0041 TP_ARGS(name)
0042 );
0043
0044 DEFINE_EVENT(host1x, host1x_cdma_end,
0045 TP_PROTO(const char *name),
0046 TP_ARGS(name)
0047 );
0048
0049 TRACE_EVENT(host1x_cdma_push,
0050 TP_PROTO(const char *name, u32 op1, u32 op2),
0051
0052 TP_ARGS(name, op1, op2),
0053
0054 TP_STRUCT__entry(
0055 __field(const char *, name)
0056 __field(u32, op1)
0057 __field(u32, op2)
0058 ),
0059
0060 TP_fast_assign(
0061 __entry->name = name;
0062 __entry->op1 = op1;
0063 __entry->op2 = op2;
0064 ),
0065
0066 TP_printk("name=%s, op1=%08x, op2=%08x",
0067 __entry->name, __entry->op1, __entry->op2)
0068 );
0069
0070 TRACE_EVENT(host1x_cdma_push_wide,
0071 TP_PROTO(const char *name, u32 op1, u32 op2, u32 op3, u32 op4),
0072
0073 TP_ARGS(name, op1, op2, op3, op4),
0074
0075 TP_STRUCT__entry(
0076 __field(const char *, name)
0077 __field(u32, op1)
0078 __field(u32, op2)
0079 __field(u32, op3)
0080 __field(u32, op4)
0081 ),
0082
0083 TP_fast_assign(
0084 __entry->name = name;
0085 __entry->op1 = op1;
0086 __entry->op2 = op2;
0087 __entry->op3 = op3;
0088 __entry->op4 = op4;
0089 ),
0090
0091 TP_printk("name=%s, op1=%08x, op2=%08x, op3=%08x op4=%08x",
0092 __entry->name, __entry->op1, __entry->op2, __entry->op3,
0093 __entry->op4)
0094 );
0095
0096 TRACE_EVENT(host1x_cdma_push_gather,
0097 TP_PROTO(const char *name, struct host1x_bo *bo,
0098 u32 words, u32 offset, void *cmdbuf),
0099
0100 TP_ARGS(name, bo, words, offset, cmdbuf),
0101
0102 TP_STRUCT__entry(
0103 __field(const char *, name)
0104 __field(struct host1x_bo *, bo)
0105 __field(u32, words)
0106 __field(u32, offset)
0107 __field(bool, cmdbuf)
0108 __dynamic_array(u32, cmdbuf, words)
0109 ),
0110
0111 TP_fast_assign(
0112 if (cmdbuf) {
0113 memcpy(__get_dynamic_array(cmdbuf), cmdbuf+offset,
0114 words * sizeof(u32));
0115 }
0116 __entry->cmdbuf = cmdbuf;
0117 __entry->name = name;
0118 __entry->bo = bo;
0119 __entry->words = words;
0120 __entry->offset = offset;
0121 ),
0122
0123 TP_printk("name=%s, bo=%p, words=%u, offset=%d, contents=[%s]",
0124 __entry->name, __entry->bo,
0125 __entry->words, __entry->offset,
0126 __print_hex(__get_dynamic_array(cmdbuf),
0127 __entry->cmdbuf ? __entry->words * 4 : 0))
0128 );
0129
0130 TRACE_EVENT(host1x_channel_submit,
0131 TP_PROTO(const char *name, u32 cmdbufs, u32 relocs, u32 syncpt_id,
0132 u32 syncpt_incrs),
0133
0134 TP_ARGS(name, cmdbufs, relocs, syncpt_id, syncpt_incrs),
0135
0136 TP_STRUCT__entry(
0137 __field(const char *, name)
0138 __field(u32, cmdbufs)
0139 __field(u32, relocs)
0140 __field(u32, syncpt_id)
0141 __field(u32, syncpt_incrs)
0142 ),
0143
0144 TP_fast_assign(
0145 __entry->name = name;
0146 __entry->cmdbufs = cmdbufs;
0147 __entry->relocs = relocs;
0148 __entry->syncpt_id = syncpt_id;
0149 __entry->syncpt_incrs = syncpt_incrs;
0150 ),
0151
0152 TP_printk("name=%s, cmdbufs=%u, relocs=%u, syncpt_id=%u, "
0153 "syncpt_incrs=%u",
0154 __entry->name, __entry->cmdbufs, __entry->relocs,
0155 __entry->syncpt_id, __entry->syncpt_incrs)
0156 );
0157
0158 TRACE_EVENT(host1x_channel_submitted,
0159 TP_PROTO(const char *name, u32 syncpt_base, u32 syncpt_max),
0160
0161 TP_ARGS(name, syncpt_base, syncpt_max),
0162
0163 TP_STRUCT__entry(
0164 __field(const char *, name)
0165 __field(u32, syncpt_base)
0166 __field(u32, syncpt_max)
0167 ),
0168
0169 TP_fast_assign(
0170 __entry->name = name;
0171 __entry->syncpt_base = syncpt_base;
0172 __entry->syncpt_max = syncpt_max;
0173 ),
0174
0175 TP_printk("name=%s, syncpt_base=%d, syncpt_max=%d",
0176 __entry->name, __entry->syncpt_base, __entry->syncpt_max)
0177 );
0178
0179 TRACE_EVENT(host1x_channel_submit_complete,
0180 TP_PROTO(const char *name, int count, u32 thresh),
0181
0182 TP_ARGS(name, count, thresh),
0183
0184 TP_STRUCT__entry(
0185 __field(const char *, name)
0186 __field(int, count)
0187 __field(u32, thresh)
0188 ),
0189
0190 TP_fast_assign(
0191 __entry->name = name;
0192 __entry->count = count;
0193 __entry->thresh = thresh;
0194 ),
0195
0196 TP_printk("name=%s, count=%d, thresh=%d",
0197 __entry->name, __entry->count, __entry->thresh)
0198 );
0199
0200 TRACE_EVENT(host1x_wait_cdma,
0201 TP_PROTO(const char *name, u32 eventid),
0202
0203 TP_ARGS(name, eventid),
0204
0205 TP_STRUCT__entry(
0206 __field(const char *, name)
0207 __field(u32, eventid)
0208 ),
0209
0210 TP_fast_assign(
0211 __entry->name = name;
0212 __entry->eventid = eventid;
0213 ),
0214
0215 TP_printk("name=%s, event=%d", __entry->name, __entry->eventid)
0216 );
0217
0218 TRACE_EVENT(host1x_syncpt_load_min,
0219 TP_PROTO(u32 id, u32 val),
0220
0221 TP_ARGS(id, val),
0222
0223 TP_STRUCT__entry(
0224 __field(u32, id)
0225 __field(u32, val)
0226 ),
0227
0228 TP_fast_assign(
0229 __entry->id = id;
0230 __entry->val = val;
0231 ),
0232
0233 TP_printk("id=%d, val=%d", __entry->id, __entry->val)
0234 );
0235
0236 TRACE_EVENT(host1x_syncpt_wait_check,
0237 TP_PROTO(struct host1x_bo *bo, u32 offset, u32 syncpt_id, u32 thresh,
0238 u32 min),
0239
0240 TP_ARGS(bo, offset, syncpt_id, thresh, min),
0241
0242 TP_STRUCT__entry(
0243 __field(struct host1x_bo *, bo)
0244 __field(u32, offset)
0245 __field(u32, syncpt_id)
0246 __field(u32, thresh)
0247 __field(u32, min)
0248 ),
0249
0250 TP_fast_assign(
0251 __entry->bo = bo;
0252 __entry->offset = offset;
0253 __entry->syncpt_id = syncpt_id;
0254 __entry->thresh = thresh;
0255 __entry->min = min;
0256 ),
0257
0258 TP_printk("bo=%p, offset=%05x, id=%d, thresh=%d, current=%d",
0259 __entry->bo, __entry->offset,
0260 __entry->syncpt_id, __entry->thresh,
0261 __entry->min)
0262 );
0263
0264 #endif
0265
0266
0267 #include <trace/define_trace.h>