On Tue, 20 Dec 2016 04:30:08 +1000 Nicholas Piggin <npig...@gmail.com> wrote:
> +static void do_smp_send_nmi_ipi(int cpu) > +{ > + if (cpu >= 0) { > + do_message_pass(cpu, PPC_MSG_NMI_IPI); > + } else { > + unsigned int c; > + > + for_each_online_cpu(c) { > + if (c == raw_smp_processor_id()) > + continue; > + do_message_pass(cpu, PPC_MSG_NMI_IPI); Okay this has a bug in the fallback path. Needs the following incremental patch. sysrq+x works okay with this (tested in mambo), and also recovers with "x" okay. Thanks, Nick --- arch/powerpc/kernel/smp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index 81256522985d..a9f8c70d1033 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c @@ -420,12 +420,12 @@ static void do_smp_send_nmi_ipi(int cpu) if (cpu >= 0) { do_message_pass(cpu, PPC_MSG_NMI_IPI); } else { - unsigned int c; + int c; for_each_online_cpu(c) { if (c == raw_smp_processor_id()) continue; - do_message_pass(cpu, PPC_MSG_NMI_IPI); + do_message_pass(c, PPC_MSG_NMI_IPI); } } } -- 2.11.0