Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93c97dc1 authored by Imre Deak's avatar Imre Deak
Browse files

drm/i915: Avoid early GPU idling due to race with new request



There is a small race where a new request can be submitted and retired
after the idle worker started to run which leads to idling the GPU too
early. Fix this by deferring the idling to the pending instance of the
worker.

This scenario was pointed out by Chris.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/1478510405-11799-2-git-send-email-imre.deak@intel.com
parent 5bd11a34
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -2766,6 +2766,13 @@ i915_gem_idle_work_handler(struct work_struct *work)
		goto out_rearm;
	}

	/*
	 * New request retired after this work handler started, extend active
	 * period until next instance of the work.
	 */
	if (work_pending(work))
		goto out_unlock;

	if (dev_priv->gt.active_requests)
		goto out_unlock;