From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:36262 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750832AbcIIOTI (ORCPT ); Fri, 9 Sep 2016 10:19:08 -0400 Date: Fri, 9 Sep 2016 16:19:13 +0200 From: "gregkh@linuxfoundation.org" To: Vineet Gupta Cc: "stable@vger.kernel.org" Subject: Re: FAILED: patch "[PATCH] ARC: mm: fix build breakage with STRICT_MM_TYPECHECKS" failed to apply to 4.4-stable tree Message-ID: <20160909141913.GC13328@kroah.com> References: <1473080761121157@kroah.com> <42cc6a07-4a86-ae7b-b37a-993a15f9d37d@synopsys.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <42cc6a07-4a86-ae7b-b37a-993a15f9d37d@synopsys.com> Sender: stable-owner@vger.kernel.org List-ID: 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 . > > > > 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 > 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: #4.4+ > Signed-off-by: Vineet Gupta > --- > 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 :(