Messages in this thread Patch in this message | | | Date | Fri, 15 Feb 2013 12:44:26 +0100 | From | Ingo Molnar <> | 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 */ }
| |