On Mon, Jun 16, 2014 at 08:57:44AM +0100, Chris Wilson wrote: > An object can only have an active gtt mapping if it is currently bound > into the global gtt. Therefore we can simply walk the list of all bound > objects and check the flag upon those for an active gtt mapping. > > From commit 48018a57a8f5900e7e53ffaa0adeb784095accfb > Author: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > Date: Fri Dec 13 15:22:31 2013 -0200 > > drm/i915: release the GTT mmaps when going into D3 > > Also note that the WARN is inappropriate for this function as GPU > activity is orthogonal to GTT mmap status. Rather it is the caller that > relies upon this condition and so it should assert that the GPU is idle > itself. > > References: https://bugs.freedesktop.org/show_bug.cgi?id=80081 > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > Cc: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Reviewed-by: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > Tested-by: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> Queued for -next, thanks for the patch. -Daniel > --- > drivers/gpu/drm/i915/i915_gem.c | 25 +++++++++---------------- > 1 file changed, 9 insertions(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 1d7893c982a8..f671216031e7 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -1862,22 +1862,6 @@ out: > return ret; > } > > -void i915_gem_release_all_mmaps(struct drm_i915_private *dev_priv) > -{ > - struct i915_vma *vma; > - > - /* > - * Only the global gtt is relevant for gtt memory mappings, so restrict > - * list traversal to objects bound into the global address space. Note > - * that the active list should be empty, but better safe than sorry. > - */ > - WARN_ON(!list_empty(&dev_priv->gtt.base.active_list)); > - list_for_each_entry(vma, &dev_priv->gtt.base.active_list, mm_list) > - i915_gem_release_mmap(vma->obj); > - list_for_each_entry(vma, &dev_priv->gtt.base.inactive_list, mm_list) > - i915_gem_release_mmap(vma->obj); > -} > - > /** > * i915_gem_release_mmap - remove physical page mappings > * @obj: obj in question > @@ -1903,6 +1887,15 @@ i915_gem_release_mmap(struct drm_i915_gem_object *obj) > obj->fault_mappable = false; > } > > +void > +i915_gem_release_all_mmaps(struct drm_i915_private *dev_priv) > +{ > + struct drm_i915_gem_object *obj; > + > + list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) > + i915_gem_release_mmap(obj); > +} > + > uint32_t > i915_gem_get_gtt_size(struct drm_device *dev, uint32_t size, int tiling_mode) > { > -- > 2.0.0 > -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx