blob: 1df7262ae0775dceeb12d0466712fea7330b4632 [file] [log] [blame]
Chris Wilson1c5d22f2009-08-25 11:15:50 +01001#if !defined(_I915_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
2#define _I915_TRACE_H_
3
4#include <linux/stringify.h>
5#include <linux/types.h>
6#include <linux/tracepoint.h>
7
8#include <drm/drmP.h>
Chris Wilson05394f32010-11-08 19:18:58 +00009#include "i915_drv.h"
Chris Wilson1c5d22f2009-08-25 11:15:50 +010010
11#undef TRACE_SYSTEM
12#define TRACE_SYSTEM i915
13#define TRACE_SYSTEM_STRING __stringify(TRACE_SYSTEM)
14#define TRACE_INCLUDE_FILE i915_trace
15
16/* object tracking */
17
18TRACE_EVENT(i915_gem_object_create,
19
Chris Wilson05394f32010-11-08 19:18:58 +000020 TP_PROTO(struct drm_i915_gem_object *obj),
Chris Wilson1c5d22f2009-08-25 11:15:50 +010021
22 TP_ARGS(obj),
23
24 TP_STRUCT__entry(
Chris Wilson05394f32010-11-08 19:18:58 +000025 __field(struct drm_i915_gem_object *, obj)
Chris Wilson1c5d22f2009-08-25 11:15:50 +010026 __field(u32, size)
27 ),
28
29 TP_fast_assign(
30 __entry->obj = obj;
Chris Wilson05394f32010-11-08 19:18:58 +000031 __entry->size = obj->base.size;
Chris Wilson1c5d22f2009-08-25 11:15:50 +010032 ),
33
34 TP_printk("obj=%p, size=%u", __entry->obj, __entry->size)
35);
36
37TRACE_EVENT(i915_gem_object_bind,
38
Chris Wilson05394f32010-11-08 19:18:58 +000039 TP_PROTO(struct drm_i915_gem_object *obj, u32 gtt_offset, bool mappable),
Chris Wilson1c5d22f2009-08-25 11:15:50 +010040
Daniel Vetterec57d262010-09-30 23:42:15 +020041 TP_ARGS(obj, gtt_offset, mappable),
Chris Wilson1c5d22f2009-08-25 11:15:50 +010042
43 TP_STRUCT__entry(
Chris Wilson05394f32010-11-08 19:18:58 +000044 __field(struct drm_i915_gem_object *, obj)
Chris Wilson1c5d22f2009-08-25 11:15:50 +010045 __field(u32, gtt_offset)
Daniel Vetterec57d262010-09-30 23:42:15 +020046 __field(bool, mappable)
Chris Wilson1c5d22f2009-08-25 11:15:50 +010047 ),
48
49 TP_fast_assign(
50 __entry->obj = obj;
51 __entry->gtt_offset = gtt_offset;
Daniel Vetterec57d262010-09-30 23:42:15 +020052 __entry->mappable = mappable;
Chris Wilson1c5d22f2009-08-25 11:15:50 +010053 ),
54
Daniel Vetterec57d262010-09-30 23:42:15 +020055 TP_printk("obj=%p, gtt_offset=%08x%s",
56 __entry->obj, __entry->gtt_offset,
57 __entry->mappable ? ", mappable" : "")
Chris Wilson1c5d22f2009-08-25 11:15:50 +010058);
59
Chris Wilson1c5d22f2009-08-25 11:15:50 +010060TRACE_EVENT(i915_gem_object_change_domain,
61
Chris Wilson05394f32010-11-08 19:18:58 +000062 TP_PROTO(struct drm_i915_gem_object *obj, uint32_t old_read_domains, uint32_t old_write_domain),
Chris Wilson1c5d22f2009-08-25 11:15:50 +010063
64 TP_ARGS(obj, old_read_domains, old_write_domain),
65
66 TP_STRUCT__entry(
Chris Wilson05394f32010-11-08 19:18:58 +000067 __field(struct drm_i915_gem_object *, obj)
Chris Wilson1c5d22f2009-08-25 11:15:50 +010068 __field(u32, read_domains)
69 __field(u32, write_domain)
70 ),
71
72 TP_fast_assign(
73 __entry->obj = obj;
Chris Wilson05394f32010-11-08 19:18:58 +000074 __entry->read_domains = obj->base.read_domains | (old_read_domains << 16);
75 __entry->write_domain = obj->base.write_domain | (old_write_domain << 16);
Chris Wilson1c5d22f2009-08-25 11:15:50 +010076 ),
77
78 TP_printk("obj=%p, read=%04x, write=%04x",
79 __entry->obj,
80 __entry->read_domains, __entry->write_domain)
81);
82
83TRACE_EVENT(i915_gem_object_get_fence,
84
Chris Wilson05394f32010-11-08 19:18:58 +000085 TP_PROTO(struct drm_i915_gem_object *obj, int fence, int tiling_mode),
Chris Wilson1c5d22f2009-08-25 11:15:50 +010086
87 TP_ARGS(obj, fence, tiling_mode),
88
89 TP_STRUCT__entry(
Chris Wilson05394f32010-11-08 19:18:58 +000090 __field(struct drm_i915_gem_object *, obj)
Chris Wilson1c5d22f2009-08-25 11:15:50 +010091 __field(int, fence)
92 __field(int, tiling_mode)
93 ),
94
95 TP_fast_assign(
96 __entry->obj = obj;
97 __entry->fence = fence;
98 __entry->tiling_mode = tiling_mode;
99 ),
100
101 TP_printk("obj=%p, fence=%d, tiling=%d",
102 __entry->obj, __entry->fence, __entry->tiling_mode)
103);
104
Li Zefan903cf202010-03-11 16:41:45 +0800105DECLARE_EVENT_CLASS(i915_gem_object,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100106
Chris Wilson05394f32010-11-08 19:18:58 +0000107 TP_PROTO(struct drm_i915_gem_object *obj),
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100108
109 TP_ARGS(obj),
110
111 TP_STRUCT__entry(
Chris Wilson05394f32010-11-08 19:18:58 +0000112 __field(struct drm_i915_gem_object *, obj)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100113 ),
114
115 TP_fast_assign(
116 __entry->obj = obj;
117 ),
118
119 TP_printk("obj=%p", __entry->obj)
120);
121
Li Zefanf41275e2010-05-24 16:25:44 +0800122DEFINE_EVENT(i915_gem_object, i915_gem_object_clflush,
123
Chris Wilson05394f32010-11-08 19:18:58 +0000124 TP_PROTO(struct drm_i915_gem_object *obj),
Li Zefanf41275e2010-05-24 16:25:44 +0800125
126 TP_ARGS(obj)
127);
128
Li Zefan903cf202010-03-11 16:41:45 +0800129DEFINE_EVENT(i915_gem_object, i915_gem_object_unbind,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100130
Chris Wilson05394f32010-11-08 19:18:58 +0000131 TP_PROTO(struct drm_i915_gem_object *obj),
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100132
Li Zefan903cf202010-03-11 16:41:45 +0800133 TP_ARGS(obj)
134);
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100135
Li Zefan903cf202010-03-11 16:41:45 +0800136DEFINE_EVENT(i915_gem_object, i915_gem_object_destroy,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100137
Chris Wilson05394f32010-11-08 19:18:58 +0000138 TP_PROTO(struct drm_i915_gem_object *obj),
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100139
Li Zefan903cf202010-03-11 16:41:45 +0800140 TP_ARGS(obj)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100141);
142
143/* batch tracing */
144
145TRACE_EVENT(i915_gem_request_submit,
146
147 TP_PROTO(struct drm_device *dev, u32 seqno),
148
149 TP_ARGS(dev, seqno),
150
151 TP_STRUCT__entry(
Chris Wilson4f49be52009-09-24 00:23:33 +0100152 __field(u32, dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100153 __field(u32, seqno)
154 ),
155
156 TP_fast_assign(
Chris Wilson4f49be52009-09-24 00:23:33 +0100157 __entry->dev = dev->primary->index;
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100158 __entry->seqno = seqno;
Chris Wilson9d34e5d2009-09-24 05:26:06 +0100159 i915_trace_irq_get(dev, seqno);
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100160 ),
161
Chris Wilson4f49be52009-09-24 00:23:33 +0100162 TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100163);
164
165TRACE_EVENT(i915_gem_request_flush,
166
167 TP_PROTO(struct drm_device *dev, u32 seqno,
168 u32 flush_domains, u32 invalidate_domains),
169
170 TP_ARGS(dev, seqno, flush_domains, invalidate_domains),
171
172 TP_STRUCT__entry(
Chris Wilson4f49be52009-09-24 00:23:33 +0100173 __field(u32, dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100174 __field(u32, seqno)
175 __field(u32, flush_domains)
176 __field(u32, invalidate_domains)
177 ),
178
179 TP_fast_assign(
Chris Wilson4f49be52009-09-24 00:23:33 +0100180 __entry->dev = dev->primary->index;
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100181 __entry->seqno = seqno;
182 __entry->flush_domains = flush_domains;
183 __entry->invalidate_domains = invalidate_domains;
184 ),
185
Chris Wilson4f49be52009-09-24 00:23:33 +0100186 TP_printk("dev=%u, seqno=%u, flush=%04x, invalidate=%04x",
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100187 __entry->dev, __entry->seqno,
188 __entry->flush_domains, __entry->invalidate_domains)
189);
190
Li Zefan903cf202010-03-11 16:41:45 +0800191DECLARE_EVENT_CLASS(i915_gem_request,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100192
193 TP_PROTO(struct drm_device *dev, u32 seqno),
194
195 TP_ARGS(dev, seqno),
196
197 TP_STRUCT__entry(
Chris Wilson4f49be52009-09-24 00:23:33 +0100198 __field(u32, dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100199 __field(u32, seqno)
200 ),
201
202 TP_fast_assign(
Chris Wilson4f49be52009-09-24 00:23:33 +0100203 __entry->dev = dev->primary->index;
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100204 __entry->seqno = seqno;
205 ),
206
Chris Wilson4f49be52009-09-24 00:23:33 +0100207 TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100208);
209
Li Zefan903cf202010-03-11 16:41:45 +0800210DEFINE_EVENT(i915_gem_request, i915_gem_request_complete,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100211
212 TP_PROTO(struct drm_device *dev, u32 seqno),
213
Li Zefan903cf202010-03-11 16:41:45 +0800214 TP_ARGS(dev, seqno)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100215);
216
Li Zefan903cf202010-03-11 16:41:45 +0800217DEFINE_EVENT(i915_gem_request, i915_gem_request_retire,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100218
219 TP_PROTO(struct drm_device *dev, u32 seqno),
220
Li Zefan903cf202010-03-11 16:41:45 +0800221 TP_ARGS(dev, seqno)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100222);
223
Li Zefan903cf202010-03-11 16:41:45 +0800224DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_begin,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100225
226 TP_PROTO(struct drm_device *dev, u32 seqno),
227
Li Zefan903cf202010-03-11 16:41:45 +0800228 TP_ARGS(dev, seqno)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100229);
230
Li Zefan903cf202010-03-11 16:41:45 +0800231DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end,
232
233 TP_PROTO(struct drm_device *dev, u32 seqno),
234
235 TP_ARGS(dev, seqno)
236);
237
238DECLARE_EVENT_CLASS(i915_ring,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100239
240 TP_PROTO(struct drm_device *dev),
241
242 TP_ARGS(dev),
243
244 TP_STRUCT__entry(
Chris Wilson4f49be52009-09-24 00:23:33 +0100245 __field(u32, dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100246 ),
247
248 TP_fast_assign(
Chris Wilson4f49be52009-09-24 00:23:33 +0100249 __entry->dev = dev->primary->index;
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100250 ),
251
Chris Wilson4f49be52009-09-24 00:23:33 +0100252 TP_printk("dev=%u", __entry->dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100253);
254
Li Zefan903cf202010-03-11 16:41:45 +0800255DEFINE_EVENT(i915_ring, i915_ring_wait_begin,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100256
257 TP_PROTO(struct drm_device *dev),
258
Li Zefan903cf202010-03-11 16:41:45 +0800259 TP_ARGS(dev)
260);
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100261
Li Zefan903cf202010-03-11 16:41:45 +0800262DEFINE_EVENT(i915_ring, i915_ring_wait_end,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100263
Li Zefan903cf202010-03-11 16:41:45 +0800264 TP_PROTO(struct drm_device *dev),
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100265
Li Zefan903cf202010-03-11 16:41:45 +0800266 TP_ARGS(dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100267);
268
Jesse Barnese5510fa2010-07-01 16:48:37 -0700269TRACE_EVENT(i915_flip_request,
Chris Wilson05394f32010-11-08 19:18:58 +0000270 TP_PROTO(int plane, struct drm_i915_gem_object *obj),
Jesse Barnese5510fa2010-07-01 16:48:37 -0700271
272 TP_ARGS(plane, obj),
273
274 TP_STRUCT__entry(
275 __field(int, plane)
Chris Wilson05394f32010-11-08 19:18:58 +0000276 __field(struct drm_i915_gem_object *, obj)
Jesse Barnese5510fa2010-07-01 16:48:37 -0700277 ),
278
279 TP_fast_assign(
280 __entry->plane = plane;
281 __entry->obj = obj;
282 ),
283
284 TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
285);
286
287TRACE_EVENT(i915_flip_complete,
Chris Wilson05394f32010-11-08 19:18:58 +0000288 TP_PROTO(int plane, struct drm_i915_gem_object *obj),
Jesse Barnese5510fa2010-07-01 16:48:37 -0700289
290 TP_ARGS(plane, obj),
291
292 TP_STRUCT__entry(
293 __field(int, plane)
Chris Wilson05394f32010-11-08 19:18:58 +0000294 __field(struct drm_i915_gem_object *, obj)
Jesse Barnese5510fa2010-07-01 16:48:37 -0700295 ),
296
297 TP_fast_assign(
298 __entry->plane = plane;
299 __entry->obj = obj;
300 ),
301
302 TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
303);
304
Yuanhan Liuba4f01a2010-11-08 17:09:41 +0800305TRACE_EVENT(i915_reg_rw,
306 TP_PROTO(int cmd, uint32_t reg, uint64_t val, int len),
307
308 TP_ARGS(cmd, reg, val, len),
309
310 TP_STRUCT__entry(
311 __field(int, cmd)
312 __field(uint32_t, reg)
313 __field(uint64_t, val)
314 __field(int, len)
315 ),
316
317 TP_fast_assign(
318 __entry->cmd = cmd;
319 __entry->reg = reg;
320 __entry->val = (uint64_t)val;
321 __entry->len = len;
322 ),
323
324 TP_printk("cmd=%c, reg=0x%x, val=0x%llx, len=%d",
325 __entry->cmd, __entry->reg, __entry->val, __entry->len)
326);
327
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100328#endif /* _I915_TRACE_H_ */
329
330/* This part must be outside protection */
331#undef TRACE_INCLUDE_PATH
Peter Cliftona7c54272010-05-03 13:24:41 +0100332#define TRACE_INCLUDE_PATH .
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100333#include <trace/define_trace.h>