This patch removes a code duplication. It does not modify
the functionality.

Signed-off-by: Petr Mladek <pmla...@suse.com>
CC: Zhang Rui <rui.zh...@intel.com>
CC: Eduardo Valentin <edubez...@gmail.com>
CC: Jacob Pan <jacob.jun....@linux.intel.com>
CC: linux...@vger.kernel.org
---
 drivers/thermal/intel_powerclamp.c | 45 +++++++++++++++++---------------------
 1 file changed, 20 insertions(+), 25 deletions(-)

diff --git a/drivers/thermal/intel_powerclamp.c 
b/drivers/thermal/intel_powerclamp.c
index 6c79588251d5..cb32c38f9828 100644
--- a/drivers/thermal/intel_powerclamp.c
+++ b/drivers/thermal/intel_powerclamp.c
@@ -505,10 +505,27 @@ static void poll_pkg_cstate(struct work_struct *dummy)
                schedule_delayed_work(&poll_pkg_cstate_work, HZ);
 }
 
+static void start_power_clamp_thread(unsigned long cpu)
+{
+       struct task_struct **p = per_cpu_ptr(powerclamp_thread, cpu);
+       struct task_struct *thread;
+
+       thread = kthread_create_on_node(clamp_thread,
+                                       (void *) cpu,
+                                       cpu_to_node(cpu),
+                                       "kidle_inject/%ld", cpu);
+       if (IS_ERR(thread))
+               return;
+
+       /* bind to cpu here */
+       kthread_bind(thread, cpu);
+       wake_up_process(thread);
+       *p = thread;
+}
+
 static int start_power_clamp(void)
 {
        unsigned long cpu;
-       struct task_struct *thread;
 
        /* check if pkg cstate counter is completely 0, abort in this case */
        if (!has_pkg_state_counter()) {
@@ -530,20 +547,7 @@ static int start_power_clamp(void)
 
        /* start one thread per online cpu */
        for_each_online_cpu(cpu) {
-               struct task_struct **p =
-                       per_cpu_ptr(powerclamp_thread, cpu);
-
-               thread = kthread_create_on_node(clamp_thread,
-                                               (void *) cpu,
-                                               cpu_to_node(cpu),
-                                               "kidle_inject/%ld", cpu);
-               /* bind to cpu here */
-               if (likely(!IS_ERR(thread))) {
-                       kthread_bind(thread, cpu);
-                       wake_up_process(thread);
-                       *p = thread;
-               }
-
+               start_power_clamp_thread(cpu);
        }
        put_online_cpus();
 
@@ -575,7 +579,6 @@ static int powerclamp_cpu_callback(struct notifier_block 
*nfb,
                                unsigned long action, void *hcpu)
 {
        unsigned long cpu = (unsigned long)hcpu;
-       struct task_struct *thread;
        struct task_struct **percpu_thread =
                per_cpu_ptr(powerclamp_thread, cpu);
 
@@ -584,15 +587,7 @@ static int powerclamp_cpu_callback(struct notifier_block 
*nfb,
 
        switch (action) {
        case CPU_ONLINE:
-               thread = kthread_create_on_node(clamp_thread,
-                                               (void *) cpu,
-                                               cpu_to_node(cpu),
-                                               "kidle_inject/%lu", cpu);
-               if (likely(!IS_ERR(thread))) {
-                       kthread_bind(thread, cpu);
-                       wake_up_process(thread);
-                       *percpu_thread = thread;
-               }
+               start_power_clamp_thread(cpu);
                /* prefer BSP as controlling CPU */
                if (cpu == 0) {
                        control_cpu = 0;
-- 
1.8.5.6

--
To unsubscribe from this list: send the line "unsubscribe linux-api" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to