On Fri, Aug 30, 2013 at 04:43:55PM -0700, Ben Widawsky wrote:
> As we'll see in the next patch, being able to evict for just 1 VM is
> handy.
> 
> Signed-off-by: Ben Widawsky <b...@bwidawsk.net>
> ---
>  drivers/gpu/drm/i915/i915_gem_evict.c | 28 ++++++++++++++++++++++------
>  1 file changed, 22 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem_evict.c 
> b/drivers/gpu/drm/i915/i915_gem_evict.c
> index cc8974f..e9033f0 100644
> --- a/drivers/gpu/drm/i915/i915_gem_evict.c
> +++ b/drivers/gpu/drm/i915/i915_gem_evict.c
> @@ -155,12 +155,31 @@ found:
>       return ret;
>  }
>  
> +static int i915_gem_evict_vm(struct i915_address_space *vm, bool do_idle)
> +{
> +     struct i915_vma *vma, *next;
> +     int ret;
> +
> +     if (do_idle) {
> +             ret = i915_gpu_idle(vm->dev);
> +             if (ret)
> +                     return ret;
> +
> +             i915_gem_retire_requests(vm->dev);
> +     }
> +
> +     list_for_each_entry_safe(vma, next, &vm->inactive_list, mm_list)
> +             if (vma->obj->pin_count == 0)
> +                     WARN_ON(i915_vma_unbind(vma));
> +
> +     return 0;
> +}
> +
>  int
>  i915_gem_evict_everything(struct drm_device *dev)
>  {
>       drm_i915_private_t *dev_priv = dev->dev_private;
>       struct i915_address_space *vm;
> -     struct i915_vma *vma, *next;
>       bool lists_empty = true;
>       int ret;
>  
> @@ -187,11 +206,8 @@ i915_gem_evict_everything(struct drm_device *dev)
>       i915_gem_retire_requests(dev);
>  
>       /* Having flushed everything, unbind() should never raise an error */
> -     list_for_each_entry(vm, &dev_priv->vm_list, global_link) {
> -             list_for_each_entry_safe(vma, next, &vm->inactive_list, mm_list)
> -                     if (vma->obj->pin_count == 0)
> -                             WARN_ON(i915_vma_unbind(vma));
> -     }
> +     list_for_each_entry(vm, &dev_priv->vm_list, global_link)
> +             WARN_ON(i915_gem_evict_vm(vm, false));

Wny not use do_idle here?
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to