]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - drivers/gpu/drm/i915/i915_trace.h
drm/i915: Fix infinite loop regression from 21dd3734
[mirror_ubuntu-artful-kernel.git] / drivers / gpu / drm / i915 / i915_trace.h
CommitLineData
1c5d22f7
CW
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>
05394f39 9#include "i915_drv.h"
1c5d22f7
CW
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
18TRACE_EVENT(i915_gem_object_create,
19
05394f39 20 TP_PROTO(struct drm_i915_gem_object *obj),
1c5d22f7
CW
21
22 TP_ARGS(obj),
23
24 TP_STRUCT__entry(
05394f39 25 __field(struct drm_i915_gem_object *, obj)
1c5d22f7
CW
26 __field(u32, size)
27 ),
28
29 TP_fast_assign(
30 __entry->obj = obj;
05394f39 31 __entry->size = obj->base.size;
1c5d22f7
CW
32 ),
33
34 TP_printk("obj=%p, size=%u", __entry->obj, __entry->size)
35);
36
37TRACE_EVENT(i915_gem_object_bind,
38
05394f39 39 TP_PROTO(struct drm_i915_gem_object *obj, u32 gtt_offset, bool mappable),
1c5d22f7 40
ec57d260 41 TP_ARGS(obj, gtt_offset, mappable),
1c5d22f7
CW
42
43 TP_STRUCT__entry(
05394f39 44 __field(struct drm_i915_gem_object *, obj)
1c5d22f7 45 __field(u32, gtt_offset)
ec57d260 46 __field(bool, mappable)
1c5d22f7
CW
47 ),
48
49 TP_fast_assign(
50 __entry->obj = obj;
51 __entry->gtt_offset = gtt_offset;
ec57d260 52 __entry->mappable = mappable;
1c5d22f7
CW
53 ),
54
ec57d260
DV
55 TP_printk("obj=%p, gtt_offset=%08x%s",
56 __entry->obj, __entry->gtt_offset,
57 __entry->mappable ? ", mappable" : "")
1c5d22f7
CW
58);
59
1c5d22f7
CW
60TRACE_EVENT(i915_gem_object_change_domain,
61
05394f39 62 TP_PROTO(struct drm_i915_gem_object *obj, uint32_t old_read_domains, uint32_t old_write_domain),
1c5d22f7
CW
63
64 TP_ARGS(obj, old_read_domains, old_write_domain),
65
66 TP_STRUCT__entry(
05394f39 67 __field(struct drm_i915_gem_object *, obj)
1c5d22f7
CW
68 __field(u32, read_domains)
69 __field(u32, write_domain)
70 ),
71
72 TP_fast_assign(
73 __entry->obj = obj;
05394f39
CW
74 __entry->read_domains = obj->base.read_domains | (old_read_domains << 16);
75 __entry->write_domain = obj->base.write_domain | (old_write_domain << 16);
1c5d22f7
CW
76 ),
77
78 TP_printk("obj=%p, read=%04x, write=%04x",
79 __entry->obj,
80 __entry->read_domains, __entry->write_domain)
81);
82
903cf20c 83DECLARE_EVENT_CLASS(i915_gem_object,
1c5d22f7 84
05394f39 85 TP_PROTO(struct drm_i915_gem_object *obj),
1c5d22f7
CW
86
87 TP_ARGS(obj),
88
89 TP_STRUCT__entry(
05394f39 90 __field(struct drm_i915_gem_object *, obj)
1c5d22f7
CW
91 ),
92
93 TP_fast_assign(
94 __entry->obj = obj;
95 ),
96
97 TP_printk("obj=%p", __entry->obj)
98);
99
f41275e8
LZ
100DEFINE_EVENT(i915_gem_object, i915_gem_object_clflush,
101
05394f39 102 TP_PROTO(struct drm_i915_gem_object *obj),
f41275e8
LZ
103
104 TP_ARGS(obj)
105);
106
903cf20c 107DEFINE_EVENT(i915_gem_object, i915_gem_object_unbind,
1c5d22f7 108
05394f39 109 TP_PROTO(struct drm_i915_gem_object *obj),
1c5d22f7 110
903cf20c
LZ
111 TP_ARGS(obj)
112);
1c5d22f7 113
903cf20c 114DEFINE_EVENT(i915_gem_object, i915_gem_object_destroy,
1c5d22f7 115
05394f39 116 TP_PROTO(struct drm_i915_gem_object *obj),
1c5d22f7 117
903cf20c 118 TP_ARGS(obj)
1c5d22f7
CW
119);
120
121/* batch tracing */
122
123TRACE_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(
4f49be54 130 __field(u32, dev)
1c5d22f7
CW
131 __field(u32, seqno)
132 ),
133
134 TP_fast_assign(
4f49be54 135 __entry->dev = dev->primary->index;
1c5d22f7 136 __entry->seqno = seqno;
9d34e5db 137 i915_trace_irq_get(dev, seqno);
1c5d22f7
CW
138 ),
139
4f49be54 140 TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
1c5d22f7
CW
141);
142
143TRACE_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(
4f49be54 151 __field(u32, dev)
1c5d22f7
CW
152 __field(u32, seqno)
153 __field(u32, flush_domains)
154 __field(u32, invalidate_domains)
155 ),
156
157 TP_fast_assign(
4f49be54 158 __entry->dev = dev->primary->index;
1c5d22f7
CW
159 __entry->seqno = seqno;
160 __entry->flush_domains = flush_domains;
161 __entry->invalidate_domains = invalidate_domains;
162 ),
163
4f49be54 164 TP_printk("dev=%u, seqno=%u, flush=%04x, invalidate=%04x",
1c5d22f7
CW
165 __entry->dev, __entry->seqno,
166 __entry->flush_domains, __entry->invalidate_domains)
167);
168
903cf20c 169DECLARE_EVENT_CLASS(i915_gem_request,
1c5d22f7
CW
170
171 TP_PROTO(struct drm_device *dev, u32 seqno),
172
173 TP_ARGS(dev, seqno),
174
175 TP_STRUCT__entry(
4f49be54 176 __field(u32, dev)
1c5d22f7
CW
177 __field(u32, seqno)
178 ),
179
180 TP_fast_assign(
4f49be54 181 __entry->dev = dev->primary->index;
1c5d22f7
CW
182 __entry->seqno = seqno;
183 ),
184
4f49be54 185 TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
1c5d22f7
CW
186);
187
903cf20c 188DEFINE_EVENT(i915_gem_request, i915_gem_request_complete,
1c5d22f7
CW
189
190 TP_PROTO(struct drm_device *dev, u32 seqno),
191
903cf20c 192 TP_ARGS(dev, seqno)
1c5d22f7
CW
193);
194
903cf20c 195DEFINE_EVENT(i915_gem_request, i915_gem_request_retire,
1c5d22f7
CW
196
197 TP_PROTO(struct drm_device *dev, u32 seqno),
198
903cf20c 199 TP_ARGS(dev, seqno)
1c5d22f7
CW
200);
201
903cf20c 202DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_begin,
1c5d22f7
CW
203
204 TP_PROTO(struct drm_device *dev, u32 seqno),
205
903cf20c
LZ
206 TP_ARGS(dev, seqno)
207);
1c5d22f7 208
903cf20c 209DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end,
1c5d22f7 210
903cf20c 211 TP_PROTO(struct drm_device *dev, u32 seqno),
1c5d22f7 212
903cf20c 213 TP_ARGS(dev, seqno)
1c5d22f7
CW
214);
215
903cf20c 216DECLARE_EVENT_CLASS(i915_ring,
1c5d22f7
CW
217
218 TP_PROTO(struct drm_device *dev),
219
220 TP_ARGS(dev),
221
222 TP_STRUCT__entry(
4f49be54 223 __field(u32, dev)
1c5d22f7
CW
224 ),
225
226 TP_fast_assign(
4f49be54 227 __entry->dev = dev->primary->index;
1c5d22f7
CW
228 ),
229
4f49be54 230 TP_printk("dev=%u", __entry->dev)
1c5d22f7
CW
231);
232
903cf20c 233DEFINE_EVENT(i915_ring, i915_ring_wait_begin,
1c5d22f7
CW
234
235 TP_PROTO(struct drm_device *dev),
236
903cf20c
LZ
237 TP_ARGS(dev)
238);
1c5d22f7 239
903cf20c 240DEFINE_EVENT(i915_ring, i915_ring_wait_end,
1c5d22f7 241
903cf20c 242 TP_PROTO(struct drm_device *dev),
1c5d22f7 243
903cf20c 244 TP_ARGS(dev)
1c5d22f7
CW
245);
246
e5510fac 247TRACE_EVENT(i915_flip_request,
05394f39 248 TP_PROTO(int plane, struct drm_i915_gem_object *obj),
e5510fac
JB
249
250 TP_ARGS(plane, obj),
251
252 TP_STRUCT__entry(
253 __field(int, plane)
05394f39 254 __field(struct drm_i915_gem_object *, obj)
e5510fac
JB
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
265TRACE_EVENT(i915_flip_complete,
05394f39 266 TP_PROTO(int plane, struct drm_i915_gem_object *obj),
e5510fac
JB
267
268 TP_ARGS(plane, obj),
269
270 TP_STRUCT__entry(
271 __field(int, plane)
05394f39 272 __field(struct drm_i915_gem_object *, obj)
e5510fac
JB
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
ba4f01a3
YL
283TRACE_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
1c5d22f7
CW
306#endif /* _I915_TRACE_H_ */
307
308/* This part must be outside protection */
309#undef TRACE_INCLUDE_PATH
a7c54278 310#define TRACE_INCLUDE_PATH .
1c5d22f7 311#include <trace/define_trace.h>