i915_trace.h 6.4 KB
Newer Older
C
Chris Wilson 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
#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>

#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,

	    TP_PROTO(struct drm_gem_object *obj),

	    TP_ARGS(obj),

	    TP_STRUCT__entry(
			     __field(struct drm_gem_object *, obj)
			     __field(u32, size)
			     ),

	    TP_fast_assign(
			   __entry->obj = obj;
			   __entry->size = obj->size;
			   ),

	    TP_printk("obj=%p, size=%u", __entry->obj, __entry->size)
);

TRACE_EVENT(i915_gem_object_bind,

	    TP_PROTO(struct drm_gem_object *obj, u32 gtt_offset),

	    TP_ARGS(obj, gtt_offset),

	    TP_STRUCT__entry(
			     __field(struct drm_gem_object *, obj)
			     __field(u32, gtt_offset)
			     ),

	    TP_fast_assign(
			   __entry->obj = obj;
			   __entry->gtt_offset = gtt_offset;
			   ),

	    TP_printk("obj=%p, gtt_offset=%08x",
		      __entry->obj, __entry->gtt_offset)
);

TRACE_EVENT(i915_gem_object_change_domain,

	    TP_PROTO(struct drm_gem_object *obj, uint32_t old_read_domains, uint32_t old_write_domain),

	    TP_ARGS(obj, old_read_domains, old_write_domain),

	    TP_STRUCT__entry(
			     __field(struct drm_gem_object *, obj)
			     __field(u32, read_domains)
			     __field(u32, write_domain)
			     ),

	    TP_fast_assign(
			   __entry->obj = obj;
			   __entry->read_domains = obj->read_domains | (old_read_domains << 16);
			   __entry->write_domain = obj->write_domain | (old_write_domain << 16);
			   ),

	    TP_printk("obj=%p, read=%04x, write=%04x",
		      __entry->obj,
		      __entry->read_domains, __entry->write_domain)
);

TRACE_EVENT(i915_gem_object_get_fence,

	    TP_PROTO(struct drm_gem_object *obj, int fence, int tiling_mode),

	    TP_ARGS(obj, fence, tiling_mode),

	    TP_STRUCT__entry(
			     __field(struct drm_gem_object *, obj)
			     __field(int, fence)
			     __field(int, tiling_mode)
			     ),

	    TP_fast_assign(
			   __entry->obj = obj;
			   __entry->fence = fence;
			   __entry->tiling_mode = tiling_mode;
			   ),

	    TP_printk("obj=%p, fence=%d, tiling=%d",
		      __entry->obj, __entry->fence, __entry->tiling_mode)
);

101
DECLARE_EVENT_CLASS(i915_gem_object,
C
Chris Wilson 已提交
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

	    TP_PROTO(struct drm_gem_object *obj),

	    TP_ARGS(obj),

	    TP_STRUCT__entry(
			     __field(struct drm_gem_object *, obj)
			     ),

	    TP_fast_assign(
			   __entry->obj = obj;
			   ),

	    TP_printk("obj=%p", __entry->obj)
);

118 119 120 121 122 123 124
DEFINE_EVENT(i915_gem_object, i915_gem_object_clflush,

	    TP_PROTO(struct drm_gem_object *obj),

	    TP_ARGS(obj)
);

125
DEFINE_EVENT(i915_gem_object, i915_gem_object_unbind,
C
Chris Wilson 已提交
126 127 128

	    TP_PROTO(struct drm_gem_object *obj),

129 130
	    TP_ARGS(obj)
);
C
Chris Wilson 已提交
131

132
DEFINE_EVENT(i915_gem_object, i915_gem_object_destroy,
C
Chris Wilson 已提交
133

134
	    TP_PROTO(struct drm_gem_object *obj),
C
Chris Wilson 已提交
135

136
	    TP_ARGS(obj)
C
Chris Wilson 已提交
137 138 139 140 141 142 143 144 145 146 147
);

/* batch tracing */

TRACE_EVENT(i915_gem_request_submit,

	    TP_PROTO(struct drm_device *dev, u32 seqno),

	    TP_ARGS(dev, seqno),

	    TP_STRUCT__entry(
148
			     __field(u32, dev)
C
Chris Wilson 已提交
149 150 151 152
			     __field(u32, seqno)
			     ),

	    TP_fast_assign(
153
			   __entry->dev = dev->primary->index;
C
Chris Wilson 已提交
154
			   __entry->seqno = seqno;
155
			   i915_trace_irq_get(dev, seqno);
C
Chris Wilson 已提交
156 157
			   ),

158
	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
C
Chris Wilson 已提交
159 160 161 162 163 164 165 166 167 168
);

TRACE_EVENT(i915_gem_request_flush,

	    TP_PROTO(struct drm_device *dev, u32 seqno,
		     u32 flush_domains, u32 invalidate_domains),

	    TP_ARGS(dev, seqno, flush_domains, invalidate_domains),

	    TP_STRUCT__entry(
169
			     __field(u32, dev)
C
Chris Wilson 已提交
170 171 172 173 174 175
			     __field(u32, seqno)
			     __field(u32, flush_domains)
			     __field(u32, invalidate_domains)
			     ),

	    TP_fast_assign(
176
			   __entry->dev = dev->primary->index;
C
Chris Wilson 已提交
177 178 179 180 181
			   __entry->seqno = seqno;
			   __entry->flush_domains = flush_domains;
			   __entry->invalidate_domains = invalidate_domains;
			   ),

182
	    TP_printk("dev=%u, seqno=%u, flush=%04x, invalidate=%04x",
C
Chris Wilson 已提交
183 184 185 186
		      __entry->dev, __entry->seqno,
		      __entry->flush_domains, __entry->invalidate_domains)
);

187
DECLARE_EVENT_CLASS(i915_gem_request,
C
Chris Wilson 已提交
188 189 190 191 192 193

	    TP_PROTO(struct drm_device *dev, u32 seqno),

	    TP_ARGS(dev, seqno),

	    TP_STRUCT__entry(
194
			     __field(u32, dev)
C
Chris Wilson 已提交
195 196 197 198
			     __field(u32, seqno)
			     ),

	    TP_fast_assign(
199
			   __entry->dev = dev->primary->index;
C
Chris Wilson 已提交
200 201 202
			   __entry->seqno = seqno;
			   ),

203
	    TP_printk("dev=%u, seqno=%u", __entry->dev, __entry->seqno)
C
Chris Wilson 已提交
204 205
);

206
DEFINE_EVENT(i915_gem_request, i915_gem_request_complete,
C
Chris Wilson 已提交
207 208 209

	    TP_PROTO(struct drm_device *dev, u32 seqno),

210
	    TP_ARGS(dev, seqno)
C
Chris Wilson 已提交
211 212
);

213
DEFINE_EVENT(i915_gem_request, i915_gem_request_retire,
C
Chris Wilson 已提交
214 215 216

	    TP_PROTO(struct drm_device *dev, u32 seqno),

217
	    TP_ARGS(dev, seqno)
C
Chris Wilson 已提交
218 219
);

220
DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_begin,
C
Chris Wilson 已提交
221 222 223

	    TP_PROTO(struct drm_device *dev, u32 seqno),

224 225
	    TP_ARGS(dev, seqno)
);
C
Chris Wilson 已提交
226

227
DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end,
C
Chris Wilson 已提交
228

229
	    TP_PROTO(struct drm_device *dev, u32 seqno),
C
Chris Wilson 已提交
230

231
	    TP_ARGS(dev, seqno)
C
Chris Wilson 已提交
232 233
);

234
DECLARE_EVENT_CLASS(i915_ring,
C
Chris Wilson 已提交
235 236 237 238 239 240

	    TP_PROTO(struct drm_device *dev),

	    TP_ARGS(dev),

	    TP_STRUCT__entry(
241
			     __field(u32, dev)
C
Chris Wilson 已提交
242 243 244
			     ),

	    TP_fast_assign(
245
			   __entry->dev = dev->primary->index;
C
Chris Wilson 已提交
246 247
			   ),

248
	    TP_printk("dev=%u", __entry->dev)
C
Chris Wilson 已提交
249 250
);

251
DEFINE_EVENT(i915_ring, i915_ring_wait_begin,
C
Chris Wilson 已提交
252 253 254

	    TP_PROTO(struct drm_device *dev),

255 256
	    TP_ARGS(dev)
);
C
Chris Wilson 已提交
257

258
DEFINE_EVENT(i915_ring, i915_ring_wait_end,
C
Chris Wilson 已提交
259

260
	    TP_PROTO(struct drm_device *dev),
C
Chris Wilson 已提交
261

262
	    TP_ARGS(dev)
C
Chris Wilson 已提交
263 264
);

265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300
TRACE_EVENT(i915_flip_request,
	    TP_PROTO(int plane, struct drm_gem_object *obj),

	    TP_ARGS(plane, obj),

	    TP_STRUCT__entry(
		    __field(int, plane)
		    __field(struct drm_gem_object *, obj)
		    ),

	    TP_fast_assign(
		    __entry->plane = plane;
		    __entry->obj = obj;
		    ),

	    TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
);

TRACE_EVENT(i915_flip_complete,
	    TP_PROTO(int plane, struct drm_gem_object *obj),

	    TP_ARGS(plane, obj),

	    TP_STRUCT__entry(
		    __field(int, plane)
		    __field(struct drm_gem_object *, obj)
		    ),

	    TP_fast_assign(
		    __entry->plane = plane;
		    __entry->obj = obj;
		    ),

	    TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)
);

C
Chris Wilson 已提交
301 302 303 304
#endif /* _I915_TRACE_H_ */

/* This part must be outside protection */
#undef TRACE_INCLUDE_PATH
P
Peter Clifton 已提交
305
#define TRACE_INCLUDE_PATH .
C
Chris Wilson 已提交
306
#include <trace/define_trace.h>