powerpc/kexec: Wait 1s for secondaries to enter OPAL
Always include a timeout when waiting for secondary cpus to enter OPAL in the kexec path, rather than only when crashing. Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
255e8e046c
commit
1b70386c99
|
@ -187,7 +187,7 @@ static void pnv_kexec_wait_secondaries_down(void)
|
|||
|
||||
for_each_online_cpu(i) {
|
||||
uint8_t status;
|
||||
int64_t rc;
|
||||
int64_t rc, timeout = 1000;
|
||||
|
||||
if (i == my_cpu)
|
||||
continue;
|
||||
|
@ -204,6 +204,18 @@ static void pnv_kexec_wait_secondaries_down(void)
|
|||
i, paca[i].hw_cpu_id);
|
||||
notified = i;
|
||||
}
|
||||
|
||||
/*
|
||||
* On crash secondaries might be unreachable or hung,
|
||||
* so timeout if we've waited too long
|
||||
* */
|
||||
mdelay(1);
|
||||
if (timeout-- == 0) {
|
||||
printk(KERN_ERR "kexec: timed out waiting for "
|
||||
"cpu %d (physical %d) to enter OPAL\n",
|
||||
i, paca[i].hw_cpu_id);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -225,13 +237,6 @@ static void pnv_kexec_cpu_down(int crash_shutdown, int secondary)
|
|||
|
||||
/* Return the CPU to OPAL */
|
||||
opal_return_cpu();
|
||||
} else if (crash_shutdown) {
|
||||
/*
|
||||
* On crash, we don't wait for secondaries to go
|
||||
* down as they might be unreachable or hung, so
|
||||
* instead we just wait a bit and move on.
|
||||
*/
|
||||
mdelay(1);
|
||||
} else {
|
||||
/* Primary waits for the secondaries to have reached OPAL */
|
||||
pnv_kexec_wait_secondaries_down();
|
||||
|
|
Loading…
Reference in New Issue