Lines Matching full:cpu
2 * pseries CPU Hotplug infrastructure.
25 #include <linux/cpu.h>
69 enum cpu_state_vals get_cpu_current_state(int cpu) in get_cpu_current_state() argument
71 return per_cpu(current_state, cpu); in get_cpu_current_state()
74 void set_cpu_current_state(int cpu, enum cpu_state_vals state) in set_cpu_current_state() argument
76 per_cpu(current_state, cpu) = state; in set_cpu_current_state()
79 enum cpu_state_vals get_preferred_offline_state(int cpu) in get_preferred_offline_state() argument
81 return per_cpu(preferred_offline_state, cpu); in get_preferred_offline_state()
84 void set_preferred_offline_state(int cpu, enum cpu_state_vals state) in set_preferred_offline_state() argument
86 per_cpu(preferred_offline_state, cpu) = state; in set_preferred_offline_state()
89 void set_default_offline_state(int cpu) in set_default_offline_state() argument
91 per_cpu(preferred_offline_state, cpu) = default_offline_state; in set_default_offline_state()
102 printk("cpu %u (hwid %u) Ready to die...\n", in rtas_stop_self()
111 unsigned int cpu = smp_processor_id(); in pseries_mach_cpu_die() local
119 if (get_preferred_offline_state(cpu) == CPU_STATE_INACTIVE) { in pseries_mach_cpu_die()
120 set_cpu_current_state(cpu, CPU_STATE_INACTIVE); in pseries_mach_cpu_die()
130 while (get_preferred_offline_state(cpu) == CPU_STATE_INACTIVE) { in pseries_mach_cpu_die()
138 if (get_preferred_offline_state(cpu) == CPU_STATE_ONLINE) { in pseries_mach_cpu_die()
151 WARN_ON(get_preferred_offline_state(cpu) != CPU_STATE_OFFLINE); in pseries_mach_cpu_die()
153 set_cpu_current_state(cpu, CPU_STATE_OFFLINE); in pseries_mach_cpu_die()
164 int cpu = smp_processor_id(); in pseries_cpu_disable() local
166 set_cpu_online(cpu, false); in pseries_cpu_disable()
170 if (cpu == boot_cpuid) in pseries_cpu_disable()
179 * pseries_cpu_die: Wait for the cpu to die.
180 * @cpu: logical processor id of the CPU whose death we're awaiting.
183 * the cpu-offline. Here we wait for long enough to allow the cpu in question
184 * to self-destroy so that the cpu-offline thread can send the CPU_DEAD
187 * OTOH, pseries_mach_cpu_die() is called by the @cpu when it wants to
190 static void pseries_cpu_die(unsigned int cpu) in pseries_cpu_die() argument
194 unsigned int pcpu = get_hard_smp_processor_id(cpu); in pseries_cpu_die()
196 if (get_preferred_offline_state(cpu) == CPU_STATE_INACTIVE) { in pseries_cpu_die()
199 if (get_cpu_current_state(cpu) == CPU_STATE_INACTIVE) { in pseries_cpu_die()
205 } else if (get_preferred_offline_state(cpu) == CPU_STATE_OFFLINE) { in pseries_cpu_die()
217 printk("Querying DEAD? cpu %i (%i) shows %i\n", in pseries_cpu_die()
218 cpu, pcpu, cpu_status); in pseries_cpu_die()
226 paca[cpu].cpu_start = 0; in pseries_cpu_die()
230 * Update cpu_present_mask and paca(s) for a new cpu node. The wrinkle
231 * here is that a cpu device node may represent up to two logical cpus
238 unsigned int cpu; in pseries_add_processor() local
264 printk(KERN_ERR "Cannot add cpu %s; this system configuration" in pseries_add_processor()
272 /* Found a range where we can insert the new cpu(s) */ in pseries_add_processor()
284 for_each_cpu(cpu, tmp) { in pseries_add_processor()
285 BUG_ON(cpu_present(cpu)); in pseries_add_processor()
286 set_cpu_present(cpu, true); in pseries_add_processor()
287 set_hard_smp_processor_id(cpu, *intserv++); in pseries_add_processor()
298 * Update the present map for a cpu node which is going away, and set
304 unsigned int cpu; in pseries_remove_processor() local
316 for_each_present_cpu(cpu) { in pseries_remove_processor()
317 if (get_hard_smp_processor_id(cpu) != intserv[i]) in pseries_remove_processor()
319 BUG_ON(cpu_online(cpu)); in pseries_remove_processor()
320 set_cpu_present(cpu, false); in pseries_remove_processor()
321 set_hard_smp_processor_id(cpu, -1); in pseries_remove_processor()
324 if (cpu >= nr_cpu_ids) in pseries_remove_processor()
325 printk(KERN_WARNING "Could not find cpu to remove " in pseries_remove_processor()
373 int cpu; in pseries_cpu_hotplug_init() local
381 printk(KERN_INFO "CPU Hotplug not supported on " in pseries_cpu_hotplug_init()
388 qcss_tok = rtas_token("query-cpu-stopped-state"); in pseries_cpu_hotplug_init()
392 printk(KERN_INFO "CPU Hotplug not supported by firmware " in pseries_cpu_hotplug_init()
407 for_each_online_cpu(cpu) in pseries_cpu_hotplug_init()
408 set_default_offline_state(cpu); in pseries_cpu_hotplug_init()