Skip to content

Commit 3010a5e

Browse files
Laurent Dufourtorvalds
authored andcommitted
mm: introduce ARCH_HAS_PTE_SPECIAL
Currently the PTE special supports is turned on in per architecture header files. Most of the time, it is defined in arch/*/include/asm/pgtable.h depending or not on some other per architecture static definition. This patch introduce a new configuration variable to manage this directly in the Kconfig files. It would later replace __HAVE_ARCH_PTE_SPECIAL. Here notes for some architecture where the definition of __HAVE_ARCH_PTE_SPECIAL is not obvious: arm __HAVE_ARCH_PTE_SPECIAL which is currently defined in arch/arm/include/asm/pgtable-3level.h which is included by arch/arm/include/asm/pgtable.h when CONFIG_ARM_LPAE is set. So select ARCH_HAS_PTE_SPECIAL if ARM_LPAE. powerpc __HAVE_ARCH_PTE_SPECIAL is defined in 2 files: - arch/powerpc/include/asm/book3s/64/pgtable.h - arch/powerpc/include/asm/pte-common.h The first one is included if (PPC_BOOK3S & PPC64) while the second is included in all the other cases. So select ARCH_HAS_PTE_SPECIAL all the time. sparc: __HAVE_ARCH_PTE_SPECIAL is defined if defined(__sparc__) && defined(__arch64__) which are defined through the compiler in sparc/Makefile if !SPARC32 which I assume to be if SPARC64. So select ARCH_HAS_PTE_SPECIAL if SPARC64 There is no functional change introduced by this patch. Link: http://lkml.kernel.org/r/1523433816-14460-2-git-send-email-ldufour@linux.vnet.ibm.com Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com> Suggested-by: Jerome Glisse <jglisse@redhat.com> Reviewed-by: Jerome Glisse <jglisse@redhat.com> Acked-by: David Rientjes <rientjes@google.com> Cc: Michal Hocko <mhocko@kernel.org> Cc: "Aneesh Kumar K . V" <aneesh.kumar@linux.vnet.ibm.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Cc: Yoshinori Sato <ysato@users.sourceforge.jp> Cc: Rich Felker <dalias@libc.org> Cc: David S. Miller <davem@davemloft.net> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Palmer Dabbelt <palmer@sifive.com> Cc: Albert Ou <albert@sifive.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: David Rientjes <rientjes@google.com> Cc: Robin Murphy <robin.murphy@arm.com> Cc: Christophe LEROY <christophe.leroy@c-s.fr> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent e694385 commit 3010a5e

File tree

24 files changed

+18
-27
lines changed

24 files changed

+18
-27
lines changed

Documentation/features/vm/pte_special/arch-support.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#
22
# Feature name: pte_special
3-
# Kconfig: __HAVE_ARCH_PTE_SPECIAL
3+
# Kconfig: ARCH_HAS_PTE_SPECIAL
44
# description: arch supports the pte_special()/pte_mkspecial() VM APIs
55
#
66
-----------------------

arch/arc/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ config ARC
4848
select HAVE_GENERIC_DMA_COHERENT
4949
select HAVE_KERNEL_GZIP
5050
select HAVE_KERNEL_LZMA
51+
select ARCH_HAS_PTE_SPECIAL
5152

5253
config MIGHT_HAVE_PCI
5354
bool

arch/arc/include/asm/pgtable.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,6 @@ PTE_BIT_FUNC(mkexec, |= (_PAGE_EXECUTE));
320320
PTE_BIT_FUNC(mkspecial, |= (_PAGE_SPECIAL));
321321
PTE_BIT_FUNC(mkhuge, |= (_PAGE_HW_SZ));
322322

323-
#define __HAVE_ARCH_PTE_SPECIAL
324-
325323
static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
326324
{
327325
return __pte((pte_val(pte) & _PAGE_CHG_MASK) | pgprot_val(newprot));

arch/arm/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ config ARM
88
select ARCH_HAS_DEVMEM_IS_ALLOWED
99
select ARCH_HAS_ELF_RANDOMIZE
1010
select ARCH_HAS_FORTIFY_SOURCE
11+
select ARCH_HAS_PTE_SPECIAL if ARM_LPAE
1112
select ARCH_HAS_SET_MEMORY
1213
select ARCH_HAS_PHYS_TO_DMA
1314
select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL

arch/arm/include/asm/pgtable-3level.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,6 @@ static inline pte_t pte_mkspecial(pte_t pte)
219219
pte_val(pte) |= L_PTE_SPECIAL;
220220
return pte;
221221
}
222-
#define __HAVE_ARCH_PTE_SPECIAL
223222

224223
#define pmd_write(pmd) (pmd_isclear((pmd), L_PMD_SECT_RDONLY))
225224
#define pmd_dirty(pmd) (pmd_isset((pmd), L_PMD_SECT_DIRTY))

arch/arm64/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ config ARM64
1717
select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA
1818
select ARCH_HAS_KCOV
1919
select ARCH_HAS_MEMBARRIER_SYNC_CORE
20+
select ARCH_HAS_PTE_SPECIAL
2021
select ARCH_HAS_SET_MEMORY
2122
select ARCH_HAS_SG_CHAIN
2223
select ARCH_HAS_STRICT_KERNEL_RWX

arch/arm64/include/asm/pgtable.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,8 +306,6 @@ static inline int pte_same(pte_t pte_a, pte_t pte_b)
306306
#define HPAGE_MASK (~(HPAGE_SIZE - 1))
307307
#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT)
308308

309-
#define __HAVE_ARCH_PTE_SPECIAL
310-
311309
static inline pte_t pgd_pte(pgd_t pgd)
312310
{
313311
return __pte(pgd_val(pgd));

arch/powerpc/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ config PPC
135135
select ARCH_HAS_GCOV_PROFILE_ALL
136136
select ARCH_HAS_PHYS_TO_DMA
137137
select ARCH_HAS_PMEM_API if PPC64
138+
select ARCH_HAS_PTE_SPECIAL
138139
select ARCH_HAS_MEMBARRIER_CALLBACKS
139140
select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE
140141
select ARCH_HAS_SG_CHAIN

arch/powerpc/include/asm/book3s/64/pgtable.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -335,9 +335,6 @@ extern unsigned long pci_io_base;
335335
/* Advertise special mapping type for AGP */
336336
#define HAVE_PAGE_AGP
337337

338-
/* Advertise support for _PAGE_SPECIAL */
339-
#define __HAVE_ARCH_PTE_SPECIAL
340-
341338
#ifndef __ASSEMBLY__
342339

343340
/*

arch/powerpc/include/asm/pte-common.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,6 @@ static inline bool pte_user(pte_t pte)
208208
#define PAGE_AGP (PAGE_KERNEL_NC)
209209
#define HAVE_PAGE_AGP
210210

211-
/* Advertise support for _PAGE_SPECIAL */
212-
#define __HAVE_ARCH_PTE_SPECIAL
213-
214211
#ifndef _PAGE_READ
215212
/* if not defined, we should not find _PAGE_WRITE too */
216213
#define _PAGE_READ 0

0 commit comments

Comments
 (0)