Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > If the heartbeat fires in the middle of the preempt-hang test, it > consumes our forced hang disrupting the test. > > Reported-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/gt/selftest_lrc.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c b/drivers/gpu/drm/i915/gt/selftest_lrc.c > index 5e04ecb61dcc..f5214a374fb7 100644 > --- a/drivers/gpu/drm/i915/gt/selftest_lrc.c > +++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c > @@ -2452,15 +2452,19 @@ static int live_preempt_hang(void *arg) > I915_USER_PRIORITY(I915_CONTEXT_MIN_USER_PRIORITY); > > for_each_engine(engine, gt, id) { > + unsigned long heartbeat; > struct i915_request *rq; > > if (!intel_engine_has_preemption(engine)) > continue; > > + engine_heartbeat_disable(engine, &heartbeat); > + > rq = spinner_create_request(&spin_lo, ctx_lo, engine, > MI_ARB_CHECK); > if (IS_ERR(rq)) { > err = PTR_ERR(rq); > + engine_heartbeat_enable(engine, heartbeat); Was thinking that you could grab the engine and abuse then the error path to enable. But too hairy. Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx> > goto err_ctx_lo; > } > > @@ -2470,6 +2474,7 @@ static int live_preempt_hang(void *arg) > GEM_TRACE_DUMP(); > intel_gt_set_wedged(gt); > err = -EIO; > + engine_heartbeat_enable(engine, heartbeat); > goto err_ctx_lo; > } > > @@ -2477,6 +2482,7 @@ static int live_preempt_hang(void *arg) > MI_ARB_CHECK); > if (IS_ERR(rq)) { > igt_spinner_end(&spin_lo); > + engine_heartbeat_enable(engine, heartbeat); > err = PTR_ERR(rq); > goto err_ctx_lo; > } > @@ -2491,6 +2497,7 @@ static int live_preempt_hang(void *arg) > pr_err("Preemption did not occur within timeout!"); > GEM_TRACE_DUMP(); > intel_gt_set_wedged(gt); > + engine_heartbeat_enable(engine, heartbeat); > err = -EIO; > goto err_ctx_lo; > } > @@ -2505,12 +2512,15 @@ static int live_preempt_hang(void *arg) > GEM_TRACE("hi spinner failed to start\n"); > GEM_TRACE_DUMP(); > intel_gt_set_wedged(gt); > + engine_heartbeat_enable(engine, heartbeat); > err = -EIO; > goto err_ctx_lo; > } > > igt_spinner_end(&spin_hi); > igt_spinner_end(&spin_lo); > + engine_heartbeat_enable(engine, heartbeat); > + > if (igt_flush_test(gt->i915)) { > err = -EIO; > goto err_ctx_lo; > -- > 2.25.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx