2014-03-20 9:43 GMT-04:00 Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>: > On Thu, Mar 20, 2014 at 09:38:17AM -0400, Nikolay Martynov wrote: >> (gdb) list *i915_gem_object_set_cache_level+0x8a >> 0x24e3a is in i915_gem_object_set_cache_level >> (drivers/gpu/drm/i915/i915_gem.c:3147). >> 3142 * crossing memory domains and dying. >> 3143 */ >> 3144 if (HAS_LLC(dev)) >> 3145 return true; >> 3146 >> 3147 if (!drm_mm_node_allocated(gtt_space)) >> 3148 return true; >> 3149 >> 3150 if (list_empty(>t_space->node_list)) >> 3151 return true; >> >> Please let me know if there's anything else I can do. > > Can you please try: > > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 13fc490d1f62..4f71125493fd 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -3676,7 +3676,7 @@ int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj, > enum i915_cache_level cache_level) > { > struct drm_device *dev = obj->base.dev; > - struct i915_vma *vma; > + struct i915_vma *vma, *next; > int ret; > > if (obj->cache_level == cache_level) > @@ -3687,7 +3687,7 @@ int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj, > return -EBUSY; > } > > - list_for_each_entry(vma, &obj->vma_list, vma_link) { > + list_for_each_entry_safe(vma, next, &obj->vma_list, vma_link) { > if (!i915_gem_valid_gtt_space(dev, &vma->node, cache_level)) { > ret = i915_vma_unbind(vma); > if (ret) > > -- Yes, that seem to help. It didn't freeze anymore in 15 mins I used it. Thanks! -- Martynov Nikolay. Email: mar.kolya@xxxxxxxxx _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel