ipmi: Fix IPMI errors due to timing problems
authorDoe, YiCheng <[email protected]>
Thu, 10 Mar 2011 20:00:21 +0000 (14:00 -0600)
committerLinus Torvalds <[email protected]>
Thu, 10 Mar 2011 21:21:16 +0000 (13:21 -0800)
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 <[email protected]>
Signed-off-by: Corey Minyard <[email protected]>
Acked-by: Tom Mingarelli <[email protected]>
Tested-by: Andy Cress <[email protected]>
Tested-by: Mika Lansirine <[email protected]>
Tested-by: Brian De Wolf <[email protected]>
Cc: Jean Michel Audet <[email protected]>
Cc: Jozef Sudelsky <[email protected]>
Acked-by: Matthew Garrett <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
drivers/char/ipmi/ipmi_si_intf.c

index 7855f9f45b8ec9418bfdda34d304aaae5c3bb670..62787e30d508c2e63fe8f7923fbc45a63493a545 100644 (file)
@@ -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)