linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] powerpc/thp: Fix crash on mremap
@ 2014-01-28 12:22 Aneesh Kumar K.V
  2014-01-28 12:22 ` [PATCH 2/2] Fix compile error of pgtable-ppc64.h Aneesh Kumar K.V
  0 siblings, 1 reply; 10+ messages in thread
From: Aneesh Kumar K.V @ 2014-01-28 12:22 UTC (permalink / raw)
  To: benh, paulus, stable; +Cc: linuxppc-dev, Aneesh Kumar K.V

This patch fix the below crash

NIP [c00000000004cee4] .__hash_page_thp+0x2a4/0x440
LR [c0000000000439ac] .hash_page+0x18c/0x5e0
...
Call Trace:
[c000000736103c40] [00001ffffb000000] 0x1ffffb000000(unreliable)
[437908.479693] [c000000736103d50] [c0000000000439ac] .hash_page+0x18c/0x5e0
[437908.479699] [c000000736103e30] [c00000000000924c] .do_hash_page+0x4c/0x58

On ppc64 we use the pgtable for storing the hpte slot information and
store address to the pgtable at a constant offset (PTRS_PER_PMD) from
pmd. On mremap, when we switch the pmd, we need to withdraw and deposit
the pgtable again, so that we find the pgtable at PTRS_PER_PMD offset
from new pmd.

We also want to move the withdraw and deposit before the set_pmd so
that, when page fault find the pmd as trans huge we can be sure that
pgtable can be located at the offset.

upstream SHA1: b3084f4db3aeb991c507ca774337c7e7893ed04f
for 3.13 stable series

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
 arch/powerpc/include/asm/pgtable-ppc64.h | 14 ++++++++++++++
 include/asm-generic/pgtable.h            | 12 ++++++++++++
 mm/huge_memory.c                         | 14 +++++---------
 3 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/arch/powerpc/include/asm/pgtable-ppc64.h b/arch/powerpc/include/asm/pgtable-ppc64.h
index 4a191c472867..d27960c89a71 100644
--- a/arch/powerpc/include/asm/pgtable-ppc64.h
+++ b/arch/powerpc/include/asm/pgtable-ppc64.h
@@ -558,5 +558,19 @@ extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
 #define __HAVE_ARCH_PMDP_INVALIDATE
 extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
 			    pmd_t *pmdp);
+
+#define pmd_move_must_withdraw pmd_move_must_withdraw
+typedef struct spinlock spinlock_t;
+static inline int pmd_move_must_withdraw(spinlock_t *new_pmd_ptl,
+					 spinlock_t *old_pmd_ptl)
+{
+	/*
+	 * Archs like ppc64 use pgtable to store per pmd
+	 * specific information. So when we switch the pmd,
+	 * we should also withdraw and deposit the pgtable
+	 */
+	return true;
+}
+
 #endif /* __ASSEMBLY__ */
 #endif /* _ASM_POWERPC_PGTABLE_PPC64_H_ */
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h
index db0923458940..8e4f41d9af4d 100644
--- a/include/asm-generic/pgtable.h
+++ b/include/asm-generic/pgtable.h
@@ -558,6 +558,18 @@ static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
 }
 #endif
 
+#ifndef pmd_move_must_withdraw
+static inline int pmd_move_must_withdraw(spinlock_t *new_pmd_ptl,
+					 spinlock_t *old_pmd_ptl)
+{
+	/*
+	 * With split pmd lock we also need to move preallocated
+	 * PTE page table if new_pmd is on different PMD page table.
+	 */
+	return new_pmd_ptl != old_pmd_ptl;
+}
+#endif
+
 /*
  * This function is meant to be used by sites walking pagetables with
  * the mmap_sem hold in read mode to protect against MADV_DONTNEED and
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 95d1acb0f3d2..5d80c53b87cb 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1502,19 +1502,15 @@ int move_huge_pmd(struct vm_area_struct *vma, struct vm_area_struct *new_vma,
 			spin_lock_nested(new_ptl, SINGLE_DEPTH_NESTING);
 		pmd = pmdp_get_and_clear(mm, old_addr, old_pmd);
 		VM_BUG_ON(!pmd_none(*new_pmd));
-		set_pmd_at(mm, new_addr, new_pmd, pmd_mksoft_dirty(pmd));
-		if (new_ptl != old_ptl) {
-			pgtable_t pgtable;
 
-			/*
-			 * Move preallocated PTE page table if new_pmd is on
-			 * different PMD page table.
-			 */
+		if (pmd_move_must_withdraw(new_ptl, old_ptl)) {
+			pgtable_t pgtable;
 			pgtable = pgtable_trans_huge_withdraw(mm, old_pmd);
 			pgtable_trans_huge_deposit(mm, new_pmd, pgtable);
-
-			spin_unlock(new_ptl);
 		}
+		set_pmd_at(mm, new_addr, new_pmd, pmd_mksoft_dirty(pmd));
+		if (new_ptl != old_ptl)
+			spin_unlock(new_ptl);
 		spin_unlock(old_ptl);
 	}
 out:
-- 
1.8.5.3

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/2] Fix compile error of pgtable-ppc64.h
  2014-01-28 12:22 [PATCH 1/2] powerpc/thp: Fix crash on mremap Aneesh Kumar K.V
@ 2014-01-28 12:22 ` Aneesh Kumar K.V
  2014-01-29 18:45   ` Greg KH
  0 siblings, 1 reply; 10+ messages in thread
From: Aneesh Kumar K.V @ 2014-01-28 12:22 UTC (permalink / raw)
  To: benh, paulus, stable; +Cc: linuxppc-dev, Aneesh Kumar K.V, Li Zhong

From: Li Zhong <zhong@linux.vnet.ibm.com>

It seems that forward declaration couldn't work well with typedef, use
struct spinlock directly to avoiding following build errors:

In file included from include/linux/spinlock.h:81,
                 from include/linux/seqlock.h:35,
                 from include/linux/time.h:5,
                 from include/uapi/linux/timex.h:56,
                 from include/linux/timex.h:56,
                 from include/linux/sched.h:17,
                 from arch/powerpc/kernel/asm-offsets.c:17:
include/linux/spinlock_types.h:76: error: redefinition of typedef 'spinlock_t'
/root/linux-next/arch/powerpc/include/asm/pgtable-ppc64.h:563: note: previous declaration of 'spinlock_t' was here

build fix for upstream SHA1: b3084f4db3aeb991c507ca774337c7e7893ed04f
for 3.13 stable series

Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
---
 arch/powerpc/include/asm/pgtable-ppc64.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/include/asm/pgtable-ppc64.h b/arch/powerpc/include/asm/pgtable-ppc64.h
index d27960c89a71..bc141c950b1e 100644
--- a/arch/powerpc/include/asm/pgtable-ppc64.h
+++ b/arch/powerpc/include/asm/pgtable-ppc64.h
@@ -560,9 +560,9 @@ extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
 			    pmd_t *pmdp);
 
 #define pmd_move_must_withdraw pmd_move_must_withdraw
-typedef struct spinlock spinlock_t;
-static inline int pmd_move_must_withdraw(spinlock_t *new_pmd_ptl,
-					 spinlock_t *old_pmd_ptl)
+struct spinlock;
+static inline int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
+					 struct spinlock *old_pmd_ptl)
 {
 	/*
 	 * Archs like ppc64 use pgtable to store per pmd
-- 
1.8.5.3

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] Fix compile error of pgtable-ppc64.h
  2014-01-28 12:22 ` [PATCH 2/2] Fix compile error of pgtable-ppc64.h Aneesh Kumar K.V
@ 2014-01-29 18:45   ` Greg KH
  2014-01-29 22:57     ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 10+ messages in thread
From: Greg KH @ 2014-01-29 18:45 UTC (permalink / raw)
  To: Aneesh Kumar K.V; +Cc: paulus, linuxppc-dev, stable, Li Zhong

On Tue, Jan 28, 2014 at 05:52:42PM +0530, Aneesh Kumar K.V wrote:
> From: Li Zhong <zhong@linux.vnet.ibm.com>
> 
> It seems that forward declaration couldn't work well with typedef, use
> struct spinlock directly to avoiding following build errors:
> 
> In file included from include/linux/spinlock.h:81,
>                  from include/linux/seqlock.h:35,
>                  from include/linux/time.h:5,
>                  from include/uapi/linux/timex.h:56,
>                  from include/linux/timex.h:56,
>                  from include/linux/sched.h:17,
>                  from arch/powerpc/kernel/asm-offsets.c:17:
> include/linux/spinlock_types.h:76: error: redefinition of typedef 'spinlock_t'
> /root/linux-next/arch/powerpc/include/asm/pgtable-ppc64.h:563: note: previous declaration of 'spinlock_t' was here
> 
> build fix for upstream SHA1: b3084f4db3aeb991c507ca774337c7e7893ed04f
> for 3.13 stable series

I don't understand, why is this needed?  Is there a corrisponding patch
upstream that already does this?  What went wrong with a "normal"
backport of the patch to 3.13?

confused,

greg k-h

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] Fix compile error of pgtable-ppc64.h
  2014-01-29 18:45   ` Greg KH
@ 2014-01-29 22:57     ` Benjamin Herrenschmidt
  2014-01-30 12:34       ` Greg KH
  0 siblings, 1 reply; 10+ messages in thread
From: Benjamin Herrenschmidt @ 2014-01-29 22:57 UTC (permalink / raw)
  To: Greg KH; +Cc: linuxppc-dev, paulus, Aneesh Kumar K.V, stable, Li Zhong

On Wed, 2014-01-29 at 10:45 -0800, Greg KH wrote:
> On Tue, Jan 28, 2014 at 05:52:42PM +0530, Aneesh Kumar K.V wrote:
> > From: Li Zhong <zhong@linux.vnet.ibm.com>
> > 
> > It seems that forward declaration couldn't work well with typedef, use
> > struct spinlock directly to avoiding following build errors:
> > 
> > In file included from include/linux/spinlock.h:81,
> >                  from include/linux/seqlock.h:35,
> >                  from include/linux/time.h:5,
> >                  from include/uapi/linux/timex.h:56,
> >                  from include/linux/timex.h:56,
> >                  from include/linux/sched.h:17,
> >                  from arch/powerpc/kernel/asm-offsets.c:17:
> > include/linux/spinlock_types.h:76: error: redefinition of typedef 'spinlock_t'
> > /root/linux-next/arch/powerpc/include/asm/pgtable-ppc64.h:563: note: previous declaration of 'spinlock_t' was here
> > 
> > build fix for upstream SHA1: b3084f4db3aeb991c507ca774337c7e7893ed04f
> > for 3.13 stable series
> 
> I don't understand, why is this needed?  Is there a corrisponding patch
> upstream that already does this?  What went wrong with a "normal"
> backport of the patch to 3.13?

There's a corresponding patch in powerpc-next that I'm about to send to
Linus today, but for the backport, the "fix" could be folded into the
original offending patch.

Cheers,
Ben.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] Fix compile error of pgtable-ppc64.h
  2014-01-29 22:57     ` Benjamin Herrenschmidt
@ 2014-01-30 12:34       ` Greg KH
  2014-01-30 17:38         ` Aneesh Kumar K.V
  0 siblings, 1 reply; 10+ messages in thread
From: Greg KH @ 2014-01-30 12:34 UTC (permalink / raw)
  To: Benjamin Herrenschmidt
  Cc: linuxppc-dev, paulus, Aneesh Kumar K.V, stable, Li Zhong

On Thu, Jan 30, 2014 at 09:57:36AM +1100, Benjamin Herrenschmidt wrote:
> On Wed, 2014-01-29 at 10:45 -0800, Greg KH wrote:
> > On Tue, Jan 28, 2014 at 05:52:42PM +0530, Aneesh Kumar K.V wrote:
> > > From: Li Zhong <zhong@linux.vnet.ibm.com>
> > > 
> > > It seems that forward declaration couldn't work well with typedef, use
> > > struct spinlock directly to avoiding following build errors:
> > > 
> > > In file included from include/linux/spinlock.h:81,
> > >                  from include/linux/seqlock.h:35,
> > >                  from include/linux/time.h:5,
> > >                  from include/uapi/linux/timex.h:56,
> > >                  from include/linux/timex.h:56,
> > >                  from include/linux/sched.h:17,
> > >                  from arch/powerpc/kernel/asm-offsets.c:17:
> > > include/linux/spinlock_types.h:76: error: redefinition of typedef 'spinlock_t'
> > > /root/linux-next/arch/powerpc/include/asm/pgtable-ppc64.h:563: note: previous declaration of 'spinlock_t' was here
> > > 
> > > build fix for upstream SHA1: b3084f4db3aeb991c507ca774337c7e7893ed04f
> > > for 3.13 stable series
> > 
> > I don't understand, why is this needed?  Is there a corrisponding patch
> > upstream that already does this?  What went wrong with a "normal"
> > backport of the patch to 3.13?
> 
> There's a corresponding patch in powerpc-next that I'm about to send to
> Linus today, but for the backport, the "fix" could be folded into the
> original offending patch.

Oh come on, you know better than to try to send me a patch that isn't in
Linus's tree already.  Crap, I can't take that at all.

Send me the git commit id when it is in Linus's tree, otherwise I'm not
taking it.

And no, don't "fold in" anything, that's not ok either.  I'll just go
drop this patch entirely from all of my -stable trees for now.  Feel
free to resend them when all of the needed stuff is upstream.

greg k-h

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] Fix compile error of pgtable-ppc64.h
  2014-01-30 12:34       ` Greg KH
@ 2014-01-30 17:38         ` Aneesh Kumar K.V
  2014-01-30 17:55           ` Greg KH
  0 siblings, 1 reply; 10+ messages in thread
From: Aneesh Kumar K.V @ 2014-01-30 17:38 UTC (permalink / raw)
  To: Greg KH, Benjamin Herrenschmidt; +Cc: paulus, linuxppc-dev, Li Zhong, stable

Greg KH <greg@kroah.com> writes:

> On Thu, Jan 30, 2014 at 09:57:36AM +1100, Benjamin Herrenschmidt wrote:
>> On Wed, 2014-01-29 at 10:45 -0800, Greg KH wrote:
>> > On Tue, Jan 28, 2014 at 05:52:42PM +0530, Aneesh Kumar K.V wrote:
>> > > From: Li Zhong <zhong@linux.vnet.ibm.com>
>> > > 
>> > > It seems that forward declaration couldn't work well with typedef, use
>> > > struct spinlock directly to avoiding following build errors:
>> > > 
>> > > In file included from include/linux/spinlock.h:81,
>> > >                  from include/linux/seqlock.h:35,
>> > >                  from include/linux/time.h:5,
>> > >                  from include/uapi/linux/timex.h:56,
>> > >                  from include/linux/timex.h:56,
>> > >                  from include/linux/sched.h:17,
>> > >                  from arch/powerpc/kernel/asm-offsets.c:17:
>> > > include/linux/spinlock_types.h:76: error: redefinition of typedef 'spinlock_t'
>> > > /root/linux-next/arch/powerpc/include/asm/pgtable-ppc64.h:563: note: previous declaration of 'spinlock_t' was here
>> > > 
>> > > build fix for upstream SHA1: b3084f4db3aeb991c507ca774337c7e7893ed04f
>> > > for 3.13 stable series
>> > 
>> > I don't understand, why is this needed?  Is there a corrisponding patch
>> > upstream that already does this?  What went wrong with a "normal"
>> > backport of the patch to 3.13?
>> 
>> There's a corresponding patch in powerpc-next that I'm about to send to
>> Linus today, but for the backport, the "fix" could be folded into the
>> original offending patch.
>
> Oh come on, you know better than to try to send me a patch that isn't in
> Linus's tree already.  Crap, I can't take that at all.
>
> Send me the git commit id when it is in Linus's tree, otherwise I'm not
> taking it.
>
> And no, don't "fold in" anything, that's not ok either.  I'll just go
> drop this patch entirely from all of my -stable trees for now.  Feel
> free to resend them when all of the needed stuff is upstream.

The fix for mremap crash is already in Linus tree. It is the build
failure for older gcc compiler version that is not in linus tree. We
missed that in the first pull request. Do we really need to drop the
patch from 3.11 and 3.12 trees ? The patch their is a variant, and don't
require this build fix.

-aneesh

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] Fix compile error of pgtable-ppc64.h
  2014-01-30 17:38         ` Aneesh Kumar K.V
@ 2014-01-30 17:55           ` Greg KH
  2014-01-30 18:03             ` Aneesh Kumar K.V
  2014-01-30 20:59             ` Benjamin Herrenschmidt
  0 siblings, 2 replies; 10+ messages in thread
From: Greg KH @ 2014-01-30 17:55 UTC (permalink / raw)
  To: Aneesh Kumar K.V; +Cc: linuxppc-dev, stable, paulus, Li Zhong

On Thu, Jan 30, 2014 at 11:08:52PM +0530, Aneesh Kumar K.V wrote:
> Greg KH <greg@kroah.com> writes:
> 
> > On Thu, Jan 30, 2014 at 09:57:36AM +1100, Benjamin Herrenschmidt wrote:
> >> On Wed, 2014-01-29 at 10:45 -0800, Greg KH wrote:
> >> > On Tue, Jan 28, 2014 at 05:52:42PM +0530, Aneesh Kumar K.V wrote:
> >> > > From: Li Zhong <zhong@linux.vnet.ibm.com>
> >> > > 
> >> > > It seems that forward declaration couldn't work well with typedef, use
> >> > > struct spinlock directly to avoiding following build errors:
> >> > > 
> >> > > In file included from include/linux/spinlock.h:81,
> >> > >                  from include/linux/seqlock.h:35,
> >> > >                  from include/linux/time.h:5,
> >> > >                  from include/uapi/linux/timex.h:56,
> >> > >                  from include/linux/timex.h:56,
> >> > >                  from include/linux/sched.h:17,
> >> > >                  from arch/powerpc/kernel/asm-offsets.c:17:
> >> > > include/linux/spinlock_types.h:76: error: redefinition of typedef 'spinlock_t'
> >> > > /root/linux-next/arch/powerpc/include/asm/pgtable-ppc64.h:563: note: previous declaration of 'spinlock_t' was here
> >> > > 
> >> > > build fix for upstream SHA1: b3084f4db3aeb991c507ca774337c7e7893ed04f
> >> > > for 3.13 stable series
> >> > 
> >> > I don't understand, why is this needed?  Is there a corrisponding patch
> >> > upstream that already does this?  What went wrong with a "normal"
> >> > backport of the patch to 3.13?
> >> 
> >> There's a corresponding patch in powerpc-next that I'm about to send to
> >> Linus today, but for the backport, the "fix" could be folded into the
> >> original offending patch.
> >
> > Oh come on, you know better than to try to send me a patch that isn't in
> > Linus's tree already.  Crap, I can't take that at all.
> >
> > Send me the git commit id when it is in Linus's tree, otherwise I'm not
> > taking it.
> >
> > And no, don't "fold in" anything, that's not ok either.  I'll just go
> > drop this patch entirely from all of my -stable trees for now.  Feel
> > free to resend them when all of the needed stuff is upstream.
> 
> The fix for mremap crash is already in Linus tree.

What is the git commit id?

> It is the build failure for older gcc compiler version that is not in
> linus tree.

That is what I can not take.

> We missed that in the first pull request. Do we really need to drop
> the patch from 3.11 and 3.12 trees ?

I already did.

> The patch their is a variant, and don't require this build fix.

Don't give me a "variant", give me the exact same patch, only changed to
handle the fuzz/differences of older kernels, don't make different
changes to the original patch to make up for things you found out later
on, otherwise everyone is confused as to why the fix for the fix is not
in the tree.

So, when both patches get in Linus's tree, please send me the properly
backported patches and I'll be glad to apply them.

greg k-h

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] Fix compile error of pgtable-ppc64.h
  2014-01-30 17:55           ` Greg KH
@ 2014-01-30 18:03             ` Aneesh Kumar K.V
  2014-01-30 20:59             ` Benjamin Herrenschmidt
  1 sibling, 0 replies; 10+ messages in thread
From: Aneesh Kumar K.V @ 2014-01-30 18:03 UTC (permalink / raw)
  To: Greg KH; +Cc: paulus, linuxppc-dev, Li Zhong, stable

Greg KH <greg@kroah.com> writes:

> On Thu, Jan 30, 2014 at 11:08:52PM +0530, Aneesh Kumar K.V wrote:
>> Greg KH <greg@kroah.com> writes:
>> 
>> > On Thu, Jan 30, 2014 at 09:57:36AM +1100, Benjamin Herrenschmidt wrote:
>> >> On Wed, 2014-01-29 at 10:45 -0800, Greg KH wrote:
>> >> > On Tue, Jan 28, 2014 at 05:52:42PM +0530, Aneesh Kumar K.V wrote:
>> >> > > From: Li Zhong <zhong@linux.vnet.ibm.com>
>> >> > > 
>> >> > > It seems that forward declaration couldn't work well with typedef, use
>> >> > > struct spinlock directly to avoiding following build errors:
>> >> > > 
>> >> > > In file included from include/linux/spinlock.h:81,
>> >> > >                  from include/linux/seqlock.h:35,
>> >> > >                  from include/linux/time.h:5,
>> >> > >                  from include/uapi/linux/timex.h:56,
>> >> > >                  from include/linux/timex.h:56,
>> >> > >                  from include/linux/sched.h:17,
>> >> > >                  from arch/powerpc/kernel/asm-offsets.c:17:
>> >> > > include/linux/spinlock_types.h:76: error: redefinition of typedef 'spinlock_t'
>> >> > > /root/linux-next/arch/powerpc/include/asm/pgtable-ppc64.h:563: note: previous declaration of 'spinlock_t' was here
>> >> > > 
>> >> > > build fix for upstream SHA1: b3084f4db3aeb991c507ca774337c7e7893ed04f
>> >> > > for 3.13 stable series
>> >> > 
>> >> > I don't understand, why is this needed?  Is there a corrisponding patch
>> >> > upstream that already does this?  What went wrong with a "normal"
>> >> > backport of the patch to 3.13?
>> >> 
>> >> There's a corresponding patch in powerpc-next that I'm about to send to
>> >> Linus today, but for the backport, the "fix" could be folded into the
>> >> original offending patch.
>> >
>> > Oh come on, you know better than to try to send me a patch that isn't in
>> > Linus's tree already.  Crap, I can't take that at all.
>> >
>> > Send me the git commit id when it is in Linus's tree, otherwise I'm not
>> > taking it.
>> >
>> > And no, don't "fold in" anything, that's not ok either.  I'll just go
>> > drop this patch entirely from all of my -stable trees for now.  Feel
>> > free to resend them when all of the needed stuff is upstream.
>> 
>> The fix for mremap crash is already in Linus tree.
>
> What is the git commit id?

upstream SHA1: b3084f4db3aeb991c507ca774337c7e7893ed04f

That is patch 1 in this series.


>
>> It is the build failure for older gcc compiler version that is not in
>> linus tree.
>
> That is what I can not take.
>
>> We missed that in the first pull request. Do we really need to drop
>> the patch from 3.11 and 3.12 trees ?
>
> I already did.
>
>> The patch their is a variant, and don't require this build fix.
>
> Don't give me a "variant", give me the exact same patch, only changed to
> handle the fuzz/differences of older kernels, don't make different
> changes to the original patch to make up for things you found out later
> on, otherwise everyone is confused as to why the fix for the fix is not
> in the tree.

In this specific case it may be difficult. 3.13 have other changes
around the code path. It has split pmd locks etc which result in us
doing a withdraw and deposit even on x86. For 3.11 and 3.12, we need to
do that extra withdraw and deposit only for ppc64. Hence the variant
which used #ifdef around that code. 

>
> So, when both patches get in Linus's tree, please send me the properly
> backported patches and I'll be glad to apply them.
>

-aneesh

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] Fix compile error of pgtable-ppc64.h
  2014-01-30 17:55           ` Greg KH
  2014-01-30 18:03             ` Aneesh Kumar K.V
@ 2014-01-30 20:59             ` Benjamin Herrenschmidt
  2014-01-30 22:37               ` Greg KH
  1 sibling, 1 reply; 10+ messages in thread
From: Benjamin Herrenschmidt @ 2014-01-30 20:59 UTC (permalink / raw)
  To: Greg KH; +Cc: paulus, linuxppc-dev, Aneesh Kumar K.V, stable, Li Zhong

On Thu, 2014-01-30 at 09:55 -0800, Greg KH wrote:
> On Thu, Jan 30, 2014 at 11:08:52PM +0530, Aneesh Kumar K.V wrote:
> > Greg KH <greg@kroah.com> writes:
> > 
> > > On Thu, Jan 30, 2014 at 09:57:36AM +1100, Benjamin Herrenschmidt wrote:
> > >> On Wed, 2014-01-29 at 10:45 -0800, Greg KH wrote:
> > >> > On Tue, Jan 28, 2014 at 05:52:42PM +0530, Aneesh Kumar K.V wrote:
> > >> > > From: Li Zhong <zhong@linux.vnet.ibm.com>
> > >> > > 
> > >> > > It seems that forward declaration couldn't work well with typedef, use
> > >> > > struct spinlock directly to avoiding following build errors:
> > >> > > 
> > >> > > In file included from include/linux/spinlock.h:81,
> > >> > >                  from include/linux/seqlock.h:35,
> > >> > >                  from include/linux/time.h:5,
> > >> > >                  from include/uapi/linux/timex.h:56,
> > >> > >                  from include/linux/timex.h:56,
> > >> > >                  from include/linux/sched.h:17,
> > >> > >                  from arch/powerpc/kernel/asm-offsets.c:17:
> > >> > > include/linux/spinlock_types.h:76: error: redefinition of typedef 'spinlock_t'
> > >> > > /root/linux-next/arch/powerpc/include/asm/pgtable-ppc64.h:563: note: previous declaration of 'spinlock_t' was here
> > >> > > 
> > >> > > build fix for upstream SHA1: b3084f4db3aeb991c507ca774337c7e7893ed04f
> > >> > > for 3.13 stable series
> > >> > 
> > >> > I don't understand, why is this needed?  Is there a corrisponding patch
> > >> > upstream that already does this?  What went wrong with a "normal"
> > >> > backport of the patch to 3.13?
> > >> 
> > >> There's a corresponding patch in powerpc-next that I'm about to send to
> > >> Linus today, but for the backport, the "fix" could be folded into the
> > >> original offending patch.
> > >
> > > Oh come on, you know better than to try to send me a patch that isn't in
> > > Linus's tree already.  Crap, I can't take that at all.
> > >
> > > Send me the git commit id when it is in Linus's tree, otherwise I'm not
> > > taking it.
> > >
> > > And no, don't "fold in" anything, that's not ok either.  I'll just go
> > > drop this patch entirely from all of my -stable trees for now.  Feel
> > > free to resend them when all of the needed stuff is upstream.
> > 
> > The fix for mremap crash is already in Linus tree.
> 
> What is the git commit id?

Relax Greg :-) The submissions all had the commit ID of the original
patch upsteam: b3084f4db3aeb991c507ca774337c7e7893ed04f

The only *thing* here is due to churn upstream in 3.13, the backport
is a bit different for 3.13 vs. earlier versions.

The earlier ones are perfectly kosher and you should have no reason
not to take them.

The 3.13, well, Mahesh was a bit quick here, he sent you the actual
patch that went upstream ... and a second patch to fix a problem
with older gcc's that it introduces. Because it's a simple build fix of
the previous patch, I suggested folding it in instead.

That build fix is what is not yet upstream, it's in my -next branch
which Linus hasn't pulled just yet.

If that's an issue for you, just drop the 3.13 variant of the patch and
we'll send it again with the build fix as soon as Linus has pulled the
latter.

> > It is the build failure for older gcc compiler version that is not in
> > linus tree.
> 
> That is what I can not take.
> 
> > We missed that in the first pull request. Do we really need to drop
> > the patch from 3.11 and 3.12 trees ?
> 
> I already did.
> 
> > The patch their is a variant, and don't require this build fix.
> 
> Don't give me a "variant", give me the exact same patch, only changed to
> handle the fuzz/differences of older kernels, don't make different
> changes to the original patch to make up for things you found out later
> on, otherwise everyone is confused as to why the fix for the fix is not
> in the tree.

The backport patch is a "variant" because of changes in the affected
function that went into 3.13.

> So, when both patches get in Linus's tree, please send me the properly
> backported patches and I'll be glad to apply them.

Ben.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] Fix compile error of pgtable-ppc64.h
  2014-01-30 20:59             ` Benjamin Herrenschmidt
@ 2014-01-30 22:37               ` Greg KH
  0 siblings, 0 replies; 10+ messages in thread
From: Greg KH @ 2014-01-30 22:37 UTC (permalink / raw)
  To: Benjamin Herrenschmidt
  Cc: paulus, linuxppc-dev, Aneesh Kumar K.V, stable, Li Zhong

On Fri, Jan 31, 2014 at 07:59:01AM +1100, Benjamin Herrenschmidt wrote:
> If that's an issue for you, just drop the 3.13 variant of the patch and
> we'll send it again with the build fix as soon as Linus has pulled the
> latter.

I have done that.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-01-30 22:36 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-28 12:22 [PATCH 1/2] powerpc/thp: Fix crash on mremap Aneesh Kumar K.V
2014-01-28 12:22 ` [PATCH 2/2] Fix compile error of pgtable-ppc64.h Aneesh Kumar K.V
2014-01-29 18:45   ` Greg KH
2014-01-29 22:57     ` Benjamin Herrenschmidt
2014-01-30 12:34       ` Greg KH
2014-01-30 17:38         ` Aneesh Kumar K.V
2014-01-30 17:55           ` Greg KH
2014-01-30 18:03             ` Aneesh Kumar K.V
2014-01-30 20:59             ` Benjamin Herrenschmidt
2014-01-30 22:37               ` Greg KH

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).