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@xxxxxxxxxxxxxxxxxx> > Cc: Paulo Zanoni <paulo.r.zanoni@xxxxxxxxx> > Signed-off-by: Ben Widawsky <ben@xxxxxxxxxxxx> > --- > 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@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- 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