Message ID | 1392925627-6033-1-git-send-email-benjamin.widawsky@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, 2014-02-20 at 11:47 -0800, Ben Widawsky wrote: > At one time it was expected to be called in multiple places by kref_put. > At the current time however, it is all contained within > i915_gem_context.c. > > This patch makes an upcoming required addition a bit nicer since it too > doesn't need to be defined in a header file. > > Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Reviewed-by: Imre Deak <imre.deak@intel.com> > --- > drivers/gpu/drm/i915/i915_drv.h | 36 --------------------------------- > drivers/gpu/drm/i915/i915_gem_context.c | 36 +++++++++++++++++++++++++++++++++ > 2 files changed, 36 insertions(+), 36 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 8c64831..57556fb 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -2387,42 +2387,6 @@ static inline bool intel_enable_ppgtt(struct drm_device *dev, bool full) > return HAS_ALIASING_PPGTT(dev); > } > > -static inline void ppgtt_release(struct kref *kref) > -{ > - struct i915_hw_ppgtt *ppgtt = container_of(kref, struct i915_hw_ppgtt, ref); > - struct drm_device *dev = ppgtt->base.dev; > - struct drm_i915_private *dev_priv = dev->dev_private; > - struct i915_address_space *vm = &ppgtt->base; > - > - if (ppgtt == dev_priv->mm.aliasing_ppgtt || > - (list_empty(&vm->active_list) && list_empty(&vm->inactive_list))) { > - ppgtt->base.cleanup(&ppgtt->base); > - return; > - } > - > - /* > - * Make sure vmas are unbound before we take down the drm_mm > - * > - * FIXME: Proper refcounting should take care of this, this shouldn't be > - * needed at all. > - */ > - if (!list_empty(&vm->active_list)) { > - struct i915_vma *vma; > - > - list_for_each_entry(vma, &vm->active_list, mm_list) > - if (WARN_ON(list_empty(&vma->vma_link) || > - list_is_singular(&vma->vma_link))) > - break; > - > - i915_gem_evict_vm(&ppgtt->base, true); > - } else { > - i915_gem_retire_requests(dev); > - i915_gem_evict_vm(&ppgtt->base, false); > - } > - > - ppgtt->base.cleanup(&ppgtt->base); > -} > - > /* i915_gem_stolen.c */ > int i915_gem_init_stolen(struct drm_device *dev); > int i915_gem_stolen_setup_compression(struct drm_device *dev, int size); > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c > index f8c21a6..171a2ef 100644 > --- a/drivers/gpu/drm/i915/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/i915_gem_context.c > @@ -99,6 +99,42 @@ > static int do_switch(struct intel_ring_buffer *ring, > struct i915_hw_context *to); > > +static void ppgtt_release(struct kref *kref) > +{ > + struct i915_hw_ppgtt *ppgtt = container_of(kref, struct i915_hw_ppgtt, ref); > + struct drm_device *dev = ppgtt->base.dev; > + struct drm_i915_private *dev_priv = dev->dev_private; > + struct i915_address_space *vm = &ppgtt->base; > + > + if (ppgtt == dev_priv->mm.aliasing_ppgtt || > + (list_empty(&vm->active_list) && list_empty(&vm->inactive_list))) { > + ppgtt->base.cleanup(&ppgtt->base); > + return; > + } > + > + /* > + * Make sure vmas are unbound before we take down the drm_mm > + * > + * FIXME: Proper refcounting should take care of this, this shouldn't be > + * needed at all. > + */ > + if (!list_empty(&vm->active_list)) { > + struct i915_vma *vma; > + > + list_for_each_entry(vma, &vm->active_list, mm_list) > + if (WARN_ON(list_empty(&vma->vma_link) || > + list_is_singular(&vma->vma_link))) > + break; > + > + i915_gem_evict_vm(&ppgtt->base, true); > + } else { > + i915_gem_retire_requests(dev); > + i915_gem_evict_vm(&ppgtt->base, false); > + } > + > + ppgtt->base.cleanup(&ppgtt->base); > +} > + > static size_t get_context_alignment(struct drm_device *dev) > { > if (IS_GEN6(dev))
On Thu, Feb 20, 2014 at 11:47:06AM -0800, Ben Widawsky wrote: > At one time it was expected to be called in multiple places by kref_put. > At the current time however, it is all contained within > i915_gem_context.c. > > This patch makes an upcoming required addition a bit nicer since it too > doesn't need to be defined in a header file. > > Signed-off-by: Ben Widawsky <ben@bwidawsk.net> I'm ridiculously happy to see this get out of the header file, it should never have been there. Really. *original reply heavily redacted* ;-) Cheers, Daniel > --- > drivers/gpu/drm/i915/i915_drv.h | 36 --------------------------------- > drivers/gpu/drm/i915/i915_gem_context.c | 36 +++++++++++++++++++++++++++++++++ > 2 files changed, 36 insertions(+), 36 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 8c64831..57556fb 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -2387,42 +2387,6 @@ static inline bool intel_enable_ppgtt(struct drm_device *dev, bool full) > return HAS_ALIASING_PPGTT(dev); > } > > -static inline void ppgtt_release(struct kref *kref) > -{ > - struct i915_hw_ppgtt *ppgtt = container_of(kref, struct i915_hw_ppgtt, ref); > - struct drm_device *dev = ppgtt->base.dev; > - struct drm_i915_private *dev_priv = dev->dev_private; > - struct i915_address_space *vm = &ppgtt->base; > - > - if (ppgtt == dev_priv->mm.aliasing_ppgtt || > - (list_empty(&vm->active_list) && list_empty(&vm->inactive_list))) { > - ppgtt->base.cleanup(&ppgtt->base); > - return; > - } > - > - /* > - * Make sure vmas are unbound before we take down the drm_mm > - * > - * FIXME: Proper refcounting should take care of this, this shouldn't be > - * needed at all. > - */ > - if (!list_empty(&vm->active_list)) { > - struct i915_vma *vma; > - > - list_for_each_entry(vma, &vm->active_list, mm_list) > - if (WARN_ON(list_empty(&vma->vma_link) || > - list_is_singular(&vma->vma_link))) > - break; > - > - i915_gem_evict_vm(&ppgtt->base, true); > - } else { > - i915_gem_retire_requests(dev); > - i915_gem_evict_vm(&ppgtt->base, false); > - } > - > - ppgtt->base.cleanup(&ppgtt->base); > -} > - > /* i915_gem_stolen.c */ > int i915_gem_init_stolen(struct drm_device *dev); > int i915_gem_stolen_setup_compression(struct drm_device *dev, int size); > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c > index f8c21a6..171a2ef 100644 > --- a/drivers/gpu/drm/i915/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/i915_gem_context.c > @@ -99,6 +99,42 @@ > static int do_switch(struct intel_ring_buffer *ring, > struct i915_hw_context *to); > > +static void ppgtt_release(struct kref *kref) > +{ > + struct i915_hw_ppgtt *ppgtt = container_of(kref, struct i915_hw_ppgtt, ref); > + struct drm_device *dev = ppgtt->base.dev; > + struct drm_i915_private *dev_priv = dev->dev_private; > + struct i915_address_space *vm = &ppgtt->base; > + > + if (ppgtt == dev_priv->mm.aliasing_ppgtt || > + (list_empty(&vm->active_list) && list_empty(&vm->inactive_list))) { > + ppgtt->base.cleanup(&ppgtt->base); > + return; > + } > + > + /* > + * Make sure vmas are unbound before we take down the drm_mm > + * > + * FIXME: Proper refcounting should take care of this, this shouldn't be > + * needed at all. > + */ > + if (!list_empty(&vm->active_list)) { > + struct i915_vma *vma; > + > + list_for_each_entry(vma, &vm->active_list, mm_list) > + if (WARN_ON(list_empty(&vma->vma_link) || > + list_is_singular(&vma->vma_link))) > + break; > + > + i915_gem_evict_vm(&ppgtt->base, true); > + } else { > + i915_gem_retire_requests(dev); > + i915_gem_evict_vm(&ppgtt->base, false); > + } > + > + ppgtt->base.cleanup(&ppgtt->base); > +} > + > static size_t get_context_alignment(struct drm_device *dev) > { > if (IS_GEN6(dev)) > -- > 1.9.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 8c64831..57556fb 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -2387,42 +2387,6 @@ static inline bool intel_enable_ppgtt(struct drm_device *dev, bool full) return HAS_ALIASING_PPGTT(dev); } -static inline void ppgtt_release(struct kref *kref) -{ - struct i915_hw_ppgtt *ppgtt = container_of(kref, struct i915_hw_ppgtt, ref); - struct drm_device *dev = ppgtt->base.dev; - struct drm_i915_private *dev_priv = dev->dev_private; - struct i915_address_space *vm = &ppgtt->base; - - if (ppgtt == dev_priv->mm.aliasing_ppgtt || - (list_empty(&vm->active_list) && list_empty(&vm->inactive_list))) { - ppgtt->base.cleanup(&ppgtt->base); - return; - } - - /* - * Make sure vmas are unbound before we take down the drm_mm - * - * FIXME: Proper refcounting should take care of this, this shouldn't be - * needed at all. - */ - if (!list_empty(&vm->active_list)) { - struct i915_vma *vma; - - list_for_each_entry(vma, &vm->active_list, mm_list) - if (WARN_ON(list_empty(&vma->vma_link) || - list_is_singular(&vma->vma_link))) - break; - - i915_gem_evict_vm(&ppgtt->base, true); - } else { - i915_gem_retire_requests(dev); - i915_gem_evict_vm(&ppgtt->base, false); - } - - ppgtt->base.cleanup(&ppgtt->base); -} - /* i915_gem_stolen.c */ int i915_gem_init_stolen(struct drm_device *dev); int i915_gem_stolen_setup_compression(struct drm_device *dev, int size); diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c index f8c21a6..171a2ef 100644 --- a/drivers/gpu/drm/i915/i915_gem_context.c +++ b/drivers/gpu/drm/i915/i915_gem_context.c @@ -99,6 +99,42 @@ static int do_switch(struct intel_ring_buffer *ring, struct i915_hw_context *to); +static void ppgtt_release(struct kref *kref) +{ + struct i915_hw_ppgtt *ppgtt = container_of(kref, struct i915_hw_ppgtt, ref); + struct drm_device *dev = ppgtt->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct i915_address_space *vm = &ppgtt->base; + + if (ppgtt == dev_priv->mm.aliasing_ppgtt || + (list_empty(&vm->active_list) && list_empty(&vm->inactive_list))) { + ppgtt->base.cleanup(&ppgtt->base); + return; + } + + /* + * Make sure vmas are unbound before we take down the drm_mm + * + * FIXME: Proper refcounting should take care of this, this shouldn't be + * needed at all. + */ + if (!list_empty(&vm->active_list)) { + struct i915_vma *vma; + + list_for_each_entry(vma, &vm->active_list, mm_list) + if (WARN_ON(list_empty(&vma->vma_link) || + list_is_singular(&vma->vma_link))) + break; + + i915_gem_evict_vm(&ppgtt->base, true); + } else { + i915_gem_retire_requests(dev); + i915_gem_evict_vm(&ppgtt->base, false); + } + + ppgtt->base.cleanup(&ppgtt->base); +} + static size_t get_context_alignment(struct drm_device *dev) { if (IS_GEN6(dev))
At one time it was expected to be called in multiple places by kref_put. At the current time however, it is all contained within i915_gem_context.c. This patch makes an upcoming required addition a bit nicer since it too doesn't need to be defined in a header file. Signed-off-by: Ben Widawsky <ben@bwidawsk.net> --- drivers/gpu/drm/i915/i915_drv.h | 36 --------------------------------- drivers/gpu/drm/i915/i915_gem_context.c | 36 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 36 deletions(-)