Lines Matching refs:cpu

28 struct task_struct *idle_thread_get(unsigned int cpu)  in idle_thread_get()  argument
30 struct task_struct *tsk = per_cpu(idle_threads, cpu); in idle_thread_get()
34 init_idle(tsk, cpu); in idle_thread_get()
49 static inline void idle_init(unsigned int cpu) in idle_init() argument
51 struct task_struct *tsk = per_cpu(idle_threads, cpu); in idle_init()
54 tsk = fork_idle(cpu); in idle_init()
56 pr_err("SMP: fork_idle() failed for CPU %u\n", cpu); in idle_init()
58 per_cpu(idle_threads, cpu) = tsk; in idle_init()
67 unsigned int cpu, boot_cpu; in idle_threads_init() local
71 for_each_possible_cpu(cpu) { in idle_threads_init()
72 if (cpu != boot_cpu) in idle_threads_init()
73 idle_init(cpu); in idle_threads_init()
84 unsigned int cpu; member
118 ht->cleanup(td->cpu, cpu_online(td->cpu)); in smpboot_thread_fn()
127 BUG_ON(td->cpu != smp_processor_id()); in smpboot_thread_fn()
128 ht->park(td->cpu); in smpboot_thread_fn()
136 BUG_ON(td->cpu != smp_processor_id()); in smpboot_thread_fn()
144 ht->setup(td->cpu); in smpboot_thread_fn()
152 ht->unpark(td->cpu); in smpboot_thread_fn()
157 if (!ht->thread_should_run(td->cpu)) { in smpboot_thread_fn()
163 ht->thread_fn(td->cpu); in smpboot_thread_fn()
169 __smpboot_create_thread(struct smp_hotplug_thread *ht, unsigned int cpu) in __smpboot_create_thread() argument
171 struct task_struct *tsk = *per_cpu_ptr(ht->store, cpu); in __smpboot_create_thread()
177 td = kzalloc_node(sizeof(*td), GFP_KERNEL, cpu_to_node(cpu)); in __smpboot_create_thread()
180 td->cpu = cpu; in __smpboot_create_thread()
183 tsk = kthread_create_on_cpu(smpboot_thread_fn, td, cpu, in __smpboot_create_thread()
190 *per_cpu_ptr(ht->store, cpu) = tsk; in __smpboot_create_thread()
201 ht->create(cpu); in __smpboot_create_thread()
206 int smpboot_create_threads(unsigned int cpu) in smpboot_create_threads() argument
213 ret = __smpboot_create_thread(cur, cpu); in smpboot_create_threads()
221 static void smpboot_unpark_thread(struct smp_hotplug_thread *ht, unsigned int cpu) in smpboot_unpark_thread() argument
223 struct task_struct *tsk = *per_cpu_ptr(ht->store, cpu); in smpboot_unpark_thread()
229 void smpboot_unpark_threads(unsigned int cpu) in smpboot_unpark_threads() argument
235 if (cpumask_test_cpu(cpu, cur->cpumask)) in smpboot_unpark_threads()
236 smpboot_unpark_thread(cur, cpu); in smpboot_unpark_threads()
240 static void smpboot_park_thread(struct smp_hotplug_thread *ht, unsigned int cpu) in smpboot_park_thread() argument
242 struct task_struct *tsk = *per_cpu_ptr(ht->store, cpu); in smpboot_park_thread()
248 void smpboot_park_threads(unsigned int cpu) in smpboot_park_threads() argument
254 smpboot_park_thread(cur, cpu); in smpboot_park_threads()
260 unsigned int cpu; in smpboot_destroy_threads() local
263 for_each_possible_cpu(cpu) { in smpboot_destroy_threads()
264 struct task_struct *tsk = *per_cpu_ptr(ht->store, cpu); in smpboot_destroy_threads()
269 *per_cpu_ptr(ht->store, cpu) = NULL; in smpboot_destroy_threads()
285 unsigned int cpu; in smpboot_register_percpu_thread_cpumask() local
294 for_each_online_cpu(cpu) { in smpboot_register_percpu_thread_cpumask()
295 ret = __smpboot_create_thread(plug_thread, cpu); in smpboot_register_percpu_thread_cpumask()
301 if (cpumask_test_cpu(cpu, cpumask)) in smpboot_register_percpu_thread_cpumask()
302 smpboot_unpark_thread(plug_thread, cpu); in smpboot_register_percpu_thread_cpumask()
344 unsigned int cpu; in smpboot_update_cpumask_percpu_thread() local
354 for_each_cpu_and(cpu, tmp, cpu_online_mask) in smpboot_update_cpumask_percpu_thread()
355 smpboot_park_thread(plug_thread, cpu); in smpboot_update_cpumask_percpu_thread()
359 for_each_cpu_and(cpu, tmp, cpu_online_mask) in smpboot_update_cpumask_percpu_thread()
360 smpboot_unpark_thread(plug_thread, cpu); in smpboot_update_cpumask_percpu_thread()
379 int cpu_report_state(int cpu) in cpu_report_state() argument
381 return atomic_read(&per_cpu(cpu_hotplug_state, cpu)); in cpu_report_state()
396 int cpu_check_up_prepare(int cpu) in cpu_check_up_prepare() argument
399 atomic_set(&per_cpu(cpu_hotplug_state, cpu), CPU_UP_PREPARE); in cpu_check_up_prepare()
403 switch (atomic_read(&per_cpu(cpu_hotplug_state, cpu))) { in cpu_check_up_prepare()
408 atomic_set(&per_cpu(cpu_hotplug_state, cpu), CPU_UP_PREPARE); in cpu_check_up_prepare()
452 void cpu_set_state_online(int cpu) in cpu_set_state_online() argument
454 (void)atomic_xchg(&per_cpu(cpu_hotplug_state, cpu), CPU_ONLINE); in cpu_set_state_online()
462 bool cpu_wait_death(unsigned int cpu, int seconds) in cpu_wait_death() argument
472 if (atomic_read(&per_cpu(cpu_hotplug_state, cpu)) == CPU_DEAD) in cpu_wait_death()
477 while (atomic_read(&per_cpu(cpu_hotplug_state, cpu)) != CPU_DEAD) { in cpu_wait_death()
485 oldstate = atomic_read(&per_cpu(cpu_hotplug_state, cpu)); in cpu_wait_death()
489 atomic_set(&per_cpu(cpu_hotplug_state, cpu), CPU_POST_DEAD); in cpu_wait_death()
492 if (atomic_cmpxchg(&per_cpu(cpu_hotplug_state, cpu), in cpu_wait_death()
513 int cpu = smp_processor_id(); in cpu_report_death() local
516 oldstate = atomic_read(&per_cpu(cpu_hotplug_state, cpu)); in cpu_report_death()
521 } while (atomic_cmpxchg(&per_cpu(cpu_hotplug_state, cpu), in cpu_report_death()