On 11/27/2013 04:34 AM, Srinivas_G_Gowda@Dell.com wrote: > > *Dell - Internal Use - Confidential * > > I hit a bug during one of our stress tests, Here is the issue that I > am looking at. > > We have IPMI_READ_EVENT_MSG_BUFFER_CMD getting invoked from > smi_event_handler. > > In case we hit error scenario, say "OBF not ready in time" we do not > have smi_timeout driving the interface. > > Seems like the timer is not armed when we invoke > IPMI_READ_EVENT_MSG_BUFFER_CMD from smi_event_handler. > > For the proposed patch I checked the return value of mod_timer just > before smi_info->handlers->start_transaction, that returns 0 !!! > > gWithout smi_timeout handler getting called periodically, if the BMC > fails to set OBF flag during the msg transaction of > IPMI_READ_EVENT_MSG_BUFFER_CMD, > > the driver just keeps looping until the flag is set. Ideally we would > want BMC to set the flag, but in case it doesn’t we do not want the > driver to loop indefinitely rather hit KCS_ERROR states. > > To summarize, we do not have timer set to invoke smi_timeout() when we > call IPMI_READ_EVENT_MSG_BUFFER_CMD from smi_event_handler. > > Do you feel there is a better way to fix it or a bug elsewhere…! > Ok, I think I know what is happening, and I think I have a fix. I'm betting that you have interrupts on this, and I found a situation where if an interrupt came in at a certain time, it wouldn't start the timer. The attached patch should fix the problem. Can you try this out? Thanks for the detailed description. -corey