Hello,

We noticed recently that ipmitool started randomly having problems when we
upgraded the kernel from 2.6.32.(28) to 2.6.37. For example:

# ipmitool sdr
Unable to obtain SDR reservation
Unable to open SDR for reading

And at the same time dmesg was populated with these kinds of messages:
[ 1248.568274] IPMI message handler: BMC returned incorrect response,
expected netfn b cmd 22, got netfn b cmd 20
[ 1248.570735] IPMI message handler: BMC returned incorrect response,
expected netfn 7 cmd 35, got netfn b cmd 22
[ 2035.155582] IPMI message handler: BMC returned incorrect response,
expected netfn b cmd 22, got netfn b cmd 20
[ 2459.722198] IPMI message handler: BMC returned incorrect response,
expected netfn b cmd 22, got netfn b cmd 20

The command was many times successful without any problems, but every now
and then (quite often) the above problems were seen. The ipmitool used is
from debian lenny: ipmitool version 1.8.9 and the motherboard of the
machine is Supermicro X8DTI-F.


As it looked like the problem is in the kernel, I started to revert
possible commits concerning ipmi, and indeed find out that this is the one
after which it started to fail:

commit 3326f4f2276791561af1fd5f2020be0186459813
Author: Matthew Garrett <m...@redhat.com>
Date:   Wed May 26 14:43:49 2010 -0700

    ipmi: reduce polling

    We can reasonably alter the poll rate depending on whether we're
    performing a transaction or merely waiting for an event.



And the parts in that commit, which should be reverted to make it stable
again are:

@@ -899,13 +899,10 @@ static void sender(void                *send_info,
        printk("**Enqueue: %d.%9.9d\n", t.tv_sec, t.tv_usec);
 #endif

        mod_timer(&smi_info->si_timer, jiffies + SI_TIMEOUT_JIFFIES);

-       if (smi_info->thread)
-               wake_up_process(smi_info->thread);
-
        if (smi_info->run_to_completion) {
                /*
                 * If we are running to completion, then throw it in
                 * the list and run transactions until everything is
                 * clear.  Priority doesn't matter here.
@@ -1022,12 +1019,10 @@ static int ipmi_thread(void *data)
                                                  &busy_until);
                if (smi_result == SI_SM_CALL_WITHOUT_DELAY)
                        ; /* do nothing */
                else if (smi_result == SI_SM_CALL_WITH_DELAY && busy_wait)
                        schedule();
-               else if (smi_result == SI_SM_IDLE)
-                       schedule_timeout_interruptible(100);
                else
                        schedule_timeout_interruptible(1);
        }
        return 0;
 }




Please, let me know if you need any additional assistance regarding the
problem.



Best regards,
        Mika Länsirinne



------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Ipmitool-devel mailing list
Ipmitool-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ipmitool-devel

Reply via email to