[Intel-gfx] [PATCH v2] drm/i915/selftests: Exercise potential false lite-restore
Chris Wilson
chris at chris-wilson.co.uk
Tue Oct 1 13:08:16 UTC 2019
Quoting Tvrtko Ursulin (2019-10-01 13:59:14)
>
> On 01/10/2019 13:43, Chris Wilson wrote:
> > + tasklet_kill(&engine->execlists.tasklet); /* flush submission */
>
> Is this really needed, why?
In a pathological case where we are using the tasklet (e.g. preemption
and ksoftirqd active), it would then be possible for the spinner to
complete (thanks to the igt_spinner_end below) before we process the
preemption request (thus we would not perform a preemption request). Now
it may still complete before the HW has a chance to process the ELSP
submit, but that risk feels less likely. (We would need to wait on
!execlists->pending with a timeout to be sure.)
tasklet_kill() is
while tasklet is queued and not run:
yield();
I think we need only the one flush as we only really care about the
first available execlists_submit_port that has both ELSP filled to check
for a possible lite-restore between the different contexts.
-Chris
More information about the Intel-gfx
mailing list