From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 15569C433F5 for ; Fri, 8 Apr 2022 11:19:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9A1A26B0071; Fri, 8 Apr 2022 07:19:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 92A586B0072; Fri, 8 Apr 2022 07:19:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F21A6B0074; Fri, 8 Apr 2022 07:19:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.28]) by kanga.kvack.org (Postfix) with ESMTP id 6AAFC6B0071 for ; Fri, 8 Apr 2022 07:19:14 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 334F4224DC for ; Fri, 8 Apr 2022 11:19:14 +0000 (UTC) X-FDA: 79333465428.02.A7E217A Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf21.hostedemail.com (Postfix) with ESMTP id 8DEC91C0007 for ; Fri, 8 Apr 2022 11:19:13 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CF61911FB; Fri, 8 Apr 2022 04:19:12 -0700 (PDT) Received: from [10.163.33.132] (unknown [10.163.33.132]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2237A3F73B; Fri, 8 Apr 2022 04:19:06 -0700 (PDT) Message-ID: Date: Fri, 8 Apr 2022 16:49:36 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: [PATCH V4 3/7] arm64/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT Content-Language: en-US To: Catalin Marinas Cc: linux-mm@kvack.org, akpm@linux-foundation.org, Christoph Hellwig , linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, sparclinux@vger.kernel.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, Will Deacon References: <20220407103251.1209606-1-anshuman.khandual@arm.com> <20220407103251.1209606-4-anshuman.khandual@arm.com> From: Anshuman Khandual In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: Authentication-Results: imf21.hostedemail.com; dkim=none; spf=pass (imf21.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com; dmarc=pass (policy=none) header.from=arm.com X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 8DEC91C0007 X-Stat-Signature: kgkiue4xwfwbgizsf8uebxnr3wmsn9tm X-HE-Tag: 1649416753-644798 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 4/8/22 15:58, Catalin Marinas wrote: > On Thu, Apr 07, 2022 at 04:02:47PM +0530, Anshuman Khandual wrote: >> diff --git a/arch/arm64/mm/mmap.c b/arch/arm64/mm/mmap.c >> index 77ada00280d9..307534fcec00 100644 >> --- a/arch/arm64/mm/mmap.c >> +++ b/arch/arm64/mm/mmap.c >> @@ -55,3 +55,36 @@ static int __init adjust_protection_map(void) >> return 0; >> } >> arch_initcall(adjust_protection_map); >> + >> +static pgprot_t arm64_arch_vm_get_page_prot(unsigned long vm_flags) >> +{ >> + pteval_t prot = 0; >> + >> + if (vm_flags & VM_ARM64_BTI) >> + prot |= PTE_GP; >> + >> + /* >> + * There are two conditions required for returning a Normal Tagged >> + * memory type: (1) the user requested it via PROT_MTE passed to >> + * mmap() or mprotect() and (2) the corresponding vma supports MTE. We >> + * register (1) as VM_MTE in the vma->vm_flags and (2) as >> + * VM_MTE_ALLOWED. Note that the latter can only be set during the >> + * mmap() call since mprotect() does not accept MAP_* flags. >> + * Checking for VM_MTE only is sufficient since arch_validate_flags() >> + * does not permit (VM_MTE & !VM_MTE_ALLOWED). >> + */ >> + if (vm_flags & VM_MTE) >> + prot |= PTE_ATTRINDX(MT_NORMAL_TAGGED); >> + >> + return __pgprot(prot); >> +} >> + >> +pgprot_t vm_get_page_prot(unsigned long vm_flags) >> +{ >> + pgprot_t ret = __pgprot(pgprot_val(protection_map[vm_flags & >> + (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]) | >> + pgprot_val(arm64_arch_vm_get_page_prot(vm_flags))); >> + >> + return ret; >> +} >> +EXPORT_SYMBOL(vm_get_page_prot); > > Could you write all this in a single function? I think I mentioned it in > a previous series (untested): Right, missed that. > > pgprot_t vm_get_page_prot(unsigned long vm_flags) > { > pteval_t prot = pgprot_val(protection_map[vm_flags & > (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]); > > if (vm_flags & VM_ARM64_BTI) > prot |= PTE_GP; > > /* > * There are two conditions required for returning a Normal Tagged > * memory type: (1) the user requested it via PROT_MTE passed to > * mmap() or mprotect() and (2) the corresponding vma supports MTE. We > * register (1) as VM_MTE in the vma->vm_flags and (2) as > * VM_MTE_ALLOWED. Note that the latter can only be set during the > * mmap() call since mprotect() does not accept MAP_* flags. > * Checking for VM_MTE only is sufficient since arch_validate_flags() > * does not permit (VM_MTE & !VM_MTE_ALLOWED). > */ > if (vm_flags & VM_MTE) > prot |= PTE_ATTRINDX(MT_NORMAL_TAGGED); > > return __pgprot(prot); > } > EXPORT_SYMBOL(vm_get_page_prot); > > With that: Sure, will change them into a single function. > > Reviewed-by: Catalin Marinas >