[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