lkml.org 
[lkml]   [2013]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/5] cpufreq: Notify governors when cpus are hot-[un]plugged
    Date
    Because cpufreq core and governors worry only about the online cpus, if a cpu is
    hot [un]plugged, we must notify governors about it, otherwise be ready to expect
    something unexpected.

    We already have notifiers in the form of CPUFREQ_GOV_START/CPUFREQ_GOV_STOP, we
    just need to call them now.

    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    ---
    drivers/cpufreq/cpufreq.c | 10 ++++++++++
    1 file changed, 10 insertions(+)

    diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
    index de99517..a0a33bd 100644
    --- a/drivers/cpufreq/cpufreq.c
    +++ b/drivers/cpufreq/cpufreq.c
    @@ -751,11 +751,16 @@ static int cpufreq_add_dev_policy(unsigned int cpu,
    return -EBUSY;
    }

    + __cpufreq_governor(managed_policy, CPUFREQ_GOV_STOP);
    +
    spin_lock_irqsave(&cpufreq_driver_lock, flags);
    cpumask_copy(managed_policy->cpus, policy->cpus);
    per_cpu(cpufreq_cpu_data, cpu) = managed_policy;
    spin_unlock_irqrestore(&cpufreq_driver_lock, flags);

    + __cpufreq_governor(managed_policy, CPUFREQ_GOV_START);
    + __cpufreq_governor(managed_policy, CPUFREQ_GOV_LIMITS);
    +
    pr_debug("CPU already managed, adding link\n");
    ret = sysfs_create_link(&dev->kobj,
    &managed_policy->kobj,
    @@ -1066,8 +1071,13 @@ static int __cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif
    */
    if (unlikely(cpu != data->cpu)) {
    pr_debug("removing link\n");
    + __cpufreq_governor(data, CPUFREQ_GOV_STOP);
    cpumask_clear_cpu(cpu, data->cpus);
    spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
    +
    + __cpufreq_governor(data, CPUFREQ_GOV_START);
    + __cpufreq_governor(data, CPUFREQ_GOV_LIMITS);
    +
    kobj = &dev->kobj;
    cpufreq_cpu_put(data);
    unlock_policy_rwsem_write(cpu);
    --
    1.7.12.rc2.18.g61b472e


    \
     
     \ /
      Last update: 2013-01-12 06:42    [W:4.485 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site