blob: 710c3cf4f32b7dc00b47f5e0bcb9cbcd6d7b36d1 [file] [log] [blame]
Pushkar Joshi88ab61f2013-01-23 11:24:09 -08001/* Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
Norman Geed7402ff2011-10-28 08:51:11 -06002 *
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
14#if !defined(_KGSL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
15#define _KGSL_TRACE_H
16
17#undef TRACE_SYSTEM
18#define TRACE_SYSTEM kgsl
19#undef TRACE_INCLUDE_PATH
20#define TRACE_INCLUDE_PATH .
21#undef TRACE_INCLUDE_FILE
22#define TRACE_INCLUDE_FILE kgsl_trace
23
24#include <linux/tracepoint.h>
Jeremy Gebben4a3756c2012-05-08 16:51:43 -060025#include "kgsl_device.h"
Norman Geed7402ff2011-10-28 08:51:11 -060026
Jordan Crouse72bb70b2013-05-28 17:03:52 -060027#include "adreno_drawctxt.h"
28
Norman Geed7402ff2011-10-28 08:51:11 -060029struct kgsl_device;
30struct kgsl_ringbuffer_issueibcmds;
31struct kgsl_device_waittimestamp;
32
33/*
34 * Tracepoint for kgsl issue ib commands
35 */
36TRACE_EVENT(kgsl_issueibcmds,
37
38 TP_PROTO(struct kgsl_device *device,
Jordan Crouse72bb70b2013-05-28 17:03:52 -060039 int drawctxt_id,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -060040 struct kgsl_ibdesc *ibdesc,
Jordan Crouse72bb70b2013-05-28 17:03:52 -060041 int numibs,
42 int timestamp,
43 int flags,
44 int result,
45 unsigned int type),
Norman Geed7402ff2011-10-28 08:51:11 -060046
Jordan Crouse72bb70b2013-05-28 17:03:52 -060047 TP_ARGS(device, drawctxt_id, ibdesc, numibs, timestamp, flags,
48 result, type),
Norman Geed7402ff2011-10-28 08:51:11 -060049
50 TP_STRUCT__entry(
51 __string(device_name, device->name)
52 __field(unsigned int, drawctxt_id)
53 __field(unsigned int, ibdesc_addr)
54 __field(unsigned int, numibs)
55 __field(unsigned int, timestamp)
56 __field(unsigned int, flags)
57 __field(int, result)
Jordan Crouse72bb70b2013-05-28 17:03:52 -060058 __field(unsigned int, drawctxt_type)
Norman Geed7402ff2011-10-28 08:51:11 -060059 ),
60
61 TP_fast_assign(
62 __assign_str(device_name, device->name);
Jordan Crouse72bb70b2013-05-28 17:03:52 -060063 __entry->drawctxt_id = drawctxt_id;
Jeremy Gebben4a3756c2012-05-08 16:51:43 -060064 __entry->ibdesc_addr = ibdesc[0].gpuaddr;
Jordan Crouse72bb70b2013-05-28 17:03:52 -060065 __entry->numibs = numibs;
66 __entry->timestamp = timestamp;
67 __entry->flags = flags;
Norman Geed7402ff2011-10-28 08:51:11 -060068 __entry->result = result;
Jordan Crouse72bb70b2013-05-28 17:03:52 -060069 __entry->drawctxt_type = type;
Norman Geed7402ff2011-10-28 08:51:11 -060070 ),
71
72 TP_printk(
Jeremy Gebben4a3756c2012-05-08 16:51:43 -060073 "d_name=%s ctx=%u ib=0x%u numibs=%u timestamp=0x%x "
Jordan Crouse72bb70b2013-05-28 17:03:52 -060074 "flags=0x%x(%s) result=%d type=%s",
Norman Geed7402ff2011-10-28 08:51:11 -060075 __get_str(device_name),
76 __entry->drawctxt_id,
77 __entry->ibdesc_addr,
78 __entry->numibs,
79 __entry->timestamp,
80 __entry->flags,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -060081 __entry->flags ? __print_flags(__entry->flags, "|",
82 { KGSL_CONTEXT_SAVE_GMEM, "SAVE_GMEM" },
83 { KGSL_CONTEXT_SUBMIT_IB_LIST, "IB_LIST" },
84 { KGSL_CONTEXT_CTX_SWITCH, "CTX_SWITCH" })
85 : "None",
Jordan Crouse72bb70b2013-05-28 17:03:52 -060086 __entry->result,
87 __print_symbolic(__entry->drawctxt_type,
88 ADRENO_DRAWCTXT_TYPES)
Norman Geed7402ff2011-10-28 08:51:11 -060089 )
90);
91
92/*
93 * Tracepoint for kgsl readtimestamp
94 */
95TRACE_EVENT(kgsl_readtimestamp,
96
97 TP_PROTO(struct kgsl_device *device,
Carter Cooper7e7f02e2012-02-15 09:36:31 -070098 unsigned int context_id,
99 unsigned int type,
100 unsigned int timestamp),
Norman Geed7402ff2011-10-28 08:51:11 -0600101
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700102 TP_ARGS(device, context_id, type, timestamp),
Norman Geed7402ff2011-10-28 08:51:11 -0600103
104 TP_STRUCT__entry(
105 __string(device_name, device->name)
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700106 __field(unsigned int, context_id)
Norman Geed7402ff2011-10-28 08:51:11 -0600107 __field(unsigned int, type)
108 __field(unsigned int, timestamp)
109 ),
110
111 TP_fast_assign(
112 __assign_str(device_name, device->name);
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700113 __entry->context_id = context_id;
114 __entry->type = type;
115 __entry->timestamp = timestamp;
Norman Geed7402ff2011-10-28 08:51:11 -0600116 ),
117
118 TP_printk(
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600119 "d_name=%s context_id=%u type=%u timestamp=0x%x",
Norman Geed7402ff2011-10-28 08:51:11 -0600120 __get_str(device_name),
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700121 __entry->context_id,
Norman Geed7402ff2011-10-28 08:51:11 -0600122 __entry->type,
123 __entry->timestamp
124 )
125);
126
127/*
128 * Tracepoint for kgsl waittimestamp entry
129 */
130TRACE_EVENT(kgsl_waittimestamp_entry,
131
132 TP_PROTO(struct kgsl_device *device,
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700133 unsigned int context_id,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600134 unsigned int curr_ts,
135 unsigned int wait_ts,
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700136 unsigned int timeout),
Norman Geed7402ff2011-10-28 08:51:11 -0600137
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600138 TP_ARGS(device, context_id, curr_ts, wait_ts, timeout),
Norman Geed7402ff2011-10-28 08:51:11 -0600139
140 TP_STRUCT__entry(
141 __string(device_name, device->name)
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700142 __field(unsigned int, context_id)
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600143 __field(unsigned int, curr_ts)
144 __field(unsigned int, wait_ts)
Norman Geed7402ff2011-10-28 08:51:11 -0600145 __field(unsigned int, timeout)
146 ),
147
148 TP_fast_assign(
149 __assign_str(device_name, device->name);
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700150 __entry->context_id = context_id;
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600151 __entry->curr_ts = curr_ts;
152 __entry->wait_ts = wait_ts;
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700153 __entry->timeout = timeout;
Norman Geed7402ff2011-10-28 08:51:11 -0600154 ),
155
156 TP_printk(
Carter Cooper07e2c892012-06-14 10:48:42 -0600157 "d_name=%s context_id=%u curr_ts=0x%x timestamp=0x%x timeout=%u",
Norman Geed7402ff2011-10-28 08:51:11 -0600158 __get_str(device_name),
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700159 __entry->context_id,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600160 __entry->curr_ts,
161 __entry->wait_ts,
Norman Geed7402ff2011-10-28 08:51:11 -0600162 __entry->timeout
163 )
164);
165
166/*
167 * Tracepoint for kgsl waittimestamp exit
168 */
169TRACE_EVENT(kgsl_waittimestamp_exit,
170
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600171 TP_PROTO(struct kgsl_device *device, unsigned int curr_ts,
172 int result),
Norman Geed7402ff2011-10-28 08:51:11 -0600173
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600174 TP_ARGS(device, curr_ts, result),
Norman Geed7402ff2011-10-28 08:51:11 -0600175
176 TP_STRUCT__entry(
177 __string(device_name, device->name)
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600178 __field(unsigned int, curr_ts)
Norman Geed7402ff2011-10-28 08:51:11 -0600179 __field(int, result)
180 ),
181
182 TP_fast_assign(
183 __assign_str(device_name, device->name);
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600184 __entry->curr_ts = curr_ts;
Norman Geed7402ff2011-10-28 08:51:11 -0600185 __entry->result = result;
186 ),
187
188 TP_printk(
Carter Cooper07e2c892012-06-14 10:48:42 -0600189 "d_name=%s curr_ts=0x%x result=%d",
Norman Geed7402ff2011-10-28 08:51:11 -0600190 __get_str(device_name),
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600191 __entry->curr_ts,
Norman Geed7402ff2011-10-28 08:51:11 -0600192 __entry->result
193 )
194);
Jeremy Gebbenb50f3312011-12-16 08:58:33 -0700195
196DECLARE_EVENT_CLASS(kgsl_pwr_template,
197 TP_PROTO(struct kgsl_device *device, int on),
198
199 TP_ARGS(device, on),
200
201 TP_STRUCT__entry(
202 __string(device_name, device->name)
203 __field(int, on)
204 ),
205
206 TP_fast_assign(
207 __assign_str(device_name, device->name);
208 __entry->on = on;
209 ),
210
211 TP_printk(
212 "d_name=%s %s",
213 __get_str(device_name),
214 __entry->on ? "on" : "off"
215 )
216);
217
218DEFINE_EVENT(kgsl_pwr_template, kgsl_clk,
219 TP_PROTO(struct kgsl_device *device, int on),
220 TP_ARGS(device, on)
221);
222
223DEFINE_EVENT(kgsl_pwr_template, kgsl_irq,
224 TP_PROTO(struct kgsl_device *device, int on),
225 TP_ARGS(device, on)
226);
227
228DEFINE_EVENT(kgsl_pwr_template, kgsl_bus,
229 TP_PROTO(struct kgsl_device *device, int on),
230 TP_ARGS(device, on)
231);
232
233DEFINE_EVENT(kgsl_pwr_template, kgsl_rail,
234 TP_PROTO(struct kgsl_device *device, int on),
235 TP_ARGS(device, on)
236);
237
238TRACE_EVENT(kgsl_pwrlevel,
239
240 TP_PROTO(struct kgsl_device *device, unsigned int pwrlevel,
241 unsigned int freq),
242
243 TP_ARGS(device, pwrlevel, freq),
244
245 TP_STRUCT__entry(
246 __string(device_name, device->name)
247 __field(unsigned int, pwrlevel)
248 __field(unsigned int, freq)
249 ),
250
251 TP_fast_assign(
252 __assign_str(device_name, device->name);
253 __entry->pwrlevel = pwrlevel;
254 __entry->freq = freq;
255 ),
256
257 TP_printk(
258 "d_name=%s pwrlevel=%d freq=%d",
259 __get_str(device_name),
260 __entry->pwrlevel,
261 __entry->freq
262 )
263);
264
Suman Tatirajubfec4152012-07-17 17:53:01 -0700265TRACE_EVENT(kgsl_mpdcvs,
266
267 TP_PROTO(struct kgsl_device *device, unsigned int state),
268
269 TP_ARGS(device, state),
270
271 TP_STRUCT__entry(
272 __string(device_name, device->name)
273 __field(unsigned int, state)
274 ),
275
276 TP_fast_assign(
277 __assign_str(device_name, device->name);
278 __entry->state = state;
279 ),
280
281 TP_printk(
282 "d_name=%s %s",
283 __get_str(device_name),
284 __entry->state ? "BUSY" : "IDLE"
285 )
286);
287
Jeremy Gebbenb50f3312011-12-16 08:58:33 -0700288DECLARE_EVENT_CLASS(kgsl_pwrstate_template,
289 TP_PROTO(struct kgsl_device *device, unsigned int state),
290
291 TP_ARGS(device, state),
292
293 TP_STRUCT__entry(
294 __string(device_name, device->name)
295 __field(unsigned int, state)
296 ),
297
298 TP_fast_assign(
299 __assign_str(device_name, device->name);
300 __entry->state = state;
301 ),
302
303 TP_printk(
304 "d_name=%s %s",
305 __get_str(device_name),
306 kgsl_pwrstate_to_str(__entry->state)
307 )
308);
309
310DEFINE_EVENT(kgsl_pwrstate_template, kgsl_pwr_set_state,
311 TP_PROTO(struct kgsl_device *device, unsigned int state),
312 TP_ARGS(device, state)
313);
314
315DEFINE_EVENT(kgsl_pwrstate_template, kgsl_pwr_request_state,
316 TP_PROTO(struct kgsl_device *device, unsigned int state),
317 TP_ARGS(device, state)
318);
319
Jeremy Gebbena5859272012-03-01 12:46:28 -0700320TRACE_EVENT(kgsl_mem_alloc,
321
322 TP_PROTO(struct kgsl_mem_entry *mem_entry),
323
324 TP_ARGS(mem_entry),
325
326 TP_STRUCT__entry(
327 __field(unsigned int, gpuaddr)
328 __field(unsigned int, size)
Jordan Crousea96c29e2012-10-03 10:12:57 -0600329 __field(unsigned int, tgid)
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600330 __array(char, usage, 16)
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600331 __field(unsigned int, id)
332 __field(unsigned int, flags)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700333 ),
334
335 TP_fast_assign(
336 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
337 __entry->size = mem_entry->memdesc.size;
Jordan Crousea96c29e2012-10-03 10:12:57 -0600338 __entry->tgid = mem_entry->priv->pid;
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600339 kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
Jordan Crousedc67dfb2012-10-25 09:41:46 -0600340 mem_entry->memdesc.flags);
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600341 __entry->id = mem_entry->id;
342 __entry->flags = mem_entry->memdesc.flags;
Jeremy Gebbena5859272012-03-01 12:46:28 -0700343 ),
344
345 TP_printk(
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600346 "gpuaddr=0x%08x size=%d tgid=%d usage=%s id=%d flags=0x%08x",
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600347 __entry->gpuaddr, __entry->size, __entry->tgid,
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600348 __entry->usage, __entry->id, __entry->flags
Jeremy Gebbena5859272012-03-01 12:46:28 -0700349 )
350);
351
Jeremy Gebbenfec05c22013-05-28 16:59:29 -0600352TRACE_EVENT(kgsl_mem_mmap,
353
354 TP_PROTO(struct kgsl_mem_entry *mem_entry),
355
356 TP_ARGS(mem_entry),
357
358 TP_STRUCT__entry(
359 __field(unsigned long, useraddr)
360 __field(unsigned int, gpuaddr)
361 __field(unsigned int, size)
362 __array(char, usage, 16)
363 __field(unsigned int, id)
364 __field(unsigned int, flags)
365 ),
366
367 TP_fast_assign(
368 __entry->useraddr = mem_entry->memdesc.useraddr;
369 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
370 __entry->size = mem_entry->memdesc.size;
371 kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
372 mem_entry->memdesc.flags);
373 __entry->id = mem_entry->id;
374 __entry->flags = mem_entry->memdesc.flags;
375 ),
376
377 TP_printk(
378 "useraddr=%lx gpuaddr=0x%08x size=%d usage=%s id=%d"
379 " flags=0x%08x",
380 __entry->useraddr, __entry->gpuaddr, __entry->size,
381 __entry->usage, __entry->id, __entry->flags
382 )
383);
384
385TRACE_EVENT(kgsl_mem_unmapped_area_collision,
386
387 TP_PROTO(struct kgsl_mem_entry *mem_entry,
388 unsigned long hint,
389 unsigned long len,
390 unsigned long addr),
391
392 TP_ARGS(mem_entry, hint, len, addr),
393
394 TP_STRUCT__entry(
395 __field(unsigned int, id)
396 __field(unsigned long, hint)
397 __field(unsigned long, len)
398 __field(unsigned long, addr)
399 ),
400
401 TP_fast_assign(
402 __entry->id = mem_entry->id;
403 __entry->hint = hint;
404 __entry->len = len;
405 __entry->addr = addr;
406 ),
407
408 TP_printk(
409 "id=%d hint=0x%lx len=%ld addr=0x%lx",
410 __entry->id, __entry->hint, __entry->len, __entry->addr
411 )
412);
413
Jeremy Gebbena5859272012-03-01 12:46:28 -0700414TRACE_EVENT(kgsl_mem_map,
415
416 TP_PROTO(struct kgsl_mem_entry *mem_entry, int fd),
417
418 TP_ARGS(mem_entry, fd),
419
420 TP_STRUCT__entry(
421 __field(unsigned int, gpuaddr)
422 __field(unsigned int, size)
423 __field(int, fd)
424 __field(int, type)
Jordan Crousea96c29e2012-10-03 10:12:57 -0600425 __field(unsigned int, tgid)
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600426 __array(char, usage, 16)
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600427 __field(unsigned int, id)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700428 ),
429
430 TP_fast_assign(
431 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
432 __entry->size = mem_entry->memdesc.size;
433 __entry->fd = fd;
434 __entry->type = mem_entry->memtype;
Jordan Crousea96c29e2012-10-03 10:12:57 -0600435 __entry->tgid = mem_entry->priv->pid;
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600436 kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
Jordan Crousedc67dfb2012-10-25 09:41:46 -0600437 mem_entry->memdesc.flags);
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600438 __entry->id = mem_entry->id;
Jeremy Gebbena5859272012-03-01 12:46:28 -0700439 ),
440
441 TP_printk(
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600442 "gpuaddr=0x%08x size=%d type=%d fd=%d tgid=%d usage=%s id=%d",
Jeremy Gebbena5859272012-03-01 12:46:28 -0700443 __entry->gpuaddr, __entry->size,
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600444 __entry->type, __entry->fd, __entry->tgid,
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600445 __entry->usage, __entry->id
Jeremy Gebbena5859272012-03-01 12:46:28 -0700446 )
447);
448
449TRACE_EVENT(kgsl_mem_free,
450
451 TP_PROTO(struct kgsl_mem_entry *mem_entry),
452
453 TP_ARGS(mem_entry),
454
455 TP_STRUCT__entry(
456 __field(unsigned int, gpuaddr)
457 __field(unsigned int, size)
458 __field(int, type)
459 __field(int, fd)
Jordan Crousea96c29e2012-10-03 10:12:57 -0600460 __field(unsigned int, tgid)
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600461 __array(char, usage, 16)
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600462 __field(unsigned int, id)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700463 ),
464
465 TP_fast_assign(
466 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
467 __entry->size = mem_entry->memdesc.size;
468 __entry->type = mem_entry->memtype;
Jordan Crousea96c29e2012-10-03 10:12:57 -0600469 __entry->tgid = mem_entry->priv->pid;
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600470 kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
Jordan Crousedc67dfb2012-10-25 09:41:46 -0600471 mem_entry->memdesc.flags);
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600472 __entry->id = mem_entry->id;
Jeremy Gebbena5859272012-03-01 12:46:28 -0700473 ),
474
475 TP_printk(
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600476 "gpuaddr=0x%08x size=%d type=%d tgid=%d usage=%s id=%d",
Jordan Crousea96c29e2012-10-03 10:12:57 -0600477 __entry->gpuaddr, __entry->size, __entry->type,
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600478 __entry->tgid, __entry->usage, __entry->id
Jeremy Gebbena5859272012-03-01 12:46:28 -0700479 )
480);
481
482DECLARE_EVENT_CLASS(kgsl_mem_timestamp_template,
483
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600484 TP_PROTO(struct kgsl_device *device, struct kgsl_mem_entry *mem_entry,
485 unsigned int id, unsigned int curr_ts, unsigned int free_ts),
Jeremy Gebbena5859272012-03-01 12:46:28 -0700486
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600487 TP_ARGS(device, mem_entry, id, curr_ts, free_ts),
Jeremy Gebbena5859272012-03-01 12:46:28 -0700488
489 TP_STRUCT__entry(
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600490 __string(device_name, device->name)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700491 __field(unsigned int, gpuaddr)
492 __field(unsigned int, size)
493 __field(int, type)
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600494 __array(char, usage, 16)
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600495 __field(unsigned int, id)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700496 __field(unsigned int, drawctxt_id)
497 __field(unsigned int, curr_ts)
498 __field(unsigned int, free_ts)
499 ),
500
501 TP_fast_assign(
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600502 __assign_str(device_name, device->name);
Jeremy Gebbena5859272012-03-01 12:46:28 -0700503 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
504 __entry->size = mem_entry->memdesc.size;
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600505 kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
Jordan Crousedc67dfb2012-10-25 09:41:46 -0600506 mem_entry->memdesc.flags);
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600507 __entry->id = mem_entry->id;
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700508 __entry->drawctxt_id = id;
Jeremy Gebbena5859272012-03-01 12:46:28 -0700509 __entry->type = mem_entry->memtype;
510 __entry->curr_ts = curr_ts;
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600511 __entry->free_ts = free_ts;
Jeremy Gebbena5859272012-03-01 12:46:28 -0700512 ),
513
514 TP_printk(
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600515 "d_name=%s gpuaddr=0x%08x size=%d type=%d usage=%s id=%d ctx=%u"
Carter Cooper07e2c892012-06-14 10:48:42 -0600516 " curr_ts=0x%x free_ts=0x%x",
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600517 __get_str(device_name),
518 __entry->gpuaddr,
519 __entry->size,
520 __entry->type,
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600521 __entry->usage,
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600522 __entry->id,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600523 __entry->drawctxt_id,
524 __entry->curr_ts,
525 __entry->free_ts
Jeremy Gebbena5859272012-03-01 12:46:28 -0700526 )
527);
528
529DEFINE_EVENT(kgsl_mem_timestamp_template, kgsl_mem_timestamp_queue,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600530 TP_PROTO(struct kgsl_device *device, struct kgsl_mem_entry *mem_entry,
531 unsigned int id, unsigned int curr_ts, unsigned int free_ts),
532 TP_ARGS(device, mem_entry, id, curr_ts, free_ts)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700533);
534
535DEFINE_EVENT(kgsl_mem_timestamp_template, kgsl_mem_timestamp_free,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600536 TP_PROTO(struct kgsl_device *device, struct kgsl_mem_entry *mem_entry,
537 unsigned int id, unsigned int curr_ts, unsigned int free_ts),
538 TP_ARGS(device, mem_entry, id, curr_ts, free_ts)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700539);
540
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600541TRACE_EVENT(kgsl_context_create,
542
543 TP_PROTO(struct kgsl_device *device, struct kgsl_context *context,
544 unsigned int flags),
545
546 TP_ARGS(device, context, flags),
547
548 TP_STRUCT__entry(
549 __string(device_name, device->name)
550 __field(unsigned int, id)
551 __field(unsigned int, flags)
552 ),
553
554 TP_fast_assign(
555 __assign_str(device_name, device->name);
556 __entry->id = context->id;
557 __entry->flags = flags;
558 ),
559
560 TP_printk(
561 "d_name=%s ctx=%u flags=0x%x %s",
562 __get_str(device_name), __entry->id, __entry->flags,
563 __entry->flags ? __print_flags(__entry->flags, "|",
564 { KGSL_CONTEXT_NO_GMEM_ALLOC , "NO_GMEM_ALLOC" },
565 { KGSL_CONTEXT_PREAMBLE, "PREAMBLE" },
566 { KGSL_CONTEXT_TRASH_STATE, "TRASH_STATE" },
567 { KGSL_CONTEXT_PER_CONTEXT_TS, "PER_CONTEXT_TS" })
568 : "None"
569 )
570);
571
572TRACE_EVENT(kgsl_context_detach,
573
574 TP_PROTO(struct kgsl_device *device, struct kgsl_context *context),
575
576 TP_ARGS(device, context),
577
578 TP_STRUCT__entry(
579 __string(device_name, device->name)
580 __field(unsigned int, id)
581 ),
582
583 TP_fast_assign(
584 __assign_str(device_name, device->name);
585 __entry->id = context->id;
586 ),
587
588 TP_printk(
589 "d_name=%s ctx=%u",
590 __get_str(device_name), __entry->id
591 )
592);
Jeremy Gebbena5859272012-03-01 12:46:28 -0700593
Jeremy Gebben5935b7a2012-05-09 14:52:34 -0600594TRACE_EVENT(kgsl_mmu_pagefault,
595
596 TP_PROTO(struct kgsl_device *device, unsigned int page,
597 unsigned int pt, const char *op),
598
599 TP_ARGS(device, page, pt, op),
600
601 TP_STRUCT__entry(
602 __string(device_name, device->name)
603 __field(unsigned int, page)
604 __field(unsigned int, pt)
605 __string(op, op)
606 ),
607
608 TP_fast_assign(
609 __assign_str(device_name, device->name);
610 __entry->page = page;
611 __entry->pt = pt;
612 __assign_str(op, op);
613 ),
614
615 TP_printk(
Pushkar Joshi88ab61f2013-01-23 11:24:09 -0800616 "d_name=%s page=0x%08x pt=%d op=%s",
Jeremy Gebben5935b7a2012-05-09 14:52:34 -0600617 __get_str(device_name), __entry->page, __entry->pt,
618 __get_str(op)
619 )
620);
621
Jordan Crouse2c22e912013-02-28 13:40:56 -0700622TRACE_EVENT(kgsl_register_event,
623 TP_PROTO(unsigned int id, unsigned int timestamp),
624 TP_ARGS(id, timestamp),
625 TP_STRUCT__entry(
626 __field(unsigned int, id)
627 __field(unsigned int, timestamp)
628 ),
629 TP_fast_assign(
630 __entry->id = id;
631 __entry->timestamp = timestamp;
632 ),
633 TP_printk(
634 "ctx=%d ts=%d",
635 __entry->id, __entry->timestamp)
636);
637
638TRACE_EVENT(kgsl_fire_event,
639 TP_PROTO(unsigned int id, unsigned int ts,
640 unsigned int age),
641 TP_ARGS(id, ts, age),
642 TP_STRUCT__entry(
643 __field(unsigned int, id)
644 __field(unsigned int, ts)
645 __field(unsigned int, age)
646 ),
647 TP_fast_assign(
648 __entry->id = id;
649 __entry->ts = ts;
650 __entry->age = age;
651 ),
652 TP_printk(
653 "ctx=%d ts=%d age=%u",
654 __entry->id, __entry->ts, __entry->age)
655);
656
Jordan Crousef7b81e82013-05-28 17:03:00 -0600657TRACE_EVENT(kgsl_regwrite,
658
659 TP_PROTO(struct kgsl_device *device, unsigned int offset,
660 unsigned int value),
661
662 TP_ARGS(device, offset, value),
663
664 TP_STRUCT__entry(
665 __string(device_name, device->name)
666 __field(unsigned int, offset)
667 __field(unsigned int, value)
668 ),
669
670 TP_fast_assign(
671 __assign_str(device_name, device->name);
672 __entry->offset = offset;
673 __entry->value = value;
674 ),
675
676 TP_printk(
677 "d_name=%s reg=%x value=%x",
678 __get_str(device_name), __entry->offset, __entry->value
679 )
680);
681
Norman Geed7402ff2011-10-28 08:51:11 -0600682#endif /* _KGSL_TRACE_H */
683
684/* This part must be outside protection */
685#include <trace/define_trace.h>