sched: sched_clock() lockdep fix
Sitsofe Wheeler bisected the following commit to cause a lockdep to
warn about itself and turn itself off:
> commit c6531cce6e
> Author: Ingo Molnar <mingo@elte.hu>
> Date: Mon May 12 21:21:14 2008 +0200
>
> sched: do not trace sched_clock
do not use raw irq flags in cpu_clock() as it causes lockdep to lose
track of the true state of the IRQ flag.
Reported-and-bisected-by: Sitsofe Wheeler <sitsofe@yahoo.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
@@ -889,7 +889,7 @@ unsigned long long notrace cpu_clock(int cpu)
|
|||||||
unsigned long long prev_cpu_time, time, delta_time;
|
unsigned long long prev_cpu_time, time, delta_time;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
raw_local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
prev_cpu_time = per_cpu(prev_cpu_time, cpu);
|
prev_cpu_time = per_cpu(prev_cpu_time, cpu);
|
||||||
time = __cpu_clock(cpu) + per_cpu(time_offset, cpu);
|
time = __cpu_clock(cpu) + per_cpu(time_offset, cpu);
|
||||||
delta_time = time-prev_cpu_time;
|
delta_time = time-prev_cpu_time;
|
||||||
@@ -898,7 +898,7 @@ unsigned long long notrace cpu_clock(int cpu)
|
|||||||
time = __sync_cpu_clock(time, cpu);
|
time = __sync_cpu_clock(time, cpu);
|
||||||
per_cpu(prev_cpu_time, cpu) = time;
|
per_cpu(prev_cpu_time, cpu) = time;
|
||||||
}
|
}
|
||||||
raw_local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
|
|
||||||
return time;
|
return time;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user