Skip to content

Commit

Permalink
[POWERPC] Only enable cpu hotplug via RTAS if the required firmware s…
Browse files Browse the repository at this point in the history
…upport is found

To support cpu hotplug on pseries we require two RTAS tokens.  The cpu
hotplug machinery should only be wired up if these tokens are found in
the device tree.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Michael Ellerman authored and Paul Mackerras committed Dec 8, 2006
1 parent 413f7c4 commit 674fa67
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions arch/powerpc/platforms/pseries/hotplug-cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ static void pSeries_mach_cpu_die(void)
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
Expand All @@ -74,12 +76,8 @@ static void pSeries_mach_cpu_die(void)
*/
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
Expand Down Expand Up @@ -254,9 +252,16 @@ static struct notifier_block pSeries_smp_nb = {
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;

Expand Down

0 comments on commit 674fa67

Please sign in to comment.