[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