xref: /openbmc/linux/drivers/gpu/drm/i915/i915_trace.h (revision bcfcc8ba)
11c5d22f7SChris Wilson #if !defined(_I915_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
21c5d22f7SChris Wilson #define _I915_TRACE_H_
31c5d22f7SChris Wilson 
41c5d22f7SChris Wilson #include <linux/stringify.h>
51c5d22f7SChris Wilson #include <linux/types.h>
61c5d22f7SChris Wilson #include <linux/tracepoint.h>
71c5d22f7SChris Wilson 
81c5d22f7SChris Wilson #include <drm/drmP.h>
905394f39SChris Wilson #include "i915_drv.h"
1025ef284aSVille Syrjälä #include "intel_drv.h"
11db53a302SChris Wilson #include "intel_ringbuffer.h"
121c5d22f7SChris Wilson 
131c5d22f7SChris Wilson #undef TRACE_SYSTEM
141c5d22f7SChris Wilson #define TRACE_SYSTEM i915
151c5d22f7SChris Wilson #define TRACE_SYSTEM_STRING __stringify(TRACE_SYSTEM)
161c5d22f7SChris Wilson #define TRACE_INCLUDE_FILE i915_trace
171c5d22f7SChris Wilson 
1825ef284aSVille Syrjälä /* pipe updates */
1925ef284aSVille Syrjälä 
2025ef284aSVille Syrjälä TRACE_EVENT(i915_pipe_update_start,
2125ef284aSVille Syrjälä 	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max),
2225ef284aSVille Syrjälä 	    TP_ARGS(crtc, min, max),
2325ef284aSVille Syrjälä 
2425ef284aSVille Syrjälä 	    TP_STRUCT__entry(
2525ef284aSVille Syrjälä 			     __field(enum pipe, pipe)
2625ef284aSVille Syrjälä 			     __field(u32, frame)
2725ef284aSVille Syrjälä 			     __field(u32, scanline)
2825ef284aSVille Syrjälä 			     __field(u32, min)
2925ef284aSVille Syrjälä 			     __field(u32, max)
3025ef284aSVille Syrjälä 			     ),
3125ef284aSVille Syrjälä 
3225ef284aSVille Syrjälä 	    TP_fast_assign(
3325ef284aSVille Syrjälä 			   __entry->pipe = crtc->pipe;
3425ef284aSVille Syrjälä 			   __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
3525ef284aSVille Syrjälä 										       crtc->pipe);
3625ef284aSVille Syrjälä 			   __entry->scanline = intel_get_crtc_scanline(crtc);
3725ef284aSVille Syrjälä 			   __entry->min = min;
3825ef284aSVille Syrjälä 			   __entry->max = max;
3925ef284aSVille Syrjälä 			   ),
4025ef284aSVille Syrjälä 
4125ef284aSVille Syrjälä 	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
4225ef284aSVille Syrjälä 		      pipe_name(__entry->pipe), __entry->frame,
4325ef284aSVille Syrjälä 		       __entry->scanline, __entry->min, __entry->max)
4425ef284aSVille Syrjälä );
4525ef284aSVille Syrjälä 
4625ef284aSVille Syrjälä TRACE_EVENT(i915_pipe_update_vblank_evaded,
4725ef284aSVille Syrjälä 	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max, u32 frame),
4825ef284aSVille Syrjälä 	    TP_ARGS(crtc, min, max, frame),
4925ef284aSVille Syrjälä 
5025ef284aSVille Syrjälä 	    TP_STRUCT__entry(
5125ef284aSVille Syrjälä 			     __field(enum pipe, pipe)
5225ef284aSVille Syrjälä 			     __field(u32, frame)
5325ef284aSVille Syrjälä 			     __field(u32, scanline)
5425ef284aSVille Syrjälä 			     __field(u32, min)
5525ef284aSVille Syrjälä 			     __field(u32, max)
5625ef284aSVille Syrjälä 			     ),
5725ef284aSVille Syrjälä 
5825ef284aSVille Syrjälä 	    TP_fast_assign(
5925ef284aSVille Syrjälä 			   __entry->pipe = crtc->pipe;
6025ef284aSVille Syrjälä 			   __entry->frame = frame;
6125ef284aSVille Syrjälä 			   __entry->scanline = intel_get_crtc_scanline(crtc);
6225ef284aSVille Syrjälä 			   __entry->min = min;
6325ef284aSVille Syrjälä 			   __entry->max = max;
6425ef284aSVille Syrjälä 			   ),
6525ef284aSVille Syrjälä 
6625ef284aSVille Syrjälä 	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
6725ef284aSVille Syrjälä 		      pipe_name(__entry->pipe), __entry->frame,
6825ef284aSVille Syrjälä 		       __entry->scanline, __entry->min, __entry->max)
6925ef284aSVille Syrjälä );
7025ef284aSVille Syrjälä 
7125ef284aSVille Syrjälä TRACE_EVENT(i915_pipe_update_end,
7225ef284aSVille Syrjälä 	    TP_PROTO(struct intel_crtc *crtc, u32 frame),
7325ef284aSVille Syrjälä 	    TP_ARGS(crtc, frame),
7425ef284aSVille Syrjälä 
7525ef284aSVille Syrjälä 	    TP_STRUCT__entry(
7625ef284aSVille Syrjälä 			     __field(enum pipe, pipe)
7725ef284aSVille Syrjälä 			     __field(u32, frame)
7825ef284aSVille Syrjälä 			     __field(u32, scanline)
7925ef284aSVille Syrjälä 			     ),
8025ef284aSVille Syrjälä 
8125ef284aSVille Syrjälä 	    TP_fast_assign(
8225ef284aSVille Syrjälä 			   __entry->pipe = crtc->pipe;
8325ef284aSVille Syrjälä 			   __entry->frame = frame;
8425ef284aSVille Syrjälä 			   __entry->scanline = intel_get_crtc_scanline(crtc);
8525ef284aSVille Syrjälä 			   ),
8625ef284aSVille Syrjälä 
8725ef284aSVille Syrjälä 	    TP_printk("pipe %c, frame=%u, scanline=%u",
8825ef284aSVille Syrjälä 		      pipe_name(__entry->pipe), __entry->frame,
8925ef284aSVille Syrjälä 		      __entry->scanline)
9025ef284aSVille Syrjälä );
9125ef284aSVille Syrjälä 
921c5d22f7SChris Wilson /* object tracking */
931c5d22f7SChris Wilson 
941c5d22f7SChris Wilson TRACE_EVENT(i915_gem_object_create,
9505394f39SChris Wilson 	    TP_PROTO(struct drm_i915_gem_object *obj),
961c5d22f7SChris Wilson 	    TP_ARGS(obj),
971c5d22f7SChris Wilson 
981c5d22f7SChris Wilson 	    TP_STRUCT__entry(
9905394f39SChris Wilson 			     __field(struct drm_i915_gem_object *, obj)
1001c5d22f7SChris Wilson 			     __field(u32, size)
1011c5d22f7SChris Wilson 			     ),
1021c5d22f7SChris Wilson 
1031c5d22f7SChris Wilson 	    TP_fast_assign(
1041c5d22f7SChris Wilson 			   __entry->obj = obj;
10505394f39SChris Wilson 			   __entry->size = obj->base.size;
1061c5d22f7SChris Wilson 			   ),
1071c5d22f7SChris Wilson 
1081c5d22f7SChris Wilson 	    TP_printk("obj=%p, size=%u", __entry->obj, __entry->size)
1091c5d22f7SChris Wilson );
1101c5d22f7SChris Wilson 
11107fe0b12SBen Widawsky TRACE_EVENT(i915_vma_bind,
1121ec9e26dSDaniel Vetter 	    TP_PROTO(struct i915_vma *vma, unsigned flags),
1131ec9e26dSDaniel Vetter 	    TP_ARGS(vma, flags),
1141c5d22f7SChris Wilson 
1151c5d22f7SChris Wilson 	    TP_STRUCT__entry(
11605394f39SChris Wilson 			     __field(struct drm_i915_gem_object *, obj)
11707fe0b12SBen Widawsky 			     __field(struct i915_address_space *, vm)
118db53a302SChris Wilson 			     __field(u32, offset)
119db53a302SChris Wilson 			     __field(u32, size)
1201ec9e26dSDaniel Vetter 			     __field(unsigned, flags)
1211c5d22f7SChris Wilson 			     ),
1221c5d22f7SChris Wilson 
1231c5d22f7SChris Wilson 	    TP_fast_assign(
12407fe0b12SBen Widawsky 			   __entry->obj = vma->obj;
12507fe0b12SBen Widawsky 			   __entry->vm = vma->vm;
12607fe0b12SBen Widawsky 			   __entry->offset = vma->node.start;
12707fe0b12SBen Widawsky 			   __entry->size = vma->node.size;
1281ec9e26dSDaniel Vetter 			   __entry->flags = flags;
1291c5d22f7SChris Wilson 			   ),
1301c5d22f7SChris Wilson 
13107fe0b12SBen Widawsky 	    TP_printk("obj=%p, offset=%08x size=%x%s vm=%p",
132db53a302SChris Wilson 		      __entry->obj, __entry->offset, __entry->size,
1331ec9e26dSDaniel Vetter 		      __entry->flags & PIN_MAPPABLE ? ", mappable" : "",
13407fe0b12SBen Widawsky 		      __entry->vm)
1351c5d22f7SChris Wilson );
1361c5d22f7SChris Wilson 
13707fe0b12SBen Widawsky TRACE_EVENT(i915_vma_unbind,
13807fe0b12SBen Widawsky 	    TP_PROTO(struct i915_vma *vma),
13907fe0b12SBen Widawsky 	    TP_ARGS(vma),
140db53a302SChris Wilson 
141db53a302SChris Wilson 	    TP_STRUCT__entry(
142db53a302SChris Wilson 			     __field(struct drm_i915_gem_object *, obj)
14307fe0b12SBen Widawsky 			     __field(struct i915_address_space *, vm)
144db53a302SChris Wilson 			     __field(u32, offset)
145db53a302SChris Wilson 			     __field(u32, size)
146db53a302SChris Wilson 			     ),
147db53a302SChris Wilson 
148db53a302SChris Wilson 	    TP_fast_assign(
14907fe0b12SBen Widawsky 			   __entry->obj = vma->obj;
15007fe0b12SBen Widawsky 			   __entry->vm = vma->vm;
15107fe0b12SBen Widawsky 			   __entry->offset = vma->node.start;
15207fe0b12SBen Widawsky 			   __entry->size = vma->node.size;
153db53a302SChris Wilson 			   ),
154db53a302SChris Wilson 
15507fe0b12SBen Widawsky 	    TP_printk("obj=%p, offset=%08x size=%x vm=%p",
15607fe0b12SBen Widawsky 		      __entry->obj, __entry->offset, __entry->size, __entry->vm)
157db53a302SChris Wilson );
158db53a302SChris Wilson 
1591c5d22f7SChris Wilson TRACE_EVENT(i915_gem_object_change_domain,
160db53a302SChris Wilson 	    TP_PROTO(struct drm_i915_gem_object *obj, u32 old_read, u32 old_write),
161db53a302SChris Wilson 	    TP_ARGS(obj, old_read, old_write),
1621c5d22f7SChris Wilson 
1631c5d22f7SChris Wilson 	    TP_STRUCT__entry(
16405394f39SChris Wilson 			     __field(struct drm_i915_gem_object *, obj)
1651c5d22f7SChris Wilson 			     __field(u32, read_domains)
1661c5d22f7SChris Wilson 			     __field(u32, write_domain)
1671c5d22f7SChris Wilson 			     ),
1681c5d22f7SChris Wilson 
1691c5d22f7SChris Wilson 	    TP_fast_assign(
1701c5d22f7SChris Wilson 			   __entry->obj = obj;
171db53a302SChris Wilson 			   __entry->read_domains = obj->base.read_domains | (old_read << 16);
172db53a302SChris Wilson 			   __entry->write_domain = obj->base.write_domain | (old_write << 16);
1731c5d22f7SChris Wilson 			   ),
1741c5d22f7SChris Wilson 
175db53a302SChris Wilson 	    TP_printk("obj=%p, read=%02x=>%02x, write=%02x=>%02x",
1761c5d22f7SChris Wilson 		      __entry->obj,
177db53a302SChris Wilson 		      __entry->read_domains >> 16,
178db53a302SChris Wilson 		      __entry->read_domains & 0xffff,
179db53a302SChris Wilson 		      __entry->write_domain >> 16,
180db53a302SChris Wilson 		      __entry->write_domain & 0xffff)
181db53a302SChris Wilson );
182db53a302SChris Wilson 
183db53a302SChris Wilson TRACE_EVENT(i915_gem_object_pwrite,
184db53a302SChris Wilson 	    TP_PROTO(struct drm_i915_gem_object *obj, u32 offset, u32 len),
185db53a302SChris Wilson 	    TP_ARGS(obj, offset, len),
186db53a302SChris Wilson 
187db53a302SChris Wilson 	    TP_STRUCT__entry(
188db53a302SChris Wilson 			     __field(struct drm_i915_gem_object *, obj)
189db53a302SChris Wilson 			     __field(u32, offset)
190db53a302SChris Wilson 			     __field(u32, len)
191db53a302SChris Wilson 			     ),
192db53a302SChris Wilson 
193db53a302SChris Wilson 	    TP_fast_assign(
194db53a302SChris Wilson 			   __entry->obj = obj;
195db53a302SChris Wilson 			   __entry->offset = offset;
196db53a302SChris Wilson 			   __entry->len = len;
197db53a302SChris Wilson 			   ),
198db53a302SChris Wilson 
199db53a302SChris Wilson 	    TP_printk("obj=%p, offset=%u, len=%u",
200db53a302SChris Wilson 		      __entry->obj, __entry->offset, __entry->len)
201db53a302SChris Wilson );
202db53a302SChris Wilson 
203db53a302SChris Wilson TRACE_EVENT(i915_gem_object_pread,
204db53a302SChris Wilson 	    TP_PROTO(struct drm_i915_gem_object *obj, u32 offset, u32 len),
205db53a302SChris Wilson 	    TP_ARGS(obj, offset, len),
206db53a302SChris Wilson 
207db53a302SChris Wilson 	    TP_STRUCT__entry(
208db53a302SChris Wilson 			     __field(struct drm_i915_gem_object *, obj)
209db53a302SChris Wilson 			     __field(u32, offset)
210db53a302SChris Wilson 			     __field(u32, len)
211db53a302SChris Wilson 			     ),
212db53a302SChris Wilson 
213db53a302SChris Wilson 	    TP_fast_assign(
214db53a302SChris Wilson 			   __entry->obj = obj;
215db53a302SChris Wilson 			   __entry->offset = offset;
216db53a302SChris Wilson 			   __entry->len = len;
217db53a302SChris Wilson 			   ),
218db53a302SChris Wilson 
219db53a302SChris Wilson 	    TP_printk("obj=%p, offset=%u, len=%u",
220db53a302SChris Wilson 		      __entry->obj, __entry->offset, __entry->len)
221db53a302SChris Wilson );
222db53a302SChris Wilson 
223db53a302SChris Wilson TRACE_EVENT(i915_gem_object_fault,
224db53a302SChris Wilson 	    TP_PROTO(struct drm_i915_gem_object *obj, u32 index, bool gtt, bool write),
225db53a302SChris Wilson 	    TP_ARGS(obj, index, gtt, write),
226db53a302SChris Wilson 
227db53a302SChris Wilson 	    TP_STRUCT__entry(
228db53a302SChris Wilson 			     __field(struct drm_i915_gem_object *, obj)
229db53a302SChris Wilson 			     __field(u32, index)
230db53a302SChris Wilson 			     __field(bool, gtt)
231db53a302SChris Wilson 			     __field(bool, write)
232db53a302SChris Wilson 			     ),
233db53a302SChris Wilson 
234db53a302SChris Wilson 	    TP_fast_assign(
235db53a302SChris Wilson 			   __entry->obj = obj;
236db53a302SChris Wilson 			   __entry->index = index;
237db53a302SChris Wilson 			   __entry->gtt = gtt;
238db53a302SChris Wilson 			   __entry->write = write;
239db53a302SChris Wilson 			   ),
240db53a302SChris Wilson 
241db53a302SChris Wilson 	    TP_printk("obj=%p, %s index=%u %s",
242db53a302SChris Wilson 		      __entry->obj,
243db53a302SChris Wilson 		      __entry->gtt ? "GTT" : "CPU",
244db53a302SChris Wilson 		      __entry->index,
245db53a302SChris Wilson 		      __entry->write ? ", writable" : "")
2461c5d22f7SChris Wilson );
2471c5d22f7SChris Wilson 
248903cf20cSLi Zefan DECLARE_EVENT_CLASS(i915_gem_object,
24905394f39SChris Wilson 	    TP_PROTO(struct drm_i915_gem_object *obj),
2501c5d22f7SChris Wilson 	    TP_ARGS(obj),
2511c5d22f7SChris Wilson 
2521c5d22f7SChris Wilson 	    TP_STRUCT__entry(
25305394f39SChris Wilson 			     __field(struct drm_i915_gem_object *, obj)
2541c5d22f7SChris Wilson 			     ),
2551c5d22f7SChris Wilson 
2561c5d22f7SChris Wilson 	    TP_fast_assign(
2571c5d22f7SChris Wilson 			   __entry->obj = obj;
2581c5d22f7SChris Wilson 			   ),
2591c5d22f7SChris Wilson 
2601c5d22f7SChris Wilson 	    TP_printk("obj=%p", __entry->obj)
2611c5d22f7SChris Wilson );
2621c5d22f7SChris Wilson 
263f41275e8SLi Zefan DEFINE_EVENT(i915_gem_object, i915_gem_object_clflush,
26405394f39SChris Wilson 	     TP_PROTO(struct drm_i915_gem_object *obj),
265903cf20cSLi Zefan 	     TP_ARGS(obj)
266903cf20cSLi Zefan );
2671c5d22f7SChris Wilson 
268903cf20cSLi Zefan DEFINE_EVENT(i915_gem_object, i915_gem_object_destroy,
26905394f39SChris Wilson 	    TP_PROTO(struct drm_i915_gem_object *obj),
270903cf20cSLi Zefan 	    TP_ARGS(obj)
2711c5d22f7SChris Wilson );
2721c5d22f7SChris Wilson 
273db53a302SChris Wilson TRACE_EVENT(i915_gem_evict,
2741ec9e26dSDaniel Vetter 	    TP_PROTO(struct drm_device *dev, u32 size, u32 align, unsigned flags),
2751ec9e26dSDaniel Vetter 	    TP_ARGS(dev, size, align, flags),
2761c5d22f7SChris Wilson 
2771c5d22f7SChris Wilson 	    TP_STRUCT__entry(
2784f49be54SChris Wilson 			     __field(u32, dev)
279db53a302SChris Wilson 			     __field(u32, size)
280db53a302SChris Wilson 			     __field(u32, align)
2811ec9e26dSDaniel Vetter 			     __field(unsigned, flags)
2821c5d22f7SChris Wilson 			    ),
2831c5d22f7SChris Wilson 
2841c5d22f7SChris Wilson 	    TP_fast_assign(
2854f49be54SChris Wilson 			   __entry->dev = dev->primary->index;
286db53a302SChris Wilson 			   __entry->size = size;
287db53a302SChris Wilson 			   __entry->align = align;
2881ec9e26dSDaniel Vetter 			   __entry->flags = flags;
2891c5d22f7SChris Wilson 			  ),
2901c5d22f7SChris Wilson 
291db53a302SChris Wilson 	    TP_printk("dev=%d, size=%d, align=%d %s",
292db53a302SChris Wilson 		      __entry->dev, __entry->size, __entry->align,
2931ec9e26dSDaniel Vetter 		      __entry->flags & PIN_MAPPABLE ? ", mappable" : "")
2941c5d22f7SChris Wilson );
2951c5d22f7SChris Wilson 
296db53a302SChris Wilson TRACE_EVENT(i915_gem_evict_everything,
2976c085a72SChris Wilson 	    TP_PROTO(struct drm_device *dev),
2986c085a72SChris Wilson 	    TP_ARGS(dev),
2991c5d22f7SChris Wilson 
3001c5d22f7SChris Wilson 	    TP_STRUCT__entry(
3014f49be54SChris Wilson 			     __field(u32, dev)
3021c5d22f7SChris Wilson 			    ),
3031c5d22f7SChris Wilson 
3041c5d22f7SChris Wilson 	    TP_fast_assign(
3054f49be54SChris Wilson 			   __entry->dev = dev->primary->index;
3061c5d22f7SChris Wilson 			  ),
3071c5d22f7SChris Wilson 
3086c085a72SChris Wilson 	    TP_printk("dev=%d", __entry->dev)
309db53a302SChris Wilson );
310db53a302SChris Wilson 
311bcccff84SBen Widawsky TRACE_EVENT(i915_gem_evict_vm,
312bcccff84SBen Widawsky 	    TP_PROTO(struct i915_address_space *vm),
313bcccff84SBen Widawsky 	    TP_ARGS(vm),
314bcccff84SBen Widawsky 
315bcccff84SBen Widawsky 	    TP_STRUCT__entry(
3169297ebf2SSteven Rostedt 			     __field(u32, dev)
317bcccff84SBen Widawsky 			     __field(struct i915_address_space *, vm)
318bcccff84SBen Widawsky 			    ),
319bcccff84SBen Widawsky 
320bcccff84SBen Widawsky 	    TP_fast_assign(
3219297ebf2SSteven Rostedt 			   __entry->dev = vm->dev->primary->index;
322bcccff84SBen Widawsky 			   __entry->vm = vm;
323bcccff84SBen Widawsky 			  ),
324bcccff84SBen Widawsky 
3259297ebf2SSteven Rostedt 	    TP_printk("dev=%d, vm=%p", __entry->dev, __entry->vm)
326bcccff84SBen Widawsky );
327bcccff84SBen Widawsky 
328b52b89daSChris Wilson TRACE_EVENT(i915_gem_ring_sync_to,
329a4872ba6SOscar Mateo 	    TP_PROTO(struct intel_engine_cs *from,
330a4872ba6SOscar Mateo 		     struct intel_engine_cs *to,
33174328ee5SJohn Harrison 		     struct drm_i915_gem_request *req),
33274328ee5SJohn Harrison 	    TP_ARGS(from, to, req),
333b52b89daSChris Wilson 
334b52b89daSChris Wilson 	    TP_STRUCT__entry(
335b52b89daSChris Wilson 			     __field(u32, dev)
336b52b89daSChris Wilson 			     __field(u32, sync_from)
337b52b89daSChris Wilson 			     __field(u32, sync_to)
338b52b89daSChris Wilson 			     __field(u32, seqno)
339b52b89daSChris Wilson 			     ),
340b52b89daSChris Wilson 
341b52b89daSChris Wilson 	    TP_fast_assign(
342b52b89daSChris Wilson 			   __entry->dev = from->dev->primary->index;
343b52b89daSChris Wilson 			   __entry->sync_from = from->id;
344b52b89daSChris Wilson 			   __entry->sync_to = to->id;
34574328ee5SJohn Harrison 			   __entry->seqno = i915_gem_request_get_seqno(req);
346b52b89daSChris Wilson 			   ),
347b52b89daSChris Wilson 
348b52b89daSChris Wilson 	    TP_printk("dev=%u, sync-from=%u, sync-to=%u, seqno=%u",
349b52b89daSChris Wilson 		      __entry->dev,
350b52b89daSChris Wilson 		      __entry->sync_from, __entry->sync_to,
351b52b89daSChris Wilson 		      __entry->seqno)
352b52b89daSChris Wilson );
353b52b89daSChris Wilson 
354db53a302SChris Wilson TRACE_EVENT(i915_gem_ring_dispatch,
35574328ee5SJohn Harrison 	    TP_PROTO(struct drm_i915_gem_request *req, u32 flags),
35674328ee5SJohn Harrison 	    TP_ARGS(req, flags),
357db53a302SChris Wilson 
358db53a302SChris Wilson 	    TP_STRUCT__entry(
359db53a302SChris Wilson 			     __field(u32, dev)
360db53a302SChris Wilson 			     __field(u32, ring)
361db53a302SChris Wilson 			     __field(u32, seqno)
362d7d4eeddSChris Wilson 			     __field(u32, flags)
363db53a302SChris Wilson 			     ),
364db53a302SChris Wilson 
365db53a302SChris Wilson 	    TP_fast_assign(
36674328ee5SJohn Harrison 			   struct intel_engine_cs *ring =
36774328ee5SJohn Harrison 						i915_gem_request_get_ring(req);
368db53a302SChris Wilson 			   __entry->dev = ring->dev->primary->index;
369db53a302SChris Wilson 			   __entry->ring = ring->id;
37074328ee5SJohn Harrison 			   __entry->seqno = i915_gem_request_get_seqno(req);
371d7d4eeddSChris Wilson 			   __entry->flags = flags;
372581c26e8SJohn Harrison 			   i915_trace_irq_get(ring, req);
373db53a302SChris Wilson 			   ),
374db53a302SChris Wilson 
375d7d4eeddSChris Wilson 	    TP_printk("dev=%u, ring=%u, seqno=%u, flags=%x",
376d7d4eeddSChris Wilson 		      __entry->dev, __entry->ring, __entry->seqno, __entry->flags)
377db53a302SChris Wilson );
378db53a302SChris Wilson 
379db53a302SChris Wilson TRACE_EVENT(i915_gem_ring_flush,
380a4872ba6SOscar Mateo 	    TP_PROTO(struct intel_engine_cs *ring, u32 invalidate, u32 flush),
381db53a302SChris Wilson 	    TP_ARGS(ring, invalidate, flush),
382db53a302SChris Wilson 
383db53a302SChris Wilson 	    TP_STRUCT__entry(
384db53a302SChris Wilson 			     __field(u32, dev)
385db53a302SChris Wilson 			     __field(u32, ring)
386db53a302SChris Wilson 			     __field(u32, invalidate)
387db53a302SChris Wilson 			     __field(u32, flush)
388db53a302SChris Wilson 			     ),
389db53a302SChris Wilson 
390db53a302SChris Wilson 	    TP_fast_assign(
391db53a302SChris Wilson 			   __entry->dev = ring->dev->primary->index;
392db53a302SChris Wilson 			   __entry->ring = ring->id;
393db53a302SChris Wilson 			   __entry->invalidate = invalidate;
394db53a302SChris Wilson 			   __entry->flush = flush;
395db53a302SChris Wilson 			   ),
396db53a302SChris Wilson 
397db53a302SChris Wilson 	    TP_printk("dev=%u, ring=%x, invalidate=%04x, flush=%04x",
398db53a302SChris Wilson 		      __entry->dev, __entry->ring,
399db53a302SChris Wilson 		      __entry->invalidate, __entry->flush)
4001c5d22f7SChris Wilson );
4011c5d22f7SChris Wilson 
402903cf20cSLi Zefan DECLARE_EVENT_CLASS(i915_gem_request,
40374328ee5SJohn Harrison 	    TP_PROTO(struct drm_i915_gem_request *req),
40474328ee5SJohn Harrison 	    TP_ARGS(req),
4051c5d22f7SChris Wilson 
4061c5d22f7SChris Wilson 	    TP_STRUCT__entry(
4074f49be54SChris Wilson 			     __field(u32, dev)
408db53a302SChris Wilson 			     __field(u32, ring)
409bcfcc8baSJohn Harrison 			     __field(u32, uniq)
4101c5d22f7SChris Wilson 			     __field(u32, seqno)
4111c5d22f7SChris Wilson 			     ),
4121c5d22f7SChris Wilson 
4131c5d22f7SChris Wilson 	    TP_fast_assign(
41474328ee5SJohn Harrison 			   struct intel_engine_cs *ring =
41574328ee5SJohn Harrison 						i915_gem_request_get_ring(req);
416db53a302SChris Wilson 			   __entry->dev = ring->dev->primary->index;
417db53a302SChris Wilson 			   __entry->ring = ring->id;
418bcfcc8baSJohn Harrison 			   __entry->uniq = req ? req->uniq : 0;
41974328ee5SJohn Harrison 			   __entry->seqno = i915_gem_request_get_seqno(req);
4201c5d22f7SChris Wilson 			   ),
4211c5d22f7SChris Wilson 
422bcfcc8baSJohn Harrison 	    TP_printk("dev=%u, ring=%u, uniq=%u, seqno=%u",
423bcfcc8baSJohn Harrison 		      __entry->dev, __entry->ring, __entry->uniq,
424bcfcc8baSJohn Harrison 		      __entry->seqno)
425db53a302SChris Wilson );
426db53a302SChris Wilson 
427db53a302SChris Wilson DEFINE_EVENT(i915_gem_request, i915_gem_request_add,
42874328ee5SJohn Harrison 	    TP_PROTO(struct drm_i915_gem_request *req),
42974328ee5SJohn Harrison 	    TP_ARGS(req)
4301c5d22f7SChris Wilson );
4311c5d22f7SChris Wilson 
432bcfcc8baSJohn Harrison TRACE_EVENT(i915_gem_request_notify,
433a4872ba6SOscar Mateo 	    TP_PROTO(struct intel_engine_cs *ring),
434814e9b57SChris Wilson 	    TP_ARGS(ring),
435814e9b57SChris Wilson 
436814e9b57SChris Wilson 	    TP_STRUCT__entry(
437814e9b57SChris Wilson 			     __field(u32, dev)
438814e9b57SChris Wilson 			     __field(u32, ring)
439814e9b57SChris Wilson 			     __field(u32, seqno)
440814e9b57SChris Wilson 			     ),
441814e9b57SChris Wilson 
442814e9b57SChris Wilson 	    TP_fast_assign(
443814e9b57SChris Wilson 			   __entry->dev = ring->dev->primary->index;
444814e9b57SChris Wilson 			   __entry->ring = ring->id;
445814e9b57SChris Wilson 			   __entry->seqno = ring->get_seqno(ring, false);
446814e9b57SChris Wilson 			   ),
447814e9b57SChris Wilson 
448814e9b57SChris Wilson 	    TP_printk("dev=%u, ring=%u, seqno=%u",
449814e9b57SChris Wilson 		      __entry->dev, __entry->ring, __entry->seqno)
4501c5d22f7SChris Wilson );
4511c5d22f7SChris Wilson 
452903cf20cSLi Zefan DEFINE_EVENT(i915_gem_request, i915_gem_request_retire,
45374328ee5SJohn Harrison 	    TP_PROTO(struct drm_i915_gem_request *req),
45474328ee5SJohn Harrison 	    TP_ARGS(req)
4551c5d22f7SChris Wilson );
4561c5d22f7SChris Wilson 
457bcfcc8baSJohn Harrison DEFINE_EVENT(i915_gem_request, i915_gem_request_complete,
458bcfcc8baSJohn Harrison 	    TP_PROTO(struct drm_i915_gem_request *req),
459bcfcc8baSJohn Harrison 	    TP_ARGS(req)
460bcfcc8baSJohn Harrison );
461bcfcc8baSJohn Harrison 
462f3fd3768SBen Widawsky TRACE_EVENT(i915_gem_request_wait_begin,
46374328ee5SJohn Harrison 	    TP_PROTO(struct drm_i915_gem_request *req),
46474328ee5SJohn Harrison 	    TP_ARGS(req),
465f3fd3768SBen Widawsky 
466f3fd3768SBen Widawsky 	    TP_STRUCT__entry(
467f3fd3768SBen Widawsky 			     __field(u32, dev)
468f3fd3768SBen Widawsky 			     __field(u32, ring)
469bcfcc8baSJohn Harrison 			     __field(u32, uniq)
470f3fd3768SBen Widawsky 			     __field(u32, seqno)
471f3fd3768SBen Widawsky 			     __field(bool, blocking)
472f3fd3768SBen Widawsky 			     ),
473f3fd3768SBen Widawsky 
474f3fd3768SBen Widawsky 	    /* NB: the blocking information is racy since mutex_is_locked
475f3fd3768SBen Widawsky 	     * doesn't check that the current thread holds the lock. The only
476f3fd3768SBen Widawsky 	     * other option would be to pass the boolean information of whether
477f3fd3768SBen Widawsky 	     * or not the class was blocking down through the stack which is
478f3fd3768SBen Widawsky 	     * less desirable.
479f3fd3768SBen Widawsky 	     */
480f3fd3768SBen Widawsky 	    TP_fast_assign(
48174328ee5SJohn Harrison 			   struct intel_engine_cs *ring =
48274328ee5SJohn Harrison 						i915_gem_request_get_ring(req);
483f3fd3768SBen Widawsky 			   __entry->dev = ring->dev->primary->index;
484f3fd3768SBen Widawsky 			   __entry->ring = ring->id;
485bcfcc8baSJohn Harrison 			   __entry->uniq = req ? req->uniq : 0;
48674328ee5SJohn Harrison 			   __entry->seqno = i915_gem_request_get_seqno(req);
48774328ee5SJohn Harrison 			   __entry->blocking =
48874328ee5SJohn Harrison 				     mutex_is_locked(&ring->dev->struct_mutex);
489f3fd3768SBen Widawsky 			   ),
490f3fd3768SBen Widawsky 
491bcfcc8baSJohn Harrison 	    TP_printk("dev=%u, ring=%u, uniq=%u, seqno=%u, blocking=%s",
492bcfcc8baSJohn Harrison 		      __entry->dev, __entry->ring, __entry->uniq,
493bcfcc8baSJohn Harrison 		      __entry->seqno, __entry->blocking ?  "yes (NB)" : "no")
4941c5d22f7SChris Wilson );
4951c5d22f7SChris Wilson 
496903cf20cSLi Zefan DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end,
49774328ee5SJohn Harrison 	    TP_PROTO(struct drm_i915_gem_request *req),
49874328ee5SJohn Harrison 	    TP_ARGS(req)
499903cf20cSLi Zefan );
500903cf20cSLi Zefan 
501903cf20cSLi Zefan DECLARE_EVENT_CLASS(i915_ring,
502a4872ba6SOscar Mateo 	    TP_PROTO(struct intel_engine_cs *ring),
503db53a302SChris Wilson 	    TP_ARGS(ring),
5041c5d22f7SChris Wilson 
5051c5d22f7SChris Wilson 	    TP_STRUCT__entry(
5064f49be54SChris Wilson 			     __field(u32, dev)
507db53a302SChris Wilson 			     __field(u32, ring)
5081c5d22f7SChris Wilson 			     ),
5091c5d22f7SChris Wilson 
5101c5d22f7SChris Wilson 	    TP_fast_assign(
511db53a302SChris Wilson 			   __entry->dev = ring->dev->primary->index;
512db53a302SChris Wilson 			   __entry->ring = ring->id;
5131c5d22f7SChris Wilson 			   ),
5141c5d22f7SChris Wilson 
515db53a302SChris Wilson 	    TP_printk("dev=%u, ring=%u", __entry->dev, __entry->ring)
5161c5d22f7SChris Wilson );
5171c5d22f7SChris Wilson 
518903cf20cSLi Zefan DEFINE_EVENT(i915_ring, i915_ring_wait_begin,
519a4872ba6SOscar Mateo 	    TP_PROTO(struct intel_engine_cs *ring),
520db53a302SChris Wilson 	    TP_ARGS(ring)
521903cf20cSLi Zefan );
5221c5d22f7SChris Wilson 
523903cf20cSLi Zefan DEFINE_EVENT(i915_ring, i915_ring_wait_end,
524a4872ba6SOscar Mateo 	    TP_PROTO(struct intel_engine_cs *ring),
525db53a302SChris Wilson 	    TP_ARGS(ring)
5261c5d22f7SChris Wilson );
5271c5d22f7SChris Wilson 
528e5510facSJesse Barnes TRACE_EVENT(i915_flip_request,
52905394f39SChris Wilson 	    TP_PROTO(int plane, struct drm_i915_gem_object *obj),
530e5510facSJesse Barnes 
531e5510facSJesse Barnes 	    TP_ARGS(plane, obj),
532e5510facSJesse Barnes 
533e5510facSJesse Barnes 	    TP_STRUCT__entry(
534e5510facSJesse Barnes 		    __field(int, plane)
53505394f39SChris Wilson 		    __field(struct drm_i915_gem_object *, obj)
536e5510facSJesse Barnes 		    ),
537e5510facSJesse Barnes 
538e5510facSJesse Barnes 	    TP_fast_assign(
539e5510facSJesse Barnes 		    __entry->plane = plane;
540e5510facSJesse Barnes 		    __entry->obj = obj;
541e5510facSJesse Barnes 		    ),
542e5510facSJesse Barnes 
543e5510facSJesse Barnes 	    TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
544e5510facSJesse Barnes );
545e5510facSJesse Barnes 
546e5510facSJesse Barnes TRACE_EVENT(i915_flip_complete,
54705394f39SChris Wilson 	    TP_PROTO(int plane, struct drm_i915_gem_object *obj),
548e5510facSJesse Barnes 
549e5510facSJesse Barnes 	    TP_ARGS(plane, obj),
550e5510facSJesse Barnes 
551e5510facSJesse Barnes 	    TP_STRUCT__entry(
552e5510facSJesse Barnes 		    __field(int, plane)
55305394f39SChris Wilson 		    __field(struct drm_i915_gem_object *, obj)
554e5510facSJesse Barnes 		    ),
555e5510facSJesse Barnes 
556e5510facSJesse Barnes 	    TP_fast_assign(
557e5510facSJesse Barnes 		    __entry->plane = plane;
558e5510facSJesse Barnes 		    __entry->obj = obj;
559e5510facSJesse Barnes 		    ),
560e5510facSJesse Barnes 
561e5510facSJesse Barnes 	    TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
562e5510facSJesse Barnes );
563e5510facSJesse Barnes 
564ed71f1b4SChris Wilson TRACE_EVENT_CONDITION(i915_reg_rw,
565ed71f1b4SChris Wilson 	TP_PROTO(bool write, u32 reg, u64 val, int len, bool trace),
566ba4f01a3SYuanhan Liu 
567ed71f1b4SChris Wilson 	TP_ARGS(write, reg, val, len, trace),
568ed71f1b4SChris Wilson 
569ed71f1b4SChris Wilson 	TP_CONDITION(trace),
570ba4f01a3SYuanhan Liu 
571ba4f01a3SYuanhan Liu 	TP_STRUCT__entry(
572db53a302SChris Wilson 		__field(u64, val)
573db53a302SChris Wilson 		__field(u32, reg)
574db53a302SChris Wilson 		__field(u16, write)
575db53a302SChris Wilson 		__field(u16, len)
576ba4f01a3SYuanhan Liu 		),
577ba4f01a3SYuanhan Liu 
578ba4f01a3SYuanhan Liu 	TP_fast_assign(
579db53a302SChris Wilson 		__entry->val = (u64)val;
580ba4f01a3SYuanhan Liu 		__entry->reg = reg;
581db53a302SChris Wilson 		__entry->write = write;
582ba4f01a3SYuanhan Liu 		__entry->len = len;
583ba4f01a3SYuanhan Liu 		),
584ba4f01a3SYuanhan Liu 
585db53a302SChris Wilson 	TP_printk("%s reg=0x%x, len=%d, val=(0x%x, 0x%x)",
586db53a302SChris Wilson 		__entry->write ? "write" : "read",
587db53a302SChris Wilson 		__entry->reg, __entry->len,
588db53a302SChris Wilson 		(u32)(__entry->val & 0xffffffff),
589db53a302SChris Wilson 		(u32)(__entry->val >> 32))
590ba4f01a3SYuanhan Liu );
591ba4f01a3SYuanhan Liu 
592be2cde9aSDaniel Vetter TRACE_EVENT(intel_gpu_freq_change,
593be2cde9aSDaniel Vetter 	    TP_PROTO(u32 freq),
594be2cde9aSDaniel Vetter 	    TP_ARGS(freq),
595be2cde9aSDaniel Vetter 
596be2cde9aSDaniel Vetter 	    TP_STRUCT__entry(
597be2cde9aSDaniel Vetter 			     __field(u32, freq)
598be2cde9aSDaniel Vetter 			     ),
599be2cde9aSDaniel Vetter 
600be2cde9aSDaniel Vetter 	    TP_fast_assign(
601be2cde9aSDaniel Vetter 			   __entry->freq = freq;
602be2cde9aSDaniel Vetter 			   ),
603be2cde9aSDaniel Vetter 
604be2cde9aSDaniel Vetter 	    TP_printk("new_freq=%u", __entry->freq)
605be2cde9aSDaniel Vetter );
606be2cde9aSDaniel Vetter 
607198c974dSDaniele Ceraolo Spurio /**
608198c974dSDaniele Ceraolo Spurio  * DOC: i915_ppgtt_create and i915_ppgtt_release tracepoints
609198c974dSDaniele Ceraolo Spurio  *
610198c974dSDaniele Ceraolo Spurio  * With full ppgtt enabled each process using drm will allocate at least one
611198c974dSDaniele Ceraolo Spurio  * translation table. With these traces it is possible to keep track of the
612198c974dSDaniele Ceraolo Spurio  * allocation and of the lifetime of the tables; this can be used during
613198c974dSDaniele Ceraolo Spurio  * testing/debug to verify that we are not leaking ppgtts.
614198c974dSDaniele Ceraolo Spurio  * These traces identify the ppgtt through the vm pointer, which is also printed
615198c974dSDaniele Ceraolo Spurio  * by the i915_vma_bind and i915_vma_unbind tracepoints.
616198c974dSDaniele Ceraolo Spurio  */
617198c974dSDaniele Ceraolo Spurio DECLARE_EVENT_CLASS(i915_ppgtt,
618198c974dSDaniele Ceraolo Spurio 	TP_PROTO(struct i915_address_space *vm),
619198c974dSDaniele Ceraolo Spurio 	TP_ARGS(vm),
620198c974dSDaniele Ceraolo Spurio 
621198c974dSDaniele Ceraolo Spurio 	TP_STRUCT__entry(
622198c974dSDaniele Ceraolo Spurio 			__field(struct i915_address_space *, vm)
623198c974dSDaniele Ceraolo Spurio 			__field(u32, dev)
624198c974dSDaniele Ceraolo Spurio 	),
625198c974dSDaniele Ceraolo Spurio 
626198c974dSDaniele Ceraolo Spurio 	TP_fast_assign(
627198c974dSDaniele Ceraolo Spurio 			__entry->vm = vm;
628198c974dSDaniele Ceraolo Spurio 			__entry->dev = vm->dev->primary->index;
629198c974dSDaniele Ceraolo Spurio 	),
630198c974dSDaniele Ceraolo Spurio 
631198c974dSDaniele Ceraolo Spurio 	TP_printk("dev=%u, vm=%p", __entry->dev, __entry->vm)
632198c974dSDaniele Ceraolo Spurio )
633198c974dSDaniele Ceraolo Spurio 
634198c974dSDaniele Ceraolo Spurio DEFINE_EVENT(i915_ppgtt, i915_ppgtt_create,
635198c974dSDaniele Ceraolo Spurio 	TP_PROTO(struct i915_address_space *vm),
636198c974dSDaniele Ceraolo Spurio 	TP_ARGS(vm)
637198c974dSDaniele Ceraolo Spurio );
638198c974dSDaniele Ceraolo Spurio 
639198c974dSDaniele Ceraolo Spurio DEFINE_EVENT(i915_ppgtt, i915_ppgtt_release,
640198c974dSDaniele Ceraolo Spurio 	TP_PROTO(struct i915_address_space *vm),
641198c974dSDaniele Ceraolo Spurio 	TP_ARGS(vm)
642198c974dSDaniele Ceraolo Spurio );
643198c974dSDaniele Ceraolo Spurio 
644198c974dSDaniele Ceraolo Spurio /**
645198c974dSDaniele Ceraolo Spurio  * DOC: i915_context_create and i915_context_free tracepoints
646198c974dSDaniele Ceraolo Spurio  *
647198c974dSDaniele Ceraolo Spurio  * These tracepoints are used to track creation and deletion of contexts.
648198c974dSDaniele Ceraolo Spurio  * If full ppgtt is enabled, they also print the address of the vm assigned to
649198c974dSDaniele Ceraolo Spurio  * the context.
650198c974dSDaniele Ceraolo Spurio  */
651198c974dSDaniele Ceraolo Spurio DECLARE_EVENT_CLASS(i915_context,
652198c974dSDaniele Ceraolo Spurio 	TP_PROTO(struct intel_context *ctx),
653198c974dSDaniele Ceraolo Spurio 	TP_ARGS(ctx),
654198c974dSDaniele Ceraolo Spurio 
655198c974dSDaniele Ceraolo Spurio 	TP_STRUCT__entry(
656198c974dSDaniele Ceraolo Spurio 			__field(u32, dev)
657198c974dSDaniele Ceraolo Spurio 			__field(struct intel_context *, ctx)
658198c974dSDaniele Ceraolo Spurio 			__field(struct i915_address_space *, vm)
659198c974dSDaniele Ceraolo Spurio 	),
660198c974dSDaniele Ceraolo Spurio 
661198c974dSDaniele Ceraolo Spurio 	TP_fast_assign(
662198c974dSDaniele Ceraolo Spurio 			__entry->ctx = ctx;
663198c974dSDaniele Ceraolo Spurio 			__entry->vm = ctx->ppgtt ? &ctx->ppgtt->base : NULL;
664198c974dSDaniele Ceraolo Spurio 			__entry->dev = ctx->file_priv->dev_priv->dev->primary->index;
665198c974dSDaniele Ceraolo Spurio 	),
666198c974dSDaniele Ceraolo Spurio 
667198c974dSDaniele Ceraolo Spurio 	TP_printk("dev=%u, ctx=%p, ctx_vm=%p",
668198c974dSDaniele Ceraolo Spurio 		  __entry->dev, __entry->ctx, __entry->vm)
669198c974dSDaniele Ceraolo Spurio )
670198c974dSDaniele Ceraolo Spurio 
671198c974dSDaniele Ceraolo Spurio DEFINE_EVENT(i915_context, i915_context_create,
672198c974dSDaniele Ceraolo Spurio 	TP_PROTO(struct intel_context *ctx),
673198c974dSDaniele Ceraolo Spurio 	TP_ARGS(ctx)
674198c974dSDaniele Ceraolo Spurio );
675198c974dSDaniele Ceraolo Spurio 
676198c974dSDaniele Ceraolo Spurio DEFINE_EVENT(i915_context, i915_context_free,
677198c974dSDaniele Ceraolo Spurio 	TP_PROTO(struct intel_context *ctx),
678198c974dSDaniele Ceraolo Spurio 	TP_ARGS(ctx)
679198c974dSDaniele Ceraolo Spurio );
680198c974dSDaniele Ceraolo Spurio 
681198c974dSDaniele Ceraolo Spurio /**
682198c974dSDaniele Ceraolo Spurio  * DOC: switch_mm tracepoint
683198c974dSDaniele Ceraolo Spurio  *
684198c974dSDaniele Ceraolo Spurio  * This tracepoint allows tracking of the mm switch, which is an important point
685198c974dSDaniele Ceraolo Spurio  * in the lifetime of the vm in the legacy submission path. This tracepoint is
686198c974dSDaniele Ceraolo Spurio  * called only if full ppgtt is enabled.
687198c974dSDaniele Ceraolo Spurio  */
688198c974dSDaniele Ceraolo Spurio TRACE_EVENT(switch_mm,
689198c974dSDaniele Ceraolo Spurio 	TP_PROTO(struct intel_engine_cs *ring, struct intel_context *to),
690198c974dSDaniele Ceraolo Spurio 
691198c974dSDaniele Ceraolo Spurio 	TP_ARGS(ring, to),
692198c974dSDaniele Ceraolo Spurio 
693198c974dSDaniele Ceraolo Spurio 	TP_STRUCT__entry(
694198c974dSDaniele Ceraolo Spurio 			__field(u32, ring)
695198c974dSDaniele Ceraolo Spurio 			__field(struct intel_context *, to)
696198c974dSDaniele Ceraolo Spurio 			__field(struct i915_address_space *, vm)
697198c974dSDaniele Ceraolo Spurio 			__field(u32, dev)
698198c974dSDaniele Ceraolo Spurio 	),
699198c974dSDaniele Ceraolo Spurio 
700198c974dSDaniele Ceraolo Spurio 	TP_fast_assign(
701198c974dSDaniele Ceraolo Spurio 			__entry->ring = ring->id;
702198c974dSDaniele Ceraolo Spurio 			__entry->to = to;
703198c974dSDaniele Ceraolo Spurio 			__entry->vm = to->ppgtt? &to->ppgtt->base : NULL;
704198c974dSDaniele Ceraolo Spurio 			__entry->dev = ring->dev->primary->index;
705198c974dSDaniele Ceraolo Spurio 	),
706198c974dSDaniele Ceraolo Spurio 
707198c974dSDaniele Ceraolo Spurio 	TP_printk("dev=%u, ring=%u, ctx=%p, ctx_vm=%p",
708198c974dSDaniele Ceraolo Spurio 		  __entry->dev, __entry->ring, __entry->to, __entry->vm)
709198c974dSDaniele Ceraolo Spurio );
710198c974dSDaniele Ceraolo Spurio 
7111c5d22f7SChris Wilson #endif /* _I915_TRACE_H_ */
7121c5d22f7SChris Wilson 
7131c5d22f7SChris Wilson /* This part must be outside protection */
7141c5d22f7SChris Wilson #undef TRACE_INCLUDE_PATH
715a7c54278SPeter Clifton #define TRACE_INCLUDE_PATH .
7161c5d22f7SChris Wilson #include <trace/define_trace.h>
717