drm/i915/selftests: Check for an already completed timeslice
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 10 Apr 2020 08:16:38 +0000 (09:16 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 10 Apr 2020 13:15:27 +0000 (14:15 +0100)
With timeslice yielding on a semaphore, we may complete timeslices much
faster than we were expecting and already have yielded the stuck
request. Before complaining that timeslicing is not enabled, check that
we haven't already applied the switch.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Andi Shyti <andi.shyti@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200410081638.19893-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/selftest_lrc.c

index 616d03506c2ce34f5f99bdd8ed8fd6f7015f54f0..6f5e35afe1b264b86e1712fe715f5e85b711da18 100644 (file)
@@ -1252,6 +1252,7 @@ static int live_timeslice_queue(void *arg)
                } while (READ_ONCE(engine->execlists.pending[0]));
 
                if (!READ_ONCE(engine->execlists.timer.expires) &&
+                   execlists_active(&engine->execlists) == rq &&
                    !i915_request_completed(rq)) {
                        struct drm_printer p =
                                drm_info_printer(gt->i915->drm.dev);