drm/i915/gt: Flush engine parking before release
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 24 Jan 2020 14:33:39 +0000 (14:33 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 24 Jan 2020 21:08:24 +0000 (21:08 +0000)
Due to the asynchronous nature of releasing our wakerefs, we can signal
the main GT wakeref as complete before the individual engines have
cleared their own wakerefs. During shutdown we assert that the engines
are indeed parked before we release them, but for this to be always true
we need to flush their workers as well.

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/20200124143339.140988-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_engine_cs.c

index 084abc577b14b7fb65064d3b59a06d30a666bd0f..9b965d1f811d8a0d902ca4f0841822024e6e74c2 100644 (file)
@@ -408,6 +408,7 @@ void intel_engines_release(struct intel_gt *gt)
 
        /* Decouple the backend; but keep the layout for late GPU resets */
        for_each_engine(engine, gt, id) {
+               intel_wakeref_wait_for_idle(&engine->wakeref);
                GEM_BUG_ON(intel_engine_pm_is_awake(engine));
 
                if (!engine->release)