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> 9 10 #undef TRACE_SYSTEM 11 #define TRACE_SYSTEM i915 12 #define TRACE_SYSTEM_STRING __stringify(TRACE_SYSTEM) 13 #define TRACE_INCLUDE_FILE i915_trace 14 15 /* object tracking */ 16 17 TRACE_EVENT(i915_gem_object_create, 18 19 TP_PROTO(struct drm_gem_object *obj), 20 21 TP_ARGS(obj), 22 23 TP_STRUCT__entry( 24 __field(struct drm_gem_object *, obj) 25 __field(u32, size) 26 ), 27 28 TP_fast_assign( 29 __entry->obj = obj; 30 __entry->size = obj->size; 31 ), 32 33 TP_printk("obj=%p, size=%u", __entry->obj, __entry->size) 34 ); 35 36 TRACE_EVENT(i915_gem_object_bind, 37 38 TP_PROTO(struct drm_gem_object *obj, u32 gtt_offset), 39 40 TP_ARGS(obj, gtt_offset), 41 42 TP_STRUCT__entry( 43 __field(struct drm_gem_object *, obj) 44 __field(u32, gtt_offset) 45 ), 46 47 TP_fast_assign( 48 __entry->obj = obj; 49 __entry->gtt_offset = gtt_offset; 50 ), 51 52 TP_printk("obj=%p, gtt_offset=%08x", 53 __entry->obj, __entry->gtt_offset) 54 ); 55 56 TRACE_EVENT(i915_gem_object_clflush, 57 58 TP_PROTO(struct drm_gem_object *obj), 59 60 TP_ARGS(obj), 61 62 TP_STRUCT__entry( 63 __field(struct drm_gem_object *, obj) 64 ), 65 66 TP_fast_assign( 67 __entry->obj = obj; 68 ), 69 70 TP_printk("obj=%p", __entry->obj) 71 ); 72 73 TRACE_EVENT(i915_gem_object_change_domain, 74 75 TP_PROTO(struct drm_gem_object *obj, uint32_t old_read_domains, uint32_t old_write_domain), 76 77 TP_ARGS(obj, old_read_domains, old_write_domain), 78 79 TP_STRUCT__entry( 80 __field(struct drm_gem_object *, obj) 81 __field(u32, read_domains) 82 __field(u32, write_domain) 83 ), 84 85 TP_fast_assign( 86 __entry->obj = obj; 87 __entry->read_domains = obj->read_domains | (old_read_domains << 16); 88 __entry->write_domain = obj->write_domain | (old_write_domain << 16); 89 ), 90 91 TP_printk("obj=%p, read=%04x, write=%04x", 92 __entry->obj, 93 __entry->read_domains, __entry->write_domain) 94 ); 95 96 TRACE_EVENT(i915_gem_object_get_fence, 97 98 TP_PROTO(struct drm_gem_object *obj, int fence, int tiling_mode), 99 100 TP_ARGS(obj, fence, tiling_mode), 101 102 TP_STRUCT__entry( 103 __field(struct drm_gem_object *, obj) 104 __field(int, fence) 105 __field(int, tiling_mode) 106 ), 107 108 TP_fast_assign( 109 __entry->obj = obj; 110 __entry->fence = fence; 111 __entry->tiling_mode = tiling_mode; 112 ), 113 114 TP_printk("obj=%p, fence=%d, tiling=%d", 115 __entry->obj, __entry->fence, __entry->tiling_mode) 116 ); 117 118 TRACE_EVENT(i915_gem_object_unbind, 119 120 TP_PROTO(struct drm_gem_object *obj), 121 122 TP_ARGS(obj), 123 124 TP_STRUCT__entry( 125 __field(struct drm_gem_object *, obj) 126 ), 127 128 TP_fast_assign( 129 __entry->obj = obj; 130 ), 131 132 TP_printk("obj=%p", __entry->obj) 133 ); 134 135 TRACE_EVENT(i915_gem_object_destroy, 136 137 TP_PROTO(struct drm_gem_object *obj), 138 139 TP_ARGS(obj), 140 141 TP_STRUCT__entry( 142 __field(struct drm_gem_object *, obj) 143 ), 144 145 TP_fast_assign( 146 __entry->obj = obj; 147 ), 148 149 TP_printk("obj=%p", __entry->obj) 150 ); 151 152 /* batch tracing */ 153 154 TRACE_EVENT(i915_gem_request_submit, 155 156 TP_PROTO(struct drm_device *dev, u32 seqno), 157 158 TP_ARGS(dev, seqno), 159 160 TP_STRUCT__entry( 161 __field(u32, dev) 162 __field(u32, seqno) 163 ), 164 165 TP_fast_assign( 166 __entry->dev = dev->primary->index; 167 __entry->seqno = seqno; 168 i915_trace_irq_get(dev, seqno); 169 ), 170 171 TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno) 172 ); 173 174 TRACE_EVENT(i915_gem_request_flush, 175 176 TP_PROTO(struct drm_device *dev, u32 seqno, 177 u32 flush_domains, u32 invalidate_domains), 178 179 TP_ARGS(dev, seqno, flush_domains, invalidate_domains), 180 181 TP_STRUCT__entry( 182 __field(u32, dev) 183 __field(u32, seqno) 184 __field(u32, flush_domains) 185 __field(u32, invalidate_domains) 186 ), 187 188 TP_fast_assign( 189 __entry->dev = dev->primary->index; 190 __entry->seqno = seqno; 191 __entry->flush_domains = flush_domains; 192 __entry->invalidate_domains = invalidate_domains; 193 ), 194 195 TP_printk("dev=%u, seqno=%u, flush=%04x, invalidate=%04x", 196 __entry->dev, __entry->seqno, 197 __entry->flush_domains, __entry->invalidate_domains) 198 ); 199 200 201 TRACE_EVENT(i915_gem_request_complete, 202 203 TP_PROTO(struct drm_device *dev, u32 seqno), 204 205 TP_ARGS(dev, seqno), 206 207 TP_STRUCT__entry( 208 __field(u32, dev) 209 __field(u32, seqno) 210 ), 211 212 TP_fast_assign( 213 __entry->dev = dev->primary->index; 214 __entry->seqno = seqno; 215 ), 216 217 TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno) 218 ); 219 220 TRACE_EVENT(i915_gem_request_retire, 221 222 TP_PROTO(struct drm_device *dev, u32 seqno), 223 224 TP_ARGS(dev, seqno), 225 226 TP_STRUCT__entry( 227 __field(u32, dev) 228 __field(u32, seqno) 229 ), 230 231 TP_fast_assign( 232 __entry->dev = dev->primary->index; 233 __entry->seqno = seqno; 234 ), 235 236 TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno) 237 ); 238 239 TRACE_EVENT(i915_gem_request_wait_begin, 240 241 TP_PROTO(struct drm_device *dev, u32 seqno), 242 243 TP_ARGS(dev, seqno), 244 245 TP_STRUCT__entry( 246 __field(u32, dev) 247 __field(u32, seqno) 248 ), 249 250 TP_fast_assign( 251 __entry->dev = dev->primary->index; 252 __entry->seqno = seqno; 253 ), 254 255 TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno) 256 ); 257 258 TRACE_EVENT(i915_gem_request_wait_end, 259 260 TP_PROTO(struct drm_device *dev, u32 seqno), 261 262 TP_ARGS(dev, seqno), 263 264 TP_STRUCT__entry( 265 __field(u32, dev) 266 __field(u32, seqno) 267 ), 268 269 TP_fast_assign( 270 __entry->dev = dev->primary->index; 271 __entry->seqno = seqno; 272 ), 273 274 TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno) 275 ); 276 277 TRACE_EVENT(i915_ring_wait_begin, 278 279 TP_PROTO(struct drm_device *dev), 280 281 TP_ARGS(dev), 282 283 TP_STRUCT__entry( 284 __field(u32, dev) 285 ), 286 287 TP_fast_assign( 288 __entry->dev = dev->primary->index; 289 ), 290 291 TP_printk("dev=%u", __entry->dev) 292 ); 293 294 TRACE_EVENT(i915_ring_wait_end, 295 296 TP_PROTO(struct drm_device *dev), 297 298 TP_ARGS(dev), 299 300 TP_STRUCT__entry( 301 __field(u32, dev) 302 ), 303 304 TP_fast_assign( 305 __entry->dev = dev->primary->index; 306 ), 307 308 TP_printk("dev=%u", __entry->dev) 309 ); 310 311 #endif /* _I915_TRACE_H_ */ 312 313 /* This part must be outside protection */ 314 #undef TRACE_INCLUDE_PATH 315 #define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/i915 316 #include <trace/define_trace.h> 317