[Intel-gfx] [PATCH v6] drm/i915: Add tracepoints to track a vm during its lifetime

Chris Wilson chris at chris-wilson.co.uk
Sat Nov 8 09:44:22 CET 2014


On Fri, Nov 07, 2014 at 05:45:01PM +0000, daniele.ceraolospurio at intel.com wrote:
> +/**
> + * DOC: execlist_submit_context tracepoint
> + *
> + * These tracepoint are used to track the contexts that are submitted to the
> + * ring. An mm switch is automatically performed by the GPU during the context
> + * switch. Given the fact that the mm switch is an important point in the
> + * lifetime of a vm, the vm assigned to the context is also printed by the
> + * tracepoint when full ppgtt is enabled.
> + */
> +TRACE_EVENT(execlists_submit_context,
> +	TP_PROTO(struct intel_engine_cs *ring, u32 to_num, struct intel_context *to),
> +
> +	TP_ARGS(ring, to_num, to),
> +
> +	TP_STRUCT__entry(
> +			__field(u32, ring)
> +			__field(u32, to_num)
> +			__field(struct intel_context *, to)
> +			__field(struct i915_address_space *, vm)
> +			__field(u32, dev)
> +	),
> +
> +	TP_fast_assign(
> +			__entry->ring = ring->id;
> +			__entry->to_num = to_num;
> +			__entry->to = to;
> +			__entry->vm = to->ppgtt ? &to->ppgtt->base : NULL;
> +			__entry->dev = ring->dev->primary->index;
> +	),
> +
> +	TP_printk("dev=%u, ring=%u, ctx%d=%p, ctx_vm=%p",
> +		  __entry->dev, __entry->ring,
> +		  __entry->to_num, __entry->to, __entry->vm)
> +);
> +
>  #endif /* _I915_TRACE_H_ */
>  
>  /* This part must be outside protection */
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 6025ac7..e72759d 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -135,6 +135,7 @@
>  #include <drm/drmP.h>
>  #include <drm/i915_drm.h>
>  #include "i915_drv.h"
> +#include "i915_trace.h"
>  
>  #define GEN8_LR_CONTEXT_RENDER_SIZE (20 * PAGE_SIZE)
>  #define GEN8_LR_CONTEXT_OTHER_SIZE (2 * PAGE_SIZE)
> @@ -367,6 +368,7 @@ static void execlists_submit_contexts(struct intel_engine_cs *ring,
>  	BUG_ON(!ctx_obj0);
>  	WARN_ON(!i915_gem_obj_is_pinned(ctx_obj0));
>  
> +	trace_execlists_submit_context(ring, 0, to0);
>  	execlists_ctx_write_tail(ctx_obj0, tail0);

This is very tenuous. This is not part of the context lifetime but of
the request.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre



More information about the Intel-gfx mailing list