[Intel-gfx] [PATCH] drm/i915: Trace context switches

Chris Wilson chris at chris-wilson.co.uk
Thu Aug 29 14:34:30 CEST 2013


Add a tracepoint for monitoring context switching.

Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_gem_context.c |  2 ++
 drivers/gpu/drm/i915/i915_trace.h       | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index fae2f4d..6d7a662 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -361,6 +361,8 @@ mi_set_context(struct intel_ring_buffer *ring,
 			return ret;
 	}
 
+	trace_i915_gem_ring_switch_context(ring, new_context, hw_flags);
+
 	len = 4;
 	switch (INTEL_INFO(ring->dev)->gen) {
 	case 7:
diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
index 163774a..c474a30 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -254,6 +254,28 @@ TRACE_EVENT(i915_gem_ring_sync_to,
 	    TP_printk("dev=%u, sync-from=%u, sync-to=%u", __entry->dev, __entry->sync_from, __entry->sync_to)
 );
 
+TRACE_EVENT(i915_gem_ring_switch_context,
+	    TP_PROTO(struct intel_ring_buffer *ring, struct i915_hw_context *ctx, u32 flags),
+	    TP_ARGS(ring, ctx, flags),
+
+	    TP_STRUCT__entry(
+			     __field(u32, dev)
+			     __field(u32, ring)
+			     __field(u32, ctx)
+			     __field(u32, flags)
+			     ),
+
+	    TP_fast_assign(
+			   __entry->dev = ring->dev->primary->index;
+			   __entry->ring = ring->id;
+			   __entry->ctx = ctx->id;
+			   __entry->flags = flags;
+			   ),
+
+	    TP_printk("dev=%u, ring=%u, ctx=%u, flags=0x%08x",
+		      __entry->dev, __entry->ring, __entry->ctx, __entry->flags)
+);
+
 TRACE_EVENT(i915_gem_ring_dispatch,
 	    TP_PROTO(struct intel_ring_buffer *ring, u32 flags),
 	    TP_ARGS(ring, flags),
-- 
1.8.4.rc3




More information about the Intel-gfx mailing list