[Intel-gfx] [PATCH] drm/i915/selftests: Flush interrupts before disabling tasklets
Chris Wilson
chris at chris-wilson.co.uk
Thu Oct 24 07:28:46 UTC 2019
Quoting Mika Kuoppala (2019-10-24 08:21:14)
> Chris Wilson <chris at chris-wilson.co.uk> writes:
>
> > When setting up the system to perform the atomic reset, we need to
> > serialise with any ongoing interrupt tasklet or else:
> >
> > <0> [472.951428] i915_sel-4442 0d..1 466527056us : __i915_request_submit: rcs0 fence 11659:2, current 0
> > <0> [472.951554] i915_sel-4442 0d..1 466527059us : __execlists_submission_tasklet: rcs0: queue_priority_hint:-2147483648, submit:yes
> > <0> [472.951681] i915_sel-4442 0d..1 466527061us : trace_ports: rcs0: submit { 11659:2, 0:0 }
> > <0> [472.951805] i915_sel-4442 0.... 466527114us : __igt_atomic_reset_engine: i915_reset_engine(rcs0:active) under hardirq
> > <0> [472.951932] i915_sel-4442 0d... 466527115us : intel_engine_reset: rcs0 flags=11d
> > <0> [472.952056] i915_sel-4442 0d... 466527117us : execlists_reset_prepare: rcs0: depth<-1
> > <0> [472.952179] i915_sel-4442 0d... 466527119us : intel_engine_stop_cs: rcs0
> > <0> [472.952305] <idle>-0 1..s1 466527119us : process_csb: rcs0 cs-irq head=3, tail=4
>
> Racing and this shows from old world?
We have the same CSB events being seen by process_csb() on two different
processors. One being issued by the reset in the test, the other by the
interrupt; this scenario is supposed to be prevented by flushing the
interrupt tasklet with tasklet_disable() before we enter the atomic
reset -- but I copied the code to use tasklet_disable_nosync() that is
meant to only used from inside the atomic reset after we had serialised
(or know we are inside the tasklet) with the tasklet. Basically this bug
is of our own invention because we are bypassing the usual setup in
order to do engine->reset() from unusual conditions.
-Chris
More information about the Intel-gfx
mailing list