Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * include/trace/events/host1x.h
0004  *
0005  * host1x event logging to ftrace.
0006  *
0007  * Copyright (c) 2010-2013, NVIDIA Corporation.
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 /*  _TRACE_HOST1X_H */
0265 
0266 /* This part must be outside protection */
0267 #include <trace/define_trace.h>