diff options
-rw-r--r-- | arch/mips/kernel/smp.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index af5cd3b8a396..1d3a4b501949 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c | |||
@@ -121,7 +121,19 @@ struct call_data_struct *call_data; | |||
121 | * or are or have executed. | 121 | * or are or have executed. |
122 | * | 122 | * |
123 | * You must not call this function with disabled interrupts or from a | 123 | * You must not call this function with disabled interrupts or from a |
124 | * hardware interrupt handler or from a bottom half handler. | 124 | * hardware interrupt handler or from a bottom half handler: |
125 | * | ||
126 | * CPU A CPU B | ||
127 | * Disable interrupts | ||
128 | * smp_call_function() | ||
129 | * Take call_lock | ||
130 | * Send IPIs | ||
131 | * Wait for all cpus to acknowledge IPI | ||
132 | * CPU A has not responded, spin waiting | ||
133 | * for cpu A to respond, holding call_lock | ||
134 | * smp_call_function() | ||
135 | * Spin waiting for call_lock | ||
136 | * Deadlock Deadlock | ||
125 | */ | 137 | */ |
126 | int smp_call_function (void (*func) (void *info), void *info, int retry, | 138 | int smp_call_function (void (*func) (void *info), void *info, int retry, |
127 | int wait) | 139 | int wait) |