On Thursday, September 10, 2015 06:52:22 AM Viresh Kumar wrote:
On 10-09-15, 03:41, Rafael J. Wysocki wrote:
[cut]
Overall, we need to talk about the design aspect of cpufreq, because there are much more significant issues in it than things like this one.
I agree.
OK
Adding Mark and Srinivas who may be interested in this to CC.
Why don't we start with listing all of the cpufreq's shortcomings we'd like to address, then try to sort out conflicting items and come up with a list of tasks to complete?
To me, the most painful thing ATM is that cpufreq cannot use timer functions to carry out state transitions even if the underlying driver could request state to be changed from interrupt context. IMO, we should utilize the capabilities of the hardware where possible and only add overhead where it is necessary.
Speaking of which I'm concerned that we're adding overhead for systems that don't need software synchronization of state transitions (the "one CPU per policy" case). I'm not sure how much of that is really happening, but it would be review the code from that angle and streamline things where policy objects are not shared.
The locking is overdesigned and overkill (and you know that already), but if we do the above, it'll be more strarightforward to simplify it IMO.
Finally, the initialization is questionable and in particular the fact that we need to call the driver's ->init at least once to get policy->cpus populated. This shouldn't be necessary, as that information reflects the topology of the system and shouldn't depend on which driver is in use really.
Please let me know what your pain points are. :-)
Thanks, Rafael