• Rafael J. Wysocki's avatar
    cpufreq: stats: Make the stats code non-modular · 1aefc75b
    Rafael J. Wysocki authored
    The modularity of cpufreq_stats is quite problematic.
    
    First off, the usage of policy notifiers for the initialization
    and cleanup in the cpufreq_stats module is inherently racy with
    respect to CPU offline/online and the initialization and cleanup
    of the cpufreq driver.
    
    Second, fast frequency switching (used by the schedutil governor)
    cannot be enabled if any transition notifiers are registered, so
    if the cpufreq_stats module (that registers a transition notifier
    for updating transition statistics) is loaded, the schedutil governor
    cannot use fast frequency switching.
    
    On the other hand, allowing cpufreq_stats to be built as a module
    doesn't really add much value.  Arguably, there's not much reason
    for that code to be modular at all.
    
    For the above reasons, make the cpufreq stats code non-modular,
    modify the core to invoke functions provided by that code directly
    and drop the notifiers from it.
    
    Make the stats sysfs attributes appear empty if fast frequency
    switching is enabled as the statistics will not be updated in that
    case anyway (and returning -EBUSY from those attributes breaks
    powertop).
    
    While at it, clean up Kconfig help for the CPU_FREQ_STAT and
    CPU_FREQ_STAT_DETAILS options.
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    1aefc75b
cpufreq.c 66.5 KB