summaryrefslogtreecommitdiff
path: root/arch/arm/include/asm/pgtable-2level.h
diff options
context:
space:
mode:
authorSteve Capper <steve.capper@linaro.org>2014-10-10 02:29:16 +0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-10-10 06:26:00 +0400
commitbd951303be5b4df578c7f30ef78839f1a9d6658c (patch)
tree573157dd8efc4de9a26b5e10f857840f8fcab02e /arch/arm/include/asm/pgtable-2level.h
parent2667f50e8b81457fcb4a3dbe6aff3e81ea009e13 (diff)
downloadlinux-bd951303be5b4df578c7f30ef78839f1a9d6658c.tar.xz
arm: mm: introduce special ptes for LPAE
We need a mechanism to tag ptes as being special, this indicates that no attempt should be made to access the underlying struct page * associated with the pte. This is used by the fast_gup when operating on ptes as it has no means to access VMAs (that also contain this information) locklessly. The L_PTE_SPECIAL bit is already allocated for LPAE, this patch modifies pte_special and pte_mkspecial to make use of it, and defines __HAVE_ARCH_PTE_SPECIAL. This patch also excludes special ptes from the icache/dcache sync logic. Signed-off-by: Steve Capper <steve.capper@linaro.org> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Cc: Dann Frazier <dann.frazier@canonical.com> Cc: Hugh Dickins <hughd@google.com> Cc: Russell King <rmk@arm.linux.org.uk> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mel Gorman <mel@csn.ul.ie> Cc: Will Deacon <will.deacon@arm.com> Cc: Christoffer Dall <christoffer.dall@linaro.org> Cc: Andrea Arcangeli <aarcange@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/arm/include/asm/pgtable-2level.h')
-rw-r--r--arch/arm/include/asm/pgtable-2level.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm/include/asm/pgtable-2level.h b/arch/arm/include/asm/pgtable-2level.h
index 219ac88a9542..f0279411847d 100644
--- a/arch/arm/include/asm/pgtable-2level.h
+++ b/arch/arm/include/asm/pgtable-2level.h
@@ -182,6 +182,8 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr)
#define pmd_addr_end(addr,end) (end)
#define set_pte_ext(ptep,pte,ext) cpu_set_pte_ext(ptep,pte,ext)
+#define pte_special(pte) (0)
+static inline pte_t pte_mkspecial(pte_t pte) { return pte; }
/*
* We don't have huge page support for short descriptors, for the moment