summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/watchdog.c
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2018-04-25 07:17:59 +0200
committerMichael Ellerman <mpe@ellerman.id.au>2018-07-24 14:03:14 +0200
commit5b73151fff63fb019db8171cb81c6c978533844b (patch)
tree61c17b513c864371636878b3d47aede38661632c /arch/powerpc/kernel/watchdog.c
parentpowerpc/64s: make PACA_IRQ_HARD_DIS track MSR[EE] closely (diff)
downloadlinux-5b73151fff63fb019db8171cb81c6c978533844b.tar.xz
linux-5b73151fff63fb019db8171cb81c6c978533844b.zip
powerpc: NMI IPI make NMI IPIs fully sychronous
There is an asynchronous aspect to smp_send_nmi_ipi. The caller waits for all CPUs to call in to the handler, but it does not wait for completion of the handler. This is a needless complication, so remove it and always wait synchronously. The synchronous wait allows the caller to easily time out and clear the wait for completion (zero nmi_ipi_busy_count) in the case of badly behaved handlers. This would have prevented the recent smp_send_stop NMI IPI bug from causing the system to hang. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to '')
-rw-r--r--arch/powerpc/kernel/watchdog.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/watchdog.c b/arch/powerpc/kernel/watchdog.c
index 1d82274f7e9f..3c6ab22a0c4e 100644
--- a/arch/powerpc/kernel/watchdog.c
+++ b/arch/powerpc/kernel/watchdog.c
@@ -174,7 +174,6 @@ static void watchdog_smp_panic(int cpu, u64 tb)
continue;
smp_send_nmi_ipi(c, wd_lockup_ipi, 1000000);
}
- smp_flush_nmi_ipi(1000000);
}
/* Take the stuck CPUs out of the watch group */