2009-08-25 11:15:50 +01:00
# if !defined(_I915_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
# define _I915_TRACE_H_
# include <linux/stringify.h>
# include <linux/types.h>
# include <linux/tracepoint.h>
# include <drm/drmP.h>
2010-11-08 19:18:58 +00:00
# include "i915_drv.h"
2011-02-03 11:57:46 +00:00
# include "intel_ringbuffer.h"
2009-08-25 11:15:50 +01:00
# undef TRACE_SYSTEM
# define TRACE_SYSTEM i915
# define TRACE_SYSTEM_STRING __stringify(TRACE_SYSTEM)
# define TRACE_INCLUDE_FILE i915_trace
/* object tracking */
TRACE_EVENT ( i915_gem_object_create ,
2010-11-08 19:18:58 +00:00
TP_PROTO ( struct drm_i915_gem_object * obj ) ,
2009-08-25 11:15:50 +01:00
TP_ARGS ( obj ) ,
TP_STRUCT__entry (
2010-11-08 19:18:58 +00:00
__field ( struct drm_i915_gem_object * , obj )
2009-08-25 11:15:50 +01:00
__field ( u32 , size )
) ,
TP_fast_assign (
__entry - > obj = obj ;
2010-11-08 19:18:58 +00:00
__entry - > size = obj - > base . size ;
2009-08-25 11:15:50 +01:00
) ,
TP_printk ( " obj=%p, size=%u " , __entry - > obj , __entry - > size )
) ;
TRACE_EVENT ( i915_gem_object_bind ,
2011-02-03 11:57:46 +00:00
TP_PROTO ( struct drm_i915_gem_object * obj , bool mappable ) ,
TP_ARGS ( obj , mappable ) ,
2009-08-25 11:15:50 +01:00
TP_STRUCT__entry (
2010-11-08 19:18:58 +00:00
__field ( struct drm_i915_gem_object * , obj )
2011-02-03 11:57:46 +00:00
__field ( u32 , offset )
__field ( u32 , size )
2010-09-30 23:42:15 +02:00
__field ( bool , mappable )
2009-08-25 11:15:50 +01:00
) ,
TP_fast_assign (
__entry - > obj = obj ;
2011-02-03 11:57:46 +00:00
__entry - > offset = obj - > gtt_space - > start ;
__entry - > size = obj - > gtt_space - > size ;
2010-09-30 23:42:15 +02:00
__entry - > mappable = mappable ;
2009-08-25 11:15:50 +01:00
) ,
2011-02-03 11:57:46 +00:00
TP_printk ( " obj=%p, offset=%08x size=%x%s " ,
__entry - > obj , __entry - > offset , __entry - > size ,
2010-09-30 23:42:15 +02:00
__entry - > mappable ? " , mappable " : " " )
2009-08-25 11:15:50 +01:00
) ;
2011-02-03 11:57:46 +00:00
TRACE_EVENT ( i915_gem_object_unbind ,
TP_PROTO ( struct drm_i915_gem_object * obj ) ,
TP_ARGS ( obj ) ,
TP_STRUCT__entry (
__field ( struct drm_i915_gem_object * , obj )
__field ( u32 , offset )
__field ( u32 , size )
) ,
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
TP_fast_assign (
__entry - > obj = obj ;
__entry - > offset = obj - > gtt_space - > start ;
__entry - > size = obj - > gtt_space - > size ;
) ,
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
TP_printk ( " obj=%p, offset=%08x size=%x " ,
__entry - > obj , __entry - > offset , __entry - > size )
) ;
TRACE_EVENT ( i915_gem_object_change_domain ,
TP_PROTO ( struct drm_i915_gem_object * obj , u32 old_read , u32 old_write ) ,
TP_ARGS ( obj , old_read , old_write ) ,
2009-08-25 11:15:50 +01:00
TP_STRUCT__entry (
2010-11-08 19:18:58 +00:00
__field ( struct drm_i915_gem_object * , obj )
2009-08-25 11:15:50 +01:00
__field ( u32 , read_domains )
__field ( u32 , write_domain )
) ,
TP_fast_assign (
__entry - > obj = obj ;
2011-02-03 11:57:46 +00:00
__entry - > read_domains = obj - > base . read_domains | ( old_read < < 16 ) ;
__entry - > write_domain = obj - > base . write_domain | ( old_write < < 16 ) ;
2009-08-25 11:15:50 +01:00
) ,
2011-02-03 11:57:46 +00:00
TP_printk ( " obj=%p, read=%02x=>%02x, write=%02x=>%02x " ,
2009-08-25 11:15:50 +01:00
__entry - > obj ,
2011-02-03 11:57:46 +00:00
__entry - > read_domains > > 16 ,
__entry - > read_domains & 0xffff ,
__entry - > write_domain > > 16 ,
__entry - > write_domain & 0xffff )
2009-08-25 11:15:50 +01:00
) ;
2011-02-03 11:57:46 +00:00
TRACE_EVENT ( i915_gem_object_pwrite ,
TP_PROTO ( struct drm_i915_gem_object * obj , u32 offset , u32 len ) ,
TP_ARGS ( obj , offset , len ) ,
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
TP_STRUCT__entry (
__field ( struct drm_i915_gem_object * , obj )
__field ( u32 , offset )
__field ( u32 , len )
) ,
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
TP_fast_assign (
__entry - > obj = obj ;
__entry - > offset = offset ;
__entry - > len = len ;
) ,
TP_printk ( " obj=%p, offset=%u, len=%u " ,
__entry - > obj , __entry - > offset , __entry - > len )
) ;
TRACE_EVENT ( i915_gem_object_pread ,
TP_PROTO ( struct drm_i915_gem_object * obj , u32 offset , u32 len ) ,
TP_ARGS ( obj , offset , len ) ,
2009-08-25 11:15:50 +01:00
TP_STRUCT__entry (
2010-11-08 19:18:58 +00:00
__field ( struct drm_i915_gem_object * , obj )
2011-02-03 11:57:46 +00:00
__field ( u32 , offset )
__field ( u32 , len )
2009-08-25 11:15:50 +01:00
) ,
TP_fast_assign (
__entry - > obj = obj ;
2011-02-03 11:57:46 +00:00
__entry - > offset = offset ;
__entry - > len = len ;
2009-08-25 11:15:50 +01:00
) ,
2011-02-03 11:57:46 +00:00
TP_printk ( " obj=%p, offset=%u, len=%u " ,
__entry - > obj , __entry - > offset , __entry - > len )
2009-08-25 11:15:50 +01:00
) ;
2011-02-03 11:57:46 +00:00
TRACE_EVENT ( i915_gem_object_fault ,
TP_PROTO ( struct drm_i915_gem_object * obj , u32 index , bool gtt , bool write ) ,
TP_ARGS ( obj , index , gtt , write ) ,
TP_STRUCT__entry (
__field ( struct drm_i915_gem_object * , obj )
__field ( u32 , index )
__field ( bool , gtt )
__field ( bool , write )
) ,
TP_fast_assign (
__entry - > obj = obj ;
__entry - > index = index ;
__entry - > gtt = gtt ;
__entry - > write = write ;
) ,
2010-05-24 16:25:44 +08:00
2011-02-03 11:57:46 +00:00
TP_printk ( " obj=%p, %s index=%u %s " ,
__entry - > obj ,
__entry - > gtt ? " GTT " : " CPU " ,
__entry - > index ,
__entry - > write ? " , writable " : " " )
) ;
DECLARE_EVENT_CLASS ( i915_gem_object ,
2010-11-08 19:18:58 +00:00
TP_PROTO ( struct drm_i915_gem_object * obj ) ,
2011-02-03 11:57:46 +00:00
TP_ARGS ( obj ) ,
2010-05-24 16:25:44 +08:00
2011-02-03 11:57:46 +00:00
TP_STRUCT__entry (
__field ( struct drm_i915_gem_object * , obj )
) ,
TP_fast_assign (
__entry - > obj = obj ;
) ,
TP_printk ( " obj=%p " , __entry - > obj )
2010-05-24 16:25:44 +08:00
) ;
2011-02-03 11:57:46 +00:00
DEFINE_EVENT ( i915_gem_object , i915_gem_object_clflush ,
TP_PROTO ( struct drm_i915_gem_object * obj ) ,
TP_ARGS ( obj )
) ;
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
DEFINE_EVENT ( i915_gem_object , i915_gem_object_destroy ,
2010-11-08 19:18:58 +00:00
TP_PROTO ( struct drm_i915_gem_object * obj ) ,
2010-03-11 16:41:45 +08:00
TP_ARGS ( obj )
) ;
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
TRACE_EVENT ( i915_gem_evict ,
TP_PROTO ( struct drm_device * dev , u32 size , u32 align , bool mappable ) ,
TP_ARGS ( dev , size , align , mappable ) ,
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
TP_STRUCT__entry (
__field ( u32 , dev )
__field ( u32 , size )
__field ( u32 , align )
__field ( bool , mappable )
) ,
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
TP_fast_assign (
__entry - > dev = dev - > primary - > index ;
__entry - > size = size ;
__entry - > align = align ;
__entry - > mappable = mappable ;
) ,
TP_printk ( " dev=%d, size=%d, align=%d %s " ,
__entry - > dev , __entry - > size , __entry - > align ,
__entry - > mappable ? " , mappable " : " " )
2009-08-25 11:15:50 +01:00
) ;
2011-02-03 11:57:46 +00:00
TRACE_EVENT ( i915_gem_evict_everything ,
TP_PROTO ( struct drm_device * dev , bool purgeable ) ,
TP_ARGS ( dev , purgeable ) ,
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
TP_STRUCT__entry (
__field ( u32 , dev )
__field ( bool , purgeable )
) ,
TP_fast_assign (
__entry - > dev = dev - > primary - > index ;
__entry - > purgeable = purgeable ;
) ,
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
TP_printk ( " dev=%d%s " ,
__entry - > dev ,
__entry - > purgeable ? " , purgeable only " : " " )
) ;
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
TRACE_EVENT ( i915_gem_ring_dispatch ,
TP_PROTO ( struct intel_ring_buffer * ring , u32 seqno ) ,
TP_ARGS ( ring , seqno ) ,
2009-08-25 11:15:50 +01:00
TP_STRUCT__entry (
2009-09-24 00:23:33 +01:00
__field ( u32 , dev )
2011-02-03 11:57:46 +00:00
__field ( u32 , ring )
2009-08-25 11:15:50 +01:00
__field ( u32 , seqno )
) ,
TP_fast_assign (
2011-02-03 11:57:46 +00:00
__entry - > dev = ring - > dev - > primary - > index ;
__entry - > ring = ring - > id ;
2009-08-25 11:15:50 +01:00
__entry - > seqno = seqno ;
2011-02-03 11:57:46 +00:00
i915_trace_irq_get ( ring , seqno ) ;
2009-08-25 11:15:50 +01:00
) ,
2011-02-03 11:57:46 +00:00
TP_printk ( " dev=%u, ring=%u, seqno=%u " ,
__entry - > dev , __entry - > ring , __entry - > seqno )
2009-08-25 11:15:50 +01:00
) ;
2011-02-03 11:57:46 +00:00
TRACE_EVENT ( i915_gem_ring_flush ,
TP_PROTO ( struct intel_ring_buffer * ring , u32 invalidate , u32 flush ) ,
TP_ARGS ( ring , invalidate , flush ) ,
2009-08-25 11:15:50 +01:00
TP_STRUCT__entry (
2009-09-24 00:23:33 +01:00
__field ( u32 , dev )
2011-02-03 11:57:46 +00:00
__field ( u32 , ring )
__field ( u32 , invalidate )
__field ( u32 , flush )
2009-08-25 11:15:50 +01:00
) ,
TP_fast_assign (
2011-02-03 11:57:46 +00:00
__entry - > dev = ring - > dev - > primary - > index ;
__entry - > ring = ring - > id ;
__entry - > invalidate = invalidate ;
__entry - > flush = flush ;
2009-08-25 11:15:50 +01:00
) ,
2011-02-03 11:57:46 +00:00
TP_printk ( " dev=%u, ring=%x, invalidate=%04x, flush=%04x " ,
__entry - > dev , __entry - > ring ,
__entry - > invalidate , __entry - > flush )
2009-08-25 11:15:50 +01:00
) ;
2010-03-11 16:41:45 +08:00
DECLARE_EVENT_CLASS ( i915_gem_request ,
2011-02-03 11:57:46 +00:00
TP_PROTO ( struct intel_ring_buffer * ring , u32 seqno ) ,
TP_ARGS ( ring , seqno ) ,
2009-08-25 11:15:50 +01:00
TP_STRUCT__entry (
2009-09-24 00:23:33 +01:00
__field ( u32 , dev )
2011-02-03 11:57:46 +00:00
__field ( u32 , ring )
2009-08-25 11:15:50 +01:00
__field ( u32 , seqno )
) ,
TP_fast_assign (
2011-02-03 11:57:46 +00:00
__entry - > dev = ring - > dev - > primary - > index ;
__entry - > ring = ring - > id ;
2009-08-25 11:15:50 +01:00
__entry - > seqno = seqno ;
) ,
2011-02-03 11:57:46 +00:00
TP_printk ( " dev=%u, ring=%u, seqno=%u " ,
__entry - > dev , __entry - > ring , __entry - > seqno )
2009-08-25 11:15:50 +01:00
) ;
2011-02-03 11:57:46 +00:00
DEFINE_EVENT ( i915_gem_request , i915_gem_request_add ,
TP_PROTO ( struct intel_ring_buffer * ring , u32 seqno ) ,
TP_ARGS ( ring , seqno )
) ;
2009-08-25 11:15:50 +01:00
2011-02-03 11:57:46 +00:00
DEFINE_EVENT ( i915_gem_request , i915_gem_request_complete ,
TP_PROTO ( struct intel_ring_buffer * ring , u32 seqno ) ,
TP_ARGS ( ring , seqno )
2009-08-25 11:15:50 +01:00
) ;
2010-03-11 16:41:45 +08:00
DEFINE_EVENT ( i915_gem_request , i915_gem_request_retire ,
2011-02-03 11:57:46 +00:00
TP_PROTO ( struct intel_ring_buffer * ring , u32 seqno ) ,
TP_ARGS ( ring , seqno )
2009-08-25 11:15:50 +01:00
) ;
2010-03-11 16:41:45 +08:00
DEFINE_EVENT ( i915_gem_request , i915_gem_request_wait_begin ,
2011-02-03 11:57:46 +00:00
TP_PROTO ( struct intel_ring_buffer * ring , u32 seqno ) ,
TP_ARGS ( ring , seqno )
2010-03-11 16:41:45 +08:00
) ;
2009-08-25 11:15:50 +01:00
2010-03-11 16:41:45 +08:00
DEFINE_EVENT ( i915_gem_request , i915_gem_request_wait_end ,
2011-02-03 11:57:46 +00:00
TP_PROTO ( struct intel_ring_buffer * ring , u32 seqno ) ,
TP_ARGS ( ring , seqno )
2009-08-25 11:15:50 +01:00
) ;
2010-03-11 16:41:45 +08:00
DECLARE_EVENT_CLASS ( i915_ring ,
2011-02-03 11:57:46 +00:00
TP_PROTO ( struct intel_ring_buffer * ring ) ,
TP_ARGS ( ring ) ,
2009-08-25 11:15:50 +01:00
TP_STRUCT__entry (
2009-09-24 00:23:33 +01:00
__field ( u32 , dev )
2011-02-03 11:57:46 +00:00
__field ( u32 , ring )
2009-08-25 11:15:50 +01:00
) ,
TP_fast_assign (
2011-02-03 11:57:46 +00:00
__entry - > dev = ring - > dev - > primary - > index ;
__entry - > ring = ring - > id ;
2009-08-25 11:15:50 +01:00
) ,
2011-02-03 11:57:46 +00:00
TP_printk ( " dev=%u, ring=%u " , __entry - > dev , __entry - > ring )
2009-08-25 11:15:50 +01:00
) ;
2010-03-11 16:41:45 +08:00
DEFINE_EVENT ( i915_ring , i915_ring_wait_begin ,
2011-02-03 11:57:46 +00:00
TP_PROTO ( struct intel_ring_buffer * ring ) ,
TP_ARGS ( ring )
2010-03-11 16:41:45 +08:00
) ;
2009-08-25 11:15:50 +01:00
2010-03-11 16:41:45 +08:00
DEFINE_EVENT ( i915_ring , i915_ring_wait_end ,
2011-02-03 11:57:46 +00:00
TP_PROTO ( struct intel_ring_buffer * ring ) ,
TP_ARGS ( ring )
2009-08-25 11:15:50 +01:00
) ;
2010-07-01 16:48:37 -07:00
TRACE_EVENT ( i915_flip_request ,
2010-11-08 19:18:58 +00:00
TP_PROTO ( int plane , struct drm_i915_gem_object * obj ) ,
2010-07-01 16:48:37 -07:00
TP_ARGS ( plane , obj ) ,
TP_STRUCT__entry (
__field ( int , plane )
2010-11-08 19:18:58 +00:00
__field ( struct drm_i915_gem_object * , obj )
2010-07-01 16:48:37 -07:00
) ,
TP_fast_assign (
__entry - > plane = plane ;
__entry - > obj = obj ;
) ,
TP_printk ( " plane=%d, obj=%p " , __entry - > plane , __entry - > obj )
) ;
TRACE_EVENT ( i915_flip_complete ,
2010-11-08 19:18:58 +00:00
TP_PROTO ( int plane , struct drm_i915_gem_object * obj ) ,
2010-07-01 16:48:37 -07:00
TP_ARGS ( plane , obj ) ,
TP_STRUCT__entry (
__field ( int , plane )
2010-11-08 19:18:58 +00:00
__field ( struct drm_i915_gem_object * , obj )
2010-07-01 16:48:37 -07:00
) ,
TP_fast_assign (
__entry - > plane = plane ;
__entry - > obj = obj ;
) ,
TP_printk ( " plane=%d, obj=%p " , __entry - > plane , __entry - > obj )
) ;
2010-11-08 17:09:41 +08:00
TRACE_EVENT ( i915_reg_rw ,
2011-02-03 11:57:46 +00:00
TP_PROTO ( bool write , u32 reg , u64 val , int len ) ,
2010-11-08 17:09:41 +08:00
2011-02-03 11:57:46 +00:00
TP_ARGS ( write , reg , val , len ) ,
2010-11-08 17:09:41 +08:00
TP_STRUCT__entry (
2011-02-03 11:57:46 +00:00
__field ( u64 , val )
__field ( u32 , reg )
__field ( u16 , write )
__field ( u16 , len )
2010-11-08 17:09:41 +08:00
) ,
TP_fast_assign (
2011-02-03 11:57:46 +00:00
__entry - > val = ( u64 ) val ;
2010-11-08 17:09:41 +08:00
__entry - > reg = reg ;
2011-02-03 11:57:46 +00:00
__entry - > write = write ;
2010-11-08 17:09:41 +08:00
__entry - > len = len ;
) ,
2011-02-03 11:57:46 +00:00
TP_printk ( " %s reg=0x%x, len=%d, val=(0x%x, 0x%x) " ,
__entry - > write ? " write " : " read " ,
__entry - > reg , __entry - > len ,
( u32 ) ( __entry - > val & 0xffffffff ) ,
( u32 ) ( __entry - > val > > 32 ) )
2010-11-08 17:09:41 +08:00
) ;
2009-08-25 11:15:50 +01:00
# endif /* _I915_TRACE_H_ */
/* This part must be outside protection */
# undef TRACE_INCLUDE_PATH
2010-05-03 13:24:41 +01:00
# define TRACE_INCLUDE_PATH .
2009-08-25 11:15:50 +01:00
# include <trace/define_trace.h>