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 13682C3DA59 for ; Tue, 16 Jul 2024 09:35:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3B85E6B008C; Tue, 16 Jul 2024 05:35:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3681E6B0092; Tue, 16 Jul 2024 05:35:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 27D626B0093; Tue, 16 Jul 2024 05:35:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 0AD626B008C for ; Tue, 16 Jul 2024 05:35:10 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id A9F7180439 for ; Tue, 16 Jul 2024 09:35:09 +0000 (UTC) X-FDA: 82345107138.25.607BFB9 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf10.hostedemail.com (Postfix) with ESMTP id 042AFC0007 for ; Tue, 16 Jul 2024 09:35:06 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=none; spf=pass (imf10.hostedemail.com: domain of joey.gouly@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=joey.gouly@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721122469; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NxB1LL+5JM4h83k0KVFKioi1/p8vMVJxHhlvHyZA0tE=; b=QdluCwtfN+Z+kgwkyvfH26pCumMKhFbnWa20V6NT+G0Pq/8KQPv/6DMcN5TWjyrbMSh00q /Hm1rwIEHHFRSJ27+XUrP9NBmZejlopI3DKUlAkzt2ObtPbCSXVLdSRv+Fb0AI5QlSH03M E5jtKltNH44o+evZNqWJdIj4ATU9TcY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721122469; a=rsa-sha256; cv=none; b=GMOuDtCyAJi6WmH6n0kLjLYw3LPhTCxlR6A/Kj27XnOxAFHLg5UhNsf02U8JVam+5wlo5E 7Ajikzy/0vYEr+wVBxAzWunGUtmgUjekzUVv+fxFS6Ye7lefVUZMuLNjmjUptN7l0yHVqz 2zS+UJqvVhlSTAttKiQ4b1t3LAPM0ZY= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=none; spf=pass (imf10.hostedemail.com: domain of joey.gouly@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=joey.gouly@arm.com; dmarc=pass (policy=none) header.from=arm.com 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 2B7EA1063; Tue, 16 Jul 2024 02:35:31 -0700 (PDT) Received: from e124191.cambridge.arm.com (e124191.cambridge.arm.com [10.1.197.45]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DB77D3F762; Tue, 16 Jul 2024 02:35:02 -0700 (PDT) Date: Tue, 16 Jul 2024 10:34:57 +0100 From: Joey Gouly To: Anshuman Khandual Cc: linux-arm-kernel@lists.infradead.org, akpm@linux-foundation.org, aneesh.kumar@kernel.org, aneesh.kumar@linux.ibm.com, bp@alien8.de, broonie@kernel.org, catalin.marinas@arm.com, christophe.leroy@csgroup.eu, dave.hansen@linux.intel.com, hpa@zytor.com, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org, maz@kernel.org, mingo@redhat.com, mpe@ellerman.id.au, naveen.n.rao@linux.ibm.com, npiggin@gmail.com, oliver.upton@linux.dev, shuah@kernel.org, szabolcs.nagy@arm.com, tglx@linutronix.de, will@kernel.org, x86@kernel.org, kvmarm@lists.linux.dev Subject: Re: [PATCH v4 13/29] arm64: convert protection key into vm_flags and pgprot values Message-ID: <20240716093457.GA1542300@e124191.cambridge.arm.com> References: <20240503130147.1154804-1-joey.gouly@arm.com> <20240503130147.1154804-14-joey.gouly@arm.com> <0f87e51e-f790-4302-896f-9b9a74ed7495@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <0f87e51e-f790-4302-896f-9b9a74ed7495@arm.com> X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 042AFC0007 X-Stat-Signature: dk87fr3d1a9nmphm4r4wb1s36ttecy8y X-HE-Tag: 1721122506-932649 X-HE-Meta: U2FsdGVkX1+WKddHrH3fvYPVXl1nRmAHc/Fv7Qoz4ArCXTy8xXSnzu0/L/mxBDxH4oHGd5eq1imzAIHPsoU7Z5IY5nqlxzvL7TZYRpijYqOaYUBYRBarBv213idBcuTo122pGDaPhFeQamfv99M8xUL86+3/oUmDpOl4GEweR7i4S8a2X0NKwlb+U1jXpa7skajxOvmogh7Sv4TNxvp71rgnz0wAzWqzktHEaPcCIk/9bi+3rIuZLj1G3KidAZzLBKcqZsNvRgENTwFgWd6Bqyp4rDWs6LmH7/BmZeYFfndkFhK3cn1SBllP5IsFOMWkvA+KEzcPubkG3UtGbM4uiytLY5tPR2vhiMtr5UD/HgdlXFipgW1aS4jNKLl+gRYUrgnbgGtlrYH/NxxgyPST6ZX2Ms0byhjU7aRJoR94VGPdMDSbBHkEsnpyVp05TjeTffqDhyXfUFrtB3N7UsseuB4sB3Y9IrpOyl+ALF5sSdmIfP0kAU2KdFpt+ZPtlNpqaiHce6U90IBuYU+TkAsQ6f0Rx44kOdLcR9Id3WDdccw2YYZHJnbcLJ8Po1lgKRIpEO62lEjsxBJM2V2s4SL6Jh2SzGMzJ0+VMxN7simo2fGqocE/qP3tke2mEDK4fA+QhXVjdueYFyu+DZ8UkY0AP0IfqQD5jPSqtWAoyY+9SvFvnH8LwiQ7EyVZYu2+nSsxmVkGk8waQ6XBQmlPbLd0ylO4C5QjPxLyy7c8yzpqIy28ha1l45zAKCpZ9mssPDnlga3D5jsMo98O7LUx2XQJR5AckrL7ed4bWnSMir/q7UCYNBFlg4W1szc9njWj0PsiVe1N8DPTxQE9eZrIIibEYcmqkwWhDIt9qZ6qdmK+lOiAPj7vBrlvyjIqqDf+XFOsAS53bivC2DtwqJ/rIt+BRhxrStums/3XvpmVMsJ6dq2k80ccFQ680wdUbMiPuTCG6MXxqpb47V1UNVW1ktZ NfUOwDRN EpINQLHZ0qB9lqIS8UkH4/MR1weN08ZSegsDyMlJ23TYRzyh85nGl6cWlxRKwHLRzGktcwFREzK5W/uxATF6TqiMZAYUxeQbKIJE1fU53NDDR00hlzeB4R/2AgHnpZAC/XlmhSUrXvdP2KXfVcG5RHU7IMRxFNlef5yeRUdtR98Xghug3igkET14aoeJ1TVlCoKoW5KX0EKgP0GU+c1PoCpnbCnk7X4eSuOTDOxAz3uVpC4+lNzWOiVEBDXBBxnLrOPMONFXQ4sCEyXQWK6o0u8iiwkLcAEAhvLuLUCufXfvcVJ+iZoKpFh0+HA== 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: List-Subscribe: List-Unsubscribe: On Tue, Jul 16, 2024 at 02:35:48PM +0530, Anshuman Khandual wrote: > > > On 5/3/24 18:31, Joey Gouly wrote: > > Modify arch_calc_vm_prot_bits() and vm_get_page_prot() such that the pkey > > value is set in the vm_flags and then into the pgprot value. > > > > Signed-off-by: Joey Gouly > > Cc: Catalin Marinas > > Cc: Will Deacon > > --- > > arch/arm64/include/asm/mman.h | 8 +++++++- > > arch/arm64/mm/mmap.c | 9 +++++++++ > > 2 files changed, 16 insertions(+), 1 deletion(-) > > > > diff --git a/arch/arm64/include/asm/mman.h b/arch/arm64/include/asm/mman.h > > index 5966ee4a6154..ecb2d18dc4d7 100644 > > --- a/arch/arm64/include/asm/mman.h > > +++ b/arch/arm64/include/asm/mman.h > > @@ -7,7 +7,7 @@ > > #include > > > > static inline unsigned long arch_calc_vm_prot_bits(unsigned long prot, > > - unsigned long pkey __always_unused) > > + unsigned long pkey) > > { > > unsigned long ret = 0; > > > > @@ -17,6 +17,12 @@ static inline unsigned long arch_calc_vm_prot_bits(unsigned long prot, > > if (system_supports_mte() && (prot & PROT_MTE)) > > ret |= VM_MTE; > > > > +#if defined(CONFIG_ARCH_HAS_PKEYS) > > + ret |= pkey & 0x1 ? VM_PKEY_BIT0 : 0; > > + ret |= pkey & 0x2 ? VM_PKEY_BIT1 : 0; > > + ret |= pkey & 0x4 ? VM_PKEY_BIT2 : 0; > > 0x1, 0x2, 0x4 here are standard bit positions for their corresponding > VM_KEY_XXX based protection values ? Although this is similar to what > x86 is doing currently, hence just trying to understand if these bit > positions here are related to the user visible ABI, which should be > standardized ? The bit positions of VM_PKEY_BIT* aren't user visible. This is converting the value of the `pkey` that was passed to the mprotect, into the internal flags. I might replace those hex values with BIT(0), BIT(1), BIT(2), might be clearer. > > Agree with previous comments about the need for system_supports_poe() > based additional check for the above code block. > > > +#endif > > + > > return ret; > > } > > #define arch_calc_vm_prot_bits(prot, pkey) arch_calc_vm_prot_bits(prot, pkey) > > diff --git a/arch/arm64/mm/mmap.c b/arch/arm64/mm/mmap.c > > index 642bdf908b22..86eda6bc7893 100644 > > --- a/arch/arm64/mm/mmap.c > > +++ b/arch/arm64/mm/mmap.c > > @@ -102,6 +102,15 @@ pgprot_t vm_get_page_prot(unsigned long vm_flags) > > if (vm_flags & VM_MTE) > > prot |= PTE_ATTRINDX(MT_NORMAL_TAGGED); > > > > +#ifdef CONFIG_ARCH_HAS_PKEYS > > + if (vm_flags & VM_PKEY_BIT0) > > + prot |= PTE_PO_IDX_0; > > + if (vm_flags & VM_PKEY_BIT1) > > + prot |= PTE_PO_IDX_1; > > + if (vm_flags & VM_PKEY_BIT2) > > + prot |= PTE_PO_IDX_2; > > +#endif > > + > > return __pgprot(prot); > > } > > EXPORT_SYMBOL(vm_get_page_prot); > Thanks, Joey