Commit 708c82d5 authored by Mika Kuoppala's avatar Mika Kuoppala Committed by Chris Wilson

drm/i915: Report all failed registers for ctx isolation

For CI it is enough to point out a single failure
in isolation. However it is beneficial to gather
info in logs for transients further down
the line.

Do not stop into first comparison failure but
continue probing forward.

v2: for all engines and poisons (Chris)

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20200331135403.16906-1-mika.kuoppala@linux.intel.com
parent 60672784
...@@ -5171,7 +5171,6 @@ static int compare_isolation(struct intel_engine_cs *engine, ...@@ -5171,7 +5171,6 @@ static int compare_isolation(struct intel_engine_cs *engine,
A[0][x], B[0][x], B[1][x], A[0][x], B[0][x], B[1][x],
poison, lrc[dw + 1]); poison, lrc[dw + 1]);
err = -EINVAL; err = -EINVAL;
break;
} }
} }
dw += 2; dw += 2;
...@@ -5310,6 +5309,7 @@ static int live_lrc_isolation(void *arg) ...@@ -5310,6 +5309,7 @@ static int live_lrc_isolation(void *arg)
0xffffffff, 0xffffffff,
0xffff0000, 0xffff0000,
}; };
int err = 0;
/* /*
* Our goal is try and verify that per-context state cannot be * Our goal is try and verify that per-context state cannot be
...@@ -5320,7 +5320,6 @@ static int live_lrc_isolation(void *arg) ...@@ -5320,7 +5320,6 @@ static int live_lrc_isolation(void *arg)
*/ */
for_each_engine(engine, gt, id) { for_each_engine(engine, gt, id) {
int err = 0;
int i; int i;
/* Just don't even ask */ /* Just don't even ask */
...@@ -5331,23 +5330,25 @@ static int live_lrc_isolation(void *arg) ...@@ -5331,23 +5330,25 @@ static int live_lrc_isolation(void *arg)
intel_engine_pm_get(engine); intel_engine_pm_get(engine);
if (engine->pinned_default_state) { if (engine->pinned_default_state) {
for (i = 0; i < ARRAY_SIZE(poison); i++) { for (i = 0; i < ARRAY_SIZE(poison); i++) {
err = __lrc_isolation(engine, poison[i]); int result;
if (err)
break;
err = __lrc_isolation(engine, ~poison[i]); result = __lrc_isolation(engine, poison[i]);
if (err) if (result && !err)
break; err = result;
result = __lrc_isolation(engine, ~poison[i]);
if (result && !err)
err = result;
} }
} }
intel_engine_pm_put(engine); intel_engine_pm_put(engine);
if (igt_flush_test(gt->i915)) if (igt_flush_test(gt->i915)) {
err = -EIO; err = -EIO;
if (err) break;
return err; }
} }
return 0; return err;
} }
static void garbage_reset(struct intel_engine_cs *engine, static void garbage_reset(struct intel_engine_cs *engine,
......
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