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:
parent
26852d5cdb
commit
57f0060b8a
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue