From: Stafford Horne <shorne@gmail.com>
To: openrisc@lists.librecores.org
Subject: [OpenRISC] [RFC V1 22/31] openrisc/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT
Date: Sat, 5 Feb 2022 15:58:13 +0900 [thread overview]
Message-ID: <Yf4gBd1nJNeQYSJr@antec> (raw)
In-Reply-To: <1643029028-12710-23-git-send-email-anshuman.khandual@arm.com>
On Mon, Jan 24, 2022 at 06:26:59PM +0530, Anshuman Khandual wrote:
> 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: Jonas Bonn <jonas@southpole.se>
> Cc: openrisc at lists.librecores.org
> Cc: linux-kernel at vger.kernel.org
> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
For one thing this is easier to read than the __P000 codes.
Acked-by: Stafford Horne <shorne@gmail.com>
> ---
> arch/openrisc/Kconfig | 1 +
> arch/openrisc/include/asm/pgtable.h | 18 -------------
> arch/openrisc/mm/init.c | 41 +++++++++++++++++++++++++++++
> 3 files changed, 42 insertions(+), 18 deletions(-)
>
> diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig
> index f724b3f1aeed..842a61426816 100644
> --- a/arch/openrisc/Kconfig
> +++ b/arch/openrisc/Kconfig
> @@ -10,6 +10,7 @@ config OPENRISC
> select ARCH_HAS_DMA_SET_UNCACHED
> select ARCH_HAS_DMA_CLEAR_UNCACHED
> select ARCH_HAS_SYNC_DMA_FOR_DEVICE
> + select ARCH_HAS_VM_GET_PAGE_PROT
> select COMMON_CLK
> select OF
> select OF_EARLY_FLATTREE
> diff --git a/arch/openrisc/include/asm/pgtable.h b/arch/openrisc/include/asm/pgtable.h
> index cdd657f80bfa..fe686c4b7065 100644
> --- a/arch/openrisc/include/asm/pgtable.h
> +++ b/arch/openrisc/include/asm/pgtable.h
> @@ -176,24 +176,6 @@ extern void paging_init(void);
> __pgprot(_PAGE_ALL | _PAGE_SRE | _PAGE_SWE \
> | _PAGE_SHARED | _PAGE_DIRTY | _PAGE_EXEC | _PAGE_CI)
>
> -#define __P000 PAGE_NONE
> -#define __P001 PAGE_READONLY_X
> -#define __P010 PAGE_COPY
> -#define __P011 PAGE_COPY_X
> -#define __P100 PAGE_READONLY
> -#define __P101 PAGE_READONLY_X
> -#define __P110 PAGE_COPY
> -#define __P111 PAGE_COPY_X
> -
> -#define __S000 PAGE_NONE
> -#define __S001 PAGE_READONLY_X
> -#define __S010 PAGE_SHARED
> -#define __S011 PAGE_SHARED_X
> -#define __S100 PAGE_READONLY
> -#define __S101 PAGE_READONLY_X
> -#define __S110 PAGE_SHARED
> -#define __S111 PAGE_SHARED_X
> -
> /* zero page used for uninitialized stuff */
> extern unsigned long empty_zero_page[2048];
> #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
> diff --git a/arch/openrisc/mm/init.c b/arch/openrisc/mm/init.c
> index 97305bde1b16..c9f5e7d6bb59 100644
> --- a/arch/openrisc/mm/init.c
> +++ b/arch/openrisc/mm/init.c
> @@ -210,3 +210,44 @@ void __init mem_init(void)
> mem_init_done = 1;
> return;
> }
> +
> +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_READONLY_X;
> + case VM_WRITE:
> + return PAGE_COPY;
> + case VM_READ | VM_WRITE:
> + return PAGE_COPY_X;
> + case VM_EXEC:
> + return PAGE_READONLY;
> + case VM_EXEC | VM_READ:
> + return PAGE_READONLY_X;
> + case VM_EXEC | VM_WRITE:
> + return PAGE_COPY;
> + case VM_EXEC | VM_READ | VM_WRITE:
> + return PAGE_COPY_X;
> + case VM_SHARED:
> + return PAGE_NONE;
> + case VM_SHARED | VM_READ:
> + return PAGE_READONLY_X;
> + case VM_SHARED | VM_WRITE:
> + return PAGE_SHARED;
> + case VM_SHARED | VM_READ | VM_WRITE:
> + return PAGE_SHARED_X;
> + case VM_SHARED | VM_EXEC:
> + return PAGE_READONLY;
> + case VM_SHARED | VM_EXEC | VM_READ:
> + return PAGE_READONLY_X;
> + case VM_SHARED | VM_EXEC | VM_WRITE:
> + return PAGE_SHARED;
> + case VM_SHARED | VM_EXEC | VM_READ | VM_WRITE:
> + return PAGE_SHARED_X;
> + default:
> + BUILD_BUG();
> + }
> +}
> +EXPORT_SYMBOL(vm_get_page_prot);
> --
> 2.25.1
>
> _______________________________________________
> OpenRISC mailing list
> OpenRISC at lists.librecores.org
> https://lists.librecores.org/listinfo/openrisc
WARNING: multiple messages have this Message-ID (diff)
From: Stafford Horne <shorne@gmail.com>
To: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: linux-mm@kvack.org, Jonas Bonn <jonas@southpole.se>,
linux-kernel@vger.kernel.org, hch@infradead.org,
openrisc@lists.librecores.org, akpm@linux-foundation.org
Subject: Re: [OpenRISC] [RFC V1 22/31] openrisc/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT
Date: Sat, 5 Feb 2022 15:58:13 +0900 [thread overview]
Message-ID: <Yf4gBd1nJNeQYSJr@antec> (raw)
In-Reply-To: <1643029028-12710-23-git-send-email-anshuman.khandual@arm.com>
On Mon, Jan 24, 2022 at 06:26:59PM +0530, Anshuman Khandual wrote:
> 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: Jonas Bonn <jonas@southpole.se>
> Cc: openrisc@lists.librecores.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
For one thing this is easier to read than the __P000 codes.
Acked-by: Stafford Horne <shorne@gmail.com>
> ---
> arch/openrisc/Kconfig | 1 +
> arch/openrisc/include/asm/pgtable.h | 18 -------------
> arch/openrisc/mm/init.c | 41 +++++++++++++++++++++++++++++
> 3 files changed, 42 insertions(+), 18 deletions(-)
>
> diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig
> index f724b3f1aeed..842a61426816 100644
> --- a/arch/openrisc/Kconfig
> +++ b/arch/openrisc/Kconfig
> @@ -10,6 +10,7 @@ config OPENRISC
> select ARCH_HAS_DMA_SET_UNCACHED
> select ARCH_HAS_DMA_CLEAR_UNCACHED
> select ARCH_HAS_SYNC_DMA_FOR_DEVICE
> + select ARCH_HAS_VM_GET_PAGE_PROT
> select COMMON_CLK
> select OF
> select OF_EARLY_FLATTREE
> diff --git a/arch/openrisc/include/asm/pgtable.h b/arch/openrisc/include/asm/pgtable.h
> index cdd657f80bfa..fe686c4b7065 100644
> --- a/arch/openrisc/include/asm/pgtable.h
> +++ b/arch/openrisc/include/asm/pgtable.h
> @@ -176,24 +176,6 @@ extern void paging_init(void);
> __pgprot(_PAGE_ALL | _PAGE_SRE | _PAGE_SWE \
> | _PAGE_SHARED | _PAGE_DIRTY | _PAGE_EXEC | _PAGE_CI)
>
> -#define __P000 PAGE_NONE
> -#define __P001 PAGE_READONLY_X
> -#define __P010 PAGE_COPY
> -#define __P011 PAGE_COPY_X
> -#define __P100 PAGE_READONLY
> -#define __P101 PAGE_READONLY_X
> -#define __P110 PAGE_COPY
> -#define __P111 PAGE_COPY_X
> -
> -#define __S000 PAGE_NONE
> -#define __S001 PAGE_READONLY_X
> -#define __S010 PAGE_SHARED
> -#define __S011 PAGE_SHARED_X
> -#define __S100 PAGE_READONLY
> -#define __S101 PAGE_READONLY_X
> -#define __S110 PAGE_SHARED
> -#define __S111 PAGE_SHARED_X
> -
> /* zero page used for uninitialized stuff */
> extern unsigned long empty_zero_page[2048];
> #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
> diff --git a/arch/openrisc/mm/init.c b/arch/openrisc/mm/init.c
> index 97305bde1b16..c9f5e7d6bb59 100644
> --- a/arch/openrisc/mm/init.c
> +++ b/arch/openrisc/mm/init.c
> @@ -210,3 +210,44 @@ void __init mem_init(void)
> mem_init_done = 1;
> return;
> }
> +
> +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_READONLY_X;
> + case VM_WRITE:
> + return PAGE_COPY;
> + case VM_READ | VM_WRITE:
> + return PAGE_COPY_X;
> + case VM_EXEC:
> + return PAGE_READONLY;
> + case VM_EXEC | VM_READ:
> + return PAGE_READONLY_X;
> + case VM_EXEC | VM_WRITE:
> + return PAGE_COPY;
> + case VM_EXEC | VM_READ | VM_WRITE:
> + return PAGE_COPY_X;
> + case VM_SHARED:
> + return PAGE_NONE;
> + case VM_SHARED | VM_READ:
> + return PAGE_READONLY_X;
> + case VM_SHARED | VM_WRITE:
> + return PAGE_SHARED;
> + case VM_SHARED | VM_READ | VM_WRITE:
> + return PAGE_SHARED_X;
> + case VM_SHARED | VM_EXEC:
> + return PAGE_READONLY;
> + case VM_SHARED | VM_EXEC | VM_READ:
> + return PAGE_READONLY_X;
> + case VM_SHARED | VM_EXEC | VM_WRITE:
> + return PAGE_SHARED;
> + case VM_SHARED | VM_EXEC | VM_READ | VM_WRITE:
> + return PAGE_SHARED_X;
> + default:
> + BUILD_BUG();
> + }
> +}
> +EXPORT_SYMBOL(vm_get_page_prot);
> --
> 2.25.1
>
> _______________________________________________
> OpenRISC mailing list
> OpenRISC@lists.librecores.org
> https://lists.librecores.org/listinfo/openrisc
next prev parent reply other threads:[~2022-02-05 6: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 ` [RFC V1 15/31] riscv/mm: " Anshuman Khandual
2022-01-24 12:56 ` 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 ` [OpenRISC] [RFC V1 22/31] openrisc/mm: " Anshuman Khandual
2022-01-24 12:56 ` Anshuman Khandual
2022-02-05 6:58 ` Stafford Horne [this message]
2022-02-05 6:58 ` [OpenRISC] " 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=Yf4gBd1nJNeQYSJr@antec \
--to=shorne@gmail.com \
--cc=openrisc@lists.librecores.org \
/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: link
Be 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.