From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: Add a tracepoint for using a semaphore Date: Wed, 25 Sep 2013 14:29:34 +0300 Message-ID: <20130925112934.GM4531@intel.com> References: <20130925101112.GK12663@phenom.ffwll.local> <1380105808-28151-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id AC01EE61FA for ; Wed, 25 Sep 2013 04:29:37 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1380105808-28151-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org On Wed, Sep 25, 2013 at 11:43:28AM +0100, Chris Wilson wrote: > So that we can find the callers who introduce a ring stall. A single > ring stall is not too unwelcome, the right issue becomes when they start > to interlock and prevent any concurrent work. That, however, is a little > tricker to detect with a mere tracepoint! > = > v2: Rebrand it as a ring event, rather than an object event. > v3: Include the seqno in the tracepoint for posterity or something. > = > Signed-off-by: Chris Wilson > --- > drivers/gpu/drm/i915/i915_gem.c | 1 + > drivers/gpu/drm/i915/i915_trace.h | 26 ++++++++++++++++++++++++++ > 2 files changed, 27 insertions(+) > = > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_= gem.c > index 82bc029..fa3b373 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -2625,6 +2625,7 @@ i915_gem_object_sync(struct drm_i915_gem_object *ob= j, > if (ret) > return ret; > = > + trace_i915_gem_ring_sync_to(from, to, seqno); > ret =3D to->sync_to(to, from, seqno); Passing the rings in the same order to both might avoid some confusion, but I don't care enough to withhold my r-b so: Reviewed-by: Ville Syrj=E4l=E4 > if (!ret) > /* We use last_read_seqno because sync_to() > diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i91= 5_trace.h > index daa6fdf..6e580c9 100644 > --- a/drivers/gpu/drm/i915/i915_trace.h > +++ b/drivers/gpu/drm/i915/i915_trace.h > @@ -248,6 +248,32 @@ TRACE_EVENT(i915_gem_evict_vm, > TP_printk("dev=3D%d, vm=3D%p", __entry->vm->dev->primary->index, __= entry->vm) > ); > = > +TRACE_EVENT(i915_gem_ring_sync_to, > + TP_PROTO(struct intel_ring_buffer *from, > + struct intel_ring_buffer *to, > + u32 seqno), > + TP_ARGS(from, to, seqno), > + > + TP_STRUCT__entry( > + __field(u32, dev) > + __field(u32, sync_from) > + __field(u32, sync_to) > + __field(u32, seqno) > + ), > + > + TP_fast_assign( > + __entry->dev =3D from->dev->primary->index; > + __entry->sync_from =3D from->id; > + __entry->sync_to =3D to->id; > + __entry->seqno =3D seqno; > + ), > + > + TP_printk("dev=3D%u, sync-from=3D%u, sync-to=3D%u, seqno=3D%u", > + __entry->dev, > + __entry->sync_from, __entry->sync_to, > + __entry->seqno) > +); > + > TRACE_EVENT(i915_gem_ring_dispatch, > TP_PROTO(struct intel_ring_buffer *ring, u32 seqno, u32 flags), > TP_ARGS(ring, seqno, flags), > -- = > 1.8.4.rc3 > = > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- = Ville Syrj=E4l=E4 Intel OTC