]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
drm/i915: Don't set queue-priority hint when supressing the reschedule
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 19 May 2020 06:31:12 +0000 (07:31 +0100)
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Mon, 25 May 2020 12:40:26 +0000 (15:40 +0300)
We recorded the execlists->queue_priority_hint update for the inflight
request without kicking the tasklet. The next submitted request then
failed to be scheduled as it had a lower priority than the hint, leaving
the HW running with only the inflight request.

Fixes: 6cebcf746f3f ("drm/i915: Tweak scheduler's kick_submission()")
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/20200519063123.20673-1-chris@chris-wilson.co.uk
(cherry picked from commit b86fc6e5e89e5645b43f57171c26740ef38f9f4a)
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
drivers/gpu/drm/i915/i915_scheduler.c

index f4ea318781f0f541e87c379350021719fb31e14d..cbb880b10c650d26496826d1f8b578075bd46cfe 100644 (file)
@@ -209,14 +209,6 @@ static void kick_submission(struct intel_engine_cs *engine,
        if (!inflight)
                goto unlock;
 
-       ENGINE_TRACE(engine,
-                    "bumping queue-priority-hint:%d for rq:%llx:%lld, inflight:%llx:%lld prio %d\n",
-                    prio,
-                    rq->fence.context, rq->fence.seqno,
-                    inflight->fence.context, inflight->fence.seqno,
-                    inflight->sched.attr.priority);
-       engine->execlists.queue_priority_hint = prio;
-
        /*
         * If we are already the currently executing context, don't
         * bother evaluating if we should preempt ourselves.
@@ -224,6 +216,14 @@ static void kick_submission(struct intel_engine_cs *engine,
        if (inflight->context == rq->context)
                goto unlock;
 
+       ENGINE_TRACE(engine,
+                    "bumping queue-priority-hint:%d for rq:%llx:%lld, inflight:%llx:%lld prio %d\n",
+                    prio,
+                    rq->fence.context, rq->fence.seqno,
+                    inflight->fence.context, inflight->fence.seqno,
+                    inflight->sched.attr.priority);
+
+       engine->execlists.queue_priority_hint = prio;
        if (need_preempt(prio, rq_prio(inflight)))
                tasklet_hi_schedule(&engine->execlists.tasklet);