drm/i915/selftests: Kick timeslice until selftest yields
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 22 Dec 2020 11:35:34 +0000 (11:35 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 22 Dec 2020 14:38:09 +0000 (14:38 +0000)
Keep on kicking the timeslice in case on the first retirement, it did
not stay idle. This may happen when using semaphore yields.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201222113536.3775-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/selftest_execlists.c

index 7f2a642..2d0d7e1 100644 (file)
@@ -1173,7 +1173,7 @@ static int live_timeslice_rewind(void *arg)
 
                /* ELSP[] = { { A:rq1, A:rq2 }, { B:rq1 } } */
                ENGINE_TRACE(engine, "forcing tasklet for rewind\n");
-               if (i915_request_is_active(rq[A2])) { /* semaphore yielded! */
+               while (i915_request_is_active(rq[A2])) { /* semaphore yield! */
                        /* Wait for the timeslice to kick in */
                        del_timer(&engine->execlists.timer);
                        tasklet_hi_schedule(&engine->execlists.tasklet);