Re: patchmm-fix-committed_as-underflow-on-large-nr_cpus-environment.patchadded to 2.6.29-stable tree

From: Greg KH
Date: Tue May 05 2009 - 17:04:32 EST


On Tue, May 05, 2009 at 08:36:19PM +0200, Stefan Lippers-Hollmann wrote:
> Hi
>
> On Dienstag, 5. Mai 2009, gregkh@xxxxxxx wrote:
> [...]
> > From 00a62ce91e554198ef28234c91c36f850f5a3bc9 Mon Sep 17 00:00:00 2001
> > From: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx>
> > Date: Thu, 30 Apr 2009 15:08:51 -0700
> > Subject: mm: fix Committed_AS underflow on large NR_CPUS environment
> >
> > From: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx>
> >
> > commit 00a62ce91e554198ef28234c91c36f850f5a3bc9 upstream.
> >
> > The Committed_AS field can underflow in certain situations:
> >
> > > # while true; do cat /proc/meminfo | grep _AS; sleep 1; done | uniq -c
> > > 1 Committed_AS: 18446744073709323392 kB
> > > 11 Committed_AS: 18446744073709455488 kB
> > > 6 Committed_AS: 35136 kB
> > > 5 Committed_AS: 18446744073709454400 kB
> > > 7 Committed_AS: 35904 kB
> > > 3 Committed_AS: 18446744073709453248 kB
> > > 2 Committed_AS: 34752 kB
> > > 9 Committed_AS: 18446744073709453248 kB
> > > 8 Committed_AS: 34752 kB
> > > 3 Committed_AS: 18446744073709320960 kB
> > > 7 Committed_AS: 18446744073709454080 kB
> > > 3 Committed_AS: 18446744073709320960 kB
> > > 5 Committed_AS: 18446744073709454080 kB
> > > 6 Committed_AS: 18446744073709320960 kB
> >
> > Because NR_CPUS can be greater than 1000 and meminfo_proc_show() does
> > not check for underflow.
> >
> > But NR_CPUS proportional isn't good calculation. In general,
> > possibility of lock contention is proportional to the number of online
> > cpus, not theorical maximum cpus (NR_CPUS).
> >
> > The current kernel has generic percpu-counter stuff. using it is right
> > way. it makes code simplify and percpu_counter_read_positive() don't
> > make underflow issue.
>
> This patch reproducably panics on all systems I could test so far on
> 2.6.29.2 + the current stable queue:
> - Acer Aspire One, Intel Atom N270, Intel 945GC chipset (i386)
> - AMD64 3200+, nVidia nforce3 chipset (amd64)
> - AMD64 X2 4200+, nVidia nforce4 chipset (amd64)
>
> Kernel panic (sorry, this is from a bad webcam and only the last part of
> the messages scrolling by - I can try to get a serial console tomorrow),
> taken from an AMD64 3200+, nVidia nforce3 chipset (amd64).
> http://sidux.com/slh/mm-fix-committed_as-underflow-on-large-nr_cpus-environment/panic.gif [198 KB]
>
> Reverting just this patch fixes the problem for me.
>
> Kernel configurations:
> http://sidux.com/slh/mm-fix-committed_as-underflow-on-large-nr_cpus-environment/config-2.6.29-2.slh.5.3-sidux-686 [96 KB]
> http://sidux.com/slh/mm-fix-committed_as-underflow-on-large-nr_cpus-environment/config-2.6.29-2.slh.5.6-sidux-amd64 [91 KB]


Thanks for the report, I'm also getting some oopses on boot and am
bisecting down the tree right now. The error looks a bit like yours,
but not identical enough for me to declare that it is the same thing
just yet.

Give me a few more hours...

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/