* FAILED: patch "[PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS" failed to apply to 4.4-stable tree @ 2016-09-05 13:06 gregkh 2016-09-06 17:24 ` Vineet Gupta 0 siblings, 1 reply; 11+ messages in thread From: gregkh @ 2016-09-05 13:06 UTC (permalink / raw) To: vgupta, stable; +Cc: stable The patch below does not apply to the 4.4-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <stable@vger.kernel.org>. thanks, greg k-h ------------------ original commit in Linus's tree ------------------ >From 1c3c909303924d30145601f47b6c058fdd2cbc2e Mon Sep 17 00:00:00 2001 From: Vineet Gupta <vgupta@synopsys.com> Date: Tue, 16 Aug 2016 18:27:07 -0700 Subject: [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit | CC mm/memory.o | In file included from ../mm/memory.c:53:0: | ../include/linux/pfn_t.h: In function ‘pfn_t_pte’: | ../include/linux/pfn_t.h:78:2: error: conversion to non-scalar type requested | return pfn_pte(pfn_t_to_pfn(pfn), pgprot); With STRICT_MM_TYPECHECKS pte_t is a struct and the offending code forces a cast which ends up shifting a struct and hence the gcc warning. Note that in recent past some of the arches (aarch64, s390) made STRICT_MM_TYPECHECKS default, but we don't for ARC as this leads to slightly worse generated code, given ARC ABI definition of returning structs (which pte_t would become) Quoting from ARC ABI... "Results of type struct are returned in a caller-supplied temporary variable whose address is passed in r0. For such functions, the arguments are shifted so that they are passed in r1 and up." So - struct to be returned would be allocated on stack requiring extra code at call sites - callee updates stack memory to facilitate the return (vs. simple MOV into return reg r0) Hence STRICT_MM_TYPECHECKS is not enabled by default for ARC Cc: <stable@vger.kernel.org> #4.4+ Signed-off-by: Vineet Gupta <vgupta@synopsys.com> diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h index 0f92d97432a2..89eeb3720051 100644 --- a/arch/arc/include/asm/pgtable.h +++ b/arch/arc/include/asm/pgtable.h @@ -280,7 +280,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) #define pte_page(pte) pfn_to_page(pte_pfn(pte)) #define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) -#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot))) +#define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot)) /* Don't use virt_to_pfn for macros below: could cause truncations for PAE40*/ #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: FAILED: patch "[PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS" failed to apply to 4.4-stable tree 2016-09-05 13:06 FAILED: patch "[PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS" failed to apply to 4.4-stable tree gregkh @ 2016-09-06 17:24 ` Vineet Gupta 2016-09-09 14:19 ` gregkh 0 siblings, 1 reply; 11+ messages in thread From: Vineet Gupta @ 2016-09-06 17:24 UTC (permalink / raw) To: gregkh, stable On 09/05/2016 06:05 AM, gregkh@linuxfoundation.org wrote: > The patch below does not apply to the 4.4-stable tree. > If someone wants it applied there, or to any other stable or longterm > tree, then please email the backport, including the original git commit > id to <stable@vger.kernel.org>. > > thanks, > > greg k-h There were 2 commits after 4.4 which prevent a clean backport. Reworked patch below. Please apply. ----------------> rom 54607da05b9c3d4c5ee23ce0f21d7f91b83b6c34 Mon Sep 17 00:00:00 2001 From: Vineet Gupta <vgupta@synopsys.com> Date: Tue, 16 Aug 2016 18:27:07 -0700 Subject: [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit | CC mm/memory.o | In file included from ../mm/memory.c:53:0: | ../include/linux/pfn_t.h: In function âpfn_t_pteâ: | ../include/linux/pfn_t.h:78:2: error: conversion to non-scalar type requested | return pfn_pte(pfn_t_to_pfn(pfn), pgprot); With STRICT_MM_TYPECHECKS pte_t is a struct and the offending code forces a cast which ends up shifting a struct and hence the gcc warning. Note that in recent past some of the arches (aarch64, s390) made STRICT_MM_TYPECHECKS default, but we don't for ARC as this leads to slightly worse generated code, given ARC ABI definition of returning structs (which pte_t would become) Quoting from ARC ABI... "Results of type struct are returned in a caller-supplied temporary variable whose address is passed in r0. For such functions, the arguments are shifted so that they are passed in r1 and up." So - struct to be returned would be allocated on stack requiring extra code at call sites - callee updates stack memory to facilitate the return (vs. simple MOV into return reg r0) Hence STRICT_MM_TYPECHECKS is not enabled by default for ARC Cc: <stable@vger.kernel.org> #4.4+ Signed-off-by: Vineet Gupta <vgupta@synopsys.com> --- arch/arc/include/asm/pgtable.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h index 3cab04255ae0..e5fec320f158 100644 --- a/arch/arc/include/asm/pgtable.h +++ b/arch/arc/include/asm/pgtable.h @@ -277,8 +277,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) #define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) -#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | \ - pgprot_val(prot))) +#define pfn_pte(pfn, prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) #define __pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) /* -- 2.7.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: FAILED: patch "[PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS" failed to apply to 4.4-stable tree 2016-09-06 17:24 ` Vineet Gupta @ 2016-09-09 14:19 ` gregkh 2016-09-09 16:47 ` Vineet Gupta 0 siblings, 1 reply; 11+ messages in thread From: gregkh @ 2016-09-09 14:19 UTC (permalink / raw) To: Vineet Gupta; +Cc: stable On Tue, Sep 06, 2016 at 10:24:29AM -0700, Vineet Gupta wrote: > On 09/05/2016 06:05 AM, gregkh@linuxfoundation.org wrote: > > The patch below does not apply to the 4.4-stable tree. > > If someone wants it applied there, or to any other stable or longterm > > tree, then please email the backport, including the original git commit > > id to <stable@vger.kernel.org>. > > > > thanks, > > > > greg k-h > > There were 2 commits after 4.4 which prevent a clean backport. > Reworked patch below. Please apply. > > ----------------> > rom 54607da05b9c3d4c5ee23ce0f21d7f91b83b6c34 Mon Sep 17 00:00:00 2001 > From: Vineet Gupta <vgupta@synopsys.com> > Date: Tue, 16 Aug 2016 18:27:07 -0700 > Subject: [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS > MIME-Version: 1.0 > Content-Type: text/plain; charset=UTF-8 > Content-Transfer-Encoding: 8bit > > | CC mm/memory.o > | In file included from ../mm/memory.c:53:0: > | ../include/linux/pfn_t.h: In function âpfn_t_pteâ: > | ../include/linux/pfn_t.h:78:2: error: conversion to non-scalar type requested > | return pfn_pte(pfn_t_to_pfn(pfn), pgprot); > > With STRICT_MM_TYPECHECKS pte_t is a struct and the offending code > forces a cast which ends up shifting a struct and hence the gcc warning. > > Note that in recent past some of the arches (aarch64, s390) made > STRICT_MM_TYPECHECKS default, but we don't for ARC as this leads to slightly > worse generated code, given ARC ABI definition of returning structs > (which pte_t would become) > > Quoting from ARC ABI... > > "Results of type struct are returned in a caller-supplied temporary > variable whose address is passed in r0. > For such functions, the arguments are shifted so that they are > passed in r1 and up." > > So > - struct to be returned would be allocated on stack requiring extra > code at call sites > - callee updates stack memory to facilitate the return (vs. simple > MOV into return reg r0) > > Hence STRICT_MM_TYPECHECKS is not enabled by default for ARC > > Cc: <stable@vger.kernel.org> #4.4+ > Signed-off-by: Vineet Gupta <vgupta@synopsys.com> > --- > arch/arc/include/asm/pgtable.h | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h > index 3cab04255ae0..e5fec320f158 100644 > --- a/arch/arc/include/asm/pgtable.h > +++ b/arch/arc/include/asm/pgtable.h > @@ -277,8 +277,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) > > #define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) > #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) > -#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | \ > - pgprot_val(prot))) > +#define pfn_pte(pfn, prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) > #define __pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) > > /* This doesn't apply either :( ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: FAILED: patch "[PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS" failed to apply to 4.4-stable tree 2016-09-09 14:19 ` gregkh @ 2016-09-09 16:47 ` Vineet Gupta 2016-09-10 15:50 ` gregkh 0 siblings, 1 reply; 11+ messages in thread From: Vineet Gupta @ 2016-09-09 16:47 UTC (permalink / raw) To: gregkh; +Cc: stable On 09/09/2016 07:19 AM, gregkh@linuxfoundation.org wrote: > On Tue, Sep 06, 2016 at 10:24:29AM -0700, Vineet Gupta wrote: >> On 09/05/2016 06:05 AM, gregkh@linuxfoundation.org wrote: >>> The patch below does not apply to the 4.4-stable tree. >>> If someone wants it applied there, or to any other stable or longterm >>> tree, then please email the backport, including the original git commit >>> id to <stable@vger.kernel.org>. >>> >>> thanks, >>> >>> greg k-h >> There were 2 commits after 4.4 which prevent a clean backport. >> Reworked patch below. Please apply. >> >> ----------------> >> rom 54607da05b9c3d4c5ee23ce0f21d7f91b83b6c34 Mon Sep 17 00:00:00 2001 >> From: Vineet Gupta <vgupta@synopsys.com> >> Date: Tue, 16 Aug 2016 18:27:07 -0700 >> Subject: [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS >> MIME-Version: 1.0 >> Content-Type: text/plain; charset=UTF-8 >> Content-Transfer-Encoding: 8bit >> >> | CC mm/memory.o >> | In file included from ../mm/memory.c:53:0: >> | ../include/linux/pfn_t.h: In function ‘pfn_t_pte’: >> | ../include/linux/pfn_t.h:78:2: error: conversion to non-scalar type requested >> | return pfn_pte(pfn_t_to_pfn(pfn), pgprot); >> >> With STRICT_MM_TYPECHECKS pte_t is a struct and the offending code >> forces a cast which ends up shifting a struct and hence the gcc warning. >> >> Note that in recent past some of the arches (aarch64, s390) made >> STRICT_MM_TYPECHECKS default, but we don't for ARC as this leads to slightly >> worse generated code, given ARC ABI definition of returning structs >> (which pte_t would become) >> >> Quoting from ARC ABI... >> >> "Results of type struct are returned in a caller-supplied temporary >> variable whose address is passed in r0. >> For such functions, the arguments are shifted so that they are >> passed in r1 and up." >> >> So >> - struct to be returned would be allocated on stack requiring extra >> code at call sites >> - callee updates stack memory to facilitate the return (vs. simple >> MOV into return reg r0) >> >> Hence STRICT_MM_TYPECHECKS is not enabled by default for ARC >> >> Cc: <stable@vger.kernel.org> #4.4+ >> Signed-off-by: Vineet Gupta <vgupta@synopsys.com> >> --- >> arch/arc/include/asm/pgtable.h | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h >> index 3cab04255ae0..e5fec320f158 100644 >> --- a/arch/arc/include/asm/pgtable.h >> +++ b/arch/arc/include/asm/pgtable.h >> @@ -277,8 +277,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) >> >> #define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) >> #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) >> -#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | \ >> - pgprot_val(prot))) >> +#define pfn_pte(pfn, prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) >> #define __pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) >> >> /* > This doesn't apply either :( Sorry about that. I did verify that the patch was fine, I just clipped the leading 'F' when pasting in mailer. Can you please retry below - patch itself it is same as before -----------> >From 7e09fca4b721d81ce7538c6e75f87a9c9c74ef39 Mon Sep 17 00:00:00 2001 From: Vineet Gupta <vgupta@synopsys.com> Date: Tue, 16 Aug 2016 18:27:07 -0700 Subject: [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit | CC mm/memory.o | In file included from ../mm/memory.c:53:0: | ../include/linux/pfn_t.h: In function âpfn_t_pteâ: | ../include/linux/pfn_t.h:78:2: error: conversion to non-scalar type requested | return pfn_pte(pfn_t_to_pfn(pfn), pgprot); With STRICT_MM_TYPECHECKS pte_t is a struct and the offending code forces a cast which ends up shifting a struct and hence the gcc warning. Note that in recent past some of the arches (aarch64, s390) made STRICT_MM_TYPECHECKS default, but we don't for ARC as this leads to slightly worse generated code, given ARC ABI definition of returning structs (which pte_t would become) Quoting from ARC ABI... "Results of type struct are returned in a caller-supplied temporary variable whose address is passed in r0. For such functions, the arguments are shifted so that they are passed in r1 and up." So - struct to be returned would be allocated on stack requiring extra code at call sites - callee updates stack memory to facilitate the return (vs. simple MOV into return reg r0) Hence STRICT_MM_TYPECHECKS is not enabled by default for ARC Cc: <stable@vger.kernel.org> #4.4+ Signed-off-by: Vineet Gupta <vgupta@synopsys.com> --- arch/arc/include/asm/pgtable.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h index 3cab04255ae0..e5fec320f158 100644 --- a/arch/arc/include/asm/pgtable.h +++ b/arch/arc/include/asm/pgtable.h @@ -277,8 +277,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) #define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) -#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | \ - pgprot_val(prot))) +#define pfn_pte(pfn, prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) #define __pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) /* -- 2.7.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: FAILED: patch "[PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS" failed to apply to 4.4-stable tree 2016-09-09 16:47 ` Vineet Gupta @ 2016-09-10 15:50 ` gregkh 2016-09-12 16:32 ` [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS Vineet Gupta 0 siblings, 1 reply; 11+ messages in thread From: gregkh @ 2016-09-10 15:50 UTC (permalink / raw) To: Vineet Gupta; +Cc: stable On Fri, Sep 09, 2016 at 09:47:41AM -0700, Vineet Gupta wrote: > On 09/09/2016 07:19 AM, gregkh@linuxfoundation.org wrote: > > On Tue, Sep 06, 2016 at 10:24:29AM -0700, Vineet Gupta wrote: > >> On 09/05/2016 06:05 AM, gregkh@linuxfoundation.org wrote: > >>> The patch below does not apply to the 4.4-stable tree. > >>> If someone wants it applied there, or to any other stable or longterm > >>> tree, then please email the backport, including the original git commit > >>> id to <stable@vger.kernel.org>. > >>> > >>> thanks, > >>> > >>> greg k-h > >> There were 2 commits after 4.4 which prevent a clean backport. > >> Reworked patch below. Please apply. > >> > >> ----------------> > >> rom 54607da05b9c3d4c5ee23ce0f21d7f91b83b6c34 Mon Sep 17 00:00:00 2001 > >> From: Vineet Gupta <vgupta@synopsys.com> > >> Date: Tue, 16 Aug 2016 18:27:07 -0700 > >> Subject: [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS > >> MIME-Version: 1.0 > >> Content-Type: text/plain; charset=UTF-8 > >> Content-Transfer-Encoding: 8bit > >> > >> | CC mm/memory.o > >> | In file included from ../mm/memory.c:53:0: > >> | ../include/linux/pfn_t.h: In function ‘pfn_t_pte’: > >> | ../include/linux/pfn_t.h:78:2: error: conversion to non-scalar type requested > >> | return pfn_pte(pfn_t_to_pfn(pfn), pgprot); > >> > >> With STRICT_MM_TYPECHECKS pte_t is a struct and the offending code > >> forces a cast which ends up shifting a struct and hence the gcc warning. > >> > >> Note that in recent past some of the arches (aarch64, s390) made > >> STRICT_MM_TYPECHECKS default, but we don't for ARC as this leads to slightly > >> worse generated code, given ARC ABI definition of returning structs > >> (which pte_t would become) > >> > >> Quoting from ARC ABI... > >> > >> "Results of type struct are returned in a caller-supplied temporary > >> variable whose address is passed in r0. > >> For such functions, the arguments are shifted so that they are > >> passed in r1 and up." > >> > >> So > >> - struct to be returned would be allocated on stack requiring extra > >> code at call sites > >> - callee updates stack memory to facilitate the return (vs. simple > >> MOV into return reg r0) > >> > >> Hence STRICT_MM_TYPECHECKS is not enabled by default for ARC > >> > >> Cc: <stable@vger.kernel.org> #4.4+ > >> Signed-off-by: Vineet Gupta <vgupta@synopsys.com> > >> --- > >> arch/arc/include/asm/pgtable.h | 3 +-- > >> 1 file changed, 1 insertion(+), 2 deletions(-) > >> > >> diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h > >> index 3cab04255ae0..e5fec320f158 100644 > >> --- a/arch/arc/include/asm/pgtable.h > >> +++ b/arch/arc/include/asm/pgtable.h > >> @@ -277,8 +277,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) > >> > >> #define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) > >> #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) > >> -#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | \ > >> - pgprot_val(prot))) > >> +#define pfn_pte(pfn, prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) > >> #define __pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) > >> > >> /* > > This doesn't apply either :( > > Sorry about that. I did verify that the patch was fine, I just clipped the leading > 'F' when pasting in mailer. > Can you please retry below - patch itself it is same as before > > -----------> > >From 7e09fca4b721d81ce7538c6e75f87a9c9c74ef39 Mon Sep 17 00:00:00 2001 > From: Vineet Gupta <vgupta@synopsys.com> > Date: Tue, 16 Aug 2016 18:27:07 -0700 > Subject: [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS > MIME-Version: 1.0 > Content-Type: text/plain; charset=UTF-8 > Content-Transfer-Encoding: 8bit > > | CC mm/memory.o > | In file included from ../mm/memory.c:53:0: > | ../include/linux/pfn_t.h: In function âpfn_t_pteâ: > | ../include/linux/pfn_t.h:78:2: error: conversion to non-scalar type requested > | return pfn_pte(pfn_t_to_pfn(pfn), pgprot); > > With STRICT_MM_TYPECHECKS pte_t is a struct and the offending code > forces a cast which ends up shifting a struct and hence the gcc warning. > > Note that in recent past some of the arches (aarch64, s390) made > STRICT_MM_TYPECHECKS default, but we don't for ARC as this leads to slightly > worse generated code, given ARC ABI definition of returning structs > (which pte_t would become) > > Quoting from ARC ABI... > > "Results of type struct are returned in a caller-supplied temporary > variable whose address is passed in r0. > For such functions, the arguments are shifted so that they are > passed in r1 and up." > > So > - struct to be returned would be allocated on stack requiring extra > code at call sites > - callee updates stack memory to facilitate the return (vs. simple > MOV into return reg r0) > > Hence STRICT_MM_TYPECHECKS is not enabled by default for ARC > > Cc: <stable@vger.kernel.org> #4.4+ > Signed-off-by: Vineet Gupta <vgupta@synopsys.com> > --- > arch/arc/include/asm/pgtable.h | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h > index 3cab04255ae0..e5fec320f158 100644 > --- a/arch/arc/include/asm/pgtable.h > +++ b/arch/arc/include/asm/pgtable.h > @@ -277,8 +277,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) > > #define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) > #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) > -#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | \ > - pgprot_val(prot))) > +#define pfn_pte(pfn, prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) > #define __pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) > > /* > -- > 2.7.4 This patch still fails to apply, I think you are corrupting whitespace, look closely... greg k-h ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS 2016-09-10 15:50 ` gregkh @ 2016-09-12 16:32 ` Vineet Gupta 2016-09-12 17:08 ` gregkh @ linuxfoundation . org 0 siblings, 1 reply; 11+ messages in thread From: Vineet Gupta @ 2016-09-12 16:32 UTC (permalink / raw) To: gregkh @ linuxfoundation . org; +Cc: stable @ vger . kernel . org, Vineet Gupta | CC mm/memory.o | In file included from ../mm/memory.c:53:0: | ../include/linux/pfn_t.h: In function ‘pfn_t_pte’: | ../include/linux/pfn_t.h:78:2: error: conversion to non-scalar type requested | return pfn_pte(pfn_t_to_pfn(pfn), pgprot); With STRICT_MM_TYPECHECKS pte_t is a struct and the offending code forces a cast which ends up shifting a struct and hence the gcc warning. Note that in recent past some of the arches (aarch64, s390) made STRICT_MM_TYPECHECKS default, but we don't for ARC as this leads to slightly worse generated code, given ARC ABI definition of returning structs (which pte_t would become) Quoting from ARC ABI... "Results of type struct are returned in a caller-supplied temporary variable whose address is passed in r0. For such functions, the arguments are shifted so that they are passed in r1 and up." So - struct to be returned would be allocated on stack requiring extra code at call sites - callee updates stack memory to facilitate the return (vs. simple MOV into return reg r0) Hence STRICT_MM_TYPECHECKS is not enabled by default for ARC Cc: <stable@vger.kernel.org> #4.4+ Signed-off-by: Vineet Gupta <vgupta@synopsys.com> --- arch/arc/include/asm/pgtable.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h index 3cab04255ae0..e5fec320f158 100644 --- a/arch/arc/include/asm/pgtable.h +++ b/arch/arc/include/asm/pgtable.h @@ -277,8 +277,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) #define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) -#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | \ - pgprot_val(prot))) +#define pfn_pte(pfn, prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) #define __pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) /* -- 2.7.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS 2016-09-12 16:32 ` [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS Vineet Gupta @ 2016-09-12 17:08 ` gregkh @ linuxfoundation . org 2016-09-12 17:39 ` Vineet Gupta 2016-09-12 18:04 ` Vineet Gupta 0 siblings, 2 replies; 11+ messages in thread From: gregkh @ linuxfoundation . org @ 2016-09-12 17:08 UTC (permalink / raw) To: Vineet Gupta; +Cc: stable @ vger . kernel . org On Mon, Sep 12, 2016 at 09:32:55AM -0700, Vineet Gupta wrote: > | CC mm/memory.o > | In file included from ../mm/memory.c:53:0: > | ../include/linux/pfn_t.h: In function ‘pfn_t_pte’: > | ../include/linux/pfn_t.h:78:2: error: conversion to non-scalar type requested > | return pfn_pte(pfn_t_to_pfn(pfn), pgprot); > > With STRICT_MM_TYPECHECKS pte_t is a struct and the offending code > forces a cast which ends up shifting a struct and hence the gcc warning. > > Note that in recent past some of the arches (aarch64, s390) made > STRICT_MM_TYPECHECKS default, but we don't for ARC as this leads to slightly > worse generated code, given ARC ABI definition of returning structs > (which pte_t would become) > > Quoting from ARC ABI... > > "Results of type struct are returned in a caller-supplied temporary > variable whose address is passed in r0. > For such functions, the arguments are shifted so that they are > passed in r1 and up." > > So > - struct to be returned would be allocated on stack requiring extra > code at call sites > - callee updates stack memory to facilitate the return (vs. simple > MOV into return reg r0) > > Hence STRICT_MM_TYPECHECKS is not enabled by default for ARC > > Cc: <stable@vger.kernel.org> #4.4+ > Signed-off-by: Vineet Gupta <vgupta@synopsys.com> > --- > arch/arc/include/asm/pgtable.h | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h > index 3cab04255ae0..e5fec320f158 100644 > --- a/arch/arc/include/asm/pgtable.h > +++ b/arch/arc/include/asm/pgtable.h > @@ -277,8 +277,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) > > #define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) > #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) > -#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | \ > - pgprot_val(prot))) > +#define pfn_pte(pfn, prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) > #define __pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) > > /* > -- > 2.7.4 Whitespace is correct this time, thanks. You can't cut-and-paste in a web email client... But, you forgot to say what the git commit id is for this patch :( Can you resend it with that info? thanks, greg k-h ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS 2016-09-12 17:08 ` gregkh @ linuxfoundation . org @ 2016-09-12 17:39 ` Vineet Gupta 2016-09-12 18:04 ` Vineet Gupta 1 sibling, 0 replies; 11+ messages in thread From: Vineet Gupta @ 2016-09-12 17:39 UTC (permalink / raw) To: gregkh @ linuxfoundation . org; +Cc: stable @ vger . kernel . org, Vineet Gupta commit 1c3c909303924d30145601f47b6c058fdd2cbc2e upstream. | CC mm/memory.o | In file included from ../mm/memory.c:53:0: | ../include/linux/pfn_t.h: In function ‘pfn_t_pte’: | ../include/linux/pfn_t.h:78:2: error: conversion to non-scalar type requested | return pfn_pte(pfn_t_to_pfn(pfn), pgprot); With STRICT_MM_TYPECHECKS pte_t is a struct and the offending code forces a cast which ends up shifting a struct and hence the gcc warning. Note that in recent past some of the arches (aarch64, s390) made STRICT_MM_TYPECHECKS default, but we don't for ARC as this leads to slightly worse generated code, given ARC ABI definition of returning structs (which pte_t would become) Quoting from ARC ABI... "Results of type struct are returned in a caller-supplied temporary variable whose address is passed in r0. For such functions, the arguments are shifted so that they are passed in r1 and up." So - struct to be returned would be allocated on stack requiring extra code at call sites - callee updates stack memory to facilitate the return (vs. simple MOV into return reg r0) Hence STRICT_MM_TYPECHECKS is not enabled by default for ARC Cc: <stable@vger.kernel.org> #4.4 Signed-off-by: Vineet Gupta <vgupta@synopsys.com> --- arch/arc/include/asm/pgtable.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h index 3cab04255ae0..e5fec320f158 100644 --- a/arch/arc/include/asm/pgtable.h +++ b/arch/arc/include/asm/pgtable.h @@ -277,8 +277,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep) #define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) #define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT) -#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | \ - pgprot_val(prot))) +#define pfn_pte(pfn, prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))) #define __pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)) /* -- 2.7.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS 2016-09-12 17:08 ` gregkh @ linuxfoundation . org 2016-09-12 17:39 ` Vineet Gupta @ 2016-09-12 18:04 ` Vineet Gupta 2016-09-13 6:12 ` gregkh 1 sibling, 1 reply; 11+ messages in thread From: Vineet Gupta @ 2016-09-12 18:04 UTC (permalink / raw) To: gregkh; +Cc: stable.@.vger.kernel.org On 09/12/2016 10:33 AM, gregkh @ linuxfoundation . org wrote: > Whitespace is correct this time, thanks. You can't cut-and-paste in a > web email client... I use Thunderbird so it's not as bad as a true web email client. What's weird is that same copy/paste seems to work fine for diffstat in ARC pull requests to Linus - or is he just being too nice to me :-) > But, you forgot to say what the git commit id is for this patch :( > > Can you resend it with that info? Did that. Thx, -Vineet ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS 2016-09-12 18:04 ` Vineet Gupta @ 2016-09-13 6:12 ` gregkh 2016-09-13 16:29 ` Vineet Gupta 0 siblings, 1 reply; 11+ messages in thread From: gregkh @ 2016-09-13 6:12 UTC (permalink / raw) To: Vineet Gupta; +Cc: stable.@.vger.kernel.org On Mon, Sep 12, 2016 at 11:04:52AM -0700, Vineet Gupta wrote: > On 09/12/2016 10:33 AM, gregkh @ linuxfoundation . org wrote: > > Whitespace is correct this time, thanks. You can't cut-and-paste in a > > web email client... > > I use Thunderbird so it's not as bad as a true web email client. What's weird is > that same copy/paste seems to work fine for diffstat in ARC pull requests to Linus > - or is he just being too nice to me :-) A pull request doesn't require the whitespace (tabs vs. spaces) to be correct, compared to a patch, so that's why this is probably working... > > But, you forgot to say what the git commit id is for this patch :( > > > > Can you resend it with that info? > > Did that. Thanks, I'll queue it up in the next round of stable updates after these current ones get released in a few days. greg k-h ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS 2016-09-13 6:12 ` gregkh @ 2016-09-13 16:29 ` Vineet Gupta 0 siblings, 0 replies; 11+ messages in thread From: Vineet Gupta @ 2016-09-13 16:29 UTC (permalink / raw) To: gregkh; +Cc: stable.@.vger.kernel.org On 09/12/2016 11:12 PM, gregkh@linuxfoundation.org wrote: > Thanks, I'll queue it up in the next round of stable updates after these > current ones get released in a few days. Awesome, many thanks. -Vineet ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2016-09-13 16:29 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-09-05 13:06 FAILED: patch "[PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS" failed to apply to 4.4-stable tree gregkh 2016-09-06 17:24 ` Vineet Gupta 2016-09-09 14:19 ` gregkh 2016-09-09 16:47 ` Vineet Gupta 2016-09-10 15:50 ` gregkh 2016-09-12 16:32 ` [PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS Vineet Gupta 2016-09-12 17:08 ` gregkh @ linuxfoundation . org 2016-09-12 17:39 ` Vineet Gupta 2016-09-12 18:04 ` Vineet Gupta 2016-09-13 6:12 ` gregkh 2016-09-13 16:29 ` Vineet Gupta
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.