drm/i915/selftest: Always cancel semaphore on error
Ensure that we always signal the semaphore when timing out, so that if it happens to be stuck waiting for the semaphore we will quickly recover without having to wait for a reset. Reported-by: CQ Tang <cq.tang@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: CQ Tang <cq.tang@intel.com> cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Signed-off-by: Ramalingam C <ramalingam.c@intel.com> Reviewed-by: Thomas Hellstrom <thomas.hellstrom@linux.intel.com> Signed-off-by: Karolina Drobnik <karolina.drobnik@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/8b7781f7dbaf2791156491b76d5faa7852e5cbbb.1663081418.git.karolina.drobnik@intel.com
This commit is contained in:
parent
a062b8cf81
commit
25e4b26672
@ -1460,18 +1460,17 @@ static int __lrc_isolation(struct intel_engine_cs *engine, u32 poison)
|
||||
}
|
||||
|
||||
err = poison_registers(B, poison, sema);
|
||||
if (err) {
|
||||
WRITE_ONCE(*sema, -1);
|
||||
i915_request_put(rq);
|
||||
goto err_result1;
|
||||
if (err == 0 && i915_request_wait(rq, 0, HZ / 2) < 0) {
|
||||
pr_err("%s(%s): wait for results timed out\n",
|
||||
__func__, engine->name);
|
||||
err = -ETIME;
|
||||
}
|
||||
|
||||
if (i915_request_wait(rq, 0, HZ / 2) < 0) {
|
||||
i915_request_put(rq);
|
||||
err = -ETIME;
|
||||
goto err_result1;
|
||||
}
|
||||
/* Always cancel the semaphore wait, just in case the GPU gets stuck */
|
||||
WRITE_ONCE(*sema, -1);
|
||||
i915_request_put(rq);
|
||||
if (err)
|
||||
goto err_result1;
|
||||
|
||||
err = compare_isolation(engine, ref, result, A, poison);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user