OSDN Git Service

powerpc/nmi: Add an API for sending "safe" NMIs
authorMichael Ellerman <mpe@ellerman.id.au>
Wed, 2 May 2018 13:07:27 +0000 (23:07 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 3 Jun 2018 10:43:43 +0000 (20:43 +1000)
commit6ba55716a24f5f399ad4d37685e4bb721f8e6dd5
tree2197f84b380924e2e5190734c3de32d9ad146d01
parent7b08729cb272b4cd5c657cd5ac0dddae15a593ff
powerpc/nmi: Add an API for sending "safe" NMIs

Currently the options we have for sending NMIs are not necessarily
safe, that is they can potentially interrupt a CPU in a
non-recoverable region of code, meaning the kernel must then panic().

But we'd like to use smp_send_nmi_ipi() to do cross-CPU calls in
situations where we don't want to risk a panic(), because it doesn't
have the requirement that interrupts must be enabled like
smp_call_function().

So add an API for the caller to indicate that it wants to use the NMI
infrastructure, but doesn't want to do anything "unsafe".

Currently that is implemented by not actually calling cause_nmi_ipi(),
instead falling back to an IPI. In future we can pass the safe
parameter down to cause_nmi_ipi() and the individual backends can
potentially take it into account before deciding what to do.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
arch/powerpc/include/asm/smp.h
arch/powerpc/kernel/smp.c