On 17 February 2014 13:49, Srivatsa S. Bhat srivatsa.bhat@linux.vnet.ibm.com wrote:
Quick question: Looking at cpufreq_update_policy() and cpufreq_out_of_sync(), I understand that if the cpufreq subsystem's notion of the current frequency does not match with the actual frequency of the CPU, it tries to adjust and notify everyone that the current frequency is so-and-so, as read from the hardware. Instead, why can't we simply set the frequency to the value that we _want_ it to be at? I mean, if cpufreq subsystem thinks it is X KHz and the actual frequency is Y KHz, we can as well fix the anomaly by setting the frequency immediately to X KHz right?
The reason I ask this is that, if we follow this approach, then we can avoid ambiguities in dealing with the out-of-sync situation. That is, it becomes very straightforward to decide _what_ to do, when we detect scenarios where the frequency goes out of sync.
Hmm, it is just about doing all that stuff in a single line, like: __cpufreq_driver_target(...) ??
There are few problems here: - If we simply call above routine with X, then it will simply return as X == policy->cur. And I don't want to hack this code in a bad way now :)
- So, probably the way it is implemented is right, as we do that the most efficient way. We just broadcast the new freq in case there is a difference otherwise nothing.