Lines Matching refs:cpu

214 void smp_muxed_ipi_set_data(int cpu, unsigned long data)  in smp_muxed_ipi_set_data()  argument
216 struct cpu_messages *info = &per_cpu(ipi_message, cpu); in smp_muxed_ipi_set_data()
221 void smp_muxed_ipi_message_pass(int cpu, int msg) in smp_muxed_ipi_message_pass() argument
223 struct cpu_messages *info = &per_cpu(ipi_message, cpu); in smp_muxed_ipi_message_pass()
235 smp_ops->cause_ipi(cpu, info->data); in smp_muxed_ipi_message_pass()
267 static inline void do_message_pass(int cpu, int msg) in do_message_pass() argument
270 smp_ops->message_pass(cpu, msg); in do_message_pass()
273 smp_muxed_ipi_message_pass(cpu, msg); in do_message_pass()
277 void smp_send_reschedule(int cpu) in smp_send_reschedule() argument
280 do_message_pass(cpu, PPC_MSG_RESCHEDULE); in smp_send_reschedule()
284 void arch_send_call_function_single_ipi(int cpu) in arch_send_call_function_single_ipi() argument
286 do_message_pass(cpu, PPC_MSG_CALL_FUNCTION); in arch_send_call_function_single_ipi()
291 unsigned int cpu; in arch_send_call_function_ipi_mask() local
293 for_each_cpu(cpu, mask) in arch_send_call_function_ipi_mask()
294 do_message_pass(cpu, PPC_MSG_CALL_FUNCTION); in arch_send_call_function_ipi_mask()
300 unsigned int cpu; in tick_broadcast() local
302 for_each_cpu(cpu, mask) in tick_broadcast()
303 do_message_pass(cpu, PPC_MSG_TICK_BROADCAST); in tick_broadcast()
310 int cpu; in smp_send_debugger_break() local
316 for_each_online_cpu(cpu) in smp_send_debugger_break()
317 if (cpu != me) in smp_send_debugger_break()
318 do_message_pass(cpu, PPC_MSG_DEBUGGER_BREAK); in smp_send_debugger_break()
361 unsigned int cpu; in smp_prepare_cpus() local
375 for_each_possible_cpu(cpu) { in smp_prepare_cpus()
376 zalloc_cpumask_var_node(&per_cpu(cpu_sibling_map, cpu), in smp_prepare_cpus()
377 GFP_KERNEL, cpu_to_node(cpu)); in smp_prepare_cpus()
378 zalloc_cpumask_var_node(&per_cpu(cpu_core_map, cpu), in smp_prepare_cpus()
379 GFP_KERNEL, cpu_to_node(cpu)); in smp_prepare_cpus()
383 if (cpu_present(cpu)) { in smp_prepare_cpus()
384 set_cpu_numa_node(cpu, numa_cpu_lookup_table[cpu]); in smp_prepare_cpus()
385 set_cpu_numa_mem(cpu, in smp_prepare_cpus()
386 local_memory_node(numa_cpu_lookup_table[cpu])); in smp_prepare_cpus()
411 unsigned int cpu = smp_processor_id(); in generic_cpu_disable() local
413 if (cpu == boot_cpuid) in generic_cpu_disable()
416 set_cpu_online(cpu, false); in generic_cpu_disable()
424 void generic_cpu_die(unsigned int cpu) in generic_cpu_die() argument
430 if (per_cpu(cpu_state, cpu) == CPU_DEAD) in generic_cpu_die()
434 printk(KERN_ERR "CPU%d didn't die...\n", cpu); in generic_cpu_die()
437 void generic_set_cpu_dead(unsigned int cpu) in generic_set_cpu_dead() argument
439 per_cpu(cpu_state, cpu) = CPU_DEAD; in generic_set_cpu_dead()
447 void generic_set_cpu_up(unsigned int cpu) in generic_set_cpu_up() argument
449 per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; in generic_set_cpu_up()
452 int generic_check_cpu_restart(unsigned int cpu) in generic_check_cpu_restart() argument
454 return per_cpu(cpu_state, cpu) == CPU_UP_PREPARE; in generic_check_cpu_restart()
468 static void cpu_idle_thread_init(unsigned int cpu, struct task_struct *idle) in cpu_idle_thread_init() argument
473 paca[cpu].__current = idle; in cpu_idle_thread_init()
474 paca[cpu].kstack = (unsigned long)ti + THREAD_SIZE - STACK_FRAME_OVERHEAD; in cpu_idle_thread_init()
476 ti->cpu = cpu; in cpu_idle_thread_init()
477 secondary_ti = current_set[cpu] = ti; in cpu_idle_thread_init()
480 int __cpu_up(unsigned int cpu, struct task_struct *tidle) in __cpu_up() argument
488 cpu_thread_in_subcore(cpu)) in __cpu_up()
492 (smp_ops->cpu_bootable && !smp_ops->cpu_bootable(cpu))) in __cpu_up()
495 cpu_idle_thread_init(cpu, tidle); in __cpu_up()
500 cpu_callin_map[cpu] = 0; in __cpu_up()
509 DBG("smp: kicking cpu %d\n", cpu); in __cpu_up()
510 rc = smp_ops->kick_cpu(cpu); in __cpu_up()
512 pr_err("smp: failed starting cpu %d (rc %d)\n", cpu, rc); in __cpu_up()
522 for (c = 50000; c && !cpu_callin_map[cpu]; c--) in __cpu_up()
530 for (c = 5000; c && !cpu_callin_map[cpu]; c--) in __cpu_up()
534 if (!cpu_callin_map[cpu]) { in __cpu_up()
535 printk(KERN_ERR "Processor %u is stuck.\n", cpu); in __cpu_up()
539 DBG("Processor %u found.\n", cpu); in __cpu_up()
545 while (!cpu_online(cpu) || !cpu_active(cpu)) in __cpu_up()
554 int cpu_to_core_id(int cpu) in cpu_to_core_id() argument
560 np = of_get_cpu_node(cpu, NULL); in cpu_to_core_id()
575 int cpu_core_index_of_thread(int cpu) in cpu_core_index_of_thread() argument
577 return cpu >> threads_shift; in cpu_core_index_of_thread()
587 static void traverse_siblings_chip_id(int cpu, bool add, int chipid) in traverse_siblings_chip_id() argument
603 cpumask_set_cpu(cpu, cpu_core_mask(i)); in traverse_siblings_chip_id()
604 cpumask_set_cpu(i, cpu_core_mask(cpu)); in traverse_siblings_chip_id()
606 cpumask_clear_cpu(cpu, cpu_core_mask(i)); in traverse_siblings_chip_id()
607 cpumask_clear_cpu(i, cpu_core_mask(cpu)); in traverse_siblings_chip_id()
617 static struct device_node *cpu_to_l2cache(int cpu) in cpu_to_l2cache() argument
622 if (!cpu_present(cpu)) in cpu_to_l2cache()
625 np = of_get_cpu_node(cpu, NULL); in cpu_to_l2cache()
636 static void traverse_core_siblings(int cpu, bool add) in traverse_core_siblings() argument
644 np = of_get_cpu_node(cpu, NULL); in traverse_core_siblings()
652 traverse_siblings_chip_id(cpu, add, chip); in traverse_core_siblings()
657 l2_cache = cpu_to_l2cache(cpu); in traverse_core_siblings()
665 cpumask_set_cpu(cpu, cpu_core_mask(i)); in traverse_core_siblings()
666 cpumask_set_cpu(i, cpu_core_mask(cpu)); in traverse_core_siblings()
668 cpumask_clear_cpu(cpu, cpu_core_mask(i)); in traverse_core_siblings()
669 cpumask_clear_cpu(i, cpu_core_mask(cpu)); in traverse_core_siblings()
680 unsigned int cpu = smp_processor_id(); in start_secondary() local
686 smp_store_cpu_info(cpu); in start_secondary()
689 cpu_callin_map[cpu] = 1; in start_secondary()
692 smp_ops->setup_cpu(cpu); in start_secondary()
705 base = cpu_first_thread_sibling(cpu); in start_secondary()
707 if (cpu_is_offline(base + i) && (cpu != base + i)) in start_secondary()
709 cpumask_set_cpu(cpu, cpu_sibling_mask(base + i)); in start_secondary()
710 cpumask_set_cpu(base + i, cpu_sibling_mask(cpu)); in start_secondary()
716 cpumask_set_cpu(cpu, cpu_core_mask(base + i)); in start_secondary()
717 cpumask_set_cpu(base + i, cpu_core_mask(cpu)); in start_secondary()
719 traverse_core_siblings(cpu, true); in start_secondary()
721 set_numa_node(numa_cpu_lookup_table[cpu]); in start_secondary()
722 set_numa_mem(local_memory_node(numa_cpu_lookup_table[cpu])); in start_secondary()
725 notify_cpu_starting(cpu); in start_secondary()
726 set_cpu_online(cpu, true); in start_secondary()
793 int cpu = smp_processor_id(); in __cpu_disable() local
805 base = cpu_first_thread_sibling(cpu); in __cpu_disable()
807 cpumask_clear_cpu(cpu, cpu_sibling_mask(base + i)); in __cpu_disable()
808 cpumask_clear_cpu(base + i, cpu_sibling_mask(cpu)); in __cpu_disable()
809 cpumask_clear_cpu(cpu, cpu_core_mask(base + i)); in __cpu_disable()
810 cpumask_clear_cpu(base + i, cpu_core_mask(cpu)); in __cpu_disable()
812 traverse_core_siblings(cpu, false); in __cpu_disable()
817 void __cpu_die(unsigned int cpu) in __cpu_die() argument
820 smp_ops->cpu_die(cpu); in __cpu_die()