blob: e33060ac3853db98bf26f0d9b63095c12977cfae [file] [log] [blame]
Shrenuj Bansala419c792016-10-20 14:05:11 -07001/* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
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
14#if !defined(_ADRENO_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
15#define _ADRENO_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 adreno_trace
23
24#include <linux/tracepoint.h>
25#include "adreno_a3xx.h"
26#include "adreno_a4xx.h"
27#include "adreno_a5xx.h"
28
29TRACE_EVENT(adreno_cmdbatch_queued,
30 TP_PROTO(struct kgsl_drawobj *drawobj, unsigned int queued),
31 TP_ARGS(drawobj, queued),
32 TP_STRUCT__entry(
33 __field(unsigned int, id)
34 __field(unsigned int, timestamp)
35 __field(unsigned int, queued)
36 __field(unsigned int, flags)
37 __field(unsigned int, prio)
38 ),
39 TP_fast_assign(
40 __entry->id = drawobj->context->id;
41 __entry->timestamp = drawobj->timestamp;
42 __entry->queued = queued;
43 __entry->flags = drawobj->flags;
44 __entry->prio = drawobj->context->priority;
45 ),
46 TP_printk(
47 "ctx=%u ctx_prio=%u ts=%u queued=%u flags=%s",
48 __entry->id, __entry->prio,
49 __entry->timestamp, __entry->queued,
50 __entry->flags ? __print_flags(__entry->flags, "|",
51 KGSL_DRAWOBJ_FLAGS) : "none"
52 )
53);
54
55TRACE_EVENT(adreno_cmdbatch_submitted,
56 TP_PROTO(struct kgsl_drawobj *drawobj, int inflight, uint64_t ticks,
57 unsigned long secs, unsigned long usecs,
58 struct adreno_ringbuffer *rb, unsigned int rptr),
59 TP_ARGS(drawobj, inflight, ticks, secs, usecs, rb, rptr),
60 TP_STRUCT__entry(
61 __field(unsigned int, id)
62 __field(unsigned int, timestamp)
63 __field(int, inflight)
64 __field(unsigned int, flags)
65 __field(uint64_t, ticks)
66 __field(unsigned long, secs)
67 __field(unsigned long, usecs)
68 __field(int, prio)
69 __field(int, rb_id)
70 __field(unsigned int, rptr)
71 __field(unsigned int, wptr)
72 __field(int, q_inflight)
73 ),
74 TP_fast_assign(
75 __entry->id = drawobj->context->id;
76 __entry->timestamp = drawobj->timestamp;
77 __entry->inflight = inflight;
78 __entry->flags = drawobj->flags;
79 __entry->ticks = ticks;
80 __entry->secs = secs;
81 __entry->usecs = usecs;
82 __entry->prio = drawobj->context->priority;
83 __entry->rb_id = rb->id;
84 __entry->rptr = rptr;
85 __entry->wptr = rb->wptr;
86 __entry->q_inflight = rb->dispatch_q.inflight;
87 ),
88 TP_printk(
89 "ctx=%u ctx_prio=%d ts=%u inflight=%d flags=%s ticks=%lld time=%lu.%0lu rb_id=%d r/w=%x/%x, q_inflight=%d",
90 __entry->id, __entry->prio, __entry->timestamp,
91 __entry->inflight,
92 __entry->flags ? __print_flags(__entry->flags, "|",
93 KGSL_DRAWOBJ_FLAGS) : "none",
94 __entry->ticks, __entry->secs, __entry->usecs,
95 __entry->rb_id, __entry->rptr, __entry->wptr,
96 __entry->q_inflight
97 )
98);
99
100TRACE_EVENT(adreno_cmdbatch_retired,
101 TP_PROTO(struct kgsl_drawobj *drawobj, int inflight,
102 uint64_t start, uint64_t retire,
103 struct adreno_ringbuffer *rb, unsigned int rptr,
104 unsigned long fault_recovery),
105 TP_ARGS(drawobj, inflight, start, retire, rb, rptr, fault_recovery),
106 TP_STRUCT__entry(
107 __field(unsigned int, id)
108 __field(unsigned int, timestamp)
109 __field(int, inflight)
110 __field(unsigned int, recovery)
111 __field(unsigned int, flags)
112 __field(uint64_t, start)
113 __field(uint64_t, retire)
114 __field(int, prio)
115 __field(int, rb_id)
116 __field(unsigned int, rptr)
117 __field(unsigned int, wptr)
118 __field(int, q_inflight)
119 __field(unsigned long, fault_recovery)
120 ),
121 TP_fast_assign(
122 __entry->id = drawobj->context->id;
123 __entry->timestamp = drawobj->timestamp;
124 __entry->inflight = inflight;
125 __entry->recovery = fault_recovery;
126 __entry->flags = drawobj->flags;
127 __entry->start = start;
128 __entry->retire = retire;
129 __entry->prio = drawobj->context->priority;
130 __entry->rb_id = rb->id;
131 __entry->rptr = rptr;
132 __entry->wptr = rb->wptr;
133 __entry->q_inflight = rb->dispatch_q.inflight;
134 ),
135 TP_printk(
136 "ctx=%u ctx_prio=%d ts=%u inflight=%d recovery=%s flags=%s start=%lld retire=%lld rb_id=%d, r/w=%x/%x, q_inflight=%d",
137 __entry->id, __entry->prio, __entry->timestamp,
138 __entry->inflight,
139 __entry->recovery ?
140 __print_flags(__entry->recovery, "|",
141 ADRENO_FT_TYPES) : "none",
142 __entry->flags ? __print_flags(__entry->flags, "|",
143 KGSL_DRAWOBJ_FLAGS) : "none",
144 __entry->start,
145 __entry->retire,
146 __entry->rb_id, __entry->rptr, __entry->wptr,
147 __entry->q_inflight
148 )
149);
150
Jonathan Wicksf62ac942017-07-31 20:31:06 -0600151TRACE_EVENT(adreno_cmdbatch_sync,
152 TP_PROTO(struct adreno_context *drawctxt,
153 uint64_t ticks),
154 TP_ARGS(drawctxt, ticks),
155 TP_STRUCT__entry(
156 __field(unsigned int, id)
157 __field(unsigned int, timestamp)
158 __field(uint64_t, ticks)
159 __field(int, prio)
160 ),
161 TP_fast_assign(
162 __entry->id = drawctxt->base.id;
163 __entry->timestamp = drawctxt->timestamp;
164 __entry->ticks = ticks;
165 __entry->prio = drawctxt->base.priority;
166 ),
167 TP_printk(
168 "ctx=%u ctx_prio=%d ts=%u ticks=%lld",
169 __entry->id, __entry->prio, __entry->timestamp,
170 __entry->ticks
171 )
172);
173
Shrenuj Bansala419c792016-10-20 14:05:11 -0700174TRACE_EVENT(adreno_cmdbatch_fault,
175 TP_PROTO(struct kgsl_drawobj_cmd *cmdobj, unsigned int fault),
176 TP_ARGS(cmdobj, fault),
177 TP_STRUCT__entry(
178 __field(unsigned int, id)
179 __field(unsigned int, timestamp)
180 __field(unsigned int, fault)
181 ),
182 TP_fast_assign(
183 __entry->id = cmdobj->base.context->id;
184 __entry->timestamp = cmdobj->base.timestamp;
185 __entry->fault = fault;
186 ),
187 TP_printk(
188 "ctx=%u ts=%u type=%s",
189 __entry->id, __entry->timestamp,
190 __print_symbolic(__entry->fault,
191 { 0, "none" },
192 { ADRENO_SOFT_FAULT, "soft" },
193 { ADRENO_HARD_FAULT, "hard" },
194 { ADRENO_TIMEOUT_FAULT, "timeout" })
195 )
196);
197
198TRACE_EVENT(adreno_cmdbatch_recovery,
199 TP_PROTO(struct kgsl_drawobj_cmd *cmdobj, unsigned int action),
200 TP_ARGS(cmdobj, action),
201 TP_STRUCT__entry(
202 __field(unsigned int, id)
203 __field(unsigned int, timestamp)
204 __field(unsigned int, action)
205 ),
206 TP_fast_assign(
207 __entry->id = cmdobj->base.context->id;
208 __entry->timestamp = cmdobj->base.timestamp;
209 __entry->action = action;
210 ),
211 TP_printk(
212 "ctx=%u ts=%u action=%s",
213 __entry->id, __entry->timestamp,
214 __print_symbolic(__entry->action, ADRENO_FT_TYPES)
215 )
216);
217
218DECLARE_EVENT_CLASS(adreno_drawctxt_template,
219 TP_PROTO(struct adreno_context *drawctxt),
220 TP_ARGS(drawctxt),
221 TP_STRUCT__entry(
222 __field(unsigned int, id)
223 __field(unsigned int, priority)
224 ),
225 TP_fast_assign(
226 __entry->id = drawctxt->base.id;
227 __entry->priority = drawctxt->base.priority;
228 ),
229 TP_printk("ctx=%u priority=%u", __entry->id, __entry->priority)
230);
231
232DEFINE_EVENT(adreno_drawctxt_template, adreno_drawctxt_sleep,
233 TP_PROTO(struct adreno_context *drawctxt),
234 TP_ARGS(drawctxt)
235);
236
237DEFINE_EVENT(adreno_drawctxt_template, adreno_drawctxt_wake,
238 TP_PROTO(struct adreno_context *drawctxt),
239 TP_ARGS(drawctxt)
240);
241
242DEFINE_EVENT(adreno_drawctxt_template, dispatch_queue_context,
243 TP_PROTO(struct adreno_context *drawctxt),
244 TP_ARGS(drawctxt)
245);
246
247DEFINE_EVENT(adreno_drawctxt_template, adreno_drawctxt_invalidate,
248 TP_PROTO(struct adreno_context *drawctxt),
249 TP_ARGS(drawctxt)
250);
251
252TRACE_EVENT(adreno_drawctxt_wait_start,
253 TP_PROTO(unsigned int rb_id, unsigned int ctx_id, unsigned int ts),
254 TP_ARGS(rb_id, ctx_id, ts),
255 TP_STRUCT__entry(
256 __field(unsigned int, rb_id)
257 __field(unsigned int, ctx_id)
258 __field(unsigned int, ts)
259 ),
260 TP_fast_assign(
261 __entry->rb_id = rb_id;
262 __entry->ctx_id = ctx_id;
263 __entry->ts = ts;
264 ),
265 TP_printk(
266 "rb=%u ctx=%u ts=%u",
267 __entry->rb_id, __entry->ctx_id, __entry->ts
268 )
269);
270
271TRACE_EVENT(adreno_drawctxt_wait_done,
272 TP_PROTO(unsigned int rb_id, unsigned int ctx_id,
273 unsigned int ts, int status),
274 TP_ARGS(rb_id, ctx_id, ts, status),
275 TP_STRUCT__entry(
276 __field(unsigned int, rb_id)
277 __field(unsigned int, ctx_id)
278 __field(unsigned int, ts)
279 __field(int, status)
280 ),
281 TP_fast_assign(
282 __entry->rb_id = rb_id;
283 __entry->ctx_id = ctx_id;
284 __entry->ts = ts;
285 __entry->status = status;
286 ),
287 TP_printk(
288 "rb=%u ctx=%u ts=%u status=%d",
289 __entry->rb_id, __entry->ctx_id, __entry->ts, __entry->status
290 )
291);
292
293TRACE_EVENT(adreno_drawctxt_switch,
294 TP_PROTO(struct adreno_ringbuffer *rb,
295 struct adreno_context *newctx),
296 TP_ARGS(rb, newctx),
297 TP_STRUCT__entry(
298 __field(int, rb_level)
299 __field(unsigned int, oldctx)
300 __field(unsigned int, newctx)
301 __field(unsigned int, flags)
302 ),
303 TP_fast_assign(
304 __entry->rb_level = rb->id;
305 __entry->oldctx = rb->drawctxt_active ?
306 rb->drawctxt_active->base.id : 0;
307 __entry->newctx = newctx ? newctx->base.id : 0;
308 ),
309 TP_printk(
310 "rb level=%d oldctx=%u newctx=%u",
311 __entry->rb_level, __entry->oldctx, __entry->newctx
312 )
313);
314
315TRACE_EVENT(adreno_gpu_fault,
316 TP_PROTO(unsigned int ctx, unsigned int ts,
317 unsigned int status, unsigned int rptr, unsigned int wptr,
318 unsigned int ib1base, unsigned int ib1size,
319 unsigned int ib2base, unsigned int ib2size, int rb_id),
320 TP_ARGS(ctx, ts, status, rptr, wptr, ib1base, ib1size, ib2base,
321 ib2size, rb_id),
322 TP_STRUCT__entry(
323 __field(unsigned int, ctx)
324 __field(unsigned int, ts)
325 __field(unsigned int, status)
326 __field(unsigned int, rptr)
327 __field(unsigned int, wptr)
328 __field(unsigned int, ib1base)
329 __field(unsigned int, ib1size)
330 __field(unsigned int, ib2base)
331 __field(unsigned int, ib2size)
332 __field(int, rb_id)
333 ),
334 TP_fast_assign(
335 __entry->ctx = ctx;
336 __entry->ts = ts;
337 __entry->status = status;
338 __entry->rptr = rptr;
339 __entry->wptr = wptr;
340 __entry->ib1base = ib1base;
341 __entry->ib1size = ib1size;
342 __entry->ib2base = ib2base;
343 __entry->ib2size = ib2size;
344 __entry->rb_id = rb_id;
345 ),
346 TP_printk(
347 "ctx=%d ts=%d rb_id=%d status=%X RB=%X/%X IB1=%X/%X IB2=%X/%X",
348 __entry->ctx, __entry->ts, __entry->rb_id, __entry->status,
349 __entry->wptr, __entry->rptr, __entry->ib1base,
350 __entry->ib1size, __entry->ib2base, __entry->ib2size)
351);
352
353TRACE_EVENT(adreno_sp_tp,
354
355 TP_PROTO(unsigned long ip),
356
357 TP_ARGS(ip),
358
359 TP_STRUCT__entry(
360 __field(unsigned long, ip)
361 ),
362
363 TP_fast_assign(
364 __entry->ip = ip;
365 ),
366
367 TP_printk(
368 "func=%pf", (void *) __entry->ip
369 )
370);
371
372/*
373 * Tracepoint for a3xx irq. Includes status info
374 */
375TRACE_EVENT(kgsl_a3xx_irq_status,
376
377 TP_PROTO(struct adreno_device *adreno_dev, unsigned int status),
378
379 TP_ARGS(adreno_dev, status),
380
381 TP_STRUCT__entry(
382 __string(device_name, adreno_dev->dev.name)
383 __field(unsigned int, status)
384 ),
385
386 TP_fast_assign(
387 __assign_str(device_name, adreno_dev->dev.name);
388 __entry->status = status;
389 ),
390
391 TP_printk(
392 "d_name=%s status=%s",
393 __get_str(device_name),
394 __entry->status ? __print_flags(__entry->status, "|",
395 A3XX_IRQ_FLAGS) : "None"
396 )
397);
398
399/*
400 * Tracepoint for a4xx irq. Includes status info
401 */
402TRACE_EVENT(kgsl_a4xx_irq_status,
403
404 TP_PROTO(struct adreno_device *adreno_dev, unsigned int status),
405
406 TP_ARGS(adreno_dev, status),
407
408 TP_STRUCT__entry(
409 __string(device_name, adreno_dev->dev.name)
410 __field(unsigned int, status)
411 ),
412
413 TP_fast_assign(
414 __assign_str(device_name, adreno_dev->dev.name);
415 __entry->status = status;
416 ),
417
418 TP_printk(
419 "d_name=%s status=%s",
420 __get_str(device_name),
421 __entry->status ? __print_flags(__entry->status, "|",
422 A4XX_IRQ_FLAGS) : "None"
423 )
424);
425
426/*
427 * Tracepoint for a5xx irq. Includes status info
428 */
429TRACE_EVENT(kgsl_a5xx_irq_status,
430
431 TP_PROTO(struct adreno_device *adreno_dev, unsigned int status),
432
433 TP_ARGS(adreno_dev, status),
434
435 TP_STRUCT__entry(
436 __string(device_name, adreno_dev->dev.name)
437 __field(unsigned int, status)
438 ),
439
440 TP_fast_assign(
441 __assign_str(device_name, adreno_dev->dev.name);
442 __entry->status = status;
443 ),
444
445 TP_printk(
446 "d_name=%s status=%s",
447 __get_str(device_name),
448 __entry->status ? __print_flags(__entry->status, "|",
449 A5XX_IRQ_FLAGS) : "None"
450 )
451);
452
453DECLARE_EVENT_CLASS(adreno_hw_preempt_template,
454 TP_PROTO(struct adreno_ringbuffer *cur_rb,
455 struct adreno_ringbuffer *new_rb,
456 unsigned int cur_rptr, unsigned int new_rptr),
457 TP_ARGS(cur_rb, new_rb, cur_rptr, new_rptr),
458 TP_STRUCT__entry(__field(int, cur_level)
459 __field(int, new_level)
460 __field(unsigned int, cur_rptr)
461 __field(unsigned int, new_rptr)
462 __field(unsigned int, cur_wptr)
463 __field(unsigned int, new_wptr)
464 __field(unsigned int, cur_rbbase)
465 __field(unsigned int, new_rbbase)
466 ),
467 TP_fast_assign(__entry->cur_level = cur_rb->id;
468 __entry->new_level = new_rb->id;
469 __entry->cur_rptr = cur_rptr;
470 __entry->new_rptr = new_rptr;
471 __entry->cur_wptr = cur_rb->wptr;
472 __entry->new_wptr = new_rb->wptr;
473 __entry->cur_rbbase = cur_rb->buffer_desc.gpuaddr;
474 __entry->new_rbbase = new_rb->buffer_desc.gpuaddr;
475 ),
476 TP_printk(
477 "cur_rb_lvl=%d rptr=%x wptr=%x rbbase=%x new_rb_lvl=%d rptr=%x wptr=%x rbbase=%x",
478 __entry->cur_level, __entry->cur_rptr,
479 __entry->cur_wptr, __entry->cur_rbbase,
480 __entry->new_level, __entry->new_rptr,
481 __entry->new_wptr, __entry->new_rbbase
482 )
483);
484
485DEFINE_EVENT(adreno_hw_preempt_template, adreno_hw_preempt_clear_to_trig,
486 TP_PROTO(struct adreno_ringbuffer *cur_rb,
487 struct adreno_ringbuffer *new_rb,
488 unsigned int cur_rptr, unsigned int new_rptr),
489 TP_ARGS(cur_rb, new_rb, cur_rptr, new_rptr)
490);
491
492DEFINE_EVENT(adreno_hw_preempt_template, adreno_hw_preempt_trig_to_comp,
493 TP_PROTO(struct adreno_ringbuffer *cur_rb,
494 struct adreno_ringbuffer *new_rb,
495 unsigned int cur_rptr, unsigned int new_rptr),
496 TP_ARGS(cur_rb, new_rb, cur_rptr, new_rptr)
497);
498
499DEFINE_EVENT(adreno_hw_preempt_template, adreno_hw_preempt_trig_to_comp_int,
500 TP_PROTO(struct adreno_ringbuffer *cur_rb,
501 struct adreno_ringbuffer *new_rb,
502 unsigned int cur_rptr, unsigned int new_rptr),
503 TP_ARGS(cur_rb, new_rb, cur_rptr, new_rptr)
504);
505
506TRACE_EVENT(adreno_hw_preempt_comp_to_clear,
507 TP_PROTO(struct adreno_ringbuffer *cur_rb,
508 struct adreno_ringbuffer *new_rb,
509 unsigned int cur_rptr, unsigned int new_rptr),
510 TP_ARGS(cur_rb, new_rb, cur_rptr, new_rptr),
511 TP_STRUCT__entry(__field(int, cur_level)
512 __field(int, new_level)
513 __field(unsigned int, cur_rptr)
514 __field(unsigned int, new_rptr)
515 __field(unsigned int, cur_wptr)
516 __field(unsigned int, new_wptr_end)
517 __field(unsigned int, new_wptr)
518 __field(unsigned int, cur_rbbase)
519 __field(unsigned int, new_rbbase)
520 ),
521 TP_fast_assign(__entry->cur_level = cur_rb->id;
522 __entry->new_level = new_rb->id;
523 __entry->cur_rptr = cur_rptr;
524 __entry->new_rptr = new_rptr;
525 __entry->cur_wptr = cur_rb->wptr;
526 __entry->new_wptr_end = new_rb->wptr_preempt_end;
527 __entry->new_wptr = new_rb->wptr;
528 __entry->cur_rbbase = cur_rb->buffer_desc.gpuaddr;
529 __entry->new_rbbase = new_rb->buffer_desc.gpuaddr;
530 ),
531 TP_printk(
532 "cur_rb_lvl=%d rptr=%x wptr=%x rbbase=%x prev_rb_lvl=%d rptr=%x wptr_preempt_end=%x wptr=%x rbbase=%x",
533 __entry->cur_level, __entry->cur_rptr,
534 __entry->cur_wptr, __entry->cur_rbbase,
535 __entry->new_level, __entry->new_rptr,
536 __entry->new_wptr_end, __entry->new_wptr, __entry->new_rbbase
537 )
538);
539
540TRACE_EVENT(adreno_hw_preempt_token_submit,
541 TP_PROTO(struct adreno_ringbuffer *cur_rb,
542 struct adreno_ringbuffer *new_rb,
543 unsigned int cur_rptr, unsigned int new_rptr),
544 TP_ARGS(cur_rb, new_rb, cur_rptr, new_rptr),
545 TP_STRUCT__entry(__field(int, cur_level)
546 __field(int, new_level)
547 __field(unsigned int, cur_rptr)
548 __field(unsigned int, new_rptr)
549 __field(unsigned int, cur_wptr)
550 __field(unsigned int, cur_wptr_end)
551 __field(unsigned int, new_wptr)
552 __field(unsigned int, cur_rbbase)
553 __field(unsigned int, new_rbbase)
554 ),
555 TP_fast_assign(__entry->cur_level = cur_rb->id;
556 __entry->new_level = new_rb->id;
557 __entry->cur_rptr = cur_rptr;
558 __entry->new_rptr = new_rptr;
559 __entry->cur_wptr = cur_rb->wptr;
560 __entry->cur_wptr_end = cur_rb->wptr_preempt_end;
561 __entry->new_wptr = new_rb->wptr;
562 __entry->cur_rbbase = cur_rb->buffer_desc.gpuaddr;
563 __entry->new_rbbase = new_rb->buffer_desc.gpuaddr;
564 ),
565 TP_printk(
566 "cur_rb_lvl=%d rptr=%x wptr_preempt_end=%x wptr=%x rbbase=%x new_rb_lvl=%d rptr=%x wptr=%x rbbase=%x",
567 __entry->cur_level, __entry->cur_rptr,
568 __entry->cur_wptr_end, __entry->cur_wptr,
569 __entry->cur_rbbase,
570 __entry->new_level, __entry->new_rptr,
571 __entry->new_wptr, __entry->new_rbbase
572 )
573);
574
575TRACE_EVENT(adreno_preempt_trigger,
576 TP_PROTO(struct adreno_ringbuffer *cur, struct adreno_ringbuffer *next),
577 TP_ARGS(cur, next),
578 TP_STRUCT__entry(
579 __field(struct adreno_ringbuffer *, cur)
580 __field(struct adreno_ringbuffer *, next)
581 ),
582 TP_fast_assign(
583 __entry->cur = cur;
584 __entry->next = next;
585 ),
586 TP_printk("trigger from id=%d to id=%d",
587 __entry->cur->id, __entry->next->id
588 )
589);
590
591TRACE_EVENT(adreno_preempt_done,
592 TP_PROTO(struct adreno_ringbuffer *cur, struct adreno_ringbuffer *next),
593 TP_ARGS(cur, next),
594 TP_STRUCT__entry(
595 __field(struct adreno_ringbuffer *, cur)
596 __field(struct adreno_ringbuffer *, next)
597 ),
598 TP_fast_assign(
599 __entry->cur = cur;
600 __entry->next = next;
601 ),
602 TP_printk("done switch to id=%d from id=%d",
603 __entry->next->id, __entry->cur->id
604 )
605);
606#endif /* _ADRENO_TRACE_H */
607
608/* This part must be outside protection */
609#include <trace/define_trace.h>