From: Anshuman Khandual <anshuman.khandual@arm.com> To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, hch@infradead.org, akpm@linux-foundation.org, Anshuman Khandual <anshuman.khandual@arm.com>, Paul Walmsley <paul.walmsley@sifive.com>, Palmer Dabbelt <palmer@dabbelt.com>, linux-riscv@lists.infradead.org Subject: [RFC V1 15/31] riscv/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT Date: Mon, 24 Jan 2022 18:26:52 +0530 [thread overview] Message-ID: <1643029028-12710-16-git-send-email-anshuman.khandual@arm.com> (raw) In-Reply-To: <1643029028-12710-1-git-send-email-anshuman.khandual@arm.com> This defines and exports a platform specific custom vm_get_page_prot() via subscribing ARCH_HAS_VM_GET_PAGE_PROT. Subsequently all __SXXX and __PXXX macros can be dropped which are no longer needed. Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: linux-riscv@lists.infradead.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> --- arch/riscv/Kconfig | 1 + arch/riscv/include/asm/pgtable.h | 16 ------------- arch/riscv/mm/init.c | 41 ++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 5adcbd9b5e88..9391742f9286 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -31,6 +31,7 @@ config RISCV select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST select ARCH_HAS_UBSAN_SANITIZE_ALL + select ARCH_HAS_VM_GET_PAGE_PROT select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT select ARCH_STACKWALK diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 7e949f25c933..d2bb14cac28b 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -183,24 +183,8 @@ extern struct pt_alloc_ops pt_ops __initdata; extern pgd_t swapper_pg_dir[]; /* MAP_PRIVATE permissions: xwr (copy-on-write) */ -#define __P000 PAGE_NONE -#define __P001 PAGE_READ -#define __P010 PAGE_COPY -#define __P011 PAGE_COPY -#define __P100 PAGE_EXEC -#define __P101 PAGE_READ_EXEC -#define __P110 PAGE_COPY_EXEC -#define __P111 PAGE_COPY_READ_EXEC /* MAP_SHARED permissions: xwr */ -#define __S000 PAGE_NONE -#define __S001 PAGE_READ -#define __S010 PAGE_SHARED -#define __S011 PAGE_SHARED -#define __S100 PAGE_EXEC -#define __S101 PAGE_READ_EXEC -#define __S110 PAGE_SHARED_EXEC -#define __S111 PAGE_SHARED_EXEC #ifdef CONFIG_TRANSPARENT_HUGEPAGE static inline int pmd_present(pmd_t pmd) diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index cf4d018b7d66..1cd96ba5398b 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -1048,3 +1048,44 @@ int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node, return vmemmap_populate_basepages(start, end, node, NULL); } #endif + +pgprot_t vm_get_page_prot(unsigned long vm_flags) +{ + switch (vm_flags & (VM_READ | VM_WRITE | VM_EXEC | VM_SHARED)) { + case VM_NONE: + return PAGE_NONE; + case VM_READ: + return PAGE_READ; + case VM_WRITE: + return PAGE_COPY; + case VM_READ | VM_WRITE: + return PAGE_COPY; + case VM_EXEC: + return PAGE_EXEC; + case VM_EXEC | VM_READ: + return PAGE_READ_EXEC; + case VM_EXEC | VM_WRITE: + return PAGE_COPY_EXEC; + case VM_EXEC | VM_READ | VM_WRITE: + return PAGE_COPY_READ_EXEC; + case VM_SHARED: + return PAGE_NONE; + case VM_SHARED | VM_READ: + return PAGE_READ; + case VM_SHARED | VM_WRITE: + return PAGE_SHARED; + case VM_SHARED | VM_READ | VM_WRITE: + return PAGE_SHARED; + case VM_SHARED | VM_EXEC: + return PAGE_EXEC; + case VM_SHARED | VM_EXEC | VM_READ: + return PAGE_READ_EXEC; + case VM_SHARED | VM_EXEC | VM_WRITE: + return PAGE_SHARED_EXEC; + case VM_SHARED | VM_EXEC | VM_READ | VM_WRITE: + return PAGE_SHARED_EXEC; + default: + BUILD_BUG(); + } +} +EXPORT_SYMBOL(vm_get_page_prot); -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Anshuman Khandual <anshuman.khandual@arm.com> To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, hch@infradead.org, akpm@linux-foundation.org, Anshuman Khandual <anshuman.khandual@arm.com>, Paul Walmsley <paul.walmsley@sifive.com>, Palmer Dabbelt <palmer@dabbelt.com>, linux-riscv@lists.infradead.org Subject: [RFC V1 15/31] riscv/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT Date: Mon, 24 Jan 2022 18:26:52 +0530 [thread overview] Message-ID: <1643029028-12710-16-git-send-email-anshuman.khandual@arm.com> (raw) In-Reply-To: <1643029028-12710-1-git-send-email-anshuman.khandual@arm.com> This defines and exports a platform specific custom vm_get_page_prot() via subscribing ARCH_HAS_VM_GET_PAGE_PROT. Subsequently all __SXXX and __PXXX macros can be dropped which are no longer needed. Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: linux-riscv@lists.infradead.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> --- arch/riscv/Kconfig | 1 + arch/riscv/include/asm/pgtable.h | 16 ------------- arch/riscv/mm/init.c | 41 ++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 5adcbd9b5e88..9391742f9286 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -31,6 +31,7 @@ config RISCV select ARCH_HAS_STRICT_MODULE_RWX if MMU && !XIP_KERNEL select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST select ARCH_HAS_UBSAN_SANITIZE_ALL + select ARCH_HAS_VM_GET_PAGE_PROT select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT select ARCH_STACKWALK diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 7e949f25c933..d2bb14cac28b 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -183,24 +183,8 @@ extern struct pt_alloc_ops pt_ops __initdata; extern pgd_t swapper_pg_dir[]; /* MAP_PRIVATE permissions: xwr (copy-on-write) */ -#define __P000 PAGE_NONE -#define __P001 PAGE_READ -#define __P010 PAGE_COPY -#define __P011 PAGE_COPY -#define __P100 PAGE_EXEC -#define __P101 PAGE_READ_EXEC -#define __P110 PAGE_COPY_EXEC -#define __P111 PAGE_COPY_READ_EXEC /* MAP_SHARED permissions: xwr */ -#define __S000 PAGE_NONE -#define __S001 PAGE_READ -#define __S010 PAGE_SHARED -#define __S011 PAGE_SHARED -#define __S100 PAGE_EXEC -#define __S101 PAGE_READ_EXEC -#define __S110 PAGE_SHARED_EXEC -#define __S111 PAGE_SHARED_EXEC #ifdef CONFIG_TRANSPARENT_HUGEPAGE static inline int pmd_present(pmd_t pmd) diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index cf4d018b7d66..1cd96ba5398b 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -1048,3 +1048,44 @@ int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node, return vmemmap_populate_basepages(start, end, node, NULL); } #endif + +pgprot_t vm_get_page_prot(unsigned long vm_flags) +{ + switch (vm_flags & (VM_READ | VM_WRITE | VM_EXEC | VM_SHARED)) { + case VM_NONE: + return PAGE_NONE; + case VM_READ: + return PAGE_READ; + case VM_WRITE: + return PAGE_COPY; + case VM_READ | VM_WRITE: + return PAGE_COPY; + case VM_EXEC: + return PAGE_EXEC; + case VM_EXEC | VM_READ: + return PAGE_READ_EXEC; + case VM_EXEC | VM_WRITE: + return PAGE_COPY_EXEC; + case VM_EXEC | VM_READ | VM_WRITE: + return PAGE_COPY_READ_EXEC; + case VM_SHARED: + return PAGE_NONE; + case VM_SHARED | VM_READ: + return PAGE_READ; + case VM_SHARED | VM_WRITE: + return PAGE_SHARED; + case VM_SHARED | VM_READ | VM_WRITE: + return PAGE_SHARED; + case VM_SHARED | VM_EXEC: + return PAGE_EXEC; + case VM_SHARED | VM_EXEC | VM_READ: + return PAGE_READ_EXEC; + case VM_SHARED | VM_EXEC | VM_WRITE: + return PAGE_SHARED_EXEC; + case VM_SHARED | VM_EXEC | VM_READ | VM_WRITE: + return PAGE_SHARED_EXEC; + default: + BUILD_BUG(); + } +} +EXPORT_SYMBOL(vm_get_page_prot); -- 2.25.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2022-01-24 12:58 UTC|newest] Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-01-24 12:56 [RFC V1 00/31] mm/mmap: Drop protection_map[] and platform's __SXXX/__PXXX requirements Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 01/31] mm/debug_vm_pgtable: Directly use vm_get_page_prot() Anshuman Khandual 2022-01-26 7:15 ` Christoph Hellwig 2022-01-27 4:16 ` Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 02/31] mm/mmap: Clarify protection_map[] indices Anshuman Khandual 2022-01-26 7:16 ` Christoph Hellwig 2022-01-27 4:07 ` Anshuman Khandual 2022-01-27 12:39 ` Mike Rapoport 2022-01-31 3:25 ` Anshuman Khandual 2022-02-05 9:10 ` Firo Yang 2022-02-09 3:23 ` Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 03/31] mm/mmap: Add new config ARCH_HAS_VM_GET_PAGE_PROT Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 04/31] powerpc/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT Anshuman Khandual 2022-01-24 12:56 ` Anshuman Khandual 2022-02-03 18:15 ` Mike Rapoport 2022-02-03 18:15 ` Mike Rapoport 2022-02-04 2:57 ` Anshuman Khandual 2022-02-04 2:57 ` Anshuman Khandual 2022-02-04 4:44 ` Mike Rapoport 2022-02-04 4:44 ` Mike Rapoport 2022-01-24 12:56 ` [RFC V1 05/31] arm64/mm: " Anshuman Khandual 2022-01-24 12:56 ` Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 06/31] sparc/mm: " Anshuman Khandual 2022-01-24 12:58 ` David Miller 2022-01-24 18:21 ` Khalid Aziz 2022-01-24 12:56 ` [RFC V1 07/31] mips/mm: " Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 08/31] m68k/mm: " Anshuman Khandual 2022-01-24 14:13 ` Andreas Schwab 2022-01-25 3:42 ` Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 09/31] arm/mm: " Anshuman Khandual 2022-01-24 12:56 ` Anshuman Khandual 2022-01-24 17:06 ` Russell King (Oracle) 2022-01-24 17:06 ` Russell King (Oracle) 2022-01-25 3:36 ` Anshuman Khandual 2022-01-25 3:36 ` Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 10/31] x86/mm: " Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 11/31] mm/mmap: Drop protection_map[] Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 12/31] mm/mmap: Drop arch_filter_pgprot() Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 13/31] mm/mmap: Drop arch_vm_get_page_pgprot() Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 14/31] s390/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT Anshuman Khandual 2022-01-24 12:56 ` Anshuman Khandual [this message] 2022-01-24 12:56 ` [RFC V1 15/31] riscv/mm: " Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 16/31] alpha/mm: " Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 17/31] sh/mm: " Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 18/31] arc/mm: " Anshuman Khandual 2022-01-24 12:56 ` Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 19/31] csky/mm: " Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 20/31] extensa/mm: " Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 21/31] parisc/mm: " Anshuman Khandual 2022-01-25 16:53 ` Rolf Eike Beer 2022-01-27 4:06 ` Anshuman Khandual 2022-01-24 12:56 ` [RFC V1 22/31] openrisc/mm: " Anshuman Khandual 2022-01-24 12:56 ` [OpenRISC] " Anshuman Khandual 2022-02-05 6:58 ` Stafford Horne 2022-02-05 6:58 ` Stafford Horne 2022-01-24 12:57 ` [RFC V1 23/31] um/mm: " Anshuman Khandual 2022-01-24 12:57 ` Anshuman Khandual 2022-01-24 12:57 ` [RFC V1 24/31] microblaze/mm: " Anshuman Khandual 2022-01-24 12:57 ` [RFC V1 25/31] nios2/mm: " Anshuman Khandual 2022-01-26 16:38 ` Dinh Nguyen 2022-01-24 12:57 ` [RFC V1 26/31] hexagon/mm: " Anshuman Khandual 2022-01-24 12:57 ` [RFC V1 27/31] nds32/mm: " Anshuman Khandual 2022-01-24 12:57 ` [RFC V1 28/31] ia64/mm: " Anshuman Khandual 2022-01-24 12:57 ` Anshuman Khandual 2022-01-24 12:57 ` [RFC V1 29/31] mm/mmap: Drop generic vm_get_page_prot() Anshuman Khandual 2022-01-24 12:57 ` [RFC V1 30/31] mm/mmap: Drop ARCH_HAS_VM_GET_PAGE_PROT Anshuman Khandual 2022-01-24 12:57 ` [RFC V1 31/31] mm/mmap: Define macros for vm_flags access permission combinations Anshuman Khandual 2022-02-03 5:24 ` Anshuman Khandual 2022-01-27 12:38 ` [RFC V1 00/31] mm/mmap: Drop protection_map[] and platform's __SXXX/__PXXX requirements Mike Rapoport 2022-01-31 3:35 ` Anshuman Khandual
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1643029028-12710-16-git-send-email-anshuman.khandual@arm.com \ --to=anshuman.khandual@arm.com \ --cc=akpm@linux-foundation.org \ --cc=hch@infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=linux-riscv@lists.infradead.org \ --cc=palmer@dabbelt.com \ --cc=paul.walmsley@sifive.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.