Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6
[pandora-kernel.git] / drivers / gpu / drm / i915 / i915_trace.h
1 #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 #include "i915_drv.h"
10
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
18 TRACE_EVENT(i915_gem_object_create,
19
20             TP_PROTO(struct drm_i915_gem_object *obj),
21
22             TP_ARGS(obj),
23
24             TP_STRUCT__entry(
25                              __field(struct drm_i915_gem_object *, obj)
26                              __field(u32, size)
27                              ),
28
29             TP_fast_assign(
30                            __entry->obj = obj;
31                            __entry->size = obj->base.size;
32                            ),
33
34             TP_printk("obj=%p, size=%u", __entry->obj, __entry->size)
35 );
36
37 TRACE_EVENT(i915_gem_object_bind,
38
39             TP_PROTO(struct drm_i915_gem_object *obj, u32 gtt_offset, bool mappable),
40
41             TP_ARGS(obj, gtt_offset, mappable),
42
43             TP_STRUCT__entry(
44                              __field(struct drm_i915_gem_object *, obj)
45                              __field(u32, gtt_offset)
46                              __field(bool, mappable)
47                              ),
48
49             TP_fast_assign(
50                            __entry->obj = obj;
51                            __entry->gtt_offset = gtt_offset;
52                            __entry->mappable = mappable;
53                            ),
54
55             TP_printk("obj=%p, gtt_offset=%08x%s",
56                       __entry->obj, __entry->gtt_offset,
57                       __entry->mappable ? ", mappable" : "")
58 );
59
60 TRACE_EVENT(i915_gem_object_change_domain,
61
62             TP_PROTO(struct drm_i915_gem_object *obj, uint32_t old_read_domains, uint32_t old_write_domain),
63
64             TP_ARGS(obj, old_read_domains, old_write_domain),
65
66             TP_STRUCT__entry(
67                              __field(struct drm_i915_gem_object *, obj)
68                              __field(u32, read_domains)
69                              __field(u32, write_domain)
70                              ),
71
72             TP_fast_assign(
73                            __entry->obj = obj;
74                            __entry->read_domains = obj->base.read_domains | (old_read_domains << 16);
75                            __entry->write_domain = obj->base.write_domain | (old_write_domain << 16);
76                            ),
77
78             TP_printk("obj=%p, read=%04x, write=%04x",
79                       __entry->obj,
80                       __entry->read_domains, __entry->write_domain)
81 );
82
83 DECLARE_EVENT_CLASS(i915_gem_object,
84
85             TP_PROTO(struct drm_i915_gem_object *obj),
86
87             TP_ARGS(obj),
88
89             TP_STRUCT__entry(
90                              __field(struct drm_i915_gem_object *, obj)
91                              ),
92
93             TP_fast_assign(
94                            __entry->obj = obj;
95                            ),
96
97             TP_printk("obj=%p", __entry->obj)
98 );
99
100 DEFINE_EVENT(i915_gem_object, i915_gem_object_clflush,
101
102             TP_PROTO(struct drm_i915_gem_object *obj),
103
104             TP_ARGS(obj)
105 );
106
107 DEFINE_EVENT(i915_gem_object, i915_gem_object_unbind,
108
109             TP_PROTO(struct drm_i915_gem_object *obj),
110
111             TP_ARGS(obj)
112 );
113
114 DEFINE_EVENT(i915_gem_object, i915_gem_object_destroy,
115
116             TP_PROTO(struct drm_i915_gem_object *obj),
117
118             TP_ARGS(obj)
119 );
120
121 /* batch tracing */
122
123 TRACE_EVENT(i915_gem_request_submit,
124
125             TP_PROTO(struct drm_device *dev, u32 seqno),
126
127             TP_ARGS(dev, seqno),
128
129             TP_STRUCT__entry(
130                              __field(u32, dev)
131                              __field(u32, seqno)
132                              ),
133
134             TP_fast_assign(
135                            __entry->dev = dev->primary->index;
136                            __entry->seqno = seqno;
137                            i915_trace_irq_get(dev, seqno);
138                            ),
139
140             TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
141 );
142
143 TRACE_EVENT(i915_gem_request_flush,
144
145             TP_PROTO(struct drm_device *dev, u32 seqno,
146                      u32 flush_domains, u32 invalidate_domains),
147
148             TP_ARGS(dev, seqno, flush_domains, invalidate_domains),
149
150             TP_STRUCT__entry(
151                              __field(u32, dev)
152                              __field(u32, seqno)
153                              __field(u32, flush_domains)
154                              __field(u32, invalidate_domains)
155                              ),
156
157             TP_fast_assign(
158                            __entry->dev = dev->primary->index;
159                            __entry->seqno = seqno;
160                            __entry->flush_domains = flush_domains;
161                            __entry->invalidate_domains = invalidate_domains;
162                            ),
163
164             TP_printk("dev=%u, seqno=%u, flush=%04x, invalidate=%04x",
165                       __entry->dev, __entry->seqno,
166                       __entry->flush_domains, __entry->invalidate_domains)
167 );
168
169 DECLARE_EVENT_CLASS(i915_gem_request,
170
171             TP_PROTO(struct drm_device *dev, u32 seqno),
172
173             TP_ARGS(dev, seqno),
174
175             TP_STRUCT__entry(
176                              __field(u32, dev)
177                              __field(u32, seqno)
178                              ),
179
180             TP_fast_assign(
181                            __entry->dev = dev->primary->index;
182                            __entry->seqno = seqno;
183                            ),
184
185             TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
186 );
187
188 DEFINE_EVENT(i915_gem_request, i915_gem_request_complete,
189
190             TP_PROTO(struct drm_device *dev, u32 seqno),
191
192             TP_ARGS(dev, seqno)
193 );
194
195 DEFINE_EVENT(i915_gem_request, i915_gem_request_retire,
196
197             TP_PROTO(struct drm_device *dev, u32 seqno),
198
199             TP_ARGS(dev, seqno)
200 );
201
202 DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_begin,
203
204             TP_PROTO(struct drm_device *dev, u32 seqno),
205
206             TP_ARGS(dev, seqno)
207 );
208
209 DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end,
210
211             TP_PROTO(struct drm_device *dev, u32 seqno),
212
213             TP_ARGS(dev, seqno)
214 );
215
216 DECLARE_EVENT_CLASS(i915_ring,
217
218             TP_PROTO(struct drm_device *dev),
219
220             TP_ARGS(dev),
221
222             TP_STRUCT__entry(
223                              __field(u32, dev)
224                              ),
225
226             TP_fast_assign(
227                            __entry->dev = dev->primary->index;
228                            ),
229
230             TP_printk("dev=%u", __entry->dev)
231 );
232
233 DEFINE_EVENT(i915_ring, i915_ring_wait_begin,
234
235             TP_PROTO(struct drm_device *dev),
236
237             TP_ARGS(dev)
238 );
239
240 DEFINE_EVENT(i915_ring, i915_ring_wait_end,
241
242             TP_PROTO(struct drm_device *dev),
243
244             TP_ARGS(dev)
245 );
246
247 TRACE_EVENT(i915_flip_request,
248             TP_PROTO(int plane, struct drm_i915_gem_object *obj),
249
250             TP_ARGS(plane, obj),
251
252             TP_STRUCT__entry(
253                     __field(int, plane)
254                     __field(struct drm_i915_gem_object *, obj)
255                     ),
256
257             TP_fast_assign(
258                     __entry->plane = plane;
259                     __entry->obj = obj;
260                     ),
261
262             TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
263 );
264
265 TRACE_EVENT(i915_flip_complete,
266             TP_PROTO(int plane, struct drm_i915_gem_object *obj),
267
268             TP_ARGS(plane, obj),
269
270             TP_STRUCT__entry(
271                     __field(int, plane)
272                     __field(struct drm_i915_gem_object *, obj)
273                     ),
274
275             TP_fast_assign(
276                     __entry->plane = plane;
277                     __entry->obj = obj;
278                     ),
279
280             TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
281 );
282
283 TRACE_EVENT(i915_reg_rw,
284            TP_PROTO(int cmd, uint32_t reg, uint64_t val, int len),
285
286            TP_ARGS(cmd, reg, val, len),
287
288            TP_STRUCT__entry(
289                    __field(int, cmd)
290                    __field(uint32_t, reg)
291                    __field(uint64_t, val)
292                    __field(int, len)
293                    ),
294
295            TP_fast_assign(
296                    __entry->cmd = cmd;
297                    __entry->reg = reg;
298                    __entry->val = (uint64_t)val;
299                    __entry->len = len;
300                    ),
301
302            TP_printk("cmd=%c, reg=0x%x, val=0x%llx, len=%d",
303                      __entry->cmd, __entry->reg, __entry->val, __entry->len)
304 );
305
306 #endif /* _I915_TRACE_H_ */
307
308 /* This part must be outside protection */
309 #undef TRACE_INCLUDE_PATH
310 #define TRACE_INCLUDE_PATH .
311 #include <trace/define_trace.h>