Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mm: always define pxx_pgprot()

There're:

- 8 archs (arc, arm64, include, mips, powerpc, s390, sh, x86) that
support pte_pgprot().

- 2 archs (x86, sparc) that support pmd_pgprot().

- 1 arch (x86) that support pud_pgprot().

Always define them to be used in generic code, and then we don't need to
fiddle with "#ifdef"s when doing so.

Link: https://lkml.kernel.org/r/20240826204353.2228736-9-peterx@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Alex Williamson <alex.williamson@redhat.com>
Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Gavin Shan <gshan@redhat.com>
Cc: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Niklas Schnelle <schnelle@linux.ibm.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Sean Christopherson <seanjc@google.com>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Peter Xu and committed by
Andrew Morton
0515e022 bc02afbd

+16
+1
arch/arm64/include/asm/pgtable.h
··· 384 384 /* 385 385 * Select all bits except the pfn 386 386 */ 387 + #define pte_pgprot pte_pgprot 387 388 static inline pgprot_t pte_pgprot(pte_t pte) 388 389 { 389 390 unsigned long pfn = pte_pfn(pte);
+1
arch/powerpc/include/asm/pgtable.h
··· 65 65 /* 66 66 * Select all bits except the pfn 67 67 */ 68 + #define pte_pgprot pte_pgprot 68 69 static inline pgprot_t pte_pgprot(pte_t pte) 69 70 { 70 71 unsigned long pte_flags;
+1
arch/s390/include/asm/pgtable.h
··· 955 955 * young/old accounting is not supported, i.e _PAGE_PROTECT and _PAGE_INVALID 956 956 * must not be set. 957 957 */ 958 + #define pte_pgprot pte_pgprot 958 959 static inline pgprot_t pte_pgprot(pte_t pte) 959 960 { 960 961 unsigned long pte_flags = pte_val(pte) & _PAGE_CHG_MASK;
+1
arch/sparc/include/asm/pgtable_64.h
··· 783 783 return __pmd(pte_val(pte)); 784 784 } 785 785 786 + #define pmd_pgprot pmd_pgprot 786 787 static inline pgprot_t pmd_pgprot(pmd_t entry) 787 788 { 788 789 unsigned long val = pmd_val(entry);
+12
include/linux/pgtable.h
··· 1956 1956 #define MAX_PTRS_PER_P4D PTRS_PER_P4D 1957 1957 #endif 1958 1958 1959 + #ifndef pte_pgprot 1960 + #define pte_pgprot(x) ((pgprot_t) {0}) 1961 + #endif 1962 + 1963 + #ifndef pmd_pgprot 1964 + #define pmd_pgprot(x) ((pgprot_t) {0}) 1965 + #endif 1966 + 1967 + #ifndef pud_pgprot 1968 + #define pud_pgprot(x) ((pgprot_t) {0}) 1969 + #endif 1970 + 1959 1971 /* description of effects of mapping type and prot in current implementation. 1960 1972 * this is due to the limited x86 page protection hardware. The expected 1961 1973 * behavior is in parens: