Since commit 9e343b467c70 ("READ_ONCE: Enforce atomicity for {READ,WRITE}_ONCE() memory accesses") it is not possible anymore to use READ_ONCE() to access complex page table entries like the one defined for powerpc 8xx with 16k size pages. Define a ptep_get() helper that architectures can override instead of performing a READ_ONCE() on the page table entry pointer.
Unified · Split
| @@ -122,7 +122,7 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, · 121 unmodified lines | |||
| 122 | #ifndef __HAVE_ARCH_HUGE_PTEP_GET | 122 | #ifndef __HAVE_ARCH_HUGE_PTEP_GET |
| 123 | static inline pte_t huge_ptep_get(pte_t *ptep) | 123 | static inline pte_t huge_ptep_get(pte_t *ptep) |
| 124 | { | 124 | { |
| 125 | return READ_ONCE(*ptep); | 125 | return ptep_get(ptep); |
| 126 | } | 126 | } |
| 127 | #endif | 127 | #endif |
| 128 | 128 | ||
| @@ -249,6 +249,13 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm, · 248 unmodified lines | |||
| 249 | } | 249 | } |
| 250 | #endif | 250 | #endif |
| 251 | 251 | ||
| 252 | #ifndef __HAVE_ARCH_PTEP_GET | ||
| 253 | static inline pte_t ptep_get(pte_t *ptep) | ||
| 254 | { | ||
| 255 | return READ_ONCE(*ptep); | ||
| 256 | } | ||
| 257 | #endif | ||
| 258 | |||
| 252 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | 259 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE |
| 253 | #ifndef __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR | 260 | #ifndef __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR |
| 254 | static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm, | 261 | static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm, |
| @@ -2196,7 +2196,7 @@ static inline pte_t gup_get_pte(pte_t *ptep) · 2195 unmodified lines | |||
| 2196 | */ | 2196 | */ |
| 2197 | static inline pte_t gup_get_pte(pte_t *ptep) | 2197 | static inline pte_t gup_get_pte(pte_t *ptep) |
| 2198 | { | 2198 | { |
| 2199 | return READ_ONCE(*ptep); | 2199 | return ptep_get(ptep); |
| 2200 | } | 2200 | } |
| 2201 | #endif /* CONFIG_GUP_GET_PTE_LOW_HIGH */ | 2201 | #endif /* CONFIG_GUP_GET_PTE_LOW_HIGH */ |
| 2202 | 2202 | ||