diff options
| -rw-r--r-- | arch/powerpc/mm/hash_native_64.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/powerpc/mm/hash_native_64.c b/arch/powerpc/mm/hash_native_64.c index 056d23a1b105..9e1aa4f99fac 100644 --- a/arch/powerpc/mm/hash_native_64.c +++ b/arch/powerpc/mm/hash_native_64.c | |||
| @@ -122,7 +122,7 @@ static inline void native_lock_hpte(struct hash_pte *hptep) | |||
| 122 | unsigned long *word = &hptep->v; | 122 | unsigned long *word = &hptep->v; |
| 123 | 123 | ||
| 124 | while (1) { | 124 | while (1) { |
| 125 | if (!test_and_set_bit(HPTE_LOCK_BIT, word)) | 125 | if (!test_and_set_bit_lock(HPTE_LOCK_BIT, word)) |
| 126 | break; | 126 | break; |
| 127 | while(test_bit(HPTE_LOCK_BIT, word)) | 127 | while(test_bit(HPTE_LOCK_BIT, word)) |
| 128 | cpu_relax(); | 128 | cpu_relax(); |
| @@ -133,8 +133,7 @@ static inline void native_unlock_hpte(struct hash_pte *hptep) | |||
| 133 | { | 133 | { |
| 134 | unsigned long *word = &hptep->v; | 134 | unsigned long *word = &hptep->v; |
| 135 | 135 | ||
| 136 | asm volatile("lwsync":::"memory"); | 136 | clear_bit_unlock(HPTE_LOCK_BIT, word); |
| 137 | clear_bit(HPTE_LOCK_BIT, word); | ||
| 138 | } | 137 | } |
| 139 | 138 | ||
| 140 | static long native_hpte_insert(unsigned long hpte_group, unsigned long va, | 139 | static long native_hpte_insert(unsigned long hpte_group, unsigned long va, |
