Intel G41 doesn't see any screens connected after suspend/resume
Chris Wilson
chris at chris-wilson.co.uk
Thu Mar 20 06:43:07 PDT 2014
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)
--
Chris Wilson, Intel Open Source Technology Centre
More information about the dri-devel
mailing list