lkml.org 
[lkml]   [2013]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[-rc7 regression] Buggy commit: "mm: use aligned zone start for pfn_to_bitidx calculation"

[ Greg: -stable was Cc:-ed for this potentially buggy commit. ]

* Yinghai Lu <yinghai@kernel.org> wrote:

> On Thu, Feb 14, 2013 at 7:08 AM, Ingo Molnar <mingo@kernel.org> wrote:
> > these three:
> >
> > 10d73e655cef mm: bootmem: fix free_all_bootmem_core() with odd bitmap alignment
> > c060f943d092 mm: use aligned zone start for pfn_to_bitidx calculation
> > c0232ae861df mm: memblock: fix wrong memmove size in memblock_merge_regions()
> >
> > might have highmem=512m boot parameter sensitivity.
>
> 10d73e655cef should not be related, as we are using nobootmem wrapper
> of memblock.
> c0232ae861df is copying less while using the blank slot in memblock
> memory or reserved array
> so it should be ok too.
>
> c060f943d092 may be related as you config does not have
> CONFIG_SPARSEMEM defined.

Right, that's the commit causing the x86 regression:

c060f943d0929f3e429c5d9522290584f6281d6e is the first bad commit
commit c060f943d0929f3e429c5d9522290584f6281d6e
Date: Fri Jan 11 14:31:51 2013 -0800

mm: use aligned zone start for pfn_to_bitidx calculation

I've given 6d92d4f (its parent commit) quite a bit of testing so
I'm 99% sure in the validity of this bisection result.

Involved parties Cc:-ed.

Revert attached below - it reverts cleanly and I'll test this
today, to see whether this solves the sporadic lockups.

Thanks,

Ingo

------------------->
From 6f3d5a8f38eb23f792b408d9bc8fee53a7d158f9 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@kernel.org>
Date: Fri, 15 Feb 2013 12:43:22 +0100
Subject: [PATCH] Revert "mm: use aligned zone start for pfn_to_bitidx
calculation"

This reverts commit c060f943d0929f3e429c5d9522290584f6281d6e.

Causes lockups.

Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
mm/page_alloc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index cf46618..3a120bb 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -5590,7 +5590,7 @@ static inline int pfn_to_bitidx(struct zone *zone, unsigned long pfn)
pfn &= (PAGES_PER_SECTION-1);
return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS;
#else
- pfn = pfn - round_down(zone->zone_start_pfn, pageblock_nr_pages);
+ pfn = pfn - zone->zone_start_pfn;
return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS;
#endif /* CONFIG_SPARSEMEM */
}

\
 
 \ /
  Last update: 2013-02-15 13:21    [W:0.356 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site