Re: Linux 2.6.32-rc1

Martin Schwidefsky
2009-09-28T20:56:28Z

On Mon, 28 Sep 2009 20:41:41 +0200
Eric Dumazet <eric.dumazet@gmail.com> wrote:

> I did a bisection and found commit def0a9b2573e00ab0b486cb5382625203ab4c4a6
> was the origin of the problem on my x86_32 machine.
>
> def0a9b2573e00ab0b486cb5382625203ab4c4a6 is first bad commit
> commit def0a9b2573e00ab0b486cb5382625203ab4c4a6
> Author: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Date: Fri Sep 18 20:14:01 2009 +0200
>
> sched_clock: Make it NMI safe
>
> Arjan complained about the suckyness of TSC on modern machines, and
> asked if we could do something about that for PERF_SAMPLE_TIME.
>
> Make cpu_clock() NMI safe by removing the spinlock and using
> cmpxchg. This also makes it smaller and more robust.
>
> Affects architectures that use HAVE_UNSTABLE_SCHED_CLOCK, i.e. IA64
> and x86.
>
> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
> LKML-Reference: <new-submission>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>

Confirmed. The bisect run on my machine gave me the same bad commit.
The new logic in sched_clock_remove seems racy: the old code got the
locks for the sched_clock_data of the local and the remove cpu before
it changed any value. The new code tries to get to the same result with
a single cmpxchg. Bad things happen if two cpus try to update the clock
values crosswise, no?

--
blue skies,
Martin.

"Reality continues to ruin my life." - Calvin.