[Intel-gfx] [PATCH 4/4] drm/i915/selftest: Always cancel semaphore on error
Thomas Hellström
thomas.hellstrom at linux.intel.com
Fri Apr 8 14:43:29 UTC 2022
On 3/14/22 19:20, Ramalingam C wrote:
> From: Chris Wilson <chris at chris-wilson.co.uk>
>
> 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 at intel.com>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: CQ Tang <cq.tang at intel.com>
> cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Signed-off-by: Ramalingam C <ramalingam.c at intel.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom at linux.intel.com>
> ---
> drivers/gpu/drm/i915/gt/selftest_lrc.c | 17 ++++++++---------
> 1 file changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c b/drivers/gpu/drm/i915/gt/selftest_lrc.c
> index b9cc89de01bf..ae16668dd9d4 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
> @@ -1435,18 +1435,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 (i915_request_wait(rq, 0, HZ / 2) < 0) {
> - i915_request_put(rq);
> + 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;
> - 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);
>
More information about the Intel-gfx
mailing list