msm: dcvs: prevent thread creations upon cpu hotplug insertions.
Numerous threads were seen created and left idle as cpu's were
hotplugged in and out. Avoid creating new threads unnecessarily.
Instead create just one thread when a core is registered and use
it later.
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
(cherry picked from commit e039aac0c0be7c0d914055224103e8f41821320d)
Signed-off-by: Ram Kumar Chakravarthy Chebathini <rcheba@codeaurora.org>
(cherry picked from commit dbbe1e71a6f1be2dee99104281ad47e6884891bc)
Change-Id: Ib1255f9df5b41fbb49d25fdd6d661ebfa7f7642b
Signed-off-by: Sudhir Sharma <sudsha@codeaurora.org>
diff --git a/arch/arm/mach-msm/msm_dcvs.c b/arch/arm/mach-msm/msm_dcvs.c
index d1cdaeb..63e9c70 100644
--- a/arch/arm/mach-msm/msm_dcvs.c
+++ b/arch/arm/mach-msm/msm_dcvs.c
@@ -649,6 +649,8 @@
goto bail;
}
+ core->task = kthread_create(msm_dcvs_do_freq, (void *)core,
+ "msm_dcvs/%d", core->handle);
bail:
mutex_unlock(&core->lock);
return ret;
@@ -674,8 +676,6 @@
__info("Frequency notifier for %s being replaced\n",
core->core_name);
core->freq_driver = drv;
- core->task = kthread_create(msm_dcvs_do_freq, (void *)core,
- "msm_dcvs/%d", core->handle);
if (IS_ERR(core->task)) {
mutex_unlock(&core->lock);
return -EFAULT;
@@ -731,7 +731,6 @@
core->freq_pending = 0;
core->freq_driver = NULL;
mutex_unlock(&core->lock);
- kthread_stop(core->task);
return 0;
}