summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Widawsky <benjamin.widawsky@intel.com>2014-07-03 14:56:01 -0700
committerBen Widawsky <benjamin.widawsky@intel.com>2014-07-03 14:56:01 -0700
commit54d1772f2798dc1ef4160b3bc6f80dcb5ca0d465 (patch)
treebd0682d738124b5638f7e587f8fd20dfcfcc640b
parent738ccceb8d366d22d8604bc09bec25c508d75977 (diff)
drm/i915: Remove false assertion in ppgtt_releasehsd-repro
Originally the thought for the assertion was that if there are no real VMAs (died during execbuf), or there is only 1 VMA, but the VMA is on the active list, it's a bug. The former case is pretty obvious. The later case simply meant to assert the context unref/object retire interactions were working properly There is a flaw in the logic of the second when an object has multiple VMAs. If there are multiple VMAs, it's possible that the object continually had it's seqno increased as it was used by another context. In this case, the context ref will die, but the VMA will not be taking off the active list because of the missing retire seqno for a VMA. Like some of the other fixes I've submitted recently, this should be fixed by the eventual work Daniel will do. This is pretty easy to reproduce whenever mesa uses the blit engine. Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
-rw-r--r--drivers/gpu/drm/i915/i915_gem_context.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index 1ac648fdb7cd..2b39fcaa785e 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -145,8 +145,7 @@ static int do_ppgtt_cleanup(struct i915_hw_ppgtt *ppgtt)
do_idle = true;
list_for_each_entry(vma, &vm->active_list, mm_list)
- if (WARN_ON(list_empty(&vma->vma_link) ||
- list_is_singular(&vma->vma_link)))
+ if (WARN_ON(list_empty(&vma->vma_link)))
break;
} else
i915_gem_retire_requests(dev);