i915_trace.h 5.6 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
);

#endif /* _I915_TRACE_H_ */

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