• N
    powerpc: Fix deadlock with multiple calls to smp_send_stop · 6029755e
    Nicholas Piggin 提交于
    smp_send_stop can lock up the IPI path for any subsequent calls,
    because the receiving CPUs spin in their handler function. This
    started becoming a problem with the addition of an smp_send_stop
    call in the reboot path, because panics can reboot after doing
    their own smp_send_stop.
    
    The NMI IPI variant was fixed with ac61c115 ("powerpc: Fix
    smp_send_stop NMI IPI handling"), which leaves the smp_call_function
    variant.
    
    This is fixed by having smp_send_stop only ever do the
    smp_call_function once. This is a bit less robust than the NMI IPI
    fix, because any other call to smp_call_function after smp_send_stop
    could deadlock, but that has always been the case, and it was not
    been a problem before.
    
    Fixes: f2748bdf ("powerpc/powernv: Always stop secondaries before reboot/shutdown")
    Reported-by: NAbdul Haleem <abdhalee@linux.vnet.ibm.com>
    Signed-off-by: NNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
    6029755e
smp.c 26.8 KB