Re: [PATCH v12 1/3] mm, powerpc, x86: define VM_PKEY_BITx bits if CONFIG_ARCH_HAS_PKEYS is enabled
On 02/21/2018 03:52 PM, Ram Pai wrote: > VM_PKEY_BITx are defined only if CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS > is enabled. Powerpc also needs these bits. Hence lets define the > VM_PKEY_BITx bits for any architecture that enables > CONFIG_ARCH_HAS_PKEYS. Your fixed version looks fine to me. Reviewed-by: Dave Hansen
Re: [PATCH v12 1/3] mm, powerpc, x86: define VM_PKEY_BITx bits if CONFIG_ARCH_HAS_PKEYS is enabled
On Sun, Feb 25, 2018 at 05:27:11PM +0530, Aneesh Kumar K.V wrote: > > > On 02/24/2018 06:35 AM, Ram Pai wrote: > >On Fri, Feb 23, 2018 at 03:11:45PM +0800, kbuild test robot wrote: > >>Hi Ram, > >> > >>Thank you for the patch! Yet something to improve: > >> > >>[auto build test ERROR on linus/master] > >>[also build test ERROR on v4.16-rc2 next-20180222] > >>[if your patch is applied to the wrong git tree, please drop us a note to > >>help improve the system] > >> > >> chmod +x ~/bin/make.cross > >...snip.. > >> # save the attached .config to linux build tree > >> make.cross ARCH=powerpc > >> > >>Note: the > >>linux-review/Ram-Pai/mm-x86-powerpc-Enhancements-to-Memory-Protection-Keys/20180223-042743 > >> HEAD c5692bca45543c242ffca15c811923e4c548ed19 builds fine. > >> It only hurts bisectibility. > > > >oops, it broke git-bisect on powerpc :-( > >The following change will fix it. This should nail it down. > > > >diff --git a/arch/powerpc/include/asm/pkeys.h > >b/arch/powerpc/include/asm/pkeys.h > >index 0409c80..0b3b669 100644 > >--- a/arch/powerpc/include/asm/pkeys.h > >+++ b/arch/powerpc/include/asm/pkeys.h > >@@ -25,6 +25,7 @@ > > # define VM_PKEY_BIT1 VM_HIGH_ARCH_1 > > # define VM_PKEY_BIT2 VM_HIGH_ARCH_2 > > # define VM_PKEY_BIT3 VM_HIGH_ARCH_3 > > # define VM_PKEY_BIT4 VM_HIGH_ARCH_4 > >+#elif !defined(VM_PKEY_BIT4) > >+# define VM_PKEY_BIT4 VM_HIGH_ARCH_4 > >#endif > > > > Why don't you remove this powerpc definition completely in this > patch? That was my thought too, but refrained from sneaking in the changes into the patch, to maintain the integrity of all the reviewed-by. Was planning on sending a seperate patch to remove the powerpc definition entirely. RP
Re: [PATCH v12 1/3] mm, powerpc, x86: define VM_PKEY_BITx bits if CONFIG_ARCH_HAS_PKEYS is enabled
On 02/24/2018 06:35 AM, Ram Pai wrote: On Fri, Feb 23, 2018 at 03:11:45PM +0800, kbuild test robot wrote: Hi Ram, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.16-rc2 next-20180222] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] chmod +x ~/bin/make.cross ...snip.. # save the attached .config to linux build tree make.cross ARCH=powerpc Note: the linux-review/Ram-Pai/mm-x86-powerpc-Enhancements-to-Memory-Protection-Keys/20180223-042743 HEAD c5692bca45543c242ffca15c811923e4c548ed19 builds fine. It only hurts bisectibility. oops, it broke git-bisect on powerpc :-( The following change will fix it. This should nail it down. diff --git a/arch/powerpc/include/asm/pkeys.h b/arch/powerpc/include/asm/pkeys.h index 0409c80..0b3b669 100644 --- a/arch/powerpc/include/asm/pkeys.h +++ b/arch/powerpc/include/asm/pkeys.h @@ -25,6 +25,7 @@ # define VM_PKEY_BIT1 VM_HIGH_ARCH_1 # define VM_PKEY_BIT2 VM_HIGH_ARCH_2 # define VM_PKEY_BIT3 VM_HIGH_ARCH_3 # define VM_PKEY_BIT4 VM_HIGH_ARCH_4 +#elif !defined(VM_PKEY_BIT4) +# define VM_PKEY_BIT4 VM_HIGH_ARCH_4 #endif Why don't you remove this powerpc definition completely in this patch? Also move that comment above #define. The comments are not specific to BIT1 @@ -231,9 +231,10 @@ extern int overcommit_kbytes_handler(struct ctl_table *, int, void __user *, #ifdef CONFIG_ARCH_HAS_PKEYS # define VM_PKEY_SHIFT VM_HIGH_ARCH_BIT_0 # define VM_PKEY_BIT0 VM_HIGH_ARCH_0 /* A protection key is a 4-bit value */ -# define VM_PKEY_BIT1 VM_HIGH_ARCH_1 +# define VM_PKEY_BIT1 VM_HIGH_ARCH_1 /* on x86 and 5-bit value on ppc64 */ # define VM_PKEY_BIT2 VM_HIGH_ARCH_2 # define VM_PKEY_BIT3 VM_HIGH_ARCH_3 +# define VM_PKEY_BIT4 VM_HIGH_ARCH_4 #endif /* CONFIG_ARCH_HAS_PKEYS */ -aneesh
Re: [PATCH v12 1/3] mm, powerpc, x86: define VM_PKEY_BITx bits if CONFIG_ARCH_HAS_PKEYS is enabled
On Fri, Feb 23, 2018 at 03:11:45PM +0800, kbuild test robot wrote: > Hi Ram, > > Thank you for the patch! Yet something to improve: > > [auto build test ERROR on linus/master] > [also build test ERROR on v4.16-rc2 next-20180222] > [if your patch is applied to the wrong git tree, please drop us a note to > help improve the system] > > chmod +x ~/bin/make.cross ...snip.. > # save the attached .config to linux build tree > make.cross ARCH=powerpc > > Note: the > linux-review/Ram-Pai/mm-x86-powerpc-Enhancements-to-Memory-Protection-Keys/20180223-042743 > HEAD c5692bca45543c242ffca15c811923e4c548ed19 builds fine. > It only hurts bisectibility. oops, it broke git-bisect on powerpc :-( The following change will fix it. This should nail it down. diff --git a/arch/powerpc/include/asm/pkeys.h b/arch/powerpc/include/asm/pkeys.h index 0409c80..0b3b669 100644 --- a/arch/powerpc/include/asm/pkeys.h +++ b/arch/powerpc/include/asm/pkeys.h @@ -25,6 +25,7 @@ # define VM_PKEY_BIT1 VM_HIGH_ARCH_1 # define VM_PKEY_BIT2 VM_HIGH_ARCH_2 # define VM_PKEY_BIT3 VM_HIGH_ARCH_3 # define VM_PKEY_BIT4 VM_HIGH_ARCH_4 +#elif !defined(VM_PKEY_BIT4) +# define VM_PKEY_BIT4 VM_HIGH_ARCH_4 #endif
Re: [PATCH v12 1/3] mm, powerpc, x86: define VM_PKEY_BITx bits if CONFIG_ARCH_HAS_PKEYS is enabled
Hi Ram, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.16-rc2 next-20180223] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Ram-Pai/mm-x86-powerpc-Enhancements-to-Memory-Protection-Keys/20180223-042743 config: powerpc-skiroot_defconfig (attached as .config) compiler: powerpc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=powerpc Note: the linux-review/Ram-Pai/mm-x86-powerpc-Enhancements-to-Memory-Protection-Keys/20180223-042743 HEAD c5692bca45543c242ffca15c811923e4c548ed19 builds fine. It only hurts bisectibility. All errors (new ones prefixed by >>): In file included from include/linux/pkeys.h:9:0, from arch/powerpc/include/asm/mman.h:16, from include/uapi/linux/mman.h:5, from include/linux/mman.h:9, from arch/powerpc/kernel/asm-offsets.c:22: arch/powerpc/include/asm/pkeys.h: In function 'pkey_to_vmflag_bits': >> arch/powerpc/include/asm/pkeys.h:32:23: error: 'VM_PKEY_BIT4' undeclared >> (first use in this function); did you mean 'VM_PKEY_BIT3'? VM_PKEY_BIT3 | VM_PKEY_BIT4) ^ arch/powerpc/include/asm/pkeys.h:42:41: note: in expansion of macro 'ARCH_VM_PKEY_FLAGS' return (((u64)pkey << VM_PKEY_SHIFT) & ARCH_VM_PKEY_FLAGS); ^~ arch/powerpc/include/asm/pkeys.h:32:23: note: each undeclared identifier is reported only once for each function it appears in VM_PKEY_BIT3 | VM_PKEY_BIT4) ^ arch/powerpc/include/asm/pkeys.h:42:41: note: in expansion of macro 'ARCH_VM_PKEY_FLAGS' return (((u64)pkey << VM_PKEY_SHIFT) & ARCH_VM_PKEY_FLAGS); ^~ arch/powerpc/include/asm/pkeys.h: In function 'vmflag_to_pte_pkey_bits': arch/powerpc/include/asm/pkeys.h:54:16: error: 'VM_PKEY_BIT4' undeclared (first use in this function); did you mean 'VM_PKEY_BIT3'? ((vm_flags & VM_PKEY_BIT4) ? H_PTE_PKEY_BIT0 : 0x0UL)); ^~~~ VM_PKEY_BIT3 arch/powerpc/include/asm/pkeys.h: In function 'vma_pkey': >> arch/powerpc/include/asm/pkeys.h:32:23: error: 'VM_PKEY_BIT4' undeclared >> (first use in this function); did you mean 'VM_PKEY_BIT3'? VM_PKEY_BIT3 | VM_PKEY_BIT4) ^ arch/powerpc/include/asm/pkeys.h:61:26: note: in expansion of macro 'ARCH_VM_PKEY_FLAGS' return (vma->vm_flags & ARCH_VM_PKEY_FLAGS) >> VM_PKEY_SHIFT; ^~ make[2]: *** [arch/powerpc/kernel/asm-offsets.s] Error 1 make[2]: Target '__build' not remade because of errors. make[1]: *** [prepare0] Error 2 make[1]: Target 'prepare' not remade because of errors. make: *** [sub-make] Error 2 vim +32 arch/powerpc/include/asm/pkeys.h 4fb158f6 Ram Pai 2018-01-18 30 4fb158f6 Ram Pai 2018-01-18 31 #define ARCH_VM_PKEY_FLAGS (VM_PKEY_BIT0 | VM_PKEY_BIT1 | VM_PKEY_BIT2 | \ 4fb158f6 Ram Pai 2018-01-18 @32 VM_PKEY_BIT3 | VM_PKEY_BIT4) 4fb158f6 Ram Pai 2018-01-18 33 :: The code at line 32 was first introduced by commit :: 4fb158f65ac5556b9b4a6f63f38272853ed99b22 powerpc: track allocation status of all pkeys :: TO: Ram Pai :: CC: Michael Ellerman --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: application/gzip
Re: [PATCH v12 1/3] mm, powerpc, x86: define VM_PKEY_BITx bits if CONFIG_ARCH_HAS_PKEYS is enabled
Hi Ram, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.16-rc2 next-20180222] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Ram-Pai/mm-x86-powerpc-Enhancements-to-Memory-Protection-Keys/20180223-042743 config: powerpc-allmodconfig (attached as .config) compiler: powerpc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=powerpc Note: the linux-review/Ram-Pai/mm-x86-powerpc-Enhancements-to-Memory-Protection-Keys/20180223-042743 HEAD c5692bca45543c242ffca15c811923e4c548ed19 builds fine. It only hurts bisectibility. All error/warnings (new ones prefixed by >>): In file included from include/linux/pkeys.h:9:0, from arch/powerpc/include/asm/mman.h:16, from include/uapi/linux/mman.h:5, from include/linux/mman.h:9, from arch/powerpc/kernel/asm-offsets.c:22: arch/powerpc/include/asm/pkeys.h: In function 'pkey_to_vmflag_bits': >> arch/powerpc/include/asm/pkeys.h:32:23: error: 'VM_PKEY_BIT4' undeclared >> (first use in this function); did you mean 'VM_PKEY_BIT0'? VM_PKEY_BIT3 | VM_PKEY_BIT4) ^ >> arch/powerpc/include/asm/pkeys.h:42:41: note: in expansion of macro >> 'ARCH_VM_PKEY_FLAGS' return (((u64)pkey << VM_PKEY_SHIFT) & ARCH_VM_PKEY_FLAGS); ^~ arch/powerpc/include/asm/pkeys.h:32:23: note: each undeclared identifier is reported only once for each function it appears in VM_PKEY_BIT3 | VM_PKEY_BIT4) ^ >> arch/powerpc/include/asm/pkeys.h:42:41: note: in expansion of macro >> 'ARCH_VM_PKEY_FLAGS' return (((u64)pkey << VM_PKEY_SHIFT) & ARCH_VM_PKEY_FLAGS); ^~ arch/powerpc/include/asm/pkeys.h: In function 'vmflag_to_pte_pkey_bits': arch/powerpc/include/asm/pkeys.h:54:16: error: 'VM_PKEY_BIT4' undeclared (first use in this function); did you mean 'VM_PKEY_BIT0'? ((vm_flags & VM_PKEY_BIT4) ? H_PTE_PKEY_BIT0 : 0x0UL)); ^~~~ VM_PKEY_BIT0 arch/powerpc/include/asm/pkeys.h: In function 'vma_pkey': >> arch/powerpc/include/asm/pkeys.h:32:23: error: 'VM_PKEY_BIT4' undeclared >> (first use in this function); did you mean 'VM_PKEY_BIT0'? VM_PKEY_BIT3 | VM_PKEY_BIT4) ^ arch/powerpc/include/asm/pkeys.h:61:26: note: in expansion of macro 'ARCH_VM_PKEY_FLAGS' return (vma->vm_flags & ARCH_VM_PKEY_FLAGS) >> VM_PKEY_SHIFT; ^~ make[2]: *** [arch/powerpc/kernel/asm-offsets.s] Error 1 make[2]: Target '__build' not remade because of errors. make[1]: *** [prepare0] Error 2 make[1]: Target 'prepare' not remade because of errors. make: *** [sub-make] Error 2 vim +32 arch/powerpc/include/asm/pkeys.h 4fb158f6 Ram Pai 2018-01-18 30 4fb158f6 Ram Pai 2018-01-18 31 #define ARCH_VM_PKEY_FLAGS (VM_PKEY_BIT0 | VM_PKEY_BIT1 | VM_PKEY_BIT2 | \ 4fb158f6 Ram Pai 2018-01-18 @32 VM_PKEY_BIT3 | VM_PKEY_BIT4) 4fb158f6 Ram Pai 2018-01-18 33 013a91b3 Ram Pai 2018-01-18 34 /* Override any generic PKEY permission defines */ 013a91b3 Ram Pai 2018-01-18 35 #define PKEY_DISABLE_EXECUTE 0x4 013a91b3 Ram Pai 2018-01-18 36 #define PKEY_ACCESS_MASK (PKEY_DISABLE_ACCESS | \ 013a91b3 Ram Pai 2018-01-18 37 PKEY_DISABLE_WRITE | \ 013a91b3 Ram Pai 2018-01-18 38 PKEY_DISABLE_EXECUTE) 013a91b3 Ram Pai 2018-01-18 39 013a91b3 Ram Pai 2018-01-18 40 static inline u64 pkey_to_vmflag_bits(u16 pkey) 013a91b3 Ram Pai 2018-01-18 41 { 013a91b3 Ram Pai 2018-01-18 @42 return (((u64)pkey << VM_PKEY_SHIFT) & ARCH_VM_PKEY_FLAGS); 013a91b3 Ram Pai 2018-01-18 43 } 013a91b3 Ram Pai 2018-01-18 44 :: The code at line 32 was first introduced by commit :: 4fb158f65ac5556b9b4a6f63f38272853ed99b22 powerpc: track allocation status of all pkeys :: TO: Ram Pai :: CC: Michael Ellerman --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: application/gzip
[PATCH v12 1/3] mm, powerpc, x86: define VM_PKEY_BITx bits if CONFIG_ARCH_HAS_PKEYS is enabled
VM_PKEY_BITx are defined only if CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS is enabled. Powerpc also needs these bits. Hence lets define the VM_PKEY_BITx bits for any architecture that enables CONFIG_ARCH_HAS_PKEYS. cc: Dave Hansen cc: Michael Ellermen cc: Benjamin Herrenschmidt cc: Andrew Morton Signed-off-by: Ram Pai Reviewed-by: Ingo Molnar Reviewed-by: Aneesh Kumar K.V --- fs/proc/task_mmu.c |4 ++-- include/linux/mm.h |9 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index ec6d298..6b996d0 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -679,13 +679,13 @@ static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma) [ilog2(VM_MERGEABLE)] = "mg", [ilog2(VM_UFFD_MISSING)]= "um", [ilog2(VM_UFFD_WP)] = "uw", -#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS +#ifdef CONFIG_ARCH_HAS_PKEYS /* These come out via ProtectionKey: */ [ilog2(VM_PKEY_BIT0)] = "", [ilog2(VM_PKEY_BIT1)] = "", [ilog2(VM_PKEY_BIT2)] = "", [ilog2(VM_PKEY_BIT3)] = "", -#endif +#endif /* CONFIG_ARCH_HAS_PKEYS */ }; size_t i; diff --git a/include/linux/mm.h b/include/linux/mm.h index ad06d42..ad207ad 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -228,15 +228,16 @@ extern int overcommit_kbytes_handler(struct ctl_table *, int, void __user *, #define VM_HIGH_ARCH_4 BIT(VM_HIGH_ARCH_BIT_4) #endif /* CONFIG_ARCH_USES_HIGH_VMA_FLAGS */ -#if defined(CONFIG_X86) -# define VM_PATVM_ARCH_1 /* PAT reserves whole VMA at once (x86) */ -#if defined (CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS) +#ifdef CONFIG_ARCH_HAS_PKEYS # define VM_PKEY_SHIFT VM_HIGH_ARCH_BIT_0 # define VM_PKEY_BIT0 VM_HIGH_ARCH_0 /* A protection key is a 4-bit value */ # define VM_PKEY_BIT1 VM_HIGH_ARCH_1 # define VM_PKEY_BIT2 VM_HIGH_ARCH_2 # define VM_PKEY_BIT3 VM_HIGH_ARCH_3 -#endif +#endif /* CONFIG_ARCH_HAS_PKEYS */ + +#if defined(CONFIG_X86) +# define VM_PATVM_ARCH_1 /* PAT reserves whole VMA at once (x86) */ #elif defined(CONFIG_PPC) # define VM_SAOVM_ARCH_1 /* Strong Access Ordering (powerpc) */ #elif defined(CONFIG_PARISC) -- 1.7.1