diff options
author | Michael Ellerman <mpe@ellerman.id.au> | 2015-03-25 05:11:57 -0400 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2015-04-10 06:02:47 -0400 |
commit | 4f9c53c8cc76ed84e3bb0cca8c4ffa2b170d0239 (patch) | |
tree | 9592262236d4f0a520cb98e120bff69d4eb36e3d /arch/powerpc/include/asm | |
parent | 5dd4e4f6fe9495f02d4594bd460b84008a3e8e93 (diff) |
powerpc: Fix compile errors with STRICT_MM_TYPECHECKS enabled
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
[mpe: Fix the 32-bit code also]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/include/asm')
-rw-r--r-- | arch/powerpc/include/asm/kvm_book3s_64.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h index 2a244bf869c0..14619a59ec09 100644 --- a/arch/powerpc/include/asm/kvm_book3s_64.h +++ b/arch/powerpc/include/asm/kvm_book3s_64.h | |||
@@ -290,11 +290,11 @@ static inline pte_t kvmppc_read_update_linux_pte(pte_t *ptep, int writing, | |||
290 | pte_t old_pte, new_pte = __pte(0); | 290 | pte_t old_pte, new_pte = __pte(0); |
291 | 291 | ||
292 | while (1) { | 292 | while (1) { |
293 | old_pte = pte_val(*ptep); | 293 | old_pte = *ptep; |
294 | /* | 294 | /* |
295 | * wait until _PAGE_BUSY is clear then set it atomically | 295 | * wait until _PAGE_BUSY is clear then set it atomically |
296 | */ | 296 | */ |
297 | if (unlikely(old_pte & _PAGE_BUSY)) { | 297 | if (unlikely(pte_val(old_pte) & _PAGE_BUSY)) { |
298 | cpu_relax(); | 298 | cpu_relax(); |
299 | continue; | 299 | continue; |
300 | } | 300 | } |
@@ -305,16 +305,18 @@ static inline pte_t kvmppc_read_update_linux_pte(pte_t *ptep, int writing, | |||
305 | return __pte(0); | 305 | return __pte(0); |
306 | #endif | 306 | #endif |
307 | /* If pte is not present return None */ | 307 | /* If pte is not present return None */ |
308 | if (unlikely(!(old_pte & _PAGE_PRESENT))) | 308 | if (unlikely(!(pte_val(old_pte) & _PAGE_PRESENT))) |
309 | return __pte(0); | 309 | return __pte(0); |
310 | 310 | ||
311 | new_pte = pte_mkyoung(old_pte); | 311 | new_pte = pte_mkyoung(old_pte); |
312 | if (writing && pte_write(old_pte)) | 312 | if (writing && pte_write(old_pte)) |
313 | new_pte = pte_mkdirty(new_pte); | 313 | new_pte = pte_mkdirty(new_pte); |
314 | 314 | ||
315 | if (old_pte == __cmpxchg_u64((unsigned long *)ptep, old_pte, | 315 | if (pte_val(old_pte) == __cmpxchg_u64((unsigned long *)ptep, |
316 | new_pte)) | 316 | pte_val(old_pte), |
317 | pte_val(new_pte))) { | ||
317 | break; | 318 | break; |
319 | } | ||
318 | } | 320 | } |
319 | return new_pte; | 321 | return new_pte; |
320 | } | 322 | } |