• Rafael J. Wysocki's avatar
    x86: tsc: Rework time_cpufreq_notifier() · c208ac8f
    Rafael J. Wysocki authored
    There are problems with running time_cpufreq_notifier() on SMP
    systems.
    
    First off, the rdtsc() called from there runs on the CPU executing
    that code and not necessarily on the CPU whose sched_clock() rate is
    updated which is questionable at best.
    
    Second, in the cases when the frequencies of all CPUs in an SMP
    system are always in sync, it is not sufficient to update just
    one of them or the set associated with a given cpufreq policy on
    frequency changes - all CPUs in the system should be updated and
    that would require more than a simple transition notifier.
    
    Note, however, that the underlying issue (the TSC rate depending on
    the CPU frequency) has not been present in hardware shipping for the
    last few years and in quite a few relevant cases (acpi-cpufreq in
    particular) running time_cpufreq_notifier() will cause the TSC to
    be marked as unstable anyway.
    
    For this reason, make time_cpufreq_notifier() simply mark the TSC
    as unstable and give up when run on SMP and only try to carry out
    any adjustments otherwise.
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    c208ac8f
tsc.c 38.2 KB