On 28-05-16, 15:15, Rafael J. Wysocki wrote: > It does, but there's a problem. > > If fast frequency switching is in use, the stats attributes just sit there > full of zeros (because the stats are not updated then) which is confusing. > > Of course, the ultimate solution here would be to make the stats actually > work with fast frequency switching, but that requires some major surgery of > the stats code, so for now I'd like to simply make those attributes return > nothing if fast frequency switching is enabled for the policy (returning > -EBUSY from there, which would have been cleaner, unfortunately breaks > powertop).
What's stopping us from doing that? Sorry I don't remember that well :( I mean, why can't we call cpufreq_stats_record_transition() somehow via that code ? > Updated patch is below. > > --- > From: Rafael J. Wysocki <rafael.j.wyso...@intel.com> > Subject: [PATCH] cpufreq: stats: Make the stats code non-modular > > 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: Rafael J. Wysocki <rafael.j.wyso...@intel.com> > --- > drivers/cpufreq/Kconfig | 13 +-- > drivers/cpufreq/cpufreq.c | 4 + > drivers/cpufreq/cpufreq_stats.c | 152 > +++++----------------------------------- > include/linux/cpufreq.h | 12 +++ > 4 files changed, 40 insertions(+), 141 deletions(-) Acked-by: Viresh Kumar <viresh.ku...@linaro.org> -- viresh