[S390] smp: fix sigp stop handling
According to the architecture a cpu must not necessarily enter stopped state after completion of a sigp instruction with "stop" order code. So remove the BUG() statement after self sending sigp stop to avoid that it ever gets reached. Also add a sigp busy check to make sure that the order gets delivered. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
committed by
Martin Schwidefsky
parent
70f5dc514c
commit
f8501ba77d
@@ -1595,10 +1595,9 @@ static void stop_run(struct shutdown_trigger *trigger)
|
||||
{
|
||||
if (strcmp(trigger->name, ON_PANIC_STR) == 0)
|
||||
disabled_wait((unsigned long) __builtin_return_address(0));
|
||||
else {
|
||||
signal_processor(smp_processor_id(), sigp_stop);
|
||||
for (;;);
|
||||
}
|
||||
while (signal_processor(smp_processor_id(), sigp_stop) == sigp_busy)
|
||||
cpu_relax();
|
||||
for (;;);
|
||||
}
|
||||
|
||||
static struct shutdown_action stop_action = {SHUTDOWN_ACTION_STOP_STR,
|
||||
|
Reference in New Issue
Block a user