xref: /openbmc/linux/drivers/gpu/drm/i915/i915_trace.h (revision 4f49be54)
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>
91c5d22f7SChris Wilson 
101c5d22f7SChris Wilson #undef TRACE_SYSTEM
111c5d22f7SChris Wilson #define TRACE_SYSTEM i915
121c5d22f7SChris Wilson #define TRACE_SYSTEM_STRING __stringify(TRACE_SYSTEM)
131c5d22f7SChris Wilson #define TRACE_INCLUDE_FILE i915_trace
141c5d22f7SChris Wilson 
151c5d22f7SChris Wilson /* object tracking */
161c5d22f7SChris Wilson 
171c5d22f7SChris Wilson TRACE_EVENT(i915_gem_object_create,
181c5d22f7SChris Wilson 
191c5d22f7SChris Wilson 	    TP_PROTO(struct drm_gem_object *obj),
201c5d22f7SChris Wilson 
211c5d22f7SChris Wilson 	    TP_ARGS(obj),
221c5d22f7SChris Wilson 
231c5d22f7SChris Wilson 	    TP_STRUCT__entry(
241c5d22f7SChris Wilson 			     __field(struct drm_gem_object *, obj)
251c5d22f7SChris Wilson 			     __field(u32, size)
261c5d22f7SChris Wilson 			     ),
271c5d22f7SChris Wilson 
281c5d22f7SChris Wilson 	    TP_fast_assign(
291c5d22f7SChris Wilson 			   __entry->obj = obj;
301c5d22f7SChris Wilson 			   __entry->size = obj->size;
311c5d22f7SChris Wilson 			   ),
321c5d22f7SChris Wilson 
331c5d22f7SChris Wilson 	    TP_printk("obj=%p, size=%u", __entry->obj, __entry->size)
341c5d22f7SChris Wilson );
351c5d22f7SChris Wilson 
361c5d22f7SChris Wilson TRACE_EVENT(i915_gem_object_bind,
371c5d22f7SChris Wilson 
381c5d22f7SChris Wilson 	    TP_PROTO(struct drm_gem_object *obj, u32 gtt_offset),
391c5d22f7SChris Wilson 
401c5d22f7SChris Wilson 	    TP_ARGS(obj, gtt_offset),
411c5d22f7SChris Wilson 
421c5d22f7SChris Wilson 	    TP_STRUCT__entry(
431c5d22f7SChris Wilson 			     __field(struct drm_gem_object *, obj)
441c5d22f7SChris Wilson 			     __field(u32, gtt_offset)
451c5d22f7SChris Wilson 			     ),
461c5d22f7SChris Wilson 
471c5d22f7SChris Wilson 	    TP_fast_assign(
481c5d22f7SChris Wilson 			   __entry->obj = obj;
491c5d22f7SChris Wilson 			   __entry->gtt_offset = gtt_offset;
501c5d22f7SChris Wilson 			   ),
511c5d22f7SChris Wilson 
521c5d22f7SChris Wilson 	    TP_printk("obj=%p, gtt_offset=%08x",
531c5d22f7SChris Wilson 		      __entry->obj, __entry->gtt_offset)
541c5d22f7SChris Wilson );
551c5d22f7SChris Wilson 
561c5d22f7SChris Wilson TRACE_EVENT(i915_gem_object_clflush,
571c5d22f7SChris Wilson 
581c5d22f7SChris Wilson 	    TP_PROTO(struct drm_gem_object *obj),
591c5d22f7SChris Wilson 
601c5d22f7SChris Wilson 	    TP_ARGS(obj),
611c5d22f7SChris Wilson 
621c5d22f7SChris Wilson 	    TP_STRUCT__entry(
631c5d22f7SChris Wilson 			     __field(struct drm_gem_object *, obj)
641c5d22f7SChris Wilson 			     ),
651c5d22f7SChris Wilson 
661c5d22f7SChris Wilson 	    TP_fast_assign(
671c5d22f7SChris Wilson 			   __entry->obj = obj;
681c5d22f7SChris Wilson 			   ),
691c5d22f7SChris Wilson 
701c5d22f7SChris Wilson 	    TP_printk("obj=%p", __entry->obj)
711c5d22f7SChris Wilson );
721c5d22f7SChris Wilson 
731c5d22f7SChris Wilson TRACE_EVENT(i915_gem_object_change_domain,
741c5d22f7SChris Wilson 
751c5d22f7SChris Wilson 	    TP_PROTO(struct drm_gem_object *obj, uint32_t old_read_domains, uint32_t old_write_domain),
761c5d22f7SChris Wilson 
771c5d22f7SChris Wilson 	    TP_ARGS(obj, old_read_domains, old_write_domain),
781c5d22f7SChris Wilson 
791c5d22f7SChris Wilson 	    TP_STRUCT__entry(
801c5d22f7SChris Wilson 			     __field(struct drm_gem_object *, obj)
811c5d22f7SChris Wilson 			     __field(u32, read_domains)
821c5d22f7SChris Wilson 			     __field(u32, write_domain)
831c5d22f7SChris Wilson 			     ),
841c5d22f7SChris Wilson 
851c5d22f7SChris Wilson 	    TP_fast_assign(
861c5d22f7SChris Wilson 			   __entry->obj = obj;
871c5d22f7SChris Wilson 			   __entry->read_domains = obj->read_domains | (old_read_domains << 16);
881c5d22f7SChris Wilson 			   __entry->write_domain = obj->write_domain | (old_write_domain << 16);
891c5d22f7SChris Wilson 			   ),
901c5d22f7SChris Wilson 
911c5d22f7SChris Wilson 	    TP_printk("obj=%p, read=%04x, write=%04x",
921c5d22f7SChris Wilson 		      __entry->obj,
931c5d22f7SChris Wilson 		      __entry->read_domains, __entry->write_domain)
941c5d22f7SChris Wilson );
951c5d22f7SChris Wilson 
961c5d22f7SChris Wilson TRACE_EVENT(i915_gem_object_get_fence,
971c5d22f7SChris Wilson 
981c5d22f7SChris Wilson 	    TP_PROTO(struct drm_gem_object *obj, int fence, int tiling_mode),
991c5d22f7SChris Wilson 
1001c5d22f7SChris Wilson 	    TP_ARGS(obj, fence, tiling_mode),
1011c5d22f7SChris Wilson 
1021c5d22f7SChris Wilson 	    TP_STRUCT__entry(
1031c5d22f7SChris Wilson 			     __field(struct drm_gem_object *, obj)
1041c5d22f7SChris Wilson 			     __field(int, fence)
1051c5d22f7SChris Wilson 			     __field(int, tiling_mode)
1061c5d22f7SChris Wilson 			     ),
1071c5d22f7SChris Wilson 
1081c5d22f7SChris Wilson 	    TP_fast_assign(
1091c5d22f7SChris Wilson 			   __entry->obj = obj;
1101c5d22f7SChris Wilson 			   __entry->fence = fence;
1111c5d22f7SChris Wilson 			   __entry->tiling_mode = tiling_mode;
1121c5d22f7SChris Wilson 			   ),
1131c5d22f7SChris Wilson 
1141c5d22f7SChris Wilson 	    TP_printk("obj=%p, fence=%d, tiling=%d",
1151c5d22f7SChris Wilson 		      __entry->obj, __entry->fence, __entry->tiling_mode)
1161c5d22f7SChris Wilson );
1171c5d22f7SChris Wilson 
1181c5d22f7SChris Wilson TRACE_EVENT(i915_gem_object_unbind,
1191c5d22f7SChris Wilson 
1201c5d22f7SChris Wilson 	    TP_PROTO(struct drm_gem_object *obj),
1211c5d22f7SChris Wilson 
1221c5d22f7SChris Wilson 	    TP_ARGS(obj),
1231c5d22f7SChris Wilson 
1241c5d22f7SChris Wilson 	    TP_STRUCT__entry(
1251c5d22f7SChris Wilson 			     __field(struct drm_gem_object *, obj)
1261c5d22f7SChris Wilson 			     ),
1271c5d22f7SChris Wilson 
1281c5d22f7SChris Wilson 	    TP_fast_assign(
1291c5d22f7SChris Wilson 			   __entry->obj = obj;
1301c5d22f7SChris Wilson 			   ),
1311c5d22f7SChris Wilson 
1321c5d22f7SChris Wilson 	    TP_printk("obj=%p", __entry->obj)
1331c5d22f7SChris Wilson );
1341c5d22f7SChris Wilson 
1351c5d22f7SChris Wilson TRACE_EVENT(i915_gem_object_destroy,
1361c5d22f7SChris Wilson 
1371c5d22f7SChris Wilson 	    TP_PROTO(struct drm_gem_object *obj),
1381c5d22f7SChris Wilson 
1391c5d22f7SChris Wilson 	    TP_ARGS(obj),
1401c5d22f7SChris Wilson 
1411c5d22f7SChris Wilson 	    TP_STRUCT__entry(
1421c5d22f7SChris Wilson 			     __field(struct drm_gem_object *, obj)
1431c5d22f7SChris Wilson 			     ),
1441c5d22f7SChris Wilson 
1451c5d22f7SChris Wilson 	    TP_fast_assign(
1461c5d22f7SChris Wilson 			   __entry->obj = obj;
1471c5d22f7SChris Wilson 			   ),
1481c5d22f7SChris Wilson 
1491c5d22f7SChris Wilson 	    TP_printk("obj=%p", __entry->obj)
1501c5d22f7SChris Wilson );
1511c5d22f7SChris Wilson 
1521c5d22f7SChris Wilson /* batch tracing */
1531c5d22f7SChris Wilson 
1541c5d22f7SChris Wilson TRACE_EVENT(i915_gem_request_submit,
1551c5d22f7SChris Wilson 
1561c5d22f7SChris Wilson 	    TP_PROTO(struct drm_device *dev, u32 seqno),
1571c5d22f7SChris Wilson 
1581c5d22f7SChris Wilson 	    TP_ARGS(dev, seqno),
1591c5d22f7SChris Wilson 
1601c5d22f7SChris Wilson 	    TP_STRUCT__entry(
1614f49be54SChris Wilson 			     __field(u32, dev)
1621c5d22f7SChris Wilson 			     __field(u32, seqno)
1631c5d22f7SChris Wilson 			     ),
1641c5d22f7SChris Wilson 
1651c5d22f7SChris Wilson 	    TP_fast_assign(
1664f49be54SChris Wilson 			   __entry->dev = dev->primary->index;
1671c5d22f7SChris Wilson 			   __entry->seqno = seqno;
1681c5d22f7SChris Wilson 			   ),
1691c5d22f7SChris Wilson 
1704f49be54SChris Wilson 	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
1711c5d22f7SChris Wilson );
1721c5d22f7SChris Wilson 
1731c5d22f7SChris Wilson TRACE_EVENT(i915_gem_request_flush,
1741c5d22f7SChris Wilson 
1751c5d22f7SChris Wilson 	    TP_PROTO(struct drm_device *dev, u32 seqno,
1761c5d22f7SChris Wilson 		     u32 flush_domains, u32 invalidate_domains),
1771c5d22f7SChris Wilson 
1781c5d22f7SChris Wilson 	    TP_ARGS(dev, seqno, flush_domains, invalidate_domains),
1791c5d22f7SChris Wilson 
1801c5d22f7SChris Wilson 	    TP_STRUCT__entry(
1814f49be54SChris Wilson 			     __field(u32, dev)
1821c5d22f7SChris Wilson 			     __field(u32, seqno)
1831c5d22f7SChris Wilson 			     __field(u32, flush_domains)
1841c5d22f7SChris Wilson 			     __field(u32, invalidate_domains)
1851c5d22f7SChris Wilson 			     ),
1861c5d22f7SChris Wilson 
1871c5d22f7SChris Wilson 	    TP_fast_assign(
1884f49be54SChris Wilson 			   __entry->dev = dev->primary->index;
1891c5d22f7SChris Wilson 			   __entry->seqno = seqno;
1901c5d22f7SChris Wilson 			   __entry->flush_domains = flush_domains;
1911c5d22f7SChris Wilson 			   __entry->invalidate_domains = invalidate_domains;
1921c5d22f7SChris Wilson 			   ),
1931c5d22f7SChris Wilson 
1944f49be54SChris Wilson 	    TP_printk("dev=%u, seqno=%u, flush=%04x, invalidate=%04x",
1951c5d22f7SChris Wilson 		      __entry->dev, __entry->seqno,
1961c5d22f7SChris Wilson 		      __entry->flush_domains, __entry->invalidate_domains)
1971c5d22f7SChris Wilson );
1981c5d22f7SChris Wilson 
1991c5d22f7SChris Wilson 
2001c5d22f7SChris Wilson TRACE_EVENT(i915_gem_request_complete,
2011c5d22f7SChris Wilson 
2021c5d22f7SChris Wilson 	    TP_PROTO(struct drm_device *dev, u32 seqno),
2031c5d22f7SChris Wilson 
2041c5d22f7SChris Wilson 	    TP_ARGS(dev, seqno),
2051c5d22f7SChris Wilson 
2061c5d22f7SChris Wilson 	    TP_STRUCT__entry(
2074f49be54SChris Wilson 			     __field(u32, dev)
2081c5d22f7SChris Wilson 			     __field(u32, seqno)
2091c5d22f7SChris Wilson 			     ),
2101c5d22f7SChris Wilson 
2111c5d22f7SChris Wilson 	    TP_fast_assign(
2124f49be54SChris Wilson 			   __entry->dev = dev->primary->index;
2131c5d22f7SChris Wilson 			   __entry->seqno = seqno;
2141c5d22f7SChris Wilson 			   ),
2151c5d22f7SChris Wilson 
2164f49be54SChris Wilson 	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
2171c5d22f7SChris Wilson );
2181c5d22f7SChris Wilson 
2191c5d22f7SChris Wilson TRACE_EVENT(i915_gem_request_retire,
2201c5d22f7SChris Wilson 
2211c5d22f7SChris Wilson 	    TP_PROTO(struct drm_device *dev, u32 seqno),
2221c5d22f7SChris Wilson 
2231c5d22f7SChris Wilson 	    TP_ARGS(dev, seqno),
2241c5d22f7SChris Wilson 
2251c5d22f7SChris Wilson 	    TP_STRUCT__entry(
2264f49be54SChris Wilson 			     __field(u32, dev)
2271c5d22f7SChris Wilson 			     __field(u32, seqno)
2281c5d22f7SChris Wilson 			     ),
2291c5d22f7SChris Wilson 
2301c5d22f7SChris Wilson 	    TP_fast_assign(
2314f49be54SChris Wilson 			   __entry->dev = dev->primary->index;
2321c5d22f7SChris Wilson 			   __entry->seqno = seqno;
2331c5d22f7SChris Wilson 			   ),
2341c5d22f7SChris Wilson 
2354f49be54SChris Wilson 	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
2361c5d22f7SChris Wilson );
2371c5d22f7SChris Wilson 
2381c5d22f7SChris Wilson TRACE_EVENT(i915_gem_request_wait_begin,
2391c5d22f7SChris Wilson 
2401c5d22f7SChris Wilson 	    TP_PROTO(struct drm_device *dev, u32 seqno),
2411c5d22f7SChris Wilson 
2421c5d22f7SChris Wilson 	    TP_ARGS(dev, seqno),
2431c5d22f7SChris Wilson 
2441c5d22f7SChris Wilson 	    TP_STRUCT__entry(
2454f49be54SChris Wilson 			     __field(u32, dev)
2461c5d22f7SChris Wilson 			     __field(u32, seqno)
2471c5d22f7SChris Wilson 			     ),
2481c5d22f7SChris Wilson 
2491c5d22f7SChris Wilson 	    TP_fast_assign(
2504f49be54SChris Wilson 			   __entry->dev = dev->primary->index;
2511c5d22f7SChris Wilson 			   __entry->seqno = seqno;
2521c5d22f7SChris Wilson 			   ),
2531c5d22f7SChris Wilson 
2544f49be54SChris Wilson 	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
2551c5d22f7SChris Wilson );
2561c5d22f7SChris Wilson 
2571c5d22f7SChris Wilson TRACE_EVENT(i915_gem_request_wait_end,
2581c5d22f7SChris Wilson 
2591c5d22f7SChris Wilson 	    TP_PROTO(struct drm_device *dev, u32 seqno),
2601c5d22f7SChris Wilson 
2611c5d22f7SChris Wilson 	    TP_ARGS(dev, seqno),
2621c5d22f7SChris Wilson 
2631c5d22f7SChris Wilson 	    TP_STRUCT__entry(
2644f49be54SChris Wilson 			     __field(u32, dev)
2651c5d22f7SChris Wilson 			     __field(u32, seqno)
2661c5d22f7SChris Wilson 			     ),
2671c5d22f7SChris Wilson 
2681c5d22f7SChris Wilson 	    TP_fast_assign(
2694f49be54SChris Wilson 			   __entry->dev = dev->primary->index;
2701c5d22f7SChris Wilson 			   __entry->seqno = seqno;
2711c5d22f7SChris Wilson 			   ),
2721c5d22f7SChris Wilson 
2734f49be54SChris Wilson 	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
2741c5d22f7SChris Wilson );
2751c5d22f7SChris Wilson 
2761c5d22f7SChris Wilson TRACE_EVENT(i915_ring_wait_begin,
2771c5d22f7SChris Wilson 
2781c5d22f7SChris Wilson 	    TP_PROTO(struct drm_device *dev),
2791c5d22f7SChris Wilson 
2801c5d22f7SChris Wilson 	    TP_ARGS(dev),
2811c5d22f7SChris Wilson 
2821c5d22f7SChris Wilson 	    TP_STRUCT__entry(
2834f49be54SChris Wilson 			     __field(u32, dev)
2841c5d22f7SChris Wilson 			     ),
2851c5d22f7SChris Wilson 
2861c5d22f7SChris Wilson 	    TP_fast_assign(
2874f49be54SChris Wilson 			   __entry->dev = dev->primary->index;
2881c5d22f7SChris Wilson 			   ),
2891c5d22f7SChris Wilson 
2904f49be54SChris Wilson 	    TP_printk("dev=%u", __entry->dev)
2911c5d22f7SChris Wilson );
2921c5d22f7SChris Wilson 
2931c5d22f7SChris Wilson TRACE_EVENT(i915_ring_wait_end,
2941c5d22f7SChris Wilson 
2951c5d22f7SChris Wilson 	    TP_PROTO(struct drm_device *dev),
2961c5d22f7SChris Wilson 
2971c5d22f7SChris Wilson 	    TP_ARGS(dev),
2981c5d22f7SChris Wilson 
2991c5d22f7SChris Wilson 	    TP_STRUCT__entry(
3004f49be54SChris Wilson 			     __field(u32, dev)
3011c5d22f7SChris Wilson 			     ),
3021c5d22f7SChris Wilson 
3031c5d22f7SChris Wilson 	    TP_fast_assign(
3044f49be54SChris Wilson 			   __entry->dev = dev->primary->index;
3051c5d22f7SChris Wilson 			   ),
3061c5d22f7SChris Wilson 
3074f49be54SChris Wilson 	    TP_printk("dev=%u", __entry->dev)
3081c5d22f7SChris Wilson );
3091c5d22f7SChris Wilson 
3101c5d22f7SChris Wilson #endif /* _I915_TRACE_H_ */
3111c5d22f7SChris Wilson 
3121c5d22f7SChris Wilson /* This part must be outside protection */
3131c5d22f7SChris Wilson #undef TRACE_INCLUDE_PATH
3141c5d22f7SChris Wilson #define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/i915
3151c5d22f7SChris Wilson #include <trace/define_trace.h>
316