From: Christophe Leroy <christophe.leroy@csgroup.eu>
To: Anshuman Khandual <anshuman.khandual@arm.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>
Cc: "hch@infradead.org" <hch@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
kernel test robot <lkp@intel.com>, Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH V3 2/2] mm/mmap: Drop generic protection_map[] array
Date: Fri, 17 Jun 2022 05:40:37 +0000 [thread overview]
Message-ID: <a76a7566-0d44-4855-2f15-b7bacaf3fd27@csgroup.eu> (raw)
In-Reply-To: <ed58c478-e245-63e7-b48a-ab54b221e4fa@arm.com>
Le 17/06/2022 à 05:43, Anshuman Khandual a écrit :
>
>
> On 6/16/22 11:15, Christophe Leroy wrote:
>>
>> Le 16/06/2022 à 06:09, Anshuman Khandual a écrit :
>>> Move the protection_array[] array inside the arch for those platforms which
>>> do not enable ARCH_HAS_VM_GET_PAGE_PROT. Afterwards __SXXX/__PXX macros can
>>> be dropped completely which are now redundant.
>>>
>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>> Cc: linux-mm@kvack.org
>>> Cc: linux-kernel@vger.kernel.org
>>> Reported-by: kernel test robot <lkp@intel.com>
>>> Acked-by: Christoph Hellwig <hch@lst.de>
>>> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
>>> ---
>>> arch/alpha/include/asm/pgtable.h | 17 -------
>>> arch/alpha/mm/init.c | 21 +++++++++
>>> arch/arc/include/asm/pgtable-bits-arcv2.h | 18 --------
>>> arch/arc/mm/mmap.c | 19 ++++++++
>>> arch/arm/include/asm/pgtable.h | 17 -------
>>> arch/arm/lib/uaccess_with_memcpy.c | 2 +-
>>> arch/arm/mm/mmu.c | 19 ++++++++
>>> arch/csky/include/asm/pgtable.h | 18 --------
>>> arch/csky/mm/init.c | 19 ++++++++
>>> arch/hexagon/include/asm/pgtable.h | 27 ------------
>>> arch/hexagon/mm/init.c | 41 +++++++++++++++++
>>> arch/ia64/include/asm/pgtable.h | 18 --------
>>> arch/ia64/mm/init.c | 27 +++++++++++-
>>> arch/loongarch/include/asm/pgtable-bits.h | 19 --------
>>> arch/loongarch/mm/cache.c | 45 +++++++++++++++++++
>>> arch/m68k/include/asm/mcf_pgtable.h | 54 -----------------------
>>> arch/m68k/include/asm/motorola_pgtable.h | 22 ---------
>>> arch/m68k/include/asm/sun3_pgtable.h | 17 -------
>>> arch/m68k/mm/mcfmmu.c | 54 +++++++++++++++++++++++
>>> arch/m68k/mm/motorola.c | 19 ++++++++
>>> arch/m68k/mm/sun3mmu.c | 19 ++++++++
>>> arch/microblaze/include/asm/pgtable.h | 17 -------
>>> arch/microblaze/mm/init.c | 19 ++++++++
>>> arch/mips/include/asm/pgtable.h | 22 ---------
>>> arch/mips/mm/cache.c | 2 +
>>> arch/nios2/include/asm/pgtable.h | 16 -------
>>> arch/nios2/mm/init.c | 19 ++++++++
>>> arch/openrisc/include/asm/pgtable.h | 18 --------
>>> arch/openrisc/mm/init.c | 19 ++++++++
>>> arch/parisc/include/asm/pgtable.h | 18 --------
>>> arch/parisc/mm/init.c | 19 ++++++++
>>> arch/powerpc/include/asm/pgtable.h | 20 ---------
>>> arch/powerpc/mm/book3s64/pgtable.c | 24 +++-------
>>> arch/powerpc/mm/pgtable.c | 20 +++++++++
>>> arch/riscv/include/asm/pgtable.h | 20 ---------
>>> arch/riscv/mm/init.c | 19 ++++++++
>>> arch/s390/include/asm/pgtable.h | 17 -------
>>> arch/s390/mm/mmap.c | 19 ++++++++
>>> arch/sh/include/asm/pgtable.h | 17 -------
>>> arch/sh/mm/mmap.c | 19 ++++++++
>>> arch/sparc/include/asm/pgtable_32.h | 19 --------
>>> arch/sparc/mm/init_32.c | 19 ++++++++
>>> arch/sparc/mm/init_64.c | 2 +-
>>> arch/um/include/asm/pgtable.h | 17 -------
>>> arch/um/kernel/mem.c | 19 ++++++++
>>> arch/x86/um/mem_32.c | 2 +-
>>> arch/xtensa/include/asm/pgtable.h | 18 --------
>>> arch/xtensa/mm/init.c | 19 ++++++++
>>> include/linux/mm.h | 2 +-
>>> mm/mmap.c | 19 --------
>>> 50 files changed, 503 insertions(+), 489 deletions(-)
>>>
>>> diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
>>> index 8ed2a80c896e..bd636295a794 100644
>>> --- a/arch/powerpc/include/asm/pgtable.h
>>> +++ b/arch/powerpc/include/asm/pgtable.h
>>> @@ -21,26 +21,6 @@ struct mm_struct;
>>> #endif /* !CONFIG_PPC_BOOK3S */
>>>
>>> /* Note due to the way vm flags are laid out, the bits are XWR */
>>> -#ifndef CONFIG_ARCH_HAS_VM_GET_PAGE_PROT
>>> -#define __P000 PAGE_NONE
>>> -#define __P001 PAGE_READONLY
>>> -#define __P010 PAGE_COPY
>>> -#define __P011 PAGE_COPY
>>> -#define __P100 PAGE_READONLY_X
>>> -#define __P101 PAGE_READONLY_X
>>> -#define __P110 PAGE_COPY_X
>>> -#define __P111 PAGE_COPY_X
>>> -
>>> -#define __S000 PAGE_NONE
>>> -#define __S001 PAGE_READONLY
>>> -#define __S010 PAGE_SHARED
>>> -#define __S011 PAGE_SHARED
>>> -#define __S100 PAGE_READONLY_X
>>> -#define __S101 PAGE_READONLY_X
>>> -#define __S110 PAGE_SHARED_X
>>> -#define __S111 PAGE_SHARED_X
>>> -#endif
>>> -
>>> #ifndef __ASSEMBLY__
>>>
>>> #ifndef MAX_PTRS_PER_PGD
>>> diff --git a/arch/powerpc/mm/book3s64/pgtable.c b/arch/powerpc/mm/book3s64/pgtable.c
>>> index d3b019b95c1d..de76dd4d447c 100644
>>> --- a/arch/powerpc/mm/book3s64/pgtable.c
>>> +++ b/arch/powerpc/mm/book3s64/pgtable.c
>>> @@ -551,25 +551,11 @@ unsigned long memremap_compat_align(void)
>>> EXPORT_SYMBOL_GPL(memremap_compat_align);
>>> #endif
>>>
>>> -/* Note due to the way vm flags are laid out, the bits are XWR */
>>> -static const pgprot_t protection_map[16] = {
>>> - [VM_NONE] = PAGE_NONE,
>>> - [VM_READ] = PAGE_READONLY,
>>> - [VM_WRITE] = PAGE_COPY,
>>> - [VM_WRITE | VM_READ] = PAGE_COPY,
>>> - [VM_EXEC] = PAGE_READONLY_X,
>>> - [VM_EXEC | VM_READ] = PAGE_READONLY_X,
>>> - [VM_EXEC | VM_WRITE] = PAGE_COPY_X,
>>> - [VM_EXEC | VM_WRITE | VM_READ] = PAGE_COPY_X,
>>> - [VM_SHARED] = PAGE_NONE,
>>> - [VM_SHARED | VM_READ] = PAGE_READONLY,
>>> - [VM_SHARED | VM_WRITE] = PAGE_SHARED,
>>> - [VM_SHARED | VM_WRITE | VM_READ] = PAGE_SHARED,
>>> - [VM_SHARED | VM_EXEC] = PAGE_READONLY_X,
>>> - [VM_SHARED | VM_EXEC | VM_READ] = PAGE_READONLY_X,
>>> - [VM_SHARED | VM_EXEC | VM_WRITE] = PAGE_SHARED_X,
>>> - [VM_SHARED | VM_EXEC | VM_WRITE | VM_READ] = PAGE_SHARED_X
>>> -};
>>> +/*
>>> + * Generic declaration in (include/linux/mm.h) is not available
>>> + * here as the platform enables ARCH_HAS_VM_GET_PAGE_PROT.
>>> + */
>>> +extern pgprot_t protection_map[16];
>>>
>>> pgprot_t vm_get_page_prot(unsigned long vm_flags)
>>> {
>>> diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c
>>> index e6166b71d36d..780fbecd7bf6 100644
>>> --- a/arch/powerpc/mm/pgtable.c
>>> +++ b/arch/powerpc/mm/pgtable.c
>>> @@ -472,3 +472,23 @@ pte_t *__find_linux_pte(pgd_t *pgdir, unsigned long ea,
>>> return ret_pte;
>>> }
>>> EXPORT_SYMBOL_GPL(__find_linux_pte);
>>> +
>>> +/* Note due to the way vm flags are laid out, the bits are XWR */
>>> +pgprot_t protection_map[16] = {
>>
>> Was const previously, now back to non const ? Maybe due to a conflict
>> with linux/mm.h ? At least it should be __ro_after_init.
>>
>
> Right, the generic declaration in linux/mm.h prevents different types
> for protection_map[] on different platforms. As mentioned before, may
> be we should move generic vm_get_page_prot() inside the platforms ?
Not sure that's the best way forward.
You can probably just drop the generic declaration of protection_map[]
in linux/mm.h and have each architecture provides its own declaration of
protection_map[], then you can keep a generic vm_get_page_prot()
Christophe
next prev parent reply other threads:[~2022-06-17 5:40 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-16 4:09 [PATCH V3 0/2] mm/mmap: Drop __SXXX/__PXXX macros from across platforms Anshuman Khandual
2022-06-16 4:09 ` [PATCH V3 1/2] mm/mmap: Restrict generic protection_map[] array visibility Anshuman Khandual
2022-06-16 5:35 ` Christophe Leroy
2022-06-20 5:16 ` Anshuman Khandual
2022-06-20 6:41 ` Christophe Leroy
2022-06-21 9:44 ` Anshuman Khandual
2022-06-16 12:44 ` kernel test robot
2022-06-20 4:45 ` Anshuman Khandual
2022-06-20 4:45 ` Anshuman Khandual
2022-06-20 5:55 ` Christoph Hellwig
2022-06-20 5:55 ` Christoph Hellwig
2022-06-20 6:43 ` Christophe Leroy
2022-06-20 6:43 ` Christophe Leroy
2022-06-16 4:09 ` [PATCH V3 2/2] mm/mmap: Drop generic protection_map[] array Anshuman Khandual
2022-06-16 5:27 ` Christophe Leroy
2022-06-16 6:10 ` hch
2022-06-17 3:46 ` Anshuman Khandual
2022-06-16 5:45 ` Christophe Leroy
2022-06-16 6:12 ` hch
2022-06-17 3:29 ` Anshuman Khandual
2022-06-17 5:48 ` Christophe Leroy
2022-06-17 8:00 ` hch
2022-06-20 4:14 ` Anshuman Khandual
2022-06-17 3:43 ` Anshuman Khandual
2022-06-17 5:40 ` Christophe Leroy [this message]
2022-06-16 5:22 ` [PATCH V3 0/2] mm/mmap: Drop __SXXX/__PXXX macros from across platforms Christophe Leroy
2022-06-16 6:13 ` hch
2022-06-17 3:07 ` 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=a76a7566-0d44-4855-2f15-b7bacaf3fd27@csgroup.eu \
--to=christophe.leroy@csgroup.eu \
--cc=akpm@linux-foundation.org \
--cc=anshuman.khandual@arm.com \
--cc=hch@infradead.org \
--cc=hch@lst.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lkp@intel.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: 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.