Commit 5e963508 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Use cmpxchg64 for 32b compatilibity

By using the double wide cmpxchg64 on 32bit, we can use the same
algorithm on both 32/64b systems.
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201211110310.22740-1-chris@chris-wilson.co.uk
parent d484bd0d
...@@ -159,8 +159,7 @@ __active_retire(struct i915_active *ref) ...@@ -159,8 +159,7 @@ __active_retire(struct i915_active *ref)
GEM_BUG_ON(ref->tree.rb_node != &ref->cache->node); GEM_BUG_ON(ref->tree.rb_node != &ref->cache->node);
/* Make the cached node available for reuse with any timeline */ /* Make the cached node available for reuse with any timeline */
if (IS_ENABLED(CONFIG_64BIT)) ref->cache->timeline = 0; /* needs cmpxchg(u64) */
ref->cache->timeline = 0; /* needs cmpxchg(u64) */
} }
spin_unlock_irqrestore(&ref->tree_lock, flags); spin_unlock_irqrestore(&ref->tree_lock, flags);
...@@ -256,7 +255,6 @@ static struct active_node *__active_lookup(struct i915_active *ref, u64 idx) ...@@ -256,7 +255,6 @@ static struct active_node *__active_lookup(struct i915_active *ref, u64 idx)
if (cached == idx) if (cached == idx)
return it; return it;
#ifdef CONFIG_64BIT /* for cmpxchg(u64) */
/* /*
* An unclaimed cache [.timeline=0] can only be claimed once. * An unclaimed cache [.timeline=0] can only be claimed once.
* *
...@@ -267,9 +265,8 @@ static struct active_node *__active_lookup(struct i915_active *ref, u64 idx) ...@@ -267,9 +265,8 @@ static struct active_node *__active_lookup(struct i915_active *ref, u64 idx)
* only the winner of that race will cmpxchg return the old * only the winner of that race will cmpxchg return the old
* value of 0). * value of 0).
*/ */
if (!cached && !cmpxchg(&it->timeline, 0, idx)) if (!cached && !cmpxchg64(&it->timeline, 0, idx))
return it; return it;
#endif
} }
BUILD_BUG_ON(offsetof(typeof(*it), node)); BUILD_BUG_ON(offsetof(typeof(*it), node));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment