All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anshuman Khandual <anshuman.khandual@arm.com>
To: Dinh Nguyen <dinguyen@kernel.org>, linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org,
	Christoph Hellwig <hch@infradead.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-arch@vger.kernel.org
Subject: Re: [PATCH 25/30] nios2/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT
Date: Fri, 25 Feb 2022 14:24:36 +0530	[thread overview]
Message-ID: <34d2e89c-5264-1510-ef8e-a4719b4114ee@arm.com> (raw)
In-Reply-To: <637cfc45-60ad-3cd1-5127-76ecabb87def@arm.com>



On 2/25/22 2:22 PM, Anshuman Khandual wrote:
> 
> On 2/25/22 7:01 AM, Dinh Nguyen wrote:
>> Hi Anshuman,
>>
>> On 2/13/22 20:30, 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: Dinh Nguyen <dinguyen@kernel.org>
>>> Cc: linux-kernel@vger.kernel.org
>>> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
>>> Acked-by: Dinh Nguyen <dinguyen@kernel.org>
>>> ---
>>>   arch/nios2/Kconfig               |  1 +
>>>   arch/nios2/include/asm/pgtable.h | 16 ------------
>>>   arch/nios2/mm/init.c             | 45 ++++++++++++++++++++++++++++++++
>>>   3 files changed, 46 insertions(+), 16 deletions(-)
>>>
>>> diff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig
>>> index 33fd06f5fa41..85a58a357a3b 100644
>>> --- a/arch/nios2/Kconfig
>>> +++ b/arch/nios2/Kconfig
>>> @@ -6,6 +6,7 @@ config NIOS2
>>>       select ARCH_HAS_SYNC_DMA_FOR_CPU
>>>       select ARCH_HAS_SYNC_DMA_FOR_DEVICE
>>>       select ARCH_HAS_DMA_SET_UNCACHED
>>> +    select ARCH_HAS_VM_GET_PAGE_PROT
>>>       select ARCH_NO_SWAP
>>>       select COMMON_CLK
>>>       select TIMER_OF
>>> diff --git a/arch/nios2/include/asm/pgtable.h b/arch/nios2/include/asm/pgtable.h
>>> index 4a995fa628ee..2678dad58a63 100644
>>> --- a/arch/nios2/include/asm/pgtable.h
>>> +++ b/arch/nios2/include/asm/pgtable.h
>>> @@ -40,24 +40,8 @@ struct mm_struct;
>>>    */
>>>     /* Remove W bit on private pages for COW support */
>>> -#define __P000    MKP(0, 0, 0)
>>> -#define __P001    MKP(0, 0, 1)
>>> -#define __P010    MKP(0, 0, 0)    /* COW */
>>> -#define __P011    MKP(0, 0, 1)    /* COW */
>>> -#define __P100    MKP(1, 0, 0)
>>> -#define __P101    MKP(1, 0, 1)
>>> -#define __P110    MKP(1, 0, 0)    /* COW */
>>> -#define __P111    MKP(1, 0, 1)    /* COW */
>>>     /* Shared pages can have exact HW mapping */
>>> -#define __S000    MKP(0, 0, 0)
>>> -#define __S001    MKP(0, 0, 1)
>>> -#define __S010    MKP(0, 1, 0)
>>> -#define __S011    MKP(0, 1, 1)
>>> -#define __S100    MKP(1, 0, 0)
>>> -#define __S101    MKP(1, 0, 1)
>>> -#define __S110    MKP(1, 1, 0)
>>> -#define __S111    MKP(1, 1, 1)
>>>     /* Used all over the kernel */
>>>   #define PAGE_KERNEL __pgprot(_PAGE_PRESENT | _PAGE_CACHED | _PAGE_READ | \
>>> diff --git a/arch/nios2/mm/init.c b/arch/nios2/mm/init.c
>>> index 613fcaa5988a..311b2146a248 100644
>>> --- a/arch/nios2/mm/init.c
>>> +++ b/arch/nios2/mm/init.c
>>> @@ -124,3 +124,48 @@ const char *arch_vma_name(struct vm_area_struct *vma)
>>>   {
>>>       return (vma->vm_start == KUSER_BASE) ? "[kuser]" : NULL;
>>>   }
>>> +
>>> +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 MKP(0, 0, 0);
>>> +    case VM_READ:
>>> +        return MKP(0, 0, 1);
>>> +    /* COW */
>>> +    case VM_WRITE:
>>> +        return MKP(0, 0, 0);
>>> +    /* COW */
>>> +    case VM_WRITE | VM_READ:
>>> +        return MKP(0, 0, 1);
>>> +    case VM_EXEC:
>>> +        return MKP(1, 0, 0);
>>> +    case VM_EXEC | VM_READ:
>>> +        return MKP(1, 0, 1);
>>> +    /* COW */
>>> +    case VM_EXEC | VM_WRITE:
>>> +        return MKP(1, 0, 0);
>>> +    /* COW */
>>> +    case VM_EXEC | VM_WRITE | VM_READ:
>>> +        return MKP(1, 0, 1);
>>> +    case VM_SHARED:
>>> +        return MKP(0, 0, 0);
>>> +    case VM_SHARED | VM_READ:
>>> +        return MKP(0, 0, 1);
>>> +    case VM_SHARED | VM_WRITE:
>>> +        return MKP(0, 1, 0);
>>> +    case VM_SHARED | VM_WRITE | VM_READ:
>>> +        return MKP(0, 1, 1);
>>> +    case VM_SHARED | VM_EXEC:
>>> +        return MKP(1, 0, 0);
>>> +    case VM_SHARED | VM_EXEC | VM_READ:
>>> +        return MKP(1, 0, 1);
>>> +    case VM_SHARED | VM_EXEC | VM_WRITE:
>>> +        return MKP(1, 1, 0);
>>> +    case VM_SHARED | VM_EXEC | VM_WRITE | VM_READ:
>>> +        return MKP(1, 1, 1);
>>> +    default:
>>> +        BUILD_BUG();
>>> +    }
>>> +}
>>> +EXPORT_SYMBOL(vm_get_page_prot);
>> I'm getting this compile error after applying this patch when build NIOS2:
> Hmm, that is strange.
> 
> Did you apply the entire series or atleast upto the nios2 patch ? Generic
> vm_get_page_prot() should not be called (which is build complaining here)
> when ARCH_HAS_VM_GET_PAGE_PROT is already enabled on nios2 platform.
> 
> Ran a quick build test on nios2 for the entire series and also just upto
> this particular patch, build was successful.
> 

Please refer to the latest version V2 instead.

https://lore.kernel.org/linux-mm/1645425519-9034-1-git-send-email-anshuman.khandual@arm.com/

  reply	other threads:[~2022-02-25  8:54 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-14  2:30 [PATCH 00/30] mm/mmap: Drop protection_map[] and platform's __SXXX/__PXXX requirements Anshuman Khandual
2022-02-14  2:30 ` [PATCH 01/30] mm/debug_vm_pgtable: Drop protection_map[] usage Anshuman Khandual
2022-02-14  2:30 ` [PATCH 02/30] mm/mmap: Clarify protection_map[] indices Anshuman Khandual
2022-02-14  2:30 ` [PATCH 03/30] mm/mmap: Add new config ARCH_HAS_VM_GET_PAGE_PROT Anshuman Khandual
2022-02-14  2:30 ` [PATCH 04/30] powerpc/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT Anshuman Khandual
2022-02-14  2:30   ` Anshuman Khandual
2022-02-14  2:30 ` [PATCH 05/30] arm64/mm: " Anshuman Khandual
2022-02-14  2:30   ` Anshuman Khandual
2022-02-14  2:30 ` [PATCH 06/30] sparc/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 07/30] mips/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 08/30] m68k/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 09/30] arm/mm: " Anshuman Khandual
2022-02-14  2:30   ` Anshuman Khandual
2022-02-14  2:30 ` [PATCH 10/30] x86/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 11/30] mm/mmap: Drop protection_map[] Anshuman Khandual
2022-02-14  2:30 ` [PATCH 12/30] mm/mmap: Drop arch_filter_pgprot() Anshuman Khandual
2022-02-14  2:30 ` [PATCH 13/30] mm/mmap: Drop arch_vm_get_page_pgprot() Anshuman Khandual
2022-02-14  2:30 ` [PATCH 14/30] s390/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT Anshuman Khandual
2022-02-14  2:30 ` [PATCH 15/30] riscv/mm: " Anshuman Khandual
2022-02-14  2:30   ` Anshuman Khandual
2022-02-14  2:30 ` [PATCH 16/30] alpha/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 17/30] sh/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 18/30] arc/mm: " Anshuman Khandual
2022-02-14  2:30   ` Anshuman Khandual
2022-02-14  2:30 ` [PATCH 19/30] csky/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 20/30] extensa/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 21/30] parisc/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 22/30] openrisc/mm: " Anshuman Khandual
2022-02-14  2:30   ` [OpenRISC] " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 23/30] um/mm: " Anshuman Khandual
2022-02-14  2:30   ` Anshuman Khandual
2022-02-14  6:40   ` kernel test robot
2022-02-14  6:40     ` kernel test robot
2022-02-14  6:40     ` kernel test robot
2022-02-14 10:03     ` Anshuman Khandual
2022-02-14 10:03       ` Anshuman Khandual
2022-02-14 10:03       ` Anshuman Khandual
2022-02-14  2:30 ` [PATCH 24/30] microblaze/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 25/30] nios2/mm: " Anshuman Khandual
2022-02-25  1:31   ` Dinh Nguyen
2022-02-25  8:52     ` Anshuman Khandual
2022-02-25  8:54       ` Anshuman Khandual [this message]
2022-02-25 14:29       ` Dinh Nguyen
2022-02-25 14:38         ` Dinh Nguyen
2022-02-28  2:27           ` Anshuman Khandual
2022-02-14  2:30 ` [PATCH 26/30] hexagon/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 27/30] nds32/mm: " Anshuman Khandual
2022-02-14  2:30 ` [PATCH 28/30] ia64/mm: " Anshuman Khandual
2022-02-14  2:42   ` Anshuman Khandual
2022-02-14  2:30 ` [PATCH 29/30] mm/mmap: Drop generic vm_get_page_prot() Anshuman Khandual
2022-02-14  2:30 ` [PATCH 30/30] mm/mmap: Drop ARCH_HAS_VM_GET_PAGE_PROT Anshuman Khandual
2022-02-14  9:48   ` Geert Uytterhoeven
2022-02-14  9:59     ` Anshuman Khandual
2022-02-17  9:46 ` [PATCH 00/30] mm/mmap: Drop protection_map[] and platform's __SXXX/__PXXX requirements 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=34d2e89c-5264-1510-ef8e-a4719b4114ee@arm.com \
    --to=anshuman.khandual@arm.com \
    --cc=akpm@linux-foundation.org \
    --cc=dinguyen@kernel.org \
    --cc=hch@infradead.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.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.