for(;;);
}
+static int qcss_tok; /* query-cpu-stopped-state token */
+
/* Get state of physical CPU.
* Return codes:
* 0 - The processor is in the RTAS stopped state
*/
static int query_cpu_stopped(unsigned int pcpu)
{
- int cpu_status;
- int status, qcss_tok;
+ int cpu_status, status;
- qcss_tok = rtas_token("query-cpu-stopped-state");
- if (qcss_tok == RTAS_UNKNOWN_SERVICE)
- return -1;
status = rtas_call(qcss_tok, 1, 2, &cpu_status, pcpu);
if (status != 0) {
printk(KERN_ERR
static int __init pseries_cpu_hotplug_init(void)
{
rtas_stop_self_args.token = rtas_token("stop-self");
+ qcss_tok = rtas_token("query-cpu-stopped-state");
- ppc_md.cpu_die = pSeries_mach_cpu_die;
+ if (rtas_stop_self_args.token == RTAS_UNKNOWN_SERVICE ||
+ qcss_tok == RTAS_UNKNOWN_SERVICE) {
+ printk(KERN_INFO "CPU Hotplug not supported by firmware "
+ "- disabling.\n");
+ return 0;
+ }
+ ppc_md.cpu_die = pSeries_mach_cpu_die;
smp_ops->cpu_disable = pSeries_cpu_disable;
smp_ops->cpu_die = pSeries_cpu_die;