On Tue, Feb 21, 2017 at 09:13:45AM +0000, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > > Provide the same information as the other request event classes. > > v2: Pass in flags so we can properly report the blocking status. > (Chris Wilson) > > v3: Log hex with 0x prefix for clarity. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem_request.c | 2 +- > drivers/gpu/drm/i915/i915_trace.h | 21 +++++++++++++-------- > 2 files changed, 14 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_request.c b/drivers/gpu/drm/i915/i915_gem_request.c > index a5fac40d2a4f..543cef57972b 100644 > --- a/drivers/gpu/drm/i915/i915_gem_request.c > +++ b/drivers/gpu/drm/i915/i915_gem_request.c > @@ -1092,7 +1092,7 @@ long i915_wait_request(struct drm_i915_gem_request *req, > if (!timeout) > return -ETIME; > > - trace_i915_gem_request_wait_begin(req); > + trace_i915_gem_request_wait_begin(req, flags); > > if (!i915_sw_fence_done(&req->execute)) { > timeout = __i915_request_wait_for_execute(req, flags, timeout); > diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h > index d9ade8c38f92..916aadbb5389 100644 > --- a/drivers/gpu/drm/i915/i915_trace.h > +++ b/drivers/gpu/drm/i915/i915_trace.h > @@ -508,13 +508,16 @@ DEFINE_EVENT(i915_gem_request, i915_gem_request_complete, > ); > > TRACE_EVENT(i915_gem_request_wait_begin, > - TP_PROTO(struct drm_i915_gem_request *req), > - TP_ARGS(req), > + TP_PROTO(struct drm_i915_gem_request *req, unsigned int flags), > + TP_ARGS(req, flags), > > TP_STRUCT__entry( > __field(u32, dev) > __field(u32, ring) > + __field(u32, ctx) > __field(u32, seqno) > + __field(u32, global) > + __field(unsigned int, flags) > __field(bool, blocking) > ), > > @@ -527,14 +530,16 @@ TRACE_EVENT(i915_gem_request_wait_begin, > TP_fast_assign( > __entry->dev = req->i915->drm.primary->index; > __entry->ring = req->engine->id; > - __entry->seqno = req->global_seqno; > - __entry->blocking = > - mutex_is_locked(&req->i915->drm.struct_mutex); > + __entry->ctx = req->ctx->hw_id; > + __entry->seqno = req->fence.seqno; > + __entry->global = req->global_seqno; > + __entry->flags = flags; > + __entry->blocking = flags & I915_WAIT_LOCKED; > ), > > - TP_printk("dev=%u, ring=%u, seqno=%u, blocking=%s", > - __entry->dev, __entry->ring, > - __entry->seqno, __entry->blocking ? "yes (NB)" : "no") > + TP_printk("dev=%u, ring=%u, ctx=%u, seqno=%u, global=%u, blocking=%u, flags=0x%x", > + __entry->dev, __entry->ring, __entry->ctx, __entry->seqno, > + __entry->global, __entry->blocking, __entry->flags) We don't need to store bool blocking, we can just pluck it out of flags in the printk. Hmm. How should we handle global changing value in the course of the wait? -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx