cpuidle and cpufreq coupling?

From: Florian Fainelli
Date: Wed Jul 19 2017 - 18:54:37 EST


Hi,

We have a particular ARM CPU design that is drawing quite a lot of
current upon exit from WFI, and it does so in a way even before the
first instruction out of WFI is executed. That means we cannot influence
directly the exit from WFI other than by changing the state in which it
would be previously entered because of this "dead" time during which the
internal logic needs to ramp up back where it left.

A naive approach to solving this problem because we have CPU frequency
scaling available would be to do the following:

- just before entering WFI, switch to a low frequency OPP
- enter WFI
- upon exit from WFI, ramp up the frequency back to e.g: highest OPP

Some of the parts that I am not exactly clear on would be:

- would that qualify as a cpuidle governor of some kind that ties in
which cpufreq?
- would using cpufreq_driver_fast_switch() be an appropriate API to use
from outside

Thanks!
--
Florian