summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_gem_request.h
diff options
context:
space:
mode:
authorChris Wilson2016-08-09 10:23:33 +0200
committerChris Wilson2016-08-09 11:17:26 +0200
commitedf6b76f64a2f62b81ed796fe2ce6dd664351d64 (patch)
treefe8f513eb432134916eb2be6df52fd5dc077fdb5 /drivers/gpu/drm/i915/i915_gem_request.h
parentdrm/i915: Don't check for idleness before retiring after a GPU hang (diff)
downloadkernel-qcow2-linux-edf6b76f64a2f62b81ed796fe2ce6dd664351d64.tar.gz
kernel-qcow2-linux-edf6b76f64a2f62b81ed796fe2ce6dd664351d64.tar.xz
kernel-qcow2-linux-edf6b76f64a2f62b81ed796fe2ce6dd664351d64.zip
drm/i915: Add smp_rmb() to busy ioctl's RCU dance
In the debate as to whether the second read of active->request is ordered after the dependent reads of the first read of active->request, just give in and throw a smp_rmb() in there so that ordering of loads is assured. v2: Explain the manual smp_rmb() Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/1470731014-6894-1-git-send-email-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_request.h')
-rw-r--r--drivers/gpu/drm/i915/i915_gem_request.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_request.h b/drivers/gpu/drm/i915/i915_gem_request.h
index f6661f31a348..6dd83b172c7a 100644
--- a/drivers/gpu/drm/i915/i915_gem_request.h
+++ b/drivers/gpu/drm/i915/i915_gem_request.h
@@ -490,6 +490,9 @@ __i915_gem_active_get_rcu(const struct i915_gem_active *active)
* incremented) then the following read for rcu_access_pointer()
* must occur after the atomic operation and so confirm
* that this request is the one currently being tracked.
+ *
+ * The corresponding write barrier is part of
+ * rcu_assign_pointer().
*/
if (!request || request == rcu_access_pointer(active->request))
return rcu_pointer_handoff(request);