From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/6] drm/i915: Provide a cheap ggtt vma lookup Date: Tue, 24 Sep 2013 21:11:23 +0200 Message-ID: <20130924191122.GC12663@phenom.ffwll.local> References: <1380041881-3397-1-git-send-email-benjamin.widawsky@intel.com> <1380041881-3397-2-git-send-email-benjamin.widawsky@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-ea0-f176.google.com (mail-ea0-f176.google.com [209.85.215.176]) by gabe.freedesktop.org (Postfix) with ESMTP id CEF50E74E9 for ; Tue, 24 Sep 2013 12:11:05 -0700 (PDT) Received: by mail-ea0-f176.google.com with SMTP id q16so2694929ead.35 for ; Tue, 24 Sep 2013 12:11:05 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1380041881-3397-2-git-send-email-benjamin.widawsky@intel.com> 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: Ben Widawsky Cc: Intel GFX , Ben Widawsky List-Id: intel-gfx@lists.freedesktop.org On Tue, Sep 24, 2013 at 09:57:57AM -0700, Ben Widawsky wrote: > "We do fairly often lookup the ggtt vma for an obj." - Chris Wilson. As > such, provide a function to offer slightly cheaper access to the vma. > Not performance tested. By my quick estimation it saves at least 3 > pointer dereferences from the existing mechanism. > > This patch mostly matches code from Chris in > <20130911221430.GB7825@nuc-i3427.alporthouse.com> > > Reviewed-by: Chris Wilson > Signed-off-by: Ben Widawsky > --- > drivers/gpu/drm/i915/i915_drv.h | 4 +++- > drivers/gpu/drm/i915/i915_gem.c | 17 +++++++++++++++-- > 2 files changed, 18 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 07de53c..67a31c2 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -2026,6 +2026,9 @@ struct i915_vma *i915_gem_obj_to_vma(struct drm_i915_gem_object *obj, > struct i915_vma * > i915_gem_obj_lookup_or_create_vma(struct drm_i915_gem_object *obj, > struct i915_address_space *vm); > + > +struct i915_vma *i915_gem_obj_to_ggtt(struct drm_i915_gem_object *obj); > + > /* Some GGTT VM helpers */ > #define obj_to_ggtt(obj) \ > (&((struct drm_i915_private *)(obj)->base.dev->dev_private)->gtt.base) > @@ -2062,7 +2065,6 @@ i915_gem_obj_ggtt_pin(struct drm_i915_gem_object *obj, > return i915_gem_object_pin(obj, obj_to_ggtt(obj), alignment, > map_and_fenceable, nonblocking); > } > -#undef obj_to_ggtt Bikeshed police: obj_to_gtt should probably be a static inline function and also might need a bit a prefix now ... -Daniel > > /* i915_gem_context.c */ > void i915_gem_context_init(struct drm_device *dev); > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 8450724..6b134f0 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -3403,8 +3403,7 @@ i915_gem_object_set_to_gtt_domain(struct drm_i915_gem_object *obj, bool write) > > /* And bump the LRU for this access */ > if (i915_gem_object_is_inactive(obj)) { > - struct i915_vma *vma = i915_gem_obj_to_vma(obj, > - &dev_priv->gtt.base); > + struct i915_vma *vma = i915_gem_obj_to_ggtt(obj); > if (vma) > list_move_tail(&vma->mm_list, > &dev_priv->gtt.base.inactive_list); > @@ -4940,3 +4939,17 @@ unsigned long i915_gem_obj_size(struct drm_i915_gem_object *o, > > return 0; > } > + > +struct i915_vma *i915_gem_obj_to_ggtt(struct drm_i915_gem_object *obj) > +{ > + struct i915_vma *vma; > + > + if (WARN_ON(list_empty(&obj->vma_list))) > + return NULL; > + > + vma = list_first_entry(&obj->vma_list, typeof(*vma), vma_link); > + if (WARN_ON(vma->vm != obj_to_ggtt(obj))) > + return NULL; > + > + return vma; > +} > -- > 1.8.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch