summaryrefslogtreecommitdiffstats
path: root/include/linux/ipmi_smi.h
diff options
context:
space:
mode:
authorHidehiro Kawai <hidehiro.kawai.ez@hitachi.com>2015-07-27 14:55:16 +0900
committerCorey Minyard <cminyard@mvista.com>2015-09-03 15:02:28 -0500
commit82802f968bd3118af04eaeb3814c21d9813be527 (patch)
treedd26a8d2a0d96b013938814083144654bf30db71 /include/linux/ipmi_smi.h
parente45361d733d0a1432b0f6307375045e66ac02489 (diff)
downloadtalos-obmc-linux-82802f968bd3118af04eaeb3814c21d9813be527.tar.gz
talos-obmc-linux-82802f968bd3118af04eaeb3814c21d9813be527.zip
ipmi: Don't flush messages in sender() in run-to-completion mode
When flushing queued messages in run-to-completion mode, smi_event_handler() is recursively called. flush_messages() smi_event_handler() handle_transaction_done() deliver_recv_msg() ipmi_smi_msg_received() smi_recv_tasklet() sender() flush_messages() smi_event_handler() ... The depth of the recursive call depends on the number of queued messages, so it can cause a stack overflow if many messages have been queued. To solve this problem, this patch removes flush_messages() from sender()@ipmi_si_intf.c. Instead, add flush_messages() to caller side of sender() if needed. Additionally, to implement this, add new handler flush_messages to struct ipmi_smi_handlers. Signed-off-by: Hidehiro Kawai <hidehiro.kawai.ez@hitachi.com> Fixed up a comment and some spacing issues. Signed-off-by: Corey Minyard <cminyard@mvista.com>
Diffstat (limited to 'include/linux/ipmi_smi.h')
-rw-r--r--include/linux/ipmi_smi.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/ipmi_smi.h b/include/linux/ipmi_smi.h
index 41de0cf34c49..f8cea14485dd 100644
--- a/include/linux/ipmi_smi.h
+++ b/include/linux/ipmi_smi.h
@@ -115,6 +115,11 @@ struct ipmi_smi_handlers {
implement it. */
void (*set_need_watch)(void *send_info, bool enable);
+ /*
+ * Called when flushing all pending messages.
+ */
+ void (*flush_messages)(void *send_info);
+
/* Called when the interface should go into "run to
completion" mode. If this call sets the value to true, the
interface should make sure that all messages are flushed
OpenPOWER on IntegriCloud