From: Ram Pai <linuxram@us.ibm.com>
To: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org, mhocko@kernel.org,
paulus@samba.org, aneesh.kumar@linux.vnet.ibm.com,
bauerman@linux.vnet.ibm.com, khandual@linux.vnet.ibm.com
Subject: Re: [RFC v7 15/25] powerpc: Program HPTE key protection bits
Date: Wed, 18 Oct 2017 15:12:12 -0700 [thread overview]
Message-ID: <20171018221212.GP5617@ram.oc3035372033.ibm.com> (raw)
In-Reply-To: <24a039cb-526c-6baa-15b8-906963ae62b7@linux.vnet.ibm.com>
On Wed, Oct 18, 2017 at 06:15:40PM +0200, Laurent Dufour wrote:
>
>
> On 31/07/2017 02:12, Ram Pai wrote:
> > Map the PTE protection key bits to the HPTE key protection bits,
> > while creating HPTE entries.
> >
> > Signed-off-by: Ram Pai <linuxram@us.ibm.com>
> > ---
> > arch/powerpc/include/asm/book3s/64/mmu-hash.h | 5 +++++
> > arch/powerpc/include/asm/mmu_context.h | 6 ++++++
> > arch/powerpc/include/asm/pkeys.h | 13 +++++++++++++
> > arch/powerpc/mm/hash_utils_64.c | 1 +
> > 4 files changed, 25 insertions(+), 0 deletions(-)
> >
> > diff --git a/arch/powerpc/include/asm/book3s/64/mmu-hash.h b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
> > index 6981a52..f7a6ed3 100644
> > --- a/arch/powerpc/include/asm/book3s/64/mmu-hash.h
> > +++ b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
> > @@ -90,6 +90,8 @@
> > #define HPTE_R_PP0 ASM_CONST(0x8000000000000000)
> > #define HPTE_R_TS ASM_CONST(0x4000000000000000)
> > #define HPTE_R_KEY_HI ASM_CONST(0x3000000000000000)
> > +#define HPTE_R_KEY_BIT0 ASM_CONST(0x2000000000000000)
> > +#define HPTE_R_KEY_BIT1 ASM_CONST(0x1000000000000000)
> > #define HPTE_R_RPN_SHIFT 12
> > #define HPTE_R_RPN ASM_CONST(0x0ffffffffffff000)
> > #define HPTE_R_RPN_3_0 ASM_CONST(0x01fffffffffff000)
> > @@ -104,6 +106,9 @@
> > #define HPTE_R_C ASM_CONST(0x0000000000000080)
> > #define HPTE_R_R ASM_CONST(0x0000000000000100)
> > #define HPTE_R_KEY_LO ASM_CONST(0x0000000000000e00)
> > +#define HPTE_R_KEY_BIT2 ASM_CONST(0x0000000000000800)
> > +#define HPTE_R_KEY_BIT3 ASM_CONST(0x0000000000000400)
> > +#define HPTE_R_KEY_BIT4 ASM_CONST(0x0000000000000200)
> >
> > #define HPTE_V_1TB_SEG ASM_CONST(0x4000000000000000)
> > #define HPTE_V_VRMA_MASK ASM_CONST(0x4001ffffff000000)
> > diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
> > index 7232484..2eb7f80 100644
> > --- a/arch/powerpc/include/asm/mmu_context.h
> > +++ b/arch/powerpc/include/asm/mmu_context.h
> > @@ -190,6 +190,12 @@ static inline int vma_pkey(struct vm_area_struct *vma)
> > {
> > return 0;
> > }
> > +
> > +static inline u64 pte_to_hpte_pkey_bits(u64 pteflags)
> > +{
> > + return 0x0UL;
> > +}
> > +
> > #endif /* CONFIG_PPC64_MEMORY_PROTECTION_KEYS */
> >
> > #endif /* __KERNEL__ */
> > diff --git a/arch/powerpc/include/asm/pkeys.h b/arch/powerpc/include/asm/pkeys.h
> > index 1ded6df..4b7e3f4 100644
> > --- a/arch/powerpc/include/asm/pkeys.h
> > +++ b/arch/powerpc/include/asm/pkeys.h
> > @@ -72,6 +72,19 @@ static inline int vma_pkey(struct vm_area_struct *vma)
> > #define AMR_RD_BIT 0x1UL
> > #define AMR_WR_BIT 0x2UL
> > #define IAMR_EX_BIT 0x1UL
> > +
> > +static inline u64 pte_to_hpte_pkey_bits(u64 pteflags)
> > +{
> > + if (!pkey_inited)
> > + return 0x0UL;
>
> Why making such a check here, is it to avoid the following check during the
> boot process only ?
> IIUC, there is no way to get H_PAGE_PKEY_BIT* set when pkey_inited is false.
I know its a little paronia. Trying to avoid a case where the
uninitialized pkey bits in the pte are erroneously interpreted as valid
by this function. Remember that the caller of this function will use the
return value to program the hpte. Nothing really bad should happen
since none of the keys are enabled. But ... just playing it safe.
thanks,
RP
next prev parent reply other threads:[~2017-10-18 22:12 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-31 0:12 [RFC v7 00/25] powerpc: Memory Protection Keys Ram Pai
2017-07-31 0:12 ` [RFC v7 01/25] powerpc: define an additional vma bit for protection keys Ram Pai
2017-07-31 0:12 ` [RFC v7 02/25] powerpc: track allocation status of all pkeys Ram Pai
2017-08-10 20:25 ` Thiago Jung Bauermann
2017-08-11 5:39 ` Michael Ellerman
2017-08-17 16:00 ` Ram Pai
2017-08-17 15:48 ` Ram Pai
2017-08-17 20:40 ` Thiago Jung Bauermann
2017-10-18 2:42 ` Balbir Singh
2017-10-18 3:40 ` Ram Pai
2017-10-18 16:08 ` Laurent Dufour
2017-10-18 22:04 ` Ram Pai
2017-07-31 0:12 ` [RFC v7 03/25] powerpc: helper function to read, write AMR, IAMR, UAMOR registers Ram Pai
2017-07-31 0:12 ` [RFC v7 04/25] powerpc: helper functions to initialize AMR, IAMR and " Ram Pai
2017-07-31 0:12 ` [RFC v7 05/25] powerpc: cleaup AMR, iAMR when a key is allocated or freed Ram Pai
2017-07-31 0:12 ` [RFC v7 06/25] powerpc: implementation for arch_set_user_pkey_access() Ram Pai
2017-07-31 0:12 ` [RFC v7 07/25] powerpc: sys_pkey_alloc() and sys_pkey_free() system calls Ram Pai
2017-07-31 0:12 ` [RFC v7 08/25] powerpc: ability to create execute-disabled pkeys Ram Pai
2017-07-31 0:12 ` [RFC v7 09/25] powerpc: store and restore the pkey state across context switches Ram Pai
2017-08-10 20:46 ` Thiago Jung Bauermann
2017-08-11 6:34 ` Michael Ellerman
2017-08-17 16:41 ` Ram Pai
2017-07-31 0:12 ` [RFC v7 10/25] powerpc: introduce execute-only pkey Ram Pai
2017-07-31 0:12 ` [RFC v7 11/25] powerpc: ability to associate pkey to a vma Ram Pai
2017-07-31 0:12 ` [RFC v7 12/25] powerpc: implementation for arch_override_mprotect_pkey() Ram Pai
2017-10-18 15:58 ` Laurent Dufour
2017-10-18 21:37 ` Ram Pai
2017-07-31 0:12 ` [RFC v7 13/25] powerpc: map vma key-protection bits to pte key bits Ram Pai
2017-07-31 0:12 ` [RFC v7 14/25] powerpc: sys_pkey_mprotect() system call Ram Pai
2017-07-31 0:12 ` [RFC v7 15/25] powerpc: Program HPTE key protection bits Ram Pai
2017-10-18 16:15 ` Laurent Dufour
2017-10-18 22:12 ` Ram Pai [this message]
2017-10-19 5:12 ` Michael Ellerman
2017-07-31 0:12 ` [RFC v7 16/25] powerpc: helper to validate key-access permissions of a pte Ram Pai
2017-10-18 16:08 ` Laurent Dufour
2017-10-18 21:56 ` Ram Pai
2017-10-19 5:13 ` Michael Ellerman
2017-07-31 0:12 ` [RFC v7 17/25] powerpc: check key protection for user page access Ram Pai
2017-07-31 0:12 ` [RFC v7 18/25] powerpc: Macro the mask used for checking DSI exception Ram Pai
2017-07-31 0:12 ` [RFC v7 19/25] powerpc: implementation for arch_vma_access_permitted() Ram Pai
2017-07-31 0:12 ` [RFC v7 20/25] powerpc: Handle exceptions caused by pkey violation Ram Pai
2017-07-31 0:12 ` [RFC v7 21/25] powerpc: capture AMR register content on " Ram Pai
2017-07-31 0:12 ` [RFC v7 22/25] powerpc: introduce get_pte_pkey() helper Ram Pai
2017-07-31 0:12 ` [RFC v7 23/25] powerpc: capture the violated protection key on fault Ram Pai
2017-07-31 0:12 ` [RFC v7 24/25] powerpc: Deliver SEGV signal on pkey violation Ram Pai
2017-08-10 21:00 ` Thiago Jung Bauermann
2017-08-11 10:26 ` Michael Ellerman
2017-08-17 17:14 ` Ram Pai
2017-08-18 4:48 ` Michael Ellerman
2017-08-18 17:04 ` Ram Pai
2017-08-18 21:54 ` Benjamin Herrenschmidt
2017-08-18 22:36 ` Ram Pai
2017-10-18 2:25 ` Balbir Singh
2017-10-18 3:01 ` Ram Pai
2017-08-18 22:49 ` Ram Pai
2017-08-19 8:23 ` Benjamin Herrenschmidt
2017-07-31 0:12 ` [RFC v7 25/25] powerpc: Enable pkey subsystem Ram Pai
2017-08-10 21:27 ` Thiago Jung Bauermann
2017-08-17 17:40 ` Ram Pai
2017-08-17 20:30 ` Thiago Jung Bauermann
2017-08-17 23:48 ` Ram Pai
2017-08-18 5:07 ` Michael Ellerman
2017-08-18 15:26 ` Thiago Jung Bauermann
2017-08-18 16:32 ` Ram Pai
2017-08-11 17:34 ` [RFC v7 26/25] mm/mprotect, powerpc/mm/pkeys, x86/mm/pkeys: Add sysfs interface Thiago Jung Bauermann
2017-08-18 0:25 ` Ram Pai
2017-08-18 23:19 ` Thiago Jung Bauermann
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=20171018221212.GP5617@ram.oc3035372033.ibm.com \
--to=linuxram@us.ibm.com \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=bauerman@linux.vnet.ibm.com \
--cc=khandual@linux.vnet.ibm.com \
--cc=ldufour@linux.vnet.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mhocko@kernel.org \
--cc=paulus@samba.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).