mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
drm/i915/selftests: Consider multi-gt instead of to_gt()
In order to enable complete multi-GT, loop through all the GTs, rather than relying on the to_gt(), which only provides a reference to the primary GT. Problem appear when it runs on platform like MTL where different set of engines are possible on different GTs. Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com> Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com> Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230419060036.3422635-4-tejas.upadhyay@intel.com
This commit is contained in:
parent
a347279dec
commit
0c29efa23f
@ -16,28 +16,32 @@ int igt_live_test_begin(struct igt_live_test *t,
|
||||
const char *func,
|
||||
const char *name)
|
||||
{
|
||||
struct intel_gt *gt = to_gt(i915);
|
||||
struct intel_engine_cs *engine;
|
||||
enum intel_engine_id id;
|
||||
struct intel_gt *gt;
|
||||
unsigned int i;
|
||||
int err;
|
||||
|
||||
t->i915 = i915;
|
||||
t->func = func;
|
||||
t->name = name;
|
||||
|
||||
err = intel_gt_wait_for_idle(gt, MAX_SCHEDULE_TIMEOUT);
|
||||
if (err) {
|
||||
pr_err("%s(%s): failed to idle before, with err=%d!",
|
||||
func, name, err);
|
||||
return err;
|
||||
for_each_gt(gt, i915, i) {
|
||||
|
||||
err = intel_gt_wait_for_idle(gt, MAX_SCHEDULE_TIMEOUT);
|
||||
if (err) {
|
||||
pr_err("%s(%s): failed to idle before, with err=%d!",
|
||||
func, name, err);
|
||||
return err;
|
||||
}
|
||||
|
||||
for_each_engine(engine, gt, id)
|
||||
t->reset_engine[id] =
|
||||
i915_reset_engine_count(&i915->gpu_error, engine);
|
||||
}
|
||||
|
||||
t->reset_global = i915_reset_count(&i915->gpu_error);
|
||||
|
||||
for_each_engine(engine, gt, id)
|
||||
t->reset_engine[id] =
|
||||
i915_reset_engine_count(&i915->gpu_error, engine);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -46,6 +50,8 @@ int igt_live_test_end(struct igt_live_test *t)
|
||||
struct drm_i915_private *i915 = t->i915;
|
||||
struct intel_engine_cs *engine;
|
||||
enum intel_engine_id id;
|
||||
struct intel_gt *gt;
|
||||
unsigned int i;
|
||||
|
||||
if (igt_flush_test(i915))
|
||||
return -EIO;
|
||||
@ -57,16 +63,18 @@ int igt_live_test_end(struct igt_live_test *t)
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
for_each_engine(engine, to_gt(i915), id) {
|
||||
if (t->reset_engine[id] ==
|
||||
i915_reset_engine_count(&i915->gpu_error, engine))
|
||||
continue;
|
||||
for_each_gt(gt, i915, i) {
|
||||
for_each_engine(engine, gt, id) {
|
||||
if (t->reset_engine[id] ==
|
||||
i915_reset_engine_count(&i915->gpu_error, engine))
|
||||
continue;
|
||||
|
||||
pr_err("%s(%s): engine '%s' was reset %d times!\n",
|
||||
t->func, t->name, engine->name,
|
||||
i915_reset_engine_count(&i915->gpu_error, engine) -
|
||||
t->reset_engine[id]);
|
||||
return -EIO;
|
||||
pr_err("%s(%s): engine '%s' was reset %d times!\n",
|
||||
t->func, t->name, engine->name,
|
||||
i915_reset_engine_count(&i915->gpu_error, engine) -
|
||||
t->reset_engine[id]);
|
||||
return -EIO;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user