blob: 5070ef197b315fdad5aff5a358d443c2255d3698 [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
27struct kgsl_device;
28struct kgsl_ringbuffer_issueibcmds;
29struct kgsl_device_waittimestamp;
30
31/*
32 * Tracepoint for kgsl issue ib commands
33 */
34TRACE_EVENT(kgsl_issueibcmds,
35
36 TP_PROTO(struct kgsl_device *device,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -060037 struct kgsl_ringbuffer_issueibcmds *cmd,
38 struct kgsl_ibdesc *ibdesc,
39 int result),
Norman Geed7402ff2011-10-28 08:51:11 -060040
Jeremy Gebben4a3756c2012-05-08 16:51:43 -060041 TP_ARGS(device, cmd, ibdesc, result),
Norman Geed7402ff2011-10-28 08:51:11 -060042
43 TP_STRUCT__entry(
44 __string(device_name, device->name)
45 __field(unsigned int, drawctxt_id)
46 __field(unsigned int, ibdesc_addr)
47 __field(unsigned int, numibs)
48 __field(unsigned int, timestamp)
49 __field(unsigned int, flags)
50 __field(int, result)
51 ),
52
53 TP_fast_assign(
54 __assign_str(device_name, device->name);
55 __entry->drawctxt_id = cmd->drawctxt_id;
Jeremy Gebben4a3756c2012-05-08 16:51:43 -060056 __entry->ibdesc_addr = ibdesc[0].gpuaddr;
Norman Geed7402ff2011-10-28 08:51:11 -060057 __entry->numibs = cmd->numibs;
58 __entry->timestamp = cmd->timestamp;
59 __entry->flags = cmd->flags;
60 __entry->result = result;
61 ),
62
63 TP_printk(
Jeremy Gebben4a3756c2012-05-08 16:51:43 -060064 "d_name=%s ctx=%u ib=0x%u numibs=%u timestamp=0x%x "
65 "flags=0x%x(%s) result=%d",
Norman Geed7402ff2011-10-28 08:51:11 -060066 __get_str(device_name),
67 __entry->drawctxt_id,
68 __entry->ibdesc_addr,
69 __entry->numibs,
70 __entry->timestamp,
71 __entry->flags,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -060072 __entry->flags ? __print_flags(__entry->flags, "|",
73 { KGSL_CONTEXT_SAVE_GMEM, "SAVE_GMEM" },
74 { KGSL_CONTEXT_SUBMIT_IB_LIST, "IB_LIST" },
75 { KGSL_CONTEXT_CTX_SWITCH, "CTX_SWITCH" })
76 : "None",
Norman Geed7402ff2011-10-28 08:51:11 -060077 __entry->result
78 )
79);
80
81/*
82 * Tracepoint for kgsl readtimestamp
83 */
84TRACE_EVENT(kgsl_readtimestamp,
85
86 TP_PROTO(struct kgsl_device *device,
Carter Cooper7e7f02e2012-02-15 09:36:31 -070087 unsigned int context_id,
88 unsigned int type,
89 unsigned int timestamp),
Norman Geed7402ff2011-10-28 08:51:11 -060090
Carter Cooper7e7f02e2012-02-15 09:36:31 -070091 TP_ARGS(device, context_id, type, timestamp),
Norman Geed7402ff2011-10-28 08:51:11 -060092
93 TP_STRUCT__entry(
94 __string(device_name, device->name)
Carter Cooper7e7f02e2012-02-15 09:36:31 -070095 __field(unsigned int, context_id)
Norman Geed7402ff2011-10-28 08:51:11 -060096 __field(unsigned int, type)
97 __field(unsigned int, timestamp)
98 ),
99
100 TP_fast_assign(
101 __assign_str(device_name, device->name);
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700102 __entry->context_id = context_id;
103 __entry->type = type;
104 __entry->timestamp = timestamp;
Norman Geed7402ff2011-10-28 08:51:11 -0600105 ),
106
107 TP_printk(
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600108 "d_name=%s context_id=%u type=%u timestamp=0x%x",
Norman Geed7402ff2011-10-28 08:51:11 -0600109 __get_str(device_name),
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700110 __entry->context_id,
Norman Geed7402ff2011-10-28 08:51:11 -0600111 __entry->type,
112 __entry->timestamp
113 )
114);
115
116/*
117 * Tracepoint for kgsl waittimestamp entry
118 */
119TRACE_EVENT(kgsl_waittimestamp_entry,
120
121 TP_PROTO(struct kgsl_device *device,
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700122 unsigned int context_id,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600123 unsigned int curr_ts,
124 unsigned int wait_ts,
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700125 unsigned int timeout),
Norman Geed7402ff2011-10-28 08:51:11 -0600126
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600127 TP_ARGS(device, context_id, curr_ts, wait_ts, timeout),
Norman Geed7402ff2011-10-28 08:51:11 -0600128
129 TP_STRUCT__entry(
130 __string(device_name, device->name)
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700131 __field(unsigned int, context_id)
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600132 __field(unsigned int, curr_ts)
133 __field(unsigned int, wait_ts)
Norman Geed7402ff2011-10-28 08:51:11 -0600134 __field(unsigned int, timeout)
135 ),
136
137 TP_fast_assign(
138 __assign_str(device_name, device->name);
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700139 __entry->context_id = context_id;
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600140 __entry->curr_ts = curr_ts;
141 __entry->wait_ts = wait_ts;
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700142 __entry->timeout = timeout;
Norman Geed7402ff2011-10-28 08:51:11 -0600143 ),
144
145 TP_printk(
Carter Cooper07e2c892012-06-14 10:48:42 -0600146 "d_name=%s context_id=%u curr_ts=0x%x timestamp=0x%x timeout=%u",
Norman Geed7402ff2011-10-28 08:51:11 -0600147 __get_str(device_name),
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700148 __entry->context_id,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600149 __entry->curr_ts,
150 __entry->wait_ts,
Norman Geed7402ff2011-10-28 08:51:11 -0600151 __entry->timeout
152 )
153);
154
155/*
156 * Tracepoint for kgsl waittimestamp exit
157 */
158TRACE_EVENT(kgsl_waittimestamp_exit,
159
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600160 TP_PROTO(struct kgsl_device *device, unsigned int curr_ts,
161 int result),
Norman Geed7402ff2011-10-28 08:51:11 -0600162
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600163 TP_ARGS(device, curr_ts, result),
Norman Geed7402ff2011-10-28 08:51:11 -0600164
165 TP_STRUCT__entry(
166 __string(device_name, device->name)
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600167 __field(unsigned int, curr_ts)
Norman Geed7402ff2011-10-28 08:51:11 -0600168 __field(int, result)
169 ),
170
171 TP_fast_assign(
172 __assign_str(device_name, device->name);
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600173 __entry->curr_ts = curr_ts;
Norman Geed7402ff2011-10-28 08:51:11 -0600174 __entry->result = result;
175 ),
176
177 TP_printk(
Carter Cooper07e2c892012-06-14 10:48:42 -0600178 "d_name=%s curr_ts=0x%x result=%d",
Norman Geed7402ff2011-10-28 08:51:11 -0600179 __get_str(device_name),
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600180 __entry->curr_ts,
Norman Geed7402ff2011-10-28 08:51:11 -0600181 __entry->result
182 )
183);
Jeremy Gebbenb50f3312011-12-16 08:58:33 -0700184
185DECLARE_EVENT_CLASS(kgsl_pwr_template,
186 TP_PROTO(struct kgsl_device *device, int on),
187
188 TP_ARGS(device, on),
189
190 TP_STRUCT__entry(
191 __string(device_name, device->name)
192 __field(int, on)
193 ),
194
195 TP_fast_assign(
196 __assign_str(device_name, device->name);
197 __entry->on = on;
198 ),
199
200 TP_printk(
201 "d_name=%s %s",
202 __get_str(device_name),
203 __entry->on ? "on" : "off"
204 )
205);
206
207DEFINE_EVENT(kgsl_pwr_template, kgsl_clk,
208 TP_PROTO(struct kgsl_device *device, int on),
209 TP_ARGS(device, on)
210);
211
212DEFINE_EVENT(kgsl_pwr_template, kgsl_irq,
213 TP_PROTO(struct kgsl_device *device, int on),
214 TP_ARGS(device, on)
215);
216
217DEFINE_EVENT(kgsl_pwr_template, kgsl_bus,
218 TP_PROTO(struct kgsl_device *device, int on),
219 TP_ARGS(device, on)
220);
221
222DEFINE_EVENT(kgsl_pwr_template, kgsl_rail,
223 TP_PROTO(struct kgsl_device *device, int on),
224 TP_ARGS(device, on)
225);
226
227TRACE_EVENT(kgsl_pwrlevel,
228
229 TP_PROTO(struct kgsl_device *device, unsigned int pwrlevel,
230 unsigned int freq),
231
232 TP_ARGS(device, pwrlevel, freq),
233
234 TP_STRUCT__entry(
235 __string(device_name, device->name)
236 __field(unsigned int, pwrlevel)
237 __field(unsigned int, freq)
238 ),
239
240 TP_fast_assign(
241 __assign_str(device_name, device->name);
242 __entry->pwrlevel = pwrlevel;
243 __entry->freq = freq;
244 ),
245
246 TP_printk(
247 "d_name=%s pwrlevel=%d freq=%d",
248 __get_str(device_name),
249 __entry->pwrlevel,
250 __entry->freq
251 )
252);
253
Suman Tatirajubfec4152012-07-17 17:53:01 -0700254TRACE_EVENT(kgsl_mpdcvs,
255
256 TP_PROTO(struct kgsl_device *device, unsigned int state),
257
258 TP_ARGS(device, state),
259
260 TP_STRUCT__entry(
261 __string(device_name, device->name)
262 __field(unsigned int, state)
263 ),
264
265 TP_fast_assign(
266 __assign_str(device_name, device->name);
267 __entry->state = state;
268 ),
269
270 TP_printk(
271 "d_name=%s %s",
272 __get_str(device_name),
273 __entry->state ? "BUSY" : "IDLE"
274 )
275);
276
Jeremy Gebbenb50f3312011-12-16 08:58:33 -0700277DECLARE_EVENT_CLASS(kgsl_pwrstate_template,
278 TP_PROTO(struct kgsl_device *device, unsigned int state),
279
280 TP_ARGS(device, state),
281
282 TP_STRUCT__entry(
283 __string(device_name, device->name)
284 __field(unsigned int, state)
285 ),
286
287 TP_fast_assign(
288 __assign_str(device_name, device->name);
289 __entry->state = state;
290 ),
291
292 TP_printk(
293 "d_name=%s %s",
294 __get_str(device_name),
295 kgsl_pwrstate_to_str(__entry->state)
296 )
297);
298
299DEFINE_EVENT(kgsl_pwrstate_template, kgsl_pwr_set_state,
300 TP_PROTO(struct kgsl_device *device, unsigned int state),
301 TP_ARGS(device, state)
302);
303
304DEFINE_EVENT(kgsl_pwrstate_template, kgsl_pwr_request_state,
305 TP_PROTO(struct kgsl_device *device, unsigned int state),
306 TP_ARGS(device, state)
307);
308
Jeremy Gebbena5859272012-03-01 12:46:28 -0700309TRACE_EVENT(kgsl_mem_alloc,
310
311 TP_PROTO(struct kgsl_mem_entry *mem_entry),
312
313 TP_ARGS(mem_entry),
314
315 TP_STRUCT__entry(
316 __field(unsigned int, gpuaddr)
317 __field(unsigned int, size)
Jordan Crousea96c29e2012-10-03 10:12:57 -0600318 __field(unsigned int, tgid)
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600319 __array(char, usage, 16)
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600320 __field(unsigned int, id)
321 __field(unsigned int, flags)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700322 ),
323
324 TP_fast_assign(
325 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
326 __entry->size = mem_entry->memdesc.size;
Jordan Crousea96c29e2012-10-03 10:12:57 -0600327 __entry->tgid = mem_entry->priv->pid;
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600328 kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
Jordan Crousedc67dfb2012-10-25 09:41:46 -0600329 mem_entry->memdesc.flags);
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600330 __entry->id = mem_entry->id;
331 __entry->flags = mem_entry->memdesc.flags;
Jeremy Gebbena5859272012-03-01 12:46:28 -0700332 ),
333
334 TP_printk(
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600335 "gpuaddr=0x%08x size=%d tgid=%d usage=%s id=%d flags=0x%08x",
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600336 __entry->gpuaddr, __entry->size, __entry->tgid,
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600337 __entry->usage, __entry->id, __entry->flags
Jeremy Gebbena5859272012-03-01 12:46:28 -0700338 )
339);
340
Jeremy Gebbenfec05c22013-05-28 16:59:29 -0600341TRACE_EVENT(kgsl_mem_mmap,
342
343 TP_PROTO(struct kgsl_mem_entry *mem_entry),
344
345 TP_ARGS(mem_entry),
346
347 TP_STRUCT__entry(
348 __field(unsigned long, useraddr)
349 __field(unsigned int, gpuaddr)
350 __field(unsigned int, size)
351 __array(char, usage, 16)
352 __field(unsigned int, id)
353 __field(unsigned int, flags)
354 ),
355
356 TP_fast_assign(
357 __entry->useraddr = mem_entry->memdesc.useraddr;
358 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
359 __entry->size = mem_entry->memdesc.size;
360 kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
361 mem_entry->memdesc.flags);
362 __entry->id = mem_entry->id;
363 __entry->flags = mem_entry->memdesc.flags;
364 ),
365
366 TP_printk(
367 "useraddr=%lx gpuaddr=0x%08x size=%d usage=%s id=%d"
368 " flags=0x%08x",
369 __entry->useraddr, __entry->gpuaddr, __entry->size,
370 __entry->usage, __entry->id, __entry->flags
371 )
372);
373
374TRACE_EVENT(kgsl_mem_unmapped_area_collision,
375
376 TP_PROTO(struct kgsl_mem_entry *mem_entry,
377 unsigned long hint,
378 unsigned long len,
379 unsigned long addr),
380
381 TP_ARGS(mem_entry, hint, len, addr),
382
383 TP_STRUCT__entry(
384 __field(unsigned int, id)
385 __field(unsigned long, hint)
386 __field(unsigned long, len)
387 __field(unsigned long, addr)
388 ),
389
390 TP_fast_assign(
391 __entry->id = mem_entry->id;
392 __entry->hint = hint;
393 __entry->len = len;
394 __entry->addr = addr;
395 ),
396
397 TP_printk(
398 "id=%d hint=0x%lx len=%ld addr=0x%lx",
399 __entry->id, __entry->hint, __entry->len, __entry->addr
400 )
401);
402
Jeremy Gebbena5859272012-03-01 12:46:28 -0700403TRACE_EVENT(kgsl_mem_map,
404
405 TP_PROTO(struct kgsl_mem_entry *mem_entry, int fd),
406
407 TP_ARGS(mem_entry, fd),
408
409 TP_STRUCT__entry(
410 __field(unsigned int, gpuaddr)
411 __field(unsigned int, size)
412 __field(int, fd)
413 __field(int, type)
Jordan Crousea96c29e2012-10-03 10:12:57 -0600414 __field(unsigned int, tgid)
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600415 __array(char, usage, 16)
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600416 __field(unsigned int, id)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700417 ),
418
419 TP_fast_assign(
420 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
421 __entry->size = mem_entry->memdesc.size;
422 __entry->fd = fd;
423 __entry->type = mem_entry->memtype;
Jordan Crousea96c29e2012-10-03 10:12:57 -0600424 __entry->tgid = mem_entry->priv->pid;
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600425 kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
Jordan Crousedc67dfb2012-10-25 09:41:46 -0600426 mem_entry->memdesc.flags);
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600427 __entry->id = mem_entry->id;
Jeremy Gebbena5859272012-03-01 12:46:28 -0700428 ),
429
430 TP_printk(
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600431 "gpuaddr=0x%08x size=%d type=%d fd=%d tgid=%d usage=%s id=%d",
Jeremy Gebbena5859272012-03-01 12:46:28 -0700432 __entry->gpuaddr, __entry->size,
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600433 __entry->type, __entry->fd, __entry->tgid,
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600434 __entry->usage, __entry->id
Jeremy Gebbena5859272012-03-01 12:46:28 -0700435 )
436);
437
438TRACE_EVENT(kgsl_mem_free,
439
440 TP_PROTO(struct kgsl_mem_entry *mem_entry),
441
442 TP_ARGS(mem_entry),
443
444 TP_STRUCT__entry(
445 __field(unsigned int, gpuaddr)
446 __field(unsigned int, size)
447 __field(int, type)
448 __field(int, fd)
Jordan Crousea96c29e2012-10-03 10:12:57 -0600449 __field(unsigned int, tgid)
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600450 __array(char, usage, 16)
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600451 __field(unsigned int, id)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700452 ),
453
454 TP_fast_assign(
455 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
456 __entry->size = mem_entry->memdesc.size;
457 __entry->type = mem_entry->memtype;
Jordan Crousea96c29e2012-10-03 10:12:57 -0600458 __entry->tgid = mem_entry->priv->pid;
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600459 kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
Jordan Crousedc67dfb2012-10-25 09:41:46 -0600460 mem_entry->memdesc.flags);
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600461 __entry->id = mem_entry->id;
Jeremy Gebbena5859272012-03-01 12:46:28 -0700462 ),
463
464 TP_printk(
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600465 "gpuaddr=0x%08x size=%d type=%d tgid=%d usage=%s id=%d",
Jordan Crousea96c29e2012-10-03 10:12:57 -0600466 __entry->gpuaddr, __entry->size, __entry->type,
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600467 __entry->tgid, __entry->usage, __entry->id
Jeremy Gebbena5859272012-03-01 12:46:28 -0700468 )
469);
470
471DECLARE_EVENT_CLASS(kgsl_mem_timestamp_template,
472
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600473 TP_PROTO(struct kgsl_device *device, struct kgsl_mem_entry *mem_entry,
474 unsigned int id, unsigned int curr_ts, unsigned int free_ts),
Jeremy Gebbena5859272012-03-01 12:46:28 -0700475
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600476 TP_ARGS(device, mem_entry, id, curr_ts, free_ts),
Jeremy Gebbena5859272012-03-01 12:46:28 -0700477
478 TP_STRUCT__entry(
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600479 __string(device_name, device->name)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700480 __field(unsigned int, gpuaddr)
481 __field(unsigned int, size)
482 __field(int, type)
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600483 __array(char, usage, 16)
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600484 __field(unsigned int, id)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700485 __field(unsigned int, drawctxt_id)
486 __field(unsigned int, curr_ts)
487 __field(unsigned int, free_ts)
488 ),
489
490 TP_fast_assign(
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600491 __assign_str(device_name, device->name);
Jeremy Gebbena5859272012-03-01 12:46:28 -0700492 __entry->gpuaddr = mem_entry->memdesc.gpuaddr;
493 __entry->size = mem_entry->memdesc.size;
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600494 kgsl_get_memory_usage(__entry->usage, sizeof(__entry->usage),
Jordan Crousedc67dfb2012-10-25 09:41:46 -0600495 mem_entry->memdesc.flags);
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600496 __entry->id = mem_entry->id;
Carter Cooper7e7f02e2012-02-15 09:36:31 -0700497 __entry->drawctxt_id = id;
Jeremy Gebbena5859272012-03-01 12:46:28 -0700498 __entry->type = mem_entry->memtype;
499 __entry->curr_ts = curr_ts;
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600500 __entry->free_ts = free_ts;
Jeremy Gebbena5859272012-03-01 12:46:28 -0700501 ),
502
503 TP_printk(
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600504 "d_name=%s gpuaddr=0x%08x size=%d type=%d usage=%s id=%d ctx=%u"
Carter Cooper07e2c892012-06-14 10:48:42 -0600505 " curr_ts=0x%x free_ts=0x%x",
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600506 __get_str(device_name),
507 __entry->gpuaddr,
508 __entry->size,
509 __entry->type,
Jeremy Gebben158a5c02012-09-24 14:27:25 -0600510 __entry->usage,
Jeremy Gebbena46f4272013-05-28 16:54:09 -0600511 __entry->id,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600512 __entry->drawctxt_id,
513 __entry->curr_ts,
514 __entry->free_ts
Jeremy Gebbena5859272012-03-01 12:46:28 -0700515 )
516);
517
518DEFINE_EVENT(kgsl_mem_timestamp_template, kgsl_mem_timestamp_queue,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600519 TP_PROTO(struct kgsl_device *device, struct kgsl_mem_entry *mem_entry,
520 unsigned int id, unsigned int curr_ts, unsigned int free_ts),
521 TP_ARGS(device, mem_entry, id, curr_ts, free_ts)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700522);
523
524DEFINE_EVENT(kgsl_mem_timestamp_template, kgsl_mem_timestamp_free,
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600525 TP_PROTO(struct kgsl_device *device, struct kgsl_mem_entry *mem_entry,
526 unsigned int id, unsigned int curr_ts, unsigned int free_ts),
527 TP_ARGS(device, mem_entry, id, curr_ts, free_ts)
Jeremy Gebbena5859272012-03-01 12:46:28 -0700528);
529
Jeremy Gebben4a3756c2012-05-08 16:51:43 -0600530TRACE_EVENT(kgsl_context_create,
531
532 TP_PROTO(struct kgsl_device *device, struct kgsl_context *context,
533 unsigned int flags),
534
535 TP_ARGS(device, context, flags),
536
537 TP_STRUCT__entry(
538 __string(device_name, device->name)
539 __field(unsigned int, id)
540 __field(unsigned int, flags)
541 ),
542
543 TP_fast_assign(
544 __assign_str(device_name, device->name);
545 __entry->id = context->id;
546 __entry->flags = flags;
547 ),
548
549 TP_printk(
550 "d_name=%s ctx=%u flags=0x%x %s",
551 __get_str(device_name), __entry->id, __entry->flags,
552 __entry->flags ? __print_flags(__entry->flags, "|",
553 { KGSL_CONTEXT_NO_GMEM_ALLOC , "NO_GMEM_ALLOC" },
554 { KGSL_CONTEXT_PREAMBLE, "PREAMBLE" },
555 { KGSL_CONTEXT_TRASH_STATE, "TRASH_STATE" },
556 { KGSL_CONTEXT_PER_CONTEXT_TS, "PER_CONTEXT_TS" })
557 : "None"
558 )
559);
560
561TRACE_EVENT(kgsl_context_detach,
562
563 TP_PROTO(struct kgsl_device *device, struct kgsl_context *context),
564
565 TP_ARGS(device, context),
566
567 TP_STRUCT__entry(
568 __string(device_name, device->name)
569 __field(unsigned int, id)
570 ),
571
572 TP_fast_assign(
573 __assign_str(device_name, device->name);
574 __entry->id = context->id;
575 ),
576
577 TP_printk(
578 "d_name=%s ctx=%u",
579 __get_str(device_name), __entry->id
580 )
581);
Jeremy Gebbena5859272012-03-01 12:46:28 -0700582
Jeremy Gebben5935b7a2012-05-09 14:52:34 -0600583TRACE_EVENT(kgsl_mmu_pagefault,
584
585 TP_PROTO(struct kgsl_device *device, unsigned int page,
586 unsigned int pt, const char *op),
587
588 TP_ARGS(device, page, pt, op),
589
590 TP_STRUCT__entry(
591 __string(device_name, device->name)
592 __field(unsigned int, page)
593 __field(unsigned int, pt)
594 __string(op, op)
595 ),
596
597 TP_fast_assign(
598 __assign_str(device_name, device->name);
599 __entry->page = page;
600 __entry->pt = pt;
601 __assign_str(op, op);
602 ),
603
604 TP_printk(
Pushkar Joshi88ab61f2013-01-23 11:24:09 -0800605 "d_name=%s page=0x%08x pt=%d op=%s",
Jeremy Gebben5935b7a2012-05-09 14:52:34 -0600606 __get_str(device_name), __entry->page, __entry->pt,
607 __get_str(op)
608 )
609);
610
Jordan Crouse2c22e912013-02-28 13:40:56 -0700611TRACE_EVENT(kgsl_register_event,
612 TP_PROTO(unsigned int id, unsigned int timestamp),
613 TP_ARGS(id, timestamp),
614 TP_STRUCT__entry(
615 __field(unsigned int, id)
616 __field(unsigned int, timestamp)
617 ),
618 TP_fast_assign(
619 __entry->id = id;
620 __entry->timestamp = timestamp;
621 ),
622 TP_printk(
623 "ctx=%d ts=%d",
624 __entry->id, __entry->timestamp)
625);
626
627TRACE_EVENT(kgsl_fire_event,
628 TP_PROTO(unsigned int id, unsigned int ts,
629 unsigned int age),
630 TP_ARGS(id, ts, age),
631 TP_STRUCT__entry(
632 __field(unsigned int, id)
633 __field(unsigned int, ts)
634 __field(unsigned int, age)
635 ),
636 TP_fast_assign(
637 __entry->id = id;
638 __entry->ts = ts;
639 __entry->age = age;
640 ),
641 TP_printk(
642 "ctx=%d ts=%d age=%u",
643 __entry->id, __entry->ts, __entry->age)
644);
645
Jordan Crousef7b81e82013-05-28 17:03:00 -0600646TRACE_EVENT(kgsl_regwrite,
647
648 TP_PROTO(struct kgsl_device *device, unsigned int offset,
649 unsigned int value),
650
651 TP_ARGS(device, offset, value),
652
653 TP_STRUCT__entry(
654 __string(device_name, device->name)
655 __field(unsigned int, offset)
656 __field(unsigned int, value)
657 ),
658
659 TP_fast_assign(
660 __assign_str(device_name, device->name);
661 __entry->offset = offset;
662 __entry->value = value;
663 ),
664
665 TP_printk(
666 "d_name=%s reg=%x value=%x",
667 __get_str(device_name), __entry->offset, __entry->value
668 )
669);
670
Norman Geed7402ff2011-10-28 08:51:11 -0600671#endif /* _KGSL_TRACE_H */
672
673/* This part must be outside protection */
674#include <trace/define_trace.h>