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: Mon, 26 Aug 2013 16:20:06 +0300 Message-ID: <20130826132006.GR11428@intel.com> References: <1377521181-10379-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 mga14.intel.com (mga14.intel.com [143.182.124.37]) by gabe.freedesktop.org (Postfix) with ESMTP id DB63AE64F1 for ; Mon, 26 Aug 2013 06:20:09 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1377521181-10379-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 Mon, Aug 26, 2013 at 01:46:21PM +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! I was staring at the semaphore code a bit recently, and I was wondering if it would make sense to do a manual seqno check (against the ring's current seqno, not just the last sync_seqno) before we decide to add the semaphore into the ring? > = > Signed-off-by: Chris Wilson > --- > drivers/gpu/drm/i915/i915_gem.c | 2 ++ > drivers/gpu/drm/i915/i915_trace.h | 19 +++++++++++++++++++ > 2 files changed, 21 insertions(+) > = > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_= gem.c > index 85537d1..0122278 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -2698,6 +2698,8 @@ i915_gem_object_sync(struct drm_i915_gem_object *ob= j, > if (ret) > return ret; > = > + trace_i915_gem_object_sync(obj, to); > + > ret =3D to->sync_to(to, from, seqno); > 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 feaacbb..728c43b 100644 > --- a/drivers/gpu/drm/i915/i915_trace.h > +++ b/drivers/gpu/drm/i915/i915_trace.h > @@ -33,6 +33,25 @@ TRACE_EVENT(i915_gem_object_create, > TP_printk("obj=3D%p, size=3D%u", __entry->obj, __entry->size) > ); > = > +TRACE_EVENT(i915_gem_object_sync, > + TP_PROTO(struct drm_i915_gem_object *obj, struct intel_ring_buffer = *to), > + TP_ARGS(obj, to), > + > + TP_STRUCT__entry( > + __field(struct drm_i915_gem_object *, obj) > + __field(u32, sync_from) > + __field(u32, sync_to) > + ), > + > + TP_fast_assign( > + __entry->obj =3D obj; > + __entry->sync_from =3D obj->ring->id; > + __entry->sync_to =3D to->id; > + ), > + > + TP_printk("obj=3D%p, sync-from=3D%u, sync-to=3D%u", __entry->obj, _= _entry->sync_from, __entry->sync_to) > +); > + > TRACE_EVENT(i915_vma_bind, > TP_PROTO(struct i915_vma *vma, bool mappable), > TP_ARGS(vma, mappable), > -- = > 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