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
1 changed files with 13 additions and 1 deletions
|
@ -121,7 +121,19 @@ struct call_data_struct *call_data;
|
|||
* or are or have executed.
|
||||
*
|
||||
* 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 wait)
|
||||
|
|
Loading…
Reference in a new issue