diff mbox series

drm/i915/gt: Flush engine parking before release

Message ID 20200124143339.140988-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show
Series drm/i915/gt: Flush engine parking before release | expand

Commit Message

Chris Wilson Jan. 24, 2020, 2:33 p.m. UTC
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>
---
 drivers/gpu/drm/i915/gt/intel_engine_cs.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Matthew Auld Jan. 24, 2020, 4:58 p.m. UTC | #1
On Fri, 24 Jan 2020 at 14:33, Chris Wilson <chris@chris-wilson.co.uk> wrote:
>
> 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>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index 084abc577b14..9b965d1f811d 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -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)