Merge drm/drm-next into drm-intel-next
[sfrench/cifs-2.6.git] / drivers / gpu / drm / i915 / gt / selftest_hangcheck.c
index 32f8b4f96cfa3b82d84e4fec0cf7212aabc74c6b..4a20ba63446c5acb7d399e6868dbc1400f0984ef 100644 (file)
@@ -472,7 +472,8 @@ static int igt_reset_nop_engine(void *arg)
                count = 0;
 
                st_engine_heartbeat_disable(engine);
-               set_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
+               GEM_BUG_ON(test_and_set_bit(I915_RESET_ENGINE + id,
+                                           &gt->reset.flags));
                do {
                        int i;
 
@@ -529,7 +530,7 @@ static int igt_reset_nop_engine(void *arg)
                                break;
                        }
                } while (time_before(jiffies, end_time));
-               clear_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
+               clear_and_wake_up_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
                st_engine_heartbeat_enable(engine);
 
                pr_info("%s(%s): %d resets\n", __func__, engine->name, count);
@@ -583,7 +584,8 @@ static int igt_reset_fail_engine(void *arg)
                }
 
                st_engine_heartbeat_disable(engine);
-               set_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
+               GEM_BUG_ON(test_and_set_bit(I915_RESET_ENGINE + id,
+                                           &gt->reset.flags));
 
                force_reset_timeout(engine);
                err = intel_engine_reset(engine, NULL);
@@ -680,7 +682,7 @@ static int igt_reset_fail_engine(void *arg)
 out:
                pr_info("%s(%s): %d resets\n", __func__, engine->name, count);
 skip:
-               clear_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
+               clear_and_wake_up_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
                st_engine_heartbeat_enable(engine);
                intel_context_put(ce);
 
@@ -735,7 +737,8 @@ static int __igt_reset_engine(struct intel_gt *gt, bool active)
                reset_engine_count = i915_reset_engine_count(global, engine);
 
                st_engine_heartbeat_disable(engine);
-               set_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
+               GEM_BUG_ON(test_and_set_bit(I915_RESET_ENGINE + id,
+                                           &gt->reset.flags));
                count = 0;
                do {
                        struct i915_request *rq = NULL;
@@ -825,7 +828,7 @@ restore:
                        if (err)
                                break;
                } while (time_before(jiffies, end_time));
-               clear_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
+               clear_and_wake_up_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
                st_engine_heartbeat_enable(engine);
                pr_info("%s: Completed %lu %s resets\n",
                        engine->name, count, active ? "active" : "idle");
@@ -1043,7 +1046,8 @@ static int __igt_reset_engines(struct intel_gt *gt,
                yield(); /* start all threads before we begin */
 
                st_engine_heartbeat_disable_no_pm(engine);
-               set_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
+               GEM_BUG_ON(test_and_set_bit(I915_RESET_ENGINE + id,
+                                           &gt->reset.flags));
                do {
                        struct i915_request *rq = NULL;
                        struct intel_selftest_saved_policy saved;
@@ -1166,7 +1170,7 @@ restore:
                        if (err)
                                break;
                } while (time_before(jiffies, end_time));
-               clear_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
+               clear_and_wake_up_bit(I915_RESET_ENGINE + id, &gt->reset.flags);
                st_engine_heartbeat_enable_no_pm(engine);
 
                pr_info("i915_reset_engine(%s:%s): %lu resets\n",
@@ -2015,7 +2019,7 @@ int intel_hangcheck_live_selftests(struct drm_i915_private *i915)
                SUBTEST(igt_reset_evict_fence),
                SUBTEST(igt_handle_error),
        };
-       struct intel_gt *gt = &i915->gt;
+       struct intel_gt *gt = to_gt(i915);
        intel_wakeref_t wakeref;
        int err;