mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
[PATCH] ppc64: Fix for missing start-cpu rtas token
If the rtas start-cpu token doesnt exist then presume the cpu is already spinning. If it isnt we will catch it later on when the cpu doesnt respond. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
3238e9c973
commit
1ed2fd2d3a
@ -272,6 +272,7 @@ static inline int __devinit smp_startup_cpu(unsigned int lcpu)
|
||||
unsigned long start_here = __pa((u32)*((unsigned long *)
|
||||
pSeries_secondary_smp_init));
|
||||
unsigned int pcpu;
|
||||
int start_cpu;
|
||||
|
||||
if (cpu_isset(lcpu, of_spin_map))
|
||||
/* Already started by OF and sitting in spin loop */
|
||||
@ -282,12 +283,20 @@ static inline int __devinit smp_startup_cpu(unsigned int lcpu)
|
||||
/* Fixup atomic count: it exited inside IRQ handler. */
|
||||
paca[lcpu].__current->thread_info->preempt_count = 0;
|
||||
|
||||
status = rtas_call(rtas_token("start-cpu"), 3, 1, NULL,
|
||||
pcpu, start_here, lcpu);
|
||||
/*
|
||||
* If the RTAS start-cpu token does not exist then presume the
|
||||
* cpu is already spinning.
|
||||
*/
|
||||
start_cpu = rtas_token("start-cpu");
|
||||
if (start_cpu == RTAS_UNKNOWN_SERVICE)
|
||||
return 1;
|
||||
|
||||
status = rtas_call(start_cpu, 3, 1, NULL, pcpu, start_here, lcpu);
|
||||
if (status != 0) {
|
||||
printk(KERN_ERR "start-cpu failed: %i\n", status);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user