lkml.org 
[lkml]   [2003]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 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/

\
 
 \ /
  Last update: 2005-03-22 13:59    [W:0.063 / U:0.024 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site