Alan Kwong | dce56da | 2017-04-27 15:50:34 -0700 | [diff] [blame] | 1 | /* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved. |
Alan Kwong | 1a00e4d | 2016-07-18 09:42:30 -0400 | [diff] [blame] | 2 | * |
| 3 | * This program is free software; you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License version 2 and |
| 5 | * only version 2 as published by the Free Software Foundation. |
| 6 | * |
| 7 | * This program is distributed in the hope that it will be useful, |
| 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 10 | * GNU General Public License for more details. |
| 11 | */ |
| 12 | |
| 13 | #if !defined(_SDE_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) |
| 14 | #define _SDE_TRACE_H_ |
| 15 | |
| 16 | #include <linux/stringify.h> |
| 17 | #include <linux/types.h> |
| 18 | #include <linux/tracepoint.h> |
| 19 | |
| 20 | #undef TRACE_SYSTEM |
| 21 | #define TRACE_SYSTEM sde |
| 22 | #undef TRACE_INCLUDE_FILE |
| 23 | #define TRACE_INCLUDE_FILE sde_trace |
| 24 | |
| 25 | TRACE_EVENT(sde_perf_set_qos_luts, |
| 26 | TP_PROTO(u32 pnum, u32 fmt, bool rt, u32 fl, |
Alan Kwong | dce56da | 2017-04-27 15:50:34 -0700 | [diff] [blame] | 27 | u32 lut, u32 lut_usage), |
| 28 | TP_ARGS(pnum, fmt, rt, fl, lut, lut_usage), |
Alan Kwong | 1a00e4d | 2016-07-18 09:42:30 -0400 | [diff] [blame] | 29 | TP_STRUCT__entry( |
| 30 | __field(u32, pnum) |
| 31 | __field(u32, fmt) |
| 32 | __field(bool, rt) |
| 33 | __field(u32, fl) |
Alan Kwong | dce56da | 2017-04-27 15:50:34 -0700 | [diff] [blame] | 34 | __field(u64, lut) |
| 35 | __field(u32, lut_usage) |
Alan Kwong | 1a00e4d | 2016-07-18 09:42:30 -0400 | [diff] [blame] | 36 | ), |
| 37 | TP_fast_assign( |
| 38 | __entry->pnum = pnum; |
| 39 | __entry->fmt = fmt; |
| 40 | __entry->rt = rt; |
| 41 | __entry->fl = fl; |
| 42 | __entry->lut = lut; |
Alan Kwong | dce56da | 2017-04-27 15:50:34 -0700 | [diff] [blame] | 43 | __entry->lut_usage = lut_usage; |
Alan Kwong | 1a00e4d | 2016-07-18 09:42:30 -0400 | [diff] [blame] | 44 | ), |
Alan Kwong | dce56da | 2017-04-27 15:50:34 -0700 | [diff] [blame] | 45 | TP_printk("pnum=%d fmt=%x rt=%d fl=%d lut=0x%llx lut_usage=%d", |
Alan Kwong | 1a00e4d | 2016-07-18 09:42:30 -0400 | [diff] [blame] | 46 | __entry->pnum, __entry->fmt, |
| 47 | __entry->rt, __entry->fl, |
Alan Kwong | dce56da | 2017-04-27 15:50:34 -0700 | [diff] [blame] | 48 | __entry->lut, __entry->lut_usage) |
Alan Kwong | 1a00e4d | 2016-07-18 09:42:30 -0400 | [diff] [blame] | 49 | ); |
| 50 | |
| 51 | TRACE_EVENT(sde_perf_set_danger_luts, |
| 52 | TP_PROTO(u32 pnum, u32 fmt, u32 mode, u32 danger_lut, |
| 53 | u32 safe_lut), |
| 54 | TP_ARGS(pnum, fmt, mode, danger_lut, safe_lut), |
| 55 | TP_STRUCT__entry( |
| 56 | __field(u32, pnum) |
| 57 | __field(u32, fmt) |
| 58 | __field(u32, mode) |
| 59 | __field(u32, danger_lut) |
| 60 | __field(u32, safe_lut) |
| 61 | ), |
| 62 | TP_fast_assign( |
| 63 | __entry->pnum = pnum; |
| 64 | __entry->fmt = fmt; |
| 65 | __entry->mode = mode; |
| 66 | __entry->danger_lut = danger_lut; |
| 67 | __entry->safe_lut = safe_lut; |
| 68 | ), |
| 69 | TP_printk("pnum=%d fmt=%x mode=%d luts[0x%x, 0x%x]", |
| 70 | __entry->pnum, __entry->fmt, |
| 71 | __entry->mode, __entry->danger_lut, |
| 72 | __entry->safe_lut) |
| 73 | ); |
| 74 | |
Alan Kwong | 5d324e4 | 2016-07-28 22:56:18 -0400 | [diff] [blame] | 75 | TRACE_EVENT(sde_perf_set_ot, |
| 76 | TP_PROTO(u32 pnum, u32 xin_id, u32 rd_lim, u32 vbif_idx), |
| 77 | TP_ARGS(pnum, xin_id, rd_lim, vbif_idx), |
| 78 | TP_STRUCT__entry( |
| 79 | __field(u32, pnum) |
| 80 | __field(u32, xin_id) |
| 81 | __field(u32, rd_lim) |
| 82 | __field(u32, vbif_idx) |
| 83 | ), |
| 84 | TP_fast_assign( |
| 85 | __entry->pnum = pnum; |
| 86 | __entry->xin_id = xin_id; |
| 87 | __entry->rd_lim = rd_lim; |
| 88 | __entry->vbif_idx = vbif_idx; |
| 89 | ), |
| 90 | TP_printk("pnum:%d xin_id:%d ot:%d vbif:%d", |
| 91 | __entry->pnum, __entry->xin_id, __entry->rd_lim, |
| 92 | __entry->vbif_idx) |
| 93 | ) |
| 94 | |
Alan Kwong | 67a3f79 | 2016-11-01 23:16:53 -0400 | [diff] [blame] | 95 | TRACE_EVENT(sde_perf_update_bus, |
| 96 | TP_PROTO(int client, unsigned long long ab_quota, |
| 97 | unsigned long long ib_quota), |
| 98 | TP_ARGS(client, ab_quota, ib_quota), |
| 99 | TP_STRUCT__entry( |
| 100 | __field(int, client) |
| 101 | __field(u64, ab_quota) |
| 102 | __field(u64, ib_quota) |
| 103 | ), |
| 104 | TP_fast_assign( |
| 105 | __entry->client = client; |
| 106 | __entry->ab_quota = ab_quota; |
| 107 | __entry->ib_quota = ib_quota; |
| 108 | ), |
| 109 | TP_printk("Request client:%d ab=%llu ib=%llu", |
| 110 | __entry->client, |
| 111 | __entry->ab_quota, |
| 112 | __entry->ib_quota) |
| 113 | ) |
| 114 | |
Alan Kwong | c4c5a0e | 2016-10-28 08:59:48 -0400 | [diff] [blame] | 115 | |
Alan Kwong | 9aa061c | 2016-11-06 21:17:12 -0500 | [diff] [blame] | 116 | TRACE_EVENT(sde_cmd_release_bw, |
| 117 | TP_PROTO(u32 crtc_id), |
| 118 | TP_ARGS(crtc_id), |
| 119 | TP_STRUCT__entry( |
| 120 | __field(u32, crtc_id) |
| 121 | ), |
| 122 | TP_fast_assign( |
| 123 | __entry->crtc_id = crtc_id; |
| 124 | ), |
| 125 | TP_printk("crtc:%d", __entry->crtc_id) |
| 126 | ); |
| 127 | |
Ingrid Gallardo | 36ee68d | 2017-08-30 17:14:33 -0700 | [diff] [blame] | 128 | TRACE_EVENT(sde_encoder_underrun, |
| 129 | TP_PROTO(u32 enc_id, u32 underrun_cnt), |
| 130 | TP_ARGS(enc_id, underrun_cnt), |
| 131 | TP_STRUCT__entry( |
| 132 | __field(u32, enc_id) |
| 133 | __field(u32, underrun_cnt) |
| 134 | ), |
| 135 | TP_fast_assign( |
| 136 | __entry->enc_id = enc_id; |
| 137 | __entry->underrun_cnt = underrun_cnt; |
| 138 | |
| 139 | ), |
| 140 | TP_printk("enc:%d underrun_cnt:%d", __entry->enc_id, |
| 141 | __entry->underrun_cnt) |
| 142 | ); |
| 143 | |
Veera Sundaram Sankaran | a90e139 | 2017-07-06 15:00:09 -0700 | [diff] [blame] | 144 | TRACE_EVENT(tracing_mark_write, |
Alan Kwong | c4c5a0e | 2016-10-28 08:59:48 -0400 | [diff] [blame] | 145 | TP_PROTO(int pid, const char *name, bool trace_begin), |
| 146 | TP_ARGS(pid, name, trace_begin), |
| 147 | TP_STRUCT__entry( |
| 148 | __field(int, pid) |
| 149 | __string(trace_name, name) |
| 150 | __field(bool, trace_begin) |
| 151 | ), |
| 152 | TP_fast_assign( |
| 153 | __entry->pid = pid; |
| 154 | __assign_str(trace_name, name); |
| 155 | __entry->trace_begin = trace_begin; |
| 156 | ), |
| 157 | TP_printk("%s|%d|%s", __entry->trace_begin ? "B" : "E", |
| 158 | __entry->pid, __get_str(trace_name)) |
| 159 | ) |
| 160 | |
| 161 | TRACE_EVENT(sde_trace_counter, |
| 162 | TP_PROTO(int pid, char *name, int value), |
| 163 | TP_ARGS(pid, name, value), |
| 164 | TP_STRUCT__entry( |
| 165 | __field(int, pid) |
| 166 | __string(counter_name, name) |
| 167 | __field(int, value) |
| 168 | ), |
| 169 | TP_fast_assign( |
| 170 | __entry->pid = current->tgid; |
| 171 | __assign_str(counter_name, name); |
| 172 | __entry->value = value; |
| 173 | ), |
| 174 | TP_printk("%d|%s|%d", __entry->pid, |
| 175 | __get_str(counter_name), __entry->value) |
| 176 | ) |
| 177 | |
Alan Kwong | 037373e | 2017-06-05 15:52:51 -0400 | [diff] [blame] | 178 | #define SDE_TRACE_EVTLOG_SIZE 15 |
Alan Kwong | 044b3e0 | 2016-11-03 13:06:57 -0400 | [diff] [blame] | 179 | TRACE_EVENT(sde_evtlog, |
Alan Kwong | 037373e | 2017-06-05 15:52:51 -0400 | [diff] [blame] | 180 | TP_PROTO(const char *tag, u32 tag_id, u32 cnt, u32 data[]), |
| 181 | TP_ARGS(tag, tag_id, cnt, data), |
Alan Kwong | 044b3e0 | 2016-11-03 13:06:57 -0400 | [diff] [blame] | 182 | TP_STRUCT__entry( |
| 183 | __field(int, pid) |
| 184 | __string(evtlog_tag, tag) |
| 185 | __field(u32, tag_id) |
Alan Kwong | 037373e | 2017-06-05 15:52:51 -0400 | [diff] [blame] | 186 | __array(u32, data, SDE_TRACE_EVTLOG_SIZE) |
Alan Kwong | 044b3e0 | 2016-11-03 13:06:57 -0400 | [diff] [blame] | 187 | ), |
| 188 | TP_fast_assign( |
| 189 | __entry->pid = current->tgid; |
| 190 | __assign_str(evtlog_tag, tag); |
| 191 | __entry->tag_id = tag_id; |
Alan Kwong | 037373e | 2017-06-05 15:52:51 -0400 | [diff] [blame] | 192 | if (cnt > SDE_TRACE_EVTLOG_SIZE) |
| 193 | cnt = SDE_TRACE_EVTLOG_SIZE; |
| 194 | memcpy(__entry->data, data, cnt * sizeof(u32)); |
| 195 | memset(&__entry->data[cnt], 0, |
| 196 | (SDE_TRACE_EVTLOG_SIZE - cnt) * sizeof(u32)); |
Alan Kwong | 044b3e0 | 2016-11-03 13:06:57 -0400 | [diff] [blame] | 197 | ), |
Alan Kwong | aa53e68 | 2017-07-31 18:21:15 -0400 | [diff] [blame] | 198 | TP_printk("%d|%s:%d|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x|%x", |
Alan Kwong | 037373e | 2017-06-05 15:52:51 -0400 | [diff] [blame] | 199 | __entry->pid, __get_str(evtlog_tag), |
| 200 | __entry->tag_id, |
| 201 | __entry->data[0], __entry->data[1], |
| 202 | __entry->data[2], __entry->data[3], |
| 203 | __entry->data[4], __entry->data[5], |
| 204 | __entry->data[6], __entry->data[7], |
| 205 | __entry->data[8], __entry->data[9], |
| 206 | __entry->data[10], __entry->data[11], |
| 207 | __entry->data[12], __entry->data[13], |
| 208 | __entry->data[14]) |
Alan Kwong | 044b3e0 | 2016-11-03 13:06:57 -0400 | [diff] [blame] | 209 | ) |
| 210 | |
Narendra Muppalla | 8f2a126 | 2017-05-23 20:02:34 -0700 | [diff] [blame] | 211 | TRACE_EVENT(sde_perf_crtc_update, |
Alan Kwong | 0230a10 | 2017-05-16 11:36:44 -0700 | [diff] [blame] | 212 | TP_PROTO(u32 crtc, u64 bw_ctl_mnoc, u64 bw_ctl_llcc, |
| 213 | u64 bw_ctl_ebi, u32 core_clk_rate, |
| 214 | bool stop_req, u32 update_bus, u32 update_clk), |
| 215 | TP_ARGS(crtc, bw_ctl_mnoc, bw_ctl_llcc, bw_ctl_ebi, core_clk_rate, |
Narendra Muppalla | 8f2a126 | 2017-05-23 20:02:34 -0700 | [diff] [blame] | 216 | stop_req, update_bus, update_clk), |
| 217 | TP_STRUCT__entry( |
| 218 | __field(u32, crtc) |
Alan Kwong | 0230a10 | 2017-05-16 11:36:44 -0700 | [diff] [blame] | 219 | __field(u64, bw_ctl_mnoc) |
| 220 | __field(u64, bw_ctl_llcc) |
| 221 | __field(u64, bw_ctl_ebi) |
Narendra Muppalla | 8f2a126 | 2017-05-23 20:02:34 -0700 | [diff] [blame] | 222 | __field(u32, core_clk_rate) |
| 223 | __field(bool, stop_req) |
| 224 | __field(u32, update_bus) |
| 225 | __field(u32, update_clk) |
| 226 | ), |
| 227 | TP_fast_assign( |
| 228 | __entry->crtc = crtc; |
Alan Kwong | 0230a10 | 2017-05-16 11:36:44 -0700 | [diff] [blame] | 229 | __entry->bw_ctl_mnoc = bw_ctl_mnoc; |
| 230 | __entry->bw_ctl_llcc = bw_ctl_llcc; |
| 231 | __entry->bw_ctl_ebi = bw_ctl_ebi; |
Narendra Muppalla | 8f2a126 | 2017-05-23 20:02:34 -0700 | [diff] [blame] | 232 | __entry->core_clk_rate = core_clk_rate; |
| 233 | __entry->stop_req = stop_req; |
| 234 | __entry->update_bus = update_bus; |
| 235 | __entry->update_clk = update_clk; |
| 236 | ), |
Alan Kwong | 0230a10 | 2017-05-16 11:36:44 -0700 | [diff] [blame] | 237 | TP_printk( |
| 238 | "crtc=%d bw_mnoc=%llu bw_llcc=%llu bw_ebi=%llu clk_rate=%u stop_req=%d u_bus=%d u_clk=%d", |
| 239 | __entry->crtc, |
| 240 | __entry->bw_ctl_mnoc, |
| 241 | __entry->bw_ctl_llcc, |
| 242 | __entry->bw_ctl_ebi, |
| 243 | __entry->core_clk_rate, |
| 244 | __entry->stop_req, |
| 245 | __entry->update_bus, |
| 246 | __entry->update_clk) |
Narendra Muppalla | 8f2a126 | 2017-05-23 20:02:34 -0700 | [diff] [blame] | 247 | ); |
| 248 | |
Veera Sundaram Sankaran | a90e139 | 2017-07-06 15:00:09 -0700 | [diff] [blame] | 249 | #define SDE_ATRACE_END(name) trace_tracing_mark_write(current->tgid, name, 0) |
| 250 | #define SDE_ATRACE_BEGIN(name) trace_tracing_mark_write(current->tgid, name, 1) |
Alan Kwong | c4c5a0e | 2016-10-28 08:59:48 -0400 | [diff] [blame] | 251 | #define SDE_ATRACE_FUNC() SDE_ATRACE_BEGIN(__func__) |
| 252 | |
| 253 | #define SDE_ATRACE_INT(name, value) \ |
| 254 | trace_sde_trace_counter(current->tgid, name, value) |
| 255 | |
Alan Kwong | 1a00e4d | 2016-07-18 09:42:30 -0400 | [diff] [blame] | 256 | #endif /* _SDE_TRACE_H_ */ |
| 257 | |
| 258 | /* This part must be outside protection */ |
| 259 | #undef TRACE_INCLUDE_PATH |
| 260 | #define TRACE_INCLUDE_PATH . |
| 261 | #include <trace/define_trace.h> |