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