Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > If all else fails and we are stuck eternally waiting for the undying > request, abandon all hope. > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/selftests/intel_hangcheck.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c > index defe671130ab..a48fbe2557ea 100644 > --- a/drivers/gpu/drm/i915/selftests/intel_hangcheck.c > +++ b/drivers/gpu/drm/i915/selftests/intel_hangcheck.c > @@ -308,6 +308,7 @@ static int igt_hang_sanitycheck(void *arg) > goto unlock; > > for_each_engine(engine, i915, id) { > + struct igt_wedge_me w; > long timeout; > > if (!intel_engine_can_store_dword(engine)) > @@ -328,9 +329,14 @@ static int igt_hang_sanitycheck(void *arg) > > i915_request_add(rq); > > - timeout = i915_request_wait(rq, > - I915_WAIT_LOCKED, > - MAX_SCHEDULE_TIMEOUT); > + timeout = 0; > + igt_wedge_on_timeout(&w, i915, HZ / 10 /* 100ms timeout*/) 100ms? We are emitting a hanging batch here, so there is something I am missing here. -Mika > + timeout = i915_request_wait(rq, > + I915_WAIT_LOCKED, > + MAX_SCHEDULE_TIMEOUT); > + if (i915_terminally_wedged(&i915->gpu_error)) > + timeout = -EIO; > + > i915_request_put(rq); > > if (timeout < 0) { > -- > 2.20.0.rc1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx