Commit d8474795 authored by Chris Wilson's avatar Chris Wilson

drm/i915/selftests: Serialise nop reset with retirement

In order for the reset count to be accurate across our selftest, we need
to prevent the background retire worker from modifying our expected
state. To preserve the intent of symmetry, we apply this to both
i915_reset and i915_reset_engine, even though it strictly only affects
i915_reset_engine currently.
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190626134433.6318-1-chris@chris-wilson.co.uk
parent 5ccf2027
...@@ -398,6 +398,7 @@ static int igt_reset_nop(void *arg) ...@@ -398,6 +398,7 @@ static int igt_reset_nop(void *arg)
count = 0; count = 0;
do { do {
mutex_lock(&i915->drm.struct_mutex); mutex_lock(&i915->drm.struct_mutex);
for_each_engine(engine, i915, id) { for_each_engine(engine, i915, id) {
int i; int i;
...@@ -413,11 +414,12 @@ static int igt_reset_nop(void *arg) ...@@ -413,11 +414,12 @@ static int igt_reset_nop(void *arg)
i915_request_add(rq); i915_request_add(rq);
} }
} }
mutex_unlock(&i915->drm.struct_mutex);
igt_global_reset_lock(i915); igt_global_reset_lock(i915);
i915_reset(i915, ALL_ENGINES, NULL); i915_reset(i915, ALL_ENGINES, NULL);
igt_global_reset_unlock(i915); igt_global_reset_unlock(i915);
mutex_unlock(&i915->drm.struct_mutex);
if (i915_reset_failed(i915)) { if (i915_reset_failed(i915)) {
err = -EIO; err = -EIO;
break; break;
...@@ -511,9 +513,8 @@ static int igt_reset_nop_engine(void *arg) ...@@ -511,9 +513,8 @@ static int igt_reset_nop_engine(void *arg)
i915_request_add(rq); i915_request_add(rq);
} }
mutex_unlock(&i915->drm.struct_mutex);
err = i915_reset_engine(engine, NULL); err = i915_reset_engine(engine, NULL);
mutex_unlock(&i915->drm.struct_mutex);
if (err) { if (err) {
pr_err("i915_reset_engine failed\n"); pr_err("i915_reset_engine failed\n");
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment