Messages in this thread | | | Date | Fri, 5 Dec 2003 13:55:18 -0200 (BRST) | From | Marcelo Tosatti <> | Subject | Re: get_cycles() on i386 |
| |
Any concerns?
On 4 Nov 2003, john stultz wrote:
> On Tue, 2003-11-04 at 15:22, Joel Becker wrote: > > Folks, > > Certain distributions are building all of their SMP kernels > > NUMA-aware. This is great, as the kernels support boxes like the x440 > > with no trouble. However, this implicitly disables CONFIG_X86_TSC. > > While that is good for NUMA systems, and fine from a kernel timing > > standpoint, it also eliminates any generic access to the TSC via > > get_cycles(). With CONFIG_X86_TSC not defined, get_cycles() always > > returns 0. > > Given that >95% of machines will not be x440s, this means that a > > user of that kernel cannot access a high resolution timer via > > get_cycles(). I don't want to have to litter my code with rdtscll() > > when I managed to remove it! > > The proposed patch is trivial. If the system has a TSC, it is > > available get_cycles(). This makes no change to the other parts of the > > kernel protected by CONFIG_X86_TSC. > > CONFIG_X86_TSC be the devil. Personally, I'd much prefer dropping the > compile time option and using dynamic detection. Something like (not > recently tested and i believe against 2.5.something, but you get the > idea): > > > diff -Nru a/include/asm-i386/timex.h b/include/asm-i386/timex.h > --- a/include/asm-i386/timex.h Mon Feb 24 21:09:32 2003 > +++ b/include/asm-i386/timex.h Mon Feb 24 21:09:32 2003 > @@ -40,14 +40,10 @@ > > static inline cycles_t get_cycles (void) > { > -#ifndef CONFIG_X86_TSC > - return 0; > -#else > - unsigned long long ret; > - > - rdtscll(ret); > + unsigned long long ret = 0; > + if(cpu_has_tsc) > + rdtscll(ret); > return ret; > -#endif > } > > extern unsigned long cpu_khz;
John, Joel,
I believe this is reliable. I'll apply it.
Any concerns?
- 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/
| |