On Fri, Dec 30, 2016 at 05:33:14PM +0000, Chris Wilson wrote: > The read of the page pin count and the bind count are unordered, > presenting races in the assert and it firing off incorrectly. Prevent > this by restricting the assert to the vma bind/unbind routines where we > have local cpu ordering between the two. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> Fun. Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/i915/i915_drv.h | 1 - > drivers/gpu/drm/i915/i915_vma.c | 1 + > 2 files changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 00ecbb4da25e..1aa33444115a 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -3291,7 +3291,6 @@ __i915_gem_object_unpin_pages(struct drm_i915_gem_object *obj) > GEM_BUG_ON(!obj->mm.pages); > > atomic_dec(&obj->mm.pages_pin_count); > - GEM_BUG_ON(atomic_read(&obj->mm.pages_pin_count) < obj->bind_count); > } > > static inline void > diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c > index 414f0f7f5059..d48c68214611 100644 > --- a/drivers/gpu/drm/i915/i915_vma.c > +++ b/drivers/gpu/drm/i915/i915_vma.c > @@ -640,6 +640,7 @@ int i915_vma_unbind(struct i915_vma *vma) > * reaped by the shrinker. > */ > i915_gem_object_unpin_pages(obj); > + GEM_BUG_ON(atomic_read(&obj->mm.pages_pin_count) < obj->bind_count); > > destroy: > if (unlikely(i915_vma_is_closed(vma))) > -- > 2.11.0 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx