From: Rolf Eike Beer <eike-kernel@sf-tec.de>
To: linux-mm@kvack.org, Anshuman Khandual <anshuman.khandual@arm.com>
Cc: linux-kernel@vger.kernel.org, hch@infradead.org,
akpm@linux-foundation.org,
Anshuman Khandual <anshuman.khandual@arm.com>,
"James E.J. Bottomley" <James.Bottomley@hansenpartnership.com>,
linux-parisc@vger.kernel.org
Subject: Re: [RFC V1 21/31] parisc/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT
Date: Tue, 25 Jan 2022 17:53:27 +0100 [thread overview]
Message-ID: <11909976.O9o76ZdvQC@eto.sf-tec.de> (raw)
In-Reply-To: <1643029028-12710-22-git-send-email-anshuman.khandual@arm.com>
[-- Attachment #1: Type: text/plain, Size: 3661 bytes --]
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: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
> Cc: linux-parisc@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
> ---
> arch/parisc/Kconfig | 1 +
> arch/parisc/include/asm/pgtable.h | 20 ---------------
> arch/parisc/mm/init.c | 41 +++++++++++++++++++++++++++++++
> 3 files changed, 42 insertions(+), 20 deletions(-)
>
> diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
> index 43c1c880def6..de512f120b50 100644
> --- a/arch/parisc/Kconfig
> +++ b/arch/parisc/Kconfig
> @@ -10,6 +10,7 @@ config PARISC
> select ARCH_HAS_ELF_RANDOMIZE
> select ARCH_HAS_STRICT_KERNEL_RWX
> select ARCH_HAS_UBSAN_SANITIZE_ALL
> + select ARCH_HAS_VM_GET_PAGE_PROT
> select ARCH_NO_SG_CHAIN
> select ARCH_SUPPORTS_HUGETLBFS if PA20
> select ARCH_SUPPORTS_MEMORY_FAILURE
> diff --git a/arch/parisc/include/asm/pgtable.h
> b/arch/parisc/include/asm/pgtable.h index 3e7cf882639f..80d99b2b5913 100644
> --- a/arch/parisc/include/asm/pgtable.h
> +++ b/arch/parisc/include/asm/pgtable.h
> @@ -269,26 +269,6 @@ extern void __update_cache(pte_t pte);
> * pages.
> */
>
> - /*xwr*/
> -#define __P000 PAGE_NONE
> -#define __P001 PAGE_READONLY
> -#define __P010 __P000 /* copy on write */
> -#define __P011 __P001 /* copy on write */
> -#define __P100 PAGE_EXECREAD
> -#define __P101 PAGE_EXECREAD
> -#define __P110 __P100 /* copy on write */
> -#define __P111 __P101 /* copy on write */
> -
> -#define __S000 PAGE_NONE
> -#define __S001 PAGE_READONLY
> -#define __S010 PAGE_WRITEONLY
> -#define __S011 PAGE_SHARED
> -#define __S100 PAGE_EXECREAD
> -#define __S101 PAGE_EXECREAD
> -#define __S110 PAGE_RWX
> -#define __S111 PAGE_RWX
> -
> -
> extern pgd_t swapper_pg_dir[]; /* declared in init_task.c */
>
> /* initial page tables for 0-8MB for kernel */
> diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
> index 1ae31db9988f..c8316e97e1a2 100644
> --- a/arch/parisc/mm/init.c
> +++ b/arch/parisc/mm/init.c
> @@ -866,3 +866,44 @@ void flush_tlb_all(void)
> spin_unlock(&sid_lock);
> }
> #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_READONLY;
> + case VM_WRITE:
> + return PAGE_NONE;
> + case VM_READ | VM_WRITE:
> + return PAGE_READONLY;
This looks extremely strange. It probably is correct when it comes to CoW, how
about including the comment that was in the original definitions for the cases
where CoW is expected?
> + case VM_EXEC:
> + return PAGE_EXECREAD;
> + case VM_EXEC | VM_READ:
> + return PAGE_EXECREAD;
> + case VM_EXEC | VM_WRITE:
> + return PAGE_EXECREAD;
> + case VM_EXEC | VM_READ | VM_WRITE:
> + return PAGE_EXECREAD;
> + case VM_SHARED:
> + return PAGE_NONE;
> + case VM_SHARED | VM_READ:
> + return PAGE_READONLY;
> + case VM_SHARED | VM_WRITE:
> + return PAGE_WRITEONLY;
> + case VM_SHARED | VM_READ | VM_WRITE:
> + return PAGE_SHARED;
> + case VM_SHARED | VM_EXEC:
> + return PAGE_EXECREAD;
> + case VM_SHARED | VM_EXEC | VM_READ:
> + return PAGE_EXECREAD;
> + case VM_SHARED | VM_EXEC | VM_WRITE:
> + return PAGE_RWX;
> + case VM_SHARED | VM_EXEC | VM_READ | VM_WRITE:
> + return PAGE_RWX;
> + default:
> + BUILD_BUG();
> + }
> +}
> +EXPORT_SYMBOL(vm_get_page_prot);
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
next prev parent reply other threads:[~2022-01-25 16:53 UTC|newest]
Thread overview: 56+ 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-02-03 18:15 ` Mike Rapoport
2022-02-04 2:57 ` Anshuman Khandual
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 ` [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 17:06 ` Russell King (Oracle)
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 ` [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 ` [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 [this message]
2022-01-27 4:06 ` Anshuman Khandual
2022-01-24 12:56 ` [RFC V1 22/31] openrisc/mm: " Anshuman Khandual
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 ` [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 ` [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=11909976.O9o76ZdvQC@eto.sf-tec.de \
--to=eike-kernel@sf-tec.de \
--cc=James.Bottomley@hansenpartnership.com \
--cc=akpm@linux-foundation.org \
--cc=anshuman.khandual@arm.com \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-parisc@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox