Message ID | CAKohpo=6t-VHgJfrq7wz35y_zKfL+wb8amgj0ZV9cezb39r=uA@mail.gmail.com |
---|---|
State | New |
Headers | show |
On 17-06-2014 13:42, Viresh Kumar wrote: >> So what you can try is force a cyc2ns read before the write in >> set_cyc2ns_scale(). I think its possible that if we do not do the read, >> the write will wait for a 'free' slot indefinitely. > > Hmm, I see. Thanks for your quick response. > > Are you suggesting something like this ? : > > diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c > index 57e5ce1..290ac03 100644 > --- a/arch/x86/kernel/tsc.c > +++ b/arch/x86/kernel/tsc.c > @@ -249,6 +249,9 @@ static void set_cyc2ns_scale(unsigned long cpu_khz, int cpu) > if (!cpu_khz) > goto done; > > + data = cyc2ns_read_begin(); > + cyc2ns_read_end(data); > + > data = cyc2ns_write_begin(cpu); > > rdtscll(tsc_now); > > > @Mauro: Please try this once Peter confirms. I have tried this and it doesn't solve the problem, the machine still hangs after the second frequency change after cpu offline/online. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c index 57e5ce1..290ac03 100644 --- a/arch/x86/kernel/tsc.c +++ b/arch/x86/kernel/tsc.c @@ -249,6 +249,9 @@ static void set_cyc2ns_scale(unsigned long cpu_khz, int cpu) if (!cpu_khz) goto done; + data = cyc2ns_read_begin(); + cyc2ns_read_end(data); + data = cyc2ns_write_begin(cpu); rdtscll(tsc_now);