[PATCH] ipmi: Fix IPMI errors due to timing problems

From: Corey Minyard
Date: Thu Mar 10 2011 - 16:00:56 EST


From: Doe, YiCheng <yicheng.doe@xxxxxx>

This patch fixes an issue in OpenIPMI module where sometimes an ABORT command
is sent after sending an IPMI request to BMC causing the IPMI request to fail.

Signed-off-by: YiCheng Doe <yicheng.doe@xxxxxx>
Signed-off-by: Corey Minyard <cminyard@xxxxxxxxxx>
Acked-by: Tom Mingarelli <thomas.mingarelli@xxxxxx>
Tested-by: Andy Cress <andy.cress@xxxxxxxxxxxxxx>
Tested-by: Mika Lansirine <Mika.Lansirinne@xxxxxxxxxxxxx>
Tested-by: Brian De Wolf <bldewolf@xxxxxxxxxxxxx>
Cc: Jean Michel Audet <Jean-Michel.Audet@xxxxxxxxxxxxxx>
Cc: Jozef Sudelsky <jozef.sudolsky@xxxxxxxxxxxxxxx>
Cc: Matthew Garrett <mjg@xxxxxxxxxx>
---
drivers/char/ipmi/ipmi_si_intf.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index 7855f9f..62787e3 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -900,6 +900,14 @@ static void sender(void *send_info,
printk("**Enqueue: %d.%9.9d\n", t.tv_sec, t.tv_usec);
#endif

+ /*
+ * last_timeout_jiffies is updated here to avoid
+ * smi_timeout() handler passing very large time_diff
+ * value to smi_event_handler() that causes
+ * the send command to abort.
+ */
+ smi_info->last_timeout_jiffies = jiffies;
+
mod_timer(&smi_info->si_timer, jiffies + SI_TIMEOUT_JIFFIES);

if (smi_info->thread)
--
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/