drm/i915/gt: Another tweak for flushing the tasklets

tasklet_kill() ensures that we _yield_ the processor until a remote
tasklet is completed. However, this leads to a starvation condition as
being at the bottom of the scheduler's runqueue means that anything else
is able to run, including all hogs keeping the tasklet occupied.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201220134858.10510-1-chris@chris-wilson.co.uk
This commit is contained in:
Chris Wilson
2020-12-20 13:48:58 +00:00
parent 9bb36cf660
commit 5ec17c7630
3 changed files with 12 additions and 7 deletions

View File

@@ -1825,7 +1825,7 @@ long i915_request_wait(struct i915_request *rq,
* for unhappy HW.
*/
if (i915_request_is_ready(rq))
intel_engine_flush_submission(rq->engine);
__intel_engine_flush_submission(rq->engine, false);
for (;;) {
set_current_state(state);