[Intel-gfx] [PATCH 1/4] [v2] drm/i915: Remove node only when allocated

Daniel Vetter daniel at ffwll.ch
Wed Aug 14 10:06:30 CEST 2013


On Tue, Aug 13, 2013 at 06:09:06PM -0700, Ben Widawsky wrote:
> VMAs can be created and not bound. One may think of it as lazy cleanup,
> and safely gloss over the conditions which manufacture it. In either
> case, when the object backing the i915 vma is destroyed, we must cleanup
> the vma without stumbling into a bunch of pitfalls that assume the vma
> is bound.
> 
> NOTE: I was pretty certain the above condition could only happen when we
> introduced the use of VMAs being looked up at execbuf, and already
> existing. Paulo has hit this though, so I must be missing something. As
> I believe the patch is correct anyway, therefore I won't scratch my head
> too hard.

If we end up calling evict_everything from i915_gem_object_bind_to_vm then
we'll hit this. One more reason for a testcase here ;-) I'll amend the
commit message and merge this. I've also applied a tiny bikeshed I've
created while reviewing existing vma_create/destroy callsites.
-Daniel

> 
> v2: use goto destroy as a compromise (Chris)
> 
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
> ---
>  drivers/gpu/drm/i915/i915_gem.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 3d9e248b..4a58ead 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -2606,6 +2606,9 @@ int i915_vma_unbind(struct i915_vma *vma)
>  	if (list_empty(&vma->vma_link))
>  		return 0;
>  
> +	if (!drm_mm_node_allocated(&vma->node))
> +		goto destroy;
> +
>  	if (obj->pin_count)
>  		return -EBUSY;
>  
> @@ -2643,6 +2646,8 @@ int i915_vma_unbind(struct i915_vma *vma)
>  		obj->map_and_fenceable = true;
>  
>  	drm_mm_remove_node(&vma->node);
> +
> +destroy:
>  	i915_gem_vma_destroy(vma);
>  
>  	/* Since the unbound list is global, only move to that list if
> -- 
> 1.8.3.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at 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



More information about the Intel-gfx mailing list