There is a bug in cpufreq call back funtion in timer_tsc routines,
that can result in system deadlock. The issue is: grabbing the
write_lock on xtime_lock without disabling the interrupts. So,=20
if we happen to get a timer interrupt while we are in this code,
system will go into a deadlock.
This bug only effects the kernels that have CONFIG_CPU_FREQ enabled.
{
struct cpufreq_freqs *freq = data;
- write_seqlock(&xtime_lock);
+ write_seqlock_irq(&xtime_lock);
if (!ref_freq) {
ref_freq = freq->old;
loops_per_jiffy_ref = cpu_data[freq->cpu].loops_per_jiffy;
}
#endif
}
- write_sequnlock(&xtime_lock);
+ write_sequnlock_irq(&xtime_lock);
return 0;
}