浏览代码

drm/i915/selftests: Flush GPU activity before completing live_contexts

igt_ctx_exec() expects that we retire all active requests/objects before
completing, so that when we clean up the files afterwards they are ready
to be freed. Before we do so, it is then prudent to ensure that we have
indeed retired the GPU activity, raising an error if it fails. If we do
not, we run the risk of triggering an assertion when freeing the object:

  __i915_gem_free_objects:4793 GEM_BUG_ON(i915_gem_object_is_active(obj))

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180505091014.26126-2-chris@chris-wilson.co.uk
Chris Wilson 7 年之前
父节点
当前提交
7c2f5bc5f0
共有 1 个文件被更改,包括 3 次插入0 次删除
  1. 3 0
      drivers/gpu/drm/i915/selftests/i915_gem_context.c

+ 3 - 0
drivers/gpu/drm/i915/selftests/i915_gem_context.c

@@ -23,6 +23,7 @@
  */
  */
 
 
 #include "../i915_selftest.h"
 #include "../i915_selftest.h"
+#include "igt_flush_test.h"
 
 
 #include "mock_drm.h"
 #include "mock_drm.h"
 #include "huge_gem_object.h"
 #include "huge_gem_object.h"
@@ -411,6 +412,8 @@ static int igt_ctx_exec(void *arg)
 	}
 	}
 
 
 out_unlock:
 out_unlock:
+	if (igt_flush_test(i915, I915_WAIT_LOCKED))
+		err = -EIO;
 	mutex_unlock(&i915->drm.struct_mutex);
 	mutex_unlock(&i915->drm.struct_mutex);
 
 
 	mock_file_free(i915, file);
 	mock_file_free(i915, file);