summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
authorTapas Kumar Kundu <tkundu@codeaurora.org>2015-11-20 11:25:44 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:22:33 -0700
commit5e635690ee27b98046d46a17f4f842001e1e7370 (patch)
treeea6119feaa15c6bbeb095d7fb11bec18f033b7ee /drivers/soc
parent56f6d6c3529d4fbd4b30156dacbb57f108ec1c62 (diff)
soc: qcom: msm_perf: use device_offline/device_online api
Replace obsolute cpu_up/cpu_down api with device_online/ device_offline api for cpu hotplugging Change-Id: I808c733b0109ee6cf6183be229592d67f760d5cc Signed-off-by: Tapas Kumar Kundu <tkundu@codeaurora.org>
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/qcom/msm_performance.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/soc/qcom/msm_performance.c b/drivers/soc/qcom/msm_performance.c
index 498638272899..a9d25e46ebae 100644
--- a/drivers/soc/qcom/msm_performance.c
+++ b/drivers/soc/qcom/msm_performance.c
@@ -1589,11 +1589,13 @@ static int __ref rm_high_pwr_cost_cpus(struct cluster *cl)
pr_debug("msm_perf: Offlining CPU%d Power:%d\n", max_cost_cpu,
max_cost);
cpumask_set_cpu(max_cost_cpu, cl->offlined_cpus);
- if (cpu_down(max_cost_cpu)) {
+ lock_device_hotplug();
+ if (device_offline(get_cpu_device(max_cost_cpu))) {
cpumask_clear_cpu(max_cost_cpu, cl->offlined_cpus);
pr_debug("msm_perf: Offlining CPU%d failed\n",
max_cost_cpu);
}
+ unlock_device_hotplug();
end:
pcpu_pwr = &per_cpu(cpu_power_cost, max_cost_cpu);
@@ -1641,12 +1643,15 @@ static void __ref try_hotplug(struct cluster *data)
pr_debug("msm_perf: Offlining CPU%d\n", i);
cpumask_set_cpu(i, data->offlined_cpus);
- if (cpu_down(i)) {
+ lock_device_hotplug();
+ if (device_offline(get_cpu_device(i))) {
cpumask_clear_cpu(i, data->offlined_cpus);
pr_debug("msm_perf: Offlining CPU%d failed\n",
i);
+ unlock_device_hotplug();
continue;
}
+ unlock_device_hotplug();
if (num_online_managed(data->cpus) <=
data->max_cpu_request)
break;
@@ -1656,11 +1661,14 @@ static void __ref try_hotplug(struct cluster *data)
if (cpu_online(i))
continue;
pr_debug("msm_perf: Onlining CPU%d\n", i);
- if (cpu_up(i)) {
+ lock_device_hotplug();
+ if (device_online(get_cpu_device(i))) {
pr_debug("msm_perf: Onlining CPU%d failed\n",
i);
+ unlock_device_hotplug();
continue;
}
+ unlock_device_hotplug();
cpumask_clear_cpu(i, data->offlined_cpus);
if (num_online_managed(data->cpus) >=
data->max_cpu_request)
@@ -1676,8 +1684,10 @@ static void __ref release_cluster_control(struct cpumask *off_cpus)
for_each_cpu(cpu, off_cpus) {
pr_debug("msm_perf: Release CPU %d\n", cpu);
- if (!cpu_up(cpu))
+ lock_device_hotplug();
+ if (!device_online(get_cpu_device(cpu)))
cpumask_clear_cpu(cpu, off_cpus);
+ unlock_device_hotplug();
}
}