svn commit: r184108 - head/sys/i386/i386
Attilio Rao
attilio at freebsd.org
Tue Oct 21 10:07:48 UTC 2008
2008/10/21, Jung-uk Kim <jkim at freebsd.org>:
> Author: jkim
> Date: Tue Oct 21 04:31:07 2008
> New Revision: 184108
> URL: http://svn.freebsd.org/changeset/base/184108
>
> Log:
> Fix 'kern.timeconter.invariant_tsc' tunable and back out a redundant hack.
> Somehow incomplete version was committed. :-(
>
> Modified:
> head/sys/i386/i386/tsc.c
>
> Modified: head/sys/i386/i386/tsc.c
> ==============================================================================
> --- head/sys/i386/i386/tsc.c Tue Oct 21 03:18:02 2008 (r184107)
> +++ head/sys/i386/i386/tsc.c Tue Oct 21 04:31:07 2008 (r184108)
> @@ -53,7 +53,8 @@ u_int tsc_present;
> static eventhandler_tag tsc_levels_tag, tsc_pre_tag, tsc_post_tag;
>
> SYSCTL_INT(_kern_timecounter, OID_AUTO, invariant_tsc, CTLFLAG_RDTUN,
> - &tsc_is_invariant, 0, "Indicates the TSC is P-state invariant");
> + &tsc_is_invariant, 0, "Indicates whether the TSC is P-state invariant");
> +TUNABLE_INT("kern.timecounter.invariant_tsc", &tsc_is_invariant);
>
> #ifdef SMP
> static int smp_tsc;
> @@ -111,9 +112,8 @@ init_TSC(void)
> set_cputicker(rdtsc, tsc_freq, 1);
>
> /* Register to find out about changes in CPU frequency. */
> - if (!tsc_is_invariant)
> - tsc_pre_tag = EVENTHANDLER_REGISTER(cpufreq_pre_change,
> - tsc_freq_changing, NULL, EVENTHANDLER_PRI_FIRST);
> + tsc_pre_tag = EVENTHANDLER_REGISTER(cpufreq_pre_change,
> + tsc_freq_changing, NULL, EVENTHANDLER_PRI_FIRST);
> tsc_post_tag = EVENTHANDLER_REGISTER(cpufreq_post_change,
> tsc_freq_changed, NULL, EVENTHANDLER_PRI_FIRST);
> tsc_levels_tag = EVENTHANDLER_REGISTER(cpufreq_levels_changed,
>
Something we could do with this is adding a "quirk" table of TSC arch
dependant known to be working (based on cpu_model and such) and use
that table in order to replace tsc_smp.
Thanks,
Attilio
--
Peace can only be achieved by understanding - A. Einstein
More information about the svn-src-all
mailing list