[Intel-gfx] [PATCH] drm/i915/execlists: Log fence context & seqno throughout GEM_TRACE

Chris Wilson chris at chris-wilson.co.uk
Fri Apr 6 10:03:07 UTC 2018


Quoting Tvrtko Ursulin (2018-04-06 10:54:57)
> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> 
> Include fence context and seqno in low level tracing so it is easier to
> follow flows of individual requests when things go bad.
> 
> Also added tracing on the reset side of things.
> 
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_lrc.c | 19 ++++++++++++++-----
>  1 file changed, 14 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index f6631ff11caf..a5cd698a2e3c 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -468,10 +468,11 @@ static void execlists_submit_ports(struct intel_engine_cs *engine)
>                         desc = execlists_update_context(rq);
>                         GEM_DEBUG_EXEC(port[n].context_id = upper_32_bits(desc));
>  
> -                       GEM_TRACE("%s in[%d]:  ctx=%d.%d, seqno=%d (current %d), prio=%d\n",
> +                       GEM_TRACE("%s in[%d]:  ctx=%d.%d, seqno=%d (fence %llx:%d) (current %d), prio=%d\n",

We mix seqno=%d and global_seqno=%d. Please fix my inconsistency. :)

Using seqno is fine as we've standardised on calling the other (fence
x:y).

>                                   engine->name, n,
>                                   port[n].context_id, count,
>                                   rq->global_seqno,
> +                                 rq->fence.context, rq->fence.seqno,
>                                   intel_engine_get_seqno(engine),
>                                   rq_prio(rq));
>                 } else {
> @@ -742,6 +743,10 @@ execlists_cancel_port_requests(struct intel_engine_execlists * const execlists)
>         while (num_ports-- && port_isset(port)) {
>                 struct i915_request *rq = port_request(port);
>  
> +               GEM_TRACE("%s:port%lu fence %llx:%d (current %d)\n",
> +                         rq->engine->name, port - execlists->port,
> +                         rq->fence.context, rq->fence.seqno, rq->global_seqno);

Please always keep current == intel_engine_get_seqno(). So _also_ add
seqno=%d.

Hmm, do want to use x=y, or "x: y", or "x y". Again, we might as well
stick to our internal rules for notation. Actually I'd love to adopt a
yaml approach { x: value; y: value }. (But until we have yaml output
throughout, the inconsistency might be annoying ;) Basically I'm
thinking from a scripting aspect, the very least being grep or ^F.

Overall, a very big "yes please" to the improvements.
-Chris


More information about the Intel-gfx mailing list