aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pgtable.h
diff options
context:
space:
mode:
authorChristophe Leroy <christophe.leroy@csgroup.eu>2020-06-15 12:57:58 +0000
committerMichael Ellerman <mpe@ellerman.id.au>2020-06-20 22:14:53 +1000
commit481e980a7c199c5a4634fd7ea308067dd4ba75fa (patch)
tree8cb8ccaf80bd171a3745a034ac6647fc2865eeba /include/linux/pgtable.h
parentmm/gup: Use huge_ptep_get() in gup_hugepte() (diff)
downloadlinux-dev-481e980a7c199c5a4634fd7ea308067dd4ba75fa.tar.xz
linux-dev-481e980a7c199c5a4634fd7ea308067dd4ba75fa.zip
mm: Allow arches to provide ptep_get()
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. Fixes: 9e343b467c70 ("READ_ONCE: Enforce atomicity for {READ,WRITE}_ONCE() memory accesses") Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Acked-by: Will Deacon <will@kernel.org> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/087fa12b6e920e32315136b998aa834f99242695.1592225558.git.christophe.leroy@csgroup.eu
Diffstat (limited to 'include/linux/pgtable.h')
-rw-r--r--include/linux/pgtable.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h
index 32b6c52d41b9..56c1e8eb7bb0 100644
--- a/include/linux/pgtable.h
+++ b/include/linux/pgtable.h
@@ -249,6 +249,13 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm,
}
#endif
+#ifndef __HAVE_ARCH_PTEP_GET
+static inline pte_t ptep_get(pte_t *ptep)
+{
+ return READ_ONCE(*ptep);
+}
+#endif
+
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
#ifndef __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR
static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm,