[RFC v2 07/12] PM / cpu_domains: Add PM Domain governor for CPUs

Stephen Boyd sboyd at codeaurora.org
Tue Mar 1 11:35:09 PST 2016


On 03/01/2016 11:32 AM, Lina Iyer wrote:
> On Fri, Feb 26 2016 at 12:33 -0700, Stephen Boyd wrote:
>> On 02/12, Lina Iyer wrote:
>>> @@ -52,6 +55,76 @@ struct cpu_pm_domain *to_cpu_pd(struct
>>> generic_pm_domain *d)
>>>      return res;
>>>  }
>>>
>>> +static bool cpu_pd_down_ok(struct dev_pm_domain *pd)
>>> +{
>>> +    struct generic_pm_domain *genpd = pd_to_genpd(pd);
>>> +    struct cpu_pm_domain *cpu_pd = to_cpu_pd(genpd);
>>> +    int qos = pm_qos_request(PM_QOS_CPU_DMA_LATENCY);
>>> +    u64 sleep_ns;
>>> +    ktime_t earliest, next_wakeup;
>>> +    int cpu;
>>> +    int i;
>>> +
>>> +    /* Reset the last set genpd state, default to index 0 */
>>> +    genpd->state_idx = 0;
>>> +
>>> +    /* We dont want to power down, if QoS is 0 */
>>> +    if (!qos)
>>> +        return false;
>>> +
>>> +    /*
>>> +     * Find the sleep time for the cluster.
>>> +     * The time between now and the first wake up of any CPU that
>>> +     * are in this domain hierarchy is the time available for the
>>> +     * domain to be idle.
>>> +     */
>>> +    earliest = ktime_set(KTIME_SEC_MAX, 0);
>>> +    for_each_cpu_and(cpu, cpu_pd->cpus, cpu_online_mask) {
>>
>> We're not worried about hotplug happening in parallel because
>> preemption is disabled here?
>>
> Nope. Hotplug on the same domain or in its hierarchy will be waiting on
> the domain lock to released before becoming online. Any other domain is
> not of concern for this domain governor.
>
> If a core was hotplugged out while this is happening, then we may risk
> making an premature wake up decision, which would happen either way if
> we lock hotplug here.

Ok please make this into a comment in the code.

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project




More information about the linux-arm-kernel mailing list