Document why calling smp_call_function will deadlock when called with

interrupts disabled.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
Ralf Baechle 2005-02-10 12:00:06 +00:00
parent 26852d5cdb
commit 57f0060b8a

View file

@ -121,7 +121,19 @@ struct call_data_struct *call_data;
* or are or have executed. * or are or have executed.
* *
* You must not call this function with disabled interrupts or from a * You must not call this function with disabled interrupts or from a
* hardware interrupt handler or from a bottom half handler. * hardware interrupt handler or from a bottom half handler:
*
* CPU A CPU B
* Disable interrupts
* smp_call_function()
* Take call_lock
* Send IPIs
* Wait for all cpus to acknowledge IPI
* CPU A has not responded, spin waiting
* for cpu A to respond, holding call_lock
* smp_call_function()
* Spin waiting for call_lock
* Deadlock Deadlock
*/ */
int smp_call_function (void (*func) (void *info), void *info, int retry, int smp_call_function (void (*func) (void *info), void *info, int retry,
int wait) int wait)