Skip to content

Commit bb7cdd3

Browse files
committed
alpha: Replace smp_read_barrier_depends() usage with smp_[r]mb()
In preparation for removing smp_read_barrier_depends() altogether, move the Alpha code over to using smp_rmb() and smp_mb() directly. Acked-by: Peter Zijlstra (Intel) <[email protected]> Acked-by: Paul E. McKenney <[email protected]> Signed-off-by: Will Deacon <[email protected]>
1 parent 71c0b9a commit bb7cdd3

File tree

3 files changed

+14
-14
lines changed

3 files changed

+14
-14
lines changed

arch/alpha/include/asm/atomic.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616

1717
/*
1818
* To ensure dependency ordering is preserved for the _relaxed and
19-
* _release atomics, an smp_read_barrier_depends() is unconditionally
20-
* inserted into the _relaxed variants, which are used to build the
21-
* barriered versions. Avoid redundant back-to-back fences in the
22-
* _acquire and _fence versions.
19+
* _release atomics, an smp_mb() is unconditionally inserted into the
20+
* _relaxed variants, which are used to build the barriered versions.
21+
* Avoid redundant back-to-back fences in the _acquire and _fence
22+
* versions.
2323
*/
2424
#define __atomic_acquire_fence()
2525
#define __atomic_post_full_fence()
@@ -70,7 +70,7 @@ static inline int atomic_##op##_return_relaxed(int i, atomic_t *v) \
7070
".previous" \
7171
:"=&r" (temp), "=m" (v->counter), "=&r" (result) \
7272
:"Ir" (i), "m" (v->counter) : "memory"); \
73-
smp_read_barrier_depends(); \
73+
smp_mb(); \
7474
return result; \
7575
}
7676

@@ -88,7 +88,7 @@ static inline int atomic_fetch_##op##_relaxed(int i, atomic_t *v) \
8888
".previous" \
8989
:"=&r" (temp), "=m" (v->counter), "=&r" (result) \
9090
:"Ir" (i), "m" (v->counter) : "memory"); \
91-
smp_read_barrier_depends(); \
91+
smp_mb(); \
9292
return result; \
9393
}
9494

@@ -123,7 +123,7 @@ static __inline__ s64 atomic64_##op##_return_relaxed(s64 i, atomic64_t * v) \
123123
".previous" \
124124
:"=&r" (temp), "=m" (v->counter), "=&r" (result) \
125125
:"Ir" (i), "m" (v->counter) : "memory"); \
126-
smp_read_barrier_depends(); \
126+
smp_mb(); \
127127
return result; \
128128
}
129129

@@ -141,7 +141,7 @@ static __inline__ s64 atomic64_fetch_##op##_relaxed(s64 i, atomic64_t * v) \
141141
".previous" \
142142
:"=&r" (temp), "=m" (v->counter), "=&r" (result) \
143143
:"Ir" (i), "m" (v->counter) : "memory"); \
144-
smp_read_barrier_depends(); \
144+
smp_mb(); \
145145
return result; \
146146
}
147147

arch/alpha/include/asm/pgtable.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,9 @@ extern inline pte_t pte_mkdirty(pte_t pte) { pte_val(pte) |= __DIRTY_BITS; retur
277277
extern inline pte_t pte_mkyoung(pte_t pte) { pte_val(pte) |= __ACCESS_BITS; return pte; }
278278

279279
/*
280-
* The smp_read_barrier_depends() in the following functions are required to
281-
* order the load of *dir (the pointer in the top level page table) with any
282-
* subsequent load of the returned pmd_t *ret (ret is data dependent on *dir).
280+
* The smp_rmb() in the following functions are required to order the load of
281+
* *dir (the pointer in the top level page table) with any subsequent load of
282+
* the returned pmd_t *ret (ret is data dependent on *dir).
283283
*
284284
* If this ordering is not enforced, the CPU might load an older value of
285285
* *ret, which may be uninitialized data. See mm/memory.c:__pte_alloc for
@@ -293,7 +293,7 @@ extern inline pte_t pte_mkyoung(pte_t pte) { pte_val(pte) |= __ACCESS_BITS; retu
293293
extern inline pmd_t * pmd_offset(pud_t * dir, unsigned long address)
294294
{
295295
pmd_t *ret = (pmd_t *) pud_page_vaddr(*dir) + ((address >> PMD_SHIFT) & (PTRS_PER_PAGE - 1));
296-
smp_read_barrier_depends(); /* see above */
296+
smp_rmb(); /* see above */
297297
return ret;
298298
}
299299
#define pmd_offset pmd_offset
@@ -303,7 +303,7 @@ extern inline pte_t * pte_offset_kernel(pmd_t * dir, unsigned long address)
303303
{
304304
pte_t *ret = (pte_t *) pmd_page_vaddr(*dir)
305305
+ ((address >> PAGE_SHIFT) & (PTRS_PER_PAGE - 1));
306-
smp_read_barrier_depends(); /* see above */
306+
smp_rmb(); /* see above */
307307
return ret;
308308
}
309309
#define pte_offset_kernel pte_offset_kernel

mm/memory.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ int __pte_alloc(struct mm_struct *mm, pmd_t *pmd)
437437
* of a chain of data-dependent loads, meaning most CPUs (alpha
438438
* being the notable exception) will already guarantee loads are
439439
* seen in-order. See the alpha page table accessors for the
440-
* smp_read_barrier_depends() barriers in page table walking code.
440+
* smp_rmb() barriers in page table walking code.
441441
*/
442442
smp_wmb(); /* Could be smp_wmb__xxx(before|after)_spin_lock */
443443

0 commit comments

Comments
 (0)