drm/i915/selftest: Cope with not having an RCS engine
authorJohn Harrison <John.C.Harrison@Intel.com>
Thu, 28 Jul 2022 02:42:23 +0000 (19:42 -0700)
committerJohn Harrison <John.C.Harrison@Intel.com>
Fri, 29 Jul 2022 17:35:57 +0000 (10:35 -0700)
It is no longer guaranteed that there will always be an RCS engine.
So, use the helper function for finding the first available engine that
can be used for general purpose selftets.

Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220728024225.2363663-5-John.C.Harrison@Intel.com
drivers/gpu/drm/i915/gt/selftest_hangcheck.c

index 6493265..7f3bb1d 100644 (file)
@@ -1302,13 +1302,15 @@ static int igt_reset_wait(void *arg)
 {
        struct intel_gt *gt = arg;
        struct i915_gpu_error *global = &gt->i915->gpu_error;
-       struct intel_engine_cs *engine = gt->engine[RCS0];
+       struct intel_engine_cs *engine;
        struct i915_request *rq;
        unsigned int reset_count;
        struct hang h;
        long timeout;
        int err;
 
+       engine = intel_selftest_find_any_engine(gt);
+
        if (!engine || !intel_engine_can_store_dword(engine))
                return 0;
 
@@ -1432,7 +1434,7 @@ static int __igt_reset_evict_vma(struct intel_gt *gt,
                                 int (*fn)(void *),
                                 unsigned int flags)
 {
-       struct intel_engine_cs *engine = gt->engine[RCS0];
+       struct intel_engine_cs *engine;
        struct drm_i915_gem_object *obj;
        struct task_struct *tsk = NULL;
        struct i915_request *rq;
@@ -1444,6 +1446,8 @@ static int __igt_reset_evict_vma(struct intel_gt *gt,
        if (!gt->ggtt->num_fences && flags & EXEC_OBJECT_NEEDS_FENCE)
                return 0;
 
+       engine = intel_selftest_find_any_engine(gt);
+
        if (!engine || !intel_engine_can_store_dword(engine))
                return 0;
 
@@ -1819,12 +1823,14 @@ static int igt_handle_error(void *arg)
 {
        struct intel_gt *gt = arg;
        struct i915_gpu_error *global = &gt->i915->gpu_error;
-       struct intel_engine_cs *engine = gt->engine[RCS0];
+       struct intel_engine_cs *engine;
        struct hang h;
        struct i915_request *rq;
        struct i915_gpu_coredump *error;
        int err;
 
+       engine = intel_selftest_find_any_engine(gt);
+
        /* Check that we can issue a global GPU and engine reset */
 
        if (!intel_has_reset_engine(gt))