On Wed, Nov 26, 2014 at 01:54:31PM -0400, Eduardo Valentin wrote:
Hello Viresh,
Thanks for providing a proposal.
On Wed, Nov 26, 2014 at 11:22:55AM +0530, Viresh Kumar wrote:
Hi Rafael/Eduardo,
Currently there is no callback for cpufreq drivers which is called once the policy is ready to be used. There are some requirements where such a callback is required.
One of them is registering a cooling device with the help of of_cpufreq_cooling_register(). This routine tries to get 'struct cpufreq_policy' for CPUs which isn't yet initialed at the time ->init() is called and so we face issues while registering the cooling device.
Because we can't register cooling device from ->init(), we need a callback that is called after the policy is ready to be used and hence ->usable() callback.
The first patch fixes few formatting issues, so that the third patch doesn't throw any checkpatch warnings. Second one fixes a potential bug in cpufreq-dt driver. Third one introduces ->usable() callback which will be used in the fourth patch.
Last three are fixes for cooling core, which may be applied separately by Eduardo if he wants. Sent them in this series as they were sort of connected with cpufreq in general.
Let me know if it still doesn't work properly.
For the series, the last three patches somehow breaks things. I didn't not investigate the reason now, because, well, I think we should take one thing at a time.
It turns out that I could not reproduce the issue I saw. So, I am assuming that was an issue in my environment.
Can you still post them separately?
For the patches 1 to 4, I tried then and they do the trick. Now the sequencing is correct between cpufreq-dt and cpu cooling. That means I can also improve the thermal code by accepting the following patches: https://patchwork.kernel.org/patch/5326991/ https://patchwork.kernel.org/patch/5387161/
on top of the four first patches.
Cheers,
Eduardo Valentin
-- viresh
Viresh Kumar (7): cpufreq: Fix formatting issues in 'struct cpufreq_driver' cpufreq-dt: pass 'policy->related_cpus' to of_cpufreq_cooling_register() cpufreq: Introduce ->usable() callback for cpufreq drivers cpufreq-dt: register cooling device from ->usable() callback cpu_cooling: Don't match min/max frequencies for all CPUs on cooling register cpu_cooling: don't iterate over all allowed_cpus to update cpufreq policy cpu_cooling: No need to check is_cpufreq_valid()
drivers/cpufreq/cpufreq-dt.c | 51 +++++++++++++++++++++++++--------------- drivers/cpufreq/cpufreq.c | 5 ++++ drivers/thermal/cpu_cooling.c | 44 ++++------------------------------- include/linux/cpufreq.h | 54 +++++++++++++++++++++++-------------------- 4 files changed, 70 insertions(+), 84 deletions(-)
-- 2.0.3.693.g996b0fd