Lines Matching full:cpu

5  * very straightforward.  Bringing a CPU up is simply a matter of
10 * Because virtual CPUs can be scheduled onto any real CPU, there's no
23 #include <asm/cpu.h>
62 int cpu = smp_processor_id(); in cpu_bringup() local
71 cpu = smp_processor_id(); in cpu_bringup()
72 smp_store_cpu_info(cpu); in cpu_bringup()
73 cpu_data(cpu).x86_max_cores = 1; in cpu_bringup()
74 set_cpu_sibling_map(cpu); in cpu_bringup()
78 set_cpu_online(cpu, true); in cpu_bringup()
94 static int xen_smp_intr_init(unsigned int cpu) in xen_smp_intr_init() argument
99 resched_name = kasprintf(GFP_KERNEL, "resched%d", cpu); in xen_smp_intr_init()
101 cpu, in xen_smp_intr_init()
108 per_cpu(xen_resched_irq, cpu) = rc; in xen_smp_intr_init()
110 callfunc_name = kasprintf(GFP_KERNEL, "callfunc%d", cpu); in xen_smp_intr_init()
112 cpu, in xen_smp_intr_init()
119 per_cpu(xen_callfunc_irq, cpu) = rc; in xen_smp_intr_init()
121 debug_name = kasprintf(GFP_KERNEL, "debug%d", cpu); in xen_smp_intr_init()
122 rc = bind_virq_to_irqhandler(VIRQ_DEBUG, cpu, xen_debug_interrupt, in xen_smp_intr_init()
127 per_cpu(xen_debug_irq, cpu) = rc; in xen_smp_intr_init()
129 callfunc_name = kasprintf(GFP_KERNEL, "callfuncsingle%d", cpu); in xen_smp_intr_init()
131 cpu, in xen_smp_intr_init()
138 per_cpu(xen_callfuncsingle_irq, cpu) = rc; in xen_smp_intr_init()
143 if (per_cpu(xen_resched_irq, cpu) >= 0) in xen_smp_intr_init()
144 unbind_from_irqhandler(per_cpu(xen_resched_irq, cpu), NULL); in xen_smp_intr_init()
145 if (per_cpu(xen_callfunc_irq, cpu) >= 0) in xen_smp_intr_init()
146 unbind_from_irqhandler(per_cpu(xen_callfunc_irq, cpu), NULL); in xen_smp_intr_init()
147 if (per_cpu(xen_debug_irq, cpu) >= 0) in xen_smp_intr_init()
148 unbind_from_irqhandler(per_cpu(xen_debug_irq, cpu), NULL); in xen_smp_intr_init()
149 if (per_cpu(xen_callfuncsingle_irq, cpu) >= 0) in xen_smp_intr_init()
150 unbind_from_irqhandler(per_cpu(xen_callfuncsingle_irq, cpu), in xen_smp_intr_init()
198 /* We've switched to the "real" per-cpu gdt, so make sure the in xen_smp_prepare_boot_cpu()
208 unsigned cpu; in xen_smp_prepare_cpus() local
242 for (cpu = nr_cpu_ids - 1; !cpu_possible(cpu); cpu--) in xen_smp_prepare_cpus()
244 set_cpu_possible(cpu, false); in xen_smp_prepare_cpus()
247 for_each_possible_cpu (cpu) { in xen_smp_prepare_cpus()
250 if (cpu == 0) in xen_smp_prepare_cpus()
253 idle = fork_idle(cpu); in xen_smp_prepare_cpus()
255 panic("failed fork for CPU %d", cpu); in xen_smp_prepare_cpus()
257 set_cpu_present(cpu, true); in xen_smp_prepare_cpus()
262 cpu_initialize_context(unsigned int cpu, struct task_struct *idle) in cpu_initialize_context() argument
268 if (cpumask_test_and_set_cpu(cpu, xen_cpu_initialized_map)) in cpu_initialize_context()
275 gdt = get_cpu_gdt_table(cpu); in cpu_initialize_context()
285 ctxt->gs_base_kernel = per_cpu_offset(cpu); in cpu_initialize_context()
318 per_cpu(xen_cr3, cpu) = __pa(swapper_pg_dir); in cpu_initialize_context()
321 if (HYPERVISOR_vcpu_op(VCPUOP_initialise, cpu, ctxt)) in cpu_initialize_context()
328 static int __cpuinit xen_cpu_up(unsigned int cpu) in xen_cpu_up() argument
330 struct task_struct *idle = idle_task(cpu); in xen_cpu_up()
333 per_cpu(current_task, cpu) = idle; in xen_cpu_up()
335 irq_ctx_init(cpu); in xen_cpu_up()
338 per_cpu(kernel_stack, cpu) = in xen_cpu_up()
342 xen_setup_runstate_info(cpu); in xen_cpu_up()
343 xen_setup_timer(cpu); in xen_cpu_up()
344 xen_init_lock_cpu(cpu); in xen_cpu_up()
346 per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; in xen_cpu_up()
349 per_cpu(xen_vcpu, cpu)->evtchn_upcall_mask = 1; in xen_cpu_up()
351 rc = cpu_initialize_context(cpu, idle); in xen_cpu_up()
358 rc = xen_smp_intr_init(cpu); in xen_cpu_up()
362 rc = HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL); in xen_cpu_up()
365 while(per_cpu(cpu_state, cpu) != CPU_ONLINE) { in xen_cpu_up()
380 unsigned int cpu = smp_processor_id(); in xen_cpu_disable() local
381 if (cpu == 0) in xen_cpu_disable()
390 static void xen_cpu_die(unsigned int cpu) in xen_cpu_die() argument
392 while (HYPERVISOR_vcpu_op(VCPUOP_is_up, cpu, NULL)) { in xen_cpu_die()
396 unbind_from_irqhandler(per_cpu(xen_resched_irq, cpu), NULL); in xen_cpu_die()
397 unbind_from_irqhandler(per_cpu(xen_callfunc_irq, cpu), NULL); in xen_cpu_die()
398 unbind_from_irqhandler(per_cpu(xen_debug_irq, cpu), NULL); in xen_cpu_die()
399 unbind_from_irqhandler(per_cpu(xen_callfuncsingle_irq, cpu), NULL); in xen_cpu_die()
400 xen_uninit_lock_cpu(cpu); in xen_cpu_die()
401 xen_teardown_timer(cpu); in xen_cpu_die()
427 static void xen_cpu_die(unsigned int cpu) in xen_cpu_die() argument
440 int cpu = smp_processor_id(); in stop_self() local
446 set_cpu_online(cpu, false); in stop_self()
448 HYPERVISOR_vcpu_op(VCPUOP_down, cpu, NULL); in stop_self()
457 static void xen_smp_send_reschedule(int cpu) in xen_smp_send_reschedule() argument
459 xen_send_IPI_one(cpu, XEN_RESCHEDULE_VECTOR); in xen_smp_send_reschedule()
465 unsigned cpu; in xen_send_IPI_mask() local
467 for_each_cpu_and(cpu, mask, cpu_online_mask) in xen_send_IPI_mask()
468 xen_send_IPI_one(cpu, vector); in xen_send_IPI_mask()
473 int cpu; in xen_smp_send_call_function_ipi() local
478 for_each_cpu(cpu, mask) { in xen_smp_send_call_function_ipi()
479 if (xen_vcpu_stolen(cpu)) { in xen_smp_send_call_function_ipi()
486 static void xen_smp_send_call_function_single_ipi(int cpu) in xen_smp_send_call_function_single_ipi() argument
488 xen_send_IPI_mask(cpumask_of(cpu), in xen_smp_send_call_function_single_ipi()
544 static int __cpuinit xen_hvm_cpu_up(unsigned int cpu) in xen_hvm_cpu_up() argument
547 rc = native_cpu_up(cpu); in xen_hvm_cpu_up()
548 WARN_ON (xen_smp_intr_init(cpu)); in xen_hvm_cpu_up()
552 static void xen_hvm_cpu_die(unsigned int cpu) in xen_hvm_cpu_die() argument
554 unbind_from_irqhandler(per_cpu(xen_resched_irq, cpu), NULL); in xen_hvm_cpu_die()
555 unbind_from_irqhandler(per_cpu(xen_callfunc_irq, cpu), NULL); in xen_hvm_cpu_die()
556 unbind_from_irqhandler(per_cpu(xen_debug_irq, cpu), NULL); in xen_hvm_cpu_die()
557 unbind_from_irqhandler(per_cpu(xen_callfuncsingle_irq, cpu), NULL); in xen_hvm_cpu_die()
558 native_cpu_die(cpu); in xen_hvm_cpu_die()