• Ulf Hansson's avatar
    PM / Domains: Add genpd governor for CPUs · e9499968
    Ulf Hansson authored
    After some preceding changes, PM domains managed by genpd may contain
    CPU devices, so idle state residency values should be taken into
    account during the state selection process. [The residency value is
    the minimum amount of time to be spent by a CPU (or a group of CPUs)
    in an idle state in order to save more energy than could be saved
    by picking up a shallower idle state.]
    
    For this purpose, add a new genpd governor, pm_domain_cpu_gov, to be
    used for selecting idle states of PM domains with CPU devices attached
    either directly or through subdomains.
    
    The new governor computes the minimum expected idle duration for all
    online CPUs attached to a PM domain and its subdomains.  Next, it
    finds the deepest idle state whose target residency is within the
    expected idle duration and selects it as the target idle state of
    the domain.
    
    It should be noted that the minimum expected idle duration computation
    is based on the closest timer event information stored in the per-CPU
    variables cpuidle_devices for all of the CPUs in the domain.  That
    needs to be revisited in future, as obviously there are other reasons
    why a CPU may be woken up from idle.
    Co-developed-by: default avatarLina Iyer <lina.iyer@linaro.org>
    Acked-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    [ rjw: Changelog ]
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    e9499968
domain_governor.c 8.99 KB