Received: by 2002:a05:6a10:144:0:0:0:0 with SMTP id 4csp363903pxw; Fri, 8 Apr 2022 09:23:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzKrfhy+Clvd3Nq8gacfywfggH8TnootnZ4r2BnCaIGTHPk1Nqt8GOYuDm/OIP+imlxSmdW X-Received: by 2002:a05:6402:1912:b0:418:cd23:3742 with SMTP id e18-20020a056402191200b00418cd233742mr20255742edz.412.1649434983077; Fri, 08 Apr 2022 09:23:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649434983; cv=none; d=google.com; s=arc-20160816; b=wARO/lr8i/PpnxBUxEcEMV3+p/CuYCRLf31DczvmPqWNS3ok7hjr2A/UDRZe5zyARg rxSM3J/Drwh3J66QaWhuow4t7HpSPeQ24yihzQAzHmPXMd5mVWoXXmcG4yIrrLUqtsux U3Vu3dJXqApDksxLH/wx8PUh/WezDgodkEkvwh4Iz2JKiCexjdZL6EE2QSH0RdoaqwtY RftPYx54NUhNq9/PPwuePPngyG8Nx0S3WZ4lH0jTvJUEoM1gyS2cKKB8aBNuALoko+Al hJHvNYi02lAj5PM/9pfkhOcwW7cbgsoH4+jjtRFdEV2fAsNqkjoWEYawWrgCIf3LSu0u i1Iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=VzOTzDYTweIrZebfoS3QBXHiGlTbrVfbgobZw/ky6NM=; b=0vyY3+dYdVc+/a2VnT1CSphdpim3i0k9iPFPrxOA3FuElDbOmJgYDBsZuyo9TaDJll yVV7k5Ljx36b4HAybDfIczB/YD/EggrZCj4ykH668fo9MH0jB9FUhAyEKCT1XzU3DBeZ V1J9RuKUy11bfY4lX7xu7hkqr7Qa861E+me1LVAFtUfakwo3vvuBmAALq/lPJZsMizOH yF3gjZQ6DbWLVG/sLTiH8CsQMeubbWnzlorFKy1Y3odLGHtxzq8PiL5Ht9u7whLxEWh8 heANMnvXzmwB3jJyJD1tLY7sP48MftOc4ssgydQ4mRfMK/OiddK6CsF2zBjLq68LiXo4 eojg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a26-20020a50f0da000000b00418c2b5bdd1si1104342edm.179.2022.04.08.09.22.37; Fri, 08 Apr 2022 09:23:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232968AbiDHLVQ (ORCPT + 99 others); Fri, 8 Apr 2022 07:21:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36228 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229452AbiDHLVP (ORCPT ); Fri, 8 Apr 2022 07:21:15 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 146DA255C1F; Fri, 8 Apr 2022 04:19:13 -0700 (PDT) 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-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 >