]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
drm/i915/gt: Always check to enable timeslicing if not submitting
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 5 Jun 2020 12:23:26 +0000 (13:23 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 5 Jun 2020 16:18:17 +0000 (17:18 +0100)
We may choose not to submit for a number of reasons, yet not fill both
ELSP. In which case we must start timeslicing (there will be no ACK
event on which to hook the start) if the queue would benefit from the
currently active context being evicted.

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/20200605122334.2798-2-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_lrc.c

index 92c3368ffcbd8c34eca2a46c7948a6c25e6e4268..d55a5e0466e5f3358b73e3ba036b3d09ae3d7bad 100644 (file)
@@ -2362,10 +2362,8 @@ static void execlists_dequeue(struct intel_engine_cs *engine)
                                if (last->context == rq->context)
                                        goto done;
 
-                               if (i915_request_has_sentinel(last)) {
-                                       start_timeslice(engine, rq_prio(rq));
+                               if (i915_request_has_sentinel(last))
                                        goto done;
-                               }
 
                                /*
                                 * If GVT overrides us we only ever submit
@@ -2446,6 +2444,7 @@ done:
                set_preempt_timeout(engine, *active);
                execlists_submit_ports(engine);
        } else {
+               start_timeslice(engine, execlists->queue_priority_hint);
 skip_submit:
                ring_set_paused(engine, 0);
        }