> 
> No, I did not see final else in ipmi_thread ever getting hit.
> 
> I am looking at  ipmi_thread_busy_wait(),
>  by default the below condition never gets set unitl I explicetly set 
> "kipmid_max_busy_us" to some value.
> if (smi_info->intf_num < num_max_busy_us)
> 
> This means by default "max_busy_us" is always 0. Hence Ill basically end up 
> only doing this
> if (max_busy_us == 0 || smi_result != SI_SM_CALL_WITH_DELAY)
>                 ipmi_si_set_not_busy(busy_until);
> 
> That probably explains why I never hit the else condition in ipmi_thread.
> 
> I see ipmi_start_timer_if_necessary() getting called from ipmi_thread() after 
> setting "kipmid_max_busy_us"
> Ill set "kipmid_max_busy_us=300" and run the stress. I am hoping that we will 
> not see the issue in this case.
> 

I don't see the issue after this change. (I am going to try again just to be 
sure)
I am trying to figure out how to hit ipmi_start_timer_if_necessary() in default 
mode...! 


Thanks,
G

> 
> Thanks,
> G
> 
> 
> 
>> Thanks,
>>
>> -corey
>>
>>>
>>>
>>> Thanks,
>>> G
>>>
>>> -----Original Message-----
>>> From: Corey Minyard [mailto:tcminy...@gmail.com] On Behalf Of Corey Minyard
>>> Sent: Tuesday, December 03, 2013 2:34 AM
>>> To: Gowda, Srinivas G
>>> Cc: tcminy...@gmail.com; linux-kernel@vger.kernel.org; openi...@mvista.com
>>> Subject: Re: [PATCH 1/1] ipmi: setting mod_timer for read_event_msg buffer 
>>> cmd On 12/02/2013 08:49 AM, srinivas_g_go...@dell.com wrote: 
>>>> Thanks for the patch Corey. 
>>>> I am afraid that the system does not have interrupts enabled. It uses 
>>>> polling mode. 
>>>>
>>>> When the error is seen, I know for a fact that in function
>>>> ipmi_thread() smi_result is SI_SM_CALL_WITH_DELAY, I have some logs where 
>>>> in busy_wait always reads as 1. Not sure if it was ever set to 0. (ill 
>>>> check this again).
>>>> Ill anyway run the test using the patch that you have shared. 
>>>>
>>>> b/w would it harm if we were to do to something like this ?
>>> Unfortunately, that would start the timer unnecessarily.  You don't want to 
>>> start timers unnecessarily in the kernel or the power management police 
>>> will come after you.
>>> The patch I sent did have this call in the non-idle portion of the kernel 
>>> thread and that should have done the same thing.  Plus, if you are using 
>>> the kernel thread, it's going to run periodically and should kick things 
>>> off again if they get stuck.  I'm suspicious now that something else is 
>>> going on.
>>> -corey 
>>>> Signed-off-by: Srinivas Gowda <srinivas_g_go...@dell.com>
>>>> ---
>>>>   drivers/char/ipmi/ipmi_si_intf.c | 1 +
>>>>   1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/drivers/char/ipmi/ipmi_si_intf.c
>>>> b/drivers/char/ipmi/ipmi_si_intf.c
>>>> index 15e4a60..e23484f 100644
>>>> --- a/drivers/char/ipmi/ipmi_si_intf.c
>>>> +++ b/drivers/char/ipmi/ipmi_si_intf.c
>>>> @@ -1008,6 +1008,7 @@ static int ipmi_thread(void *data)
>>>>                spin_unlock_irqrestore(&(smi_info->si_lock), flags);
>>>>                busy_wait = ipmi_thread_busy_wait(smi_result, smi_info,
>>>>                                                  &busy_until);
>>>> +             ipmi_start_timer_if_necessary(smi_info);
>>>>                if (smi_result == SI_SM_CALL_WITHOUT_DELAY)
>>>>                        ; /* do nothing */
>>>>                else if (smi_result == SI_SM_CALL_WITH_DELAY && 
>>>> busy_wait)
>>
> 
> 
> 

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

Reply via email to