blob: 34ef49fd0377f57b22ae564c342526d497d00b08 [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>
9
10#undef TRACE_SYSTEM
11#define TRACE_SYSTEM i915
12#define TRACE_SYSTEM_STRING __stringify(TRACE_SYSTEM)
13#define TRACE_INCLUDE_FILE i915_trace
14
15/* object tracking */
16
17TRACE_EVENT(i915_gem_object_create,
18
19 TP_PROTO(struct drm_gem_object *obj),
20
21 TP_ARGS(obj),
22
23 TP_STRUCT__entry(
24 __field(struct drm_gem_object *, obj)
25 __field(u32, size)
26 ),
27
28 TP_fast_assign(
29 __entry->obj = obj;
30 __entry->size = obj->size;
31 ),
32
33 TP_printk("obj=%p, size=%u", __entry->obj, __entry->size)
34);
35
36TRACE_EVENT(i915_gem_object_bind,
37
Daniel Vetterec57d262010-09-30 23:42:15 +020038 TP_PROTO(struct drm_gem_object *obj, u32 gtt_offset, bool mappable),
Chris Wilson1c5d22f2009-08-25 11:15:50 +010039
Daniel Vetterec57d262010-09-30 23:42:15 +020040 TP_ARGS(obj, gtt_offset, mappable),
Chris Wilson1c5d22f2009-08-25 11:15:50 +010041
42 TP_STRUCT__entry(
43 __field(struct drm_gem_object *, obj)
44 __field(u32, gtt_offset)
Daniel Vetterec57d262010-09-30 23:42:15 +020045 __field(bool, mappable)
Chris Wilson1c5d22f2009-08-25 11:15:50 +010046 ),
47
48 TP_fast_assign(
49 __entry->obj = obj;
50 __entry->gtt_offset = gtt_offset;
Daniel Vetterec57d262010-09-30 23:42:15 +020051 __entry->mappable = mappable;
Chris Wilson1c5d22f2009-08-25 11:15:50 +010052 ),
53
Daniel Vetterec57d262010-09-30 23:42:15 +020054 TP_printk("obj=%p, gtt_offset=%08x%s",
55 __entry->obj, __entry->gtt_offset,
56 __entry->mappable ? ", mappable" : "")
Chris Wilson1c5d22f2009-08-25 11:15:50 +010057);
58
Chris Wilson1c5d22f2009-08-25 11:15:50 +010059TRACE_EVENT(i915_gem_object_change_domain,
60
61 TP_PROTO(struct drm_gem_object *obj, uint32_t old_read_domains, uint32_t old_write_domain),
62
63 TP_ARGS(obj, old_read_domains, old_write_domain),
64
65 TP_STRUCT__entry(
66 __field(struct drm_gem_object *, obj)
67 __field(u32, read_domains)
68 __field(u32, write_domain)
69 ),
70
71 TP_fast_assign(
72 __entry->obj = obj;
73 __entry->read_domains = obj->read_domains | (old_read_domains << 16);
74 __entry->write_domain = obj->write_domain | (old_write_domain << 16);
75 ),
76
77 TP_printk("obj=%p, read=%04x, write=%04x",
78 __entry->obj,
79 __entry->read_domains, __entry->write_domain)
80);
81
82TRACE_EVENT(i915_gem_object_get_fence,
83
84 TP_PROTO(struct drm_gem_object *obj, int fence, int tiling_mode),
85
86 TP_ARGS(obj, fence, tiling_mode),
87
88 TP_STRUCT__entry(
89 __field(struct drm_gem_object *, obj)
90 __field(int, fence)
91 __field(int, tiling_mode)
92 ),
93
94 TP_fast_assign(
95 __entry->obj = obj;
96 __entry->fence = fence;
97 __entry->tiling_mode = tiling_mode;
98 ),
99
100 TP_printk("obj=%p, fence=%d, tiling=%d",
101 __entry->obj, __entry->fence, __entry->tiling_mode)
102);
103
Li Zefan903cf202010-03-11 16:41:45 +0800104DECLARE_EVENT_CLASS(i915_gem_object,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100105
106 TP_PROTO(struct drm_gem_object *obj),
107
108 TP_ARGS(obj),
109
110 TP_STRUCT__entry(
111 __field(struct drm_gem_object *, obj)
112 ),
113
114 TP_fast_assign(
115 __entry->obj = obj;
116 ),
117
118 TP_printk("obj=%p", __entry->obj)
119);
120
Li Zefanf41275e2010-05-24 16:25:44 +0800121DEFINE_EVENT(i915_gem_object, i915_gem_object_clflush,
122
123 TP_PROTO(struct drm_gem_object *obj),
124
125 TP_ARGS(obj)
126);
127
Li Zefan903cf202010-03-11 16:41:45 +0800128DEFINE_EVENT(i915_gem_object, i915_gem_object_unbind,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100129
130 TP_PROTO(struct drm_gem_object *obj),
131
Li Zefan903cf202010-03-11 16:41:45 +0800132 TP_ARGS(obj)
133);
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100134
Li Zefan903cf202010-03-11 16:41:45 +0800135DEFINE_EVENT(i915_gem_object, i915_gem_object_destroy,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100136
Li Zefan903cf202010-03-11 16:41:45 +0800137 TP_PROTO(struct drm_gem_object *obj),
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100138
Li Zefan903cf202010-03-11 16:41:45 +0800139 TP_ARGS(obj)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100140);
141
142/* batch tracing */
143
144TRACE_EVENT(i915_gem_request_submit,
145
146 TP_PROTO(struct drm_device *dev, u32 seqno),
147
148 TP_ARGS(dev, seqno),
149
150 TP_STRUCT__entry(
Chris Wilson4f49be52009-09-24 00:23:33 +0100151 __field(u32, dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100152 __field(u32, seqno)
153 ),
154
155 TP_fast_assign(
Chris Wilson4f49be52009-09-24 00:23:33 +0100156 __entry->dev = dev->primary->index;
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100157 __entry->seqno = seqno;
Chris Wilson9d34e5d2009-09-24 05:26:06 +0100158 i915_trace_irq_get(dev, seqno);
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100159 ),
160
Chris Wilson4f49be52009-09-24 00:23:33 +0100161 TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100162);
163
164TRACE_EVENT(i915_gem_request_flush,
165
166 TP_PROTO(struct drm_device *dev, u32 seqno,
167 u32 flush_domains, u32 invalidate_domains),
168
169 TP_ARGS(dev, seqno, flush_domains, invalidate_domains),
170
171 TP_STRUCT__entry(
Chris Wilson4f49be52009-09-24 00:23:33 +0100172 __field(u32, dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100173 __field(u32, seqno)
174 __field(u32, flush_domains)
175 __field(u32, invalidate_domains)
176 ),
177
178 TP_fast_assign(
Chris Wilson4f49be52009-09-24 00:23:33 +0100179 __entry->dev = dev->primary->index;
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100180 __entry->seqno = seqno;
181 __entry->flush_domains = flush_domains;
182 __entry->invalidate_domains = invalidate_domains;
183 ),
184
Chris Wilson4f49be52009-09-24 00:23:33 +0100185 TP_printk("dev=%u, seqno=%u, flush=%04x, invalidate=%04x",
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100186 __entry->dev, __entry->seqno,
187 __entry->flush_domains, __entry->invalidate_domains)
188);
189
Li Zefan903cf202010-03-11 16:41:45 +0800190DECLARE_EVENT_CLASS(i915_gem_request,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100191
192 TP_PROTO(struct drm_device *dev, u32 seqno),
193
194 TP_ARGS(dev, seqno),
195
196 TP_STRUCT__entry(
Chris Wilson4f49be52009-09-24 00:23:33 +0100197 __field(u32, dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100198 __field(u32, seqno)
199 ),
200
201 TP_fast_assign(
Chris Wilson4f49be52009-09-24 00:23:33 +0100202 __entry->dev = dev->primary->index;
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100203 __entry->seqno = seqno;
204 ),
205
Chris Wilson4f49be52009-09-24 00:23:33 +0100206 TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100207);
208
Li Zefan903cf202010-03-11 16:41:45 +0800209DEFINE_EVENT(i915_gem_request, i915_gem_request_complete,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100210
211 TP_PROTO(struct drm_device *dev, u32 seqno),
212
Li Zefan903cf202010-03-11 16:41:45 +0800213 TP_ARGS(dev, seqno)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100214);
215
Li Zefan903cf202010-03-11 16:41:45 +0800216DEFINE_EVENT(i915_gem_request, i915_gem_request_retire,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100217
218 TP_PROTO(struct drm_device *dev, u32 seqno),
219
Li Zefan903cf202010-03-11 16:41:45 +0800220 TP_ARGS(dev, seqno)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100221);
222
Li Zefan903cf202010-03-11 16:41:45 +0800223DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_begin,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100224
225 TP_PROTO(struct drm_device *dev, u32 seqno),
226
Li Zefan903cf202010-03-11 16:41:45 +0800227 TP_ARGS(dev, seqno)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100228);
229
Li Zefan903cf202010-03-11 16:41:45 +0800230DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end,
231
232 TP_PROTO(struct drm_device *dev, u32 seqno),
233
234 TP_ARGS(dev, seqno)
235);
236
237DECLARE_EVENT_CLASS(i915_ring,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100238
239 TP_PROTO(struct drm_device *dev),
240
241 TP_ARGS(dev),
242
243 TP_STRUCT__entry(
Chris Wilson4f49be52009-09-24 00:23:33 +0100244 __field(u32, dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100245 ),
246
247 TP_fast_assign(
Chris Wilson4f49be52009-09-24 00:23:33 +0100248 __entry->dev = dev->primary->index;
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100249 ),
250
Chris Wilson4f49be52009-09-24 00:23:33 +0100251 TP_printk("dev=%u", __entry->dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100252);
253
Li Zefan903cf202010-03-11 16:41:45 +0800254DEFINE_EVENT(i915_ring, i915_ring_wait_begin,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100255
256 TP_PROTO(struct drm_device *dev),
257
Li Zefan903cf202010-03-11 16:41:45 +0800258 TP_ARGS(dev)
259);
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100260
Li Zefan903cf202010-03-11 16:41:45 +0800261DEFINE_EVENT(i915_ring, i915_ring_wait_end,
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100262
Li Zefan903cf202010-03-11 16:41:45 +0800263 TP_PROTO(struct drm_device *dev),
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100264
Li Zefan903cf202010-03-11 16:41:45 +0800265 TP_ARGS(dev)
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100266);
267
Jesse Barnese5510fa2010-07-01 16:48:37 -0700268TRACE_EVENT(i915_flip_request,
269 TP_PROTO(int plane, struct drm_gem_object *obj),
270
271 TP_ARGS(plane, obj),
272
273 TP_STRUCT__entry(
274 __field(int, plane)
275 __field(struct drm_gem_object *, obj)
276 ),
277
278 TP_fast_assign(
279 __entry->plane = plane;
280 __entry->obj = obj;
281 ),
282
283 TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
284);
285
286TRACE_EVENT(i915_flip_complete,
287 TP_PROTO(int plane, struct drm_gem_object *obj),
288
289 TP_ARGS(plane, obj),
290
291 TP_STRUCT__entry(
292 __field(int, plane)
293 __field(struct drm_gem_object *, obj)
294 ),
295
296 TP_fast_assign(
297 __entry->plane = plane;
298 __entry->obj = obj;
299 ),
300
301 TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
302);
303
Yuanhan Liuba4f01a2010-11-08 17:09:41 +0800304TRACE_EVENT(i915_reg_rw,
305 TP_PROTO(int cmd, uint32_t reg, uint64_t val, int len),
306
307 TP_ARGS(cmd, reg, val, len),
308
309 TP_STRUCT__entry(
310 __field(int, cmd)
311 __field(uint32_t, reg)
312 __field(uint64_t, val)
313 __field(int, len)
314 ),
315
316 TP_fast_assign(
317 __entry->cmd = cmd;
318 __entry->reg = reg;
319 __entry->val = (uint64_t)val;
320 __entry->len = len;
321 ),
322
323 TP_printk("cmd=%c, reg=0x%x, val=0x%llx, len=%d",
324 __entry->cmd, __entry->reg, __entry->val, __entry->len)
325);
326
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100327#endif /* _I915_TRACE_H_ */
328
329/* This part must be outside protection */
330#undef TRACE_INCLUDE_PATH
Peter Cliftona7c54272010-05-03 13:24:41 +0100331#define TRACE_INCLUDE_PATH .
Chris Wilson1c5d22f2009-08-25 11:15:50 +0100332#include <trace/define_trace.h>