Message ID | 20130816201814.GA26409@cmpxchg.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 08/16/2013 02:18 PM, Johannes Weiner wrote: > Hi Kevin, > > On Fri, Aug 16, 2013 at 10:17:01AM -0700, Kevin Hilman wrote: >> Johannes Weiner <hannes@cmpxchg.org> writes: >>> On Wed, Aug 07, 2013 at 11:37:43AM -0400, Johannes Weiner wrote: >>> Subject: [patch] mm: page_alloc: use vmstats for fair zone allocation batching >>> >>> Avoid dirtying the same cache line with every single page allocation >>> by making the fair per-zone allocation batch a vmstat item, which will >>> turn it into batched percpu counters on SMP. >>> >>> Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> >> >> I bisected several boot failures on various ARM platform in >> next-20130816 down to this patch (commit 67131f9837 in linux-next.) >> >> Simply reverting it got things booting again on top of -next. Example >> boot crash below. > > Thanks for the bisect and report! > > I deref the percpu pointers before initializing them properly. It > didn't trigger on x86 because the percpu offset added to the pointer > is big enough so that it does not fall into PFN 0, but it probably > ended up corrupting something... > > Could you try this patch on top of linux-next instead of the revert? That patch, Tested-by: Stephen Warren <swarren@nvidia.com>
Johannes Weiner <hannes@cmpxchg.org> writes: > Hi Kevin, > > On Fri, Aug 16, 2013 at 10:17:01AM -0700, Kevin Hilman wrote: >> Johannes Weiner <hannes@cmpxchg.org> writes: >> > On Wed, Aug 07, 2013 at 11:37:43AM -0400, Johannes Weiner wrote: >> > Subject: [patch] mm: page_alloc: use vmstats for fair zone allocation batching >> > >> > Avoid dirtying the same cache line with every single page allocation >> > by making the fair per-zone allocation batch a vmstat item, which will >> > turn it into batched percpu counters on SMP. >> > >> > Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> >> >> I bisected several boot failures on various ARM platform in >> next-20130816 down to this patch (commit 67131f9837 in linux-next.) >> >> Simply reverting it got things booting again on top of -next. Example >> boot crash below. > > Thanks for the bisect and report! You're welcome. Thanks for the quick fix! > I deref the percpu pointers before initializing them properly. It > didn't trigger on x86 because the percpu offset added to the pointer > is big enough so that it does not fall into PFN 0, but it probably > ended up corrupting something... > > Could you try this patch on top of linux-next instead of the revert? Yup, that change fixes it. Tested-by: Kevin Hilman <khilman@linaro.org> Kevin
Hi all, On Fri, 16 Aug 2013 14:52:11 -0700 Kevin Hilman <khilman@linaro.org> wrote: > > Johannes Weiner <hannes@cmpxchg.org> writes: > > > On Fri, Aug 16, 2013 at 10:17:01AM -0700, Kevin Hilman wrote: > >> Johannes Weiner <hannes@cmpxchg.org> writes: > >> > On Wed, Aug 07, 2013 at 11:37:43AM -0400, Johannes Weiner wrote: > >> > Subject: [patch] mm: page_alloc: use vmstats for fair zone allocation batching > >> > > >> > Avoid dirtying the same cache line with every single page allocation > >> > by making the fair per-zone allocation batch a vmstat item, which will > >> > turn it into batched percpu counters on SMP. > >> > > >> > Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> > >> > >> I bisected several boot failures on various ARM platform in > >> next-20130816 down to this patch (commit 67131f9837 in linux-next.) > >> > >> Simply reverting it got things booting again on top of -next. Example > >> boot crash below. > > > > Thanks for the bisect and report! > > You're welcome. Thanks for the quick fix! > > > I deref the percpu pointers before initializing them properly. It > > didn't trigger on x86 because the percpu offset added to the pointer > > is big enough so that it does not fall into PFN 0, but it probably > > ended up corrupting something... > > > > Could you try this patch on top of linux-next instead of the revert? > > Yup, that change fixes it. > > Tested-by: Kevin Hilman <khilman@linaro.org> > Tested-by: Stephen Warren <swarren@nvidia.com> I will add that into the akpm-current tree in linux-next today (unless Andrew releases a new mmotm in the mean time).
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 6a95d39..b9e8f2f 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -4826,11 +4826,11 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat, spin_lock_init(&zone->lru_lock); zone_seqlock_init(zone); zone->zone_pgdat = pgdat; + zone_pcp_init(zone); /* For bootup, initialized properly in watermark setup */ mod_zone_page_state(zone, NR_ALLOC_BATCH, zone->managed_pages); - zone_pcp_init(zone); lruvec_init(&zone->lruvec); if (!size) continue;