From: Chris Wilson Date: Mon, 2 Dec 2019 14:01:33 +0000 (+0000) Subject: drm/i915: Serialise i915_active_wait() with its retirement X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=e1cda6a529aa1f310badcb20d63d9cd1d1f164a1;p=openwrt%2Fstaging%2Fblogic.git drm/i915: Serialise i915_active_wait() with its retirement As the i915_active.retire() may be running on another CPU as we detect that the i915_active is idle, we may not wait for the retirement itself. Wait for the remote callback by waiting for the retirement worker. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=112424 Signed-off-by: Chris Wilson Reviewed-by: Tvrtko Ursulin Link: https://patchwork.freedesktop.org/patch/msgid/20191202140133.2444217-2-chris@chris-wilson.co.uk --- diff --git a/drivers/gpu/drm/i915/i915_active.c b/drivers/gpu/drm/i915/i915_active.c index e60e44986c9d..e3fcec4834c2 100644 --- a/drivers/gpu/drm/i915/i915_active.c +++ b/drivers/gpu/drm/i915/i915_active.c @@ -473,6 +473,7 @@ int i915_active_wait(struct i915_active *ref) if (wait_var_event_interruptible(ref, i915_active_is_idle(ref))) return -EINTR; + flush_work(&ref->work); return 0; }