Re: smp_call_function() friends and irq/bottom_half context

From: Peter Zijlstra
Date: Thu May 10 2018 - 06:17:11 EST


On Thu, May 10, 2018 at 01:58:29PM +0900, ïïÈïï wrote:
> Hi, all.
>
> I'm reading kernel/smp.c code and I found comments on smp_call_function()
> and smp_call_function_[single/many]
> saying that these functions are cannot be called in interrupt disabled
> context or irq/bottom half handlers.
>
> I understand that there is a potential deadlock issue when caller CPU of
> the functions is waiting for the completion of the callback of other CPUs.
> But I was wondering if this is the case even when the caller CPU doesn't
> wait for the completion (wait == 0).

IIRC yes, because csd_lock(). You can however use
smp_call_function_single_async() with your own csd. Be very careful
though, it is very easy to construct deadlocks.