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 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx