Corey,
We have seen these incorrect response messages on RHEL6 (ipmi v39.2) with an Intel S5520UR baseboard in less than 10 minutes with an activity script, and with the patch applied, it did not show the problem in an overnight test. Looks good to me. Andy From: Corey Minyard [mailto:miny...@acm.org] Sent: Tuesday, February 22, 2011 12:18 PM To: yicheng....@hp.com; Audet, Jean-Michel; openipmi-develo...@lists.sourceforge.net; ipmitool-devel@lists.sourceforge.net; jozef.sudol...@elbiahosting.sk; mika.lansiri...@stonesoft.com; m...@redhat.com Subject: [Ipmitool-devel] Fwd: RE: [ipmi_si_intf PATCH] based on 2.6.36kernel Let me try this again, from the proper email address so the mailing lists will take it. Yichen appears to have traced this the bug down dealing with the timing changes that I was unable to reproduce (and i just got a Supermicro board, but he beat me to it). I'm not sure this is quite the right fix, but it makes sense that reducing the polling might cause this problem, since the timeouts are not updated as regularly. Those that have this problem, can you try this patch? Thanks, -corey -------- Original Message -------- Subject: RE: [ipmi_si_intf PATCH] based on 2.6.36 kernel Date: Mon, 21 Feb 2011 08:46:13 +0000 From: Doe, YiCheng <yicheng....@hp.com> <mailto:yicheng....@hp.com> To: Corey Minyard <miny...@acm.org> <mailto:miny...@acm.org> , "Mingarelli, Thomas" <thomas.mingare...@hp.com> <mailto:thomas.mingare...@hp.com> Hi Corey, The only purpose to call smi_timeout() within the sender() function is to update the "smi_info->last_timeout_jiffies" field to the current jiffies value. This will prevent a very large "time_diff" value to be passed to smi_event_handler() in the subsequent call, which causes the send command to abort. The state machine should be okay in this case. It is the problematic "time_diff" value that is causing this issue. I hope I understand your concern correctly. The following is the modified patch which I think should be "safer" in addressing this issue. Thanks, Yicheng This patch fixes an issue in OpenIPMI module that 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....@hp.com> <mailto:yicheng....@hp.com> Acked-by: Tom Mingarelli<thomas.mingare...@hp.com> <mailto:thomas.mingare...@hp.com> --- diff -rupN linux-2.6.36.2/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.36.2p/drivers/char/ipmi/ipmi_si_intf.c --- linux-2.6.36.2/drivers/char/ipmi/ipmi_si_intf.c 2010-12-09 17:17:27.000000000 -0500 +++ linux-2.6.36.2p/drivers/char/ipmi/ipmi_si_intf.c 2011-02-20 19:15:23.475972003 -0500 @@ -899,6 +899,14 @@ static void sender(void * 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) -----Original Message----- From: Corey Minyard [mailto:miny...@acm.org] Sent: Thursday, February 17, 2011 12:11 AM To: Mingarelli, Thomas Cc: Doe, YiCheng Subject: Re: [ipmi_si_intf PATCH] based on 2.6.36 kernel I don't remember this patch. And I doubt this is the right solution. If the sender function is called, the state machine better be idle. And SMI timeout might start a receive operation if something is pending, which will break the send. Maybe there is something missing at the end of the state machine that cleans things up properly. That's the place to look, I think. -corey On 02/16/2011 08:32 AM, Mingarelli, Thomas wrote: > Hello Corey: > > > Is there any update on the patch below being accepted or not? > > > Thanks, > Tom > > -----Original Message----- > From: Mingarelli, Thomas > Sent: Friday, January 14, 2011 11:01 AM > To: miny...@acm.org > Cc: Mingarelli, Thomas; Doe, YiCheng > Subject: [ipmi_si_intf PATCH] based on 2.6.36 kernel > > This patch fixes an issue in OpenIPMI module that 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....@hp.com> <mailto:yicheng....@hp.com> > Acked-by: Tom Mingarelli<thomas.mingare...@hp.com> <mailto:thomas.mingare...@hp.com> > > --- > > diff -rupN linux-2.6.36.2/drivers/char/ipmi/ipmi_si_intf.c linux-2.6.36.2p/drivers/char/ipmi/ipmi_si_intf.c > --- linux-2.6.36.2/drivers/char/ipmi/ipmi_si_intf.c 2010-12-09 17:17:27.000000000 -0500 > +++ linux-2.6.36.2p/drivers/char/ipmi/ipmi_si_intf.c 2011-01-03 21:00:31.088841833 -0500 > @@ -320,6 +320,7 @@ static int unload_when_empty = 1; > static int add_smi(struct smi_info *smi); > static int try_smi_init(struct smi_info *smi); > static void cleanup_one_si(struct smi_info *to_clean); > +static void smi_timeout(unsigned long data); > > static ATOMIC_NOTIFIER_HEAD(xaction_notifier_list); > static int register_xaction_notifier(struct notifier_block *nb) > @@ -900,6 +901,7 @@ static void sender(void * > #endif > > mod_timer(&smi_info->si_timer, jiffies + SI_TIMEOUT_JIFFIES); > + smi_timeout((unsigned long)smi_info); > > if (smi_info->thread) > wake_up_process(smi_info->thread);
------------------------------------------------------------------------------ Free Software Download: Index, Search & Analyze Logs and other IT data in Real-Time with Splunk. Collect, index and harness all the fast moving IT data generated by your applications, servers and devices whether physical, virtual or in the cloud. Deliver compliance at lower cost and gain new business insights. http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________ Ipmitool-devel mailing list Ipmitool-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ipmitool-devel