So I'm still chasing this issue.

I have added some debugs into ipmi_si_intf.c : handle_transaction_done().
I reproduced the error and got the log messages.
Below are my mods to handle_transaction_done() (I have hacked lots of other 
places too).
Below that are the log messages.

static void handle_transaction_done(struct smi_info *smi_info)
{
        struct ipmi_smi_msg *msg;
        struct ipmi_recv_msg *recv_msg;
        unsigned long user;

#ifdef DEBUG_TIMING
        struct timeval t;
#endif

        switch (smi_info->si_state) {
        case SI_NORMAL:
                if (!smi_info->curr_msg)
                        break;

                smi_info->curr_msg->rsp_size
                        = smi_info->handlers->get_result(
                                smi_info->si_sm,
                                smi_info->curr_msg->rsp,
                                IPMI_MAX_MSG_LENGTH, &user);

                /* check that the user for the current result matches
                 * the user in the current smi message info.
                 */
                if (user != ((unsigned long) smi_info->curr_msg)) {
                        printk(KERN_ERR "%s:line:%d users queue link does not 
match\n",
                                __FUNCTION__, __LINE__);
                }

                /* check that smi msg msgid == ipmi msgid */
                recv_msg = (struct ipmi_recv_msg *) 
smi_info->curr_msg->user_data;
                if (recv_msg && (recv_msg->msgid != smi_info->curr_msg->msgid)) 
{
                        printk(KERN_ERR "%s: ipmi msgid %ld does not match smi 
msgid %ld\n",
                                __FUNCTION__, recv_msg->msgid, 
smi_info->curr_msg->msgid);
                }

                /* check req and rsp match between smi msg->data[] and smi 
msg->rsp[] */
                if ((smi_info->curr_msg->data[0] >> 2) != 
((smi_info->curr_msg->rsp[0] >> 2) & 0xFE)) {
                        printk(KERN_ERR "%s: ipmi_smi_msg error. expected 
netfn:%x cmd:%x, got netfn:%x cmd:%x msgid:%ld\n",
                        __FUNCTION__, (smi_info->curr_msg->data[0] >> 2) | 1,
                        smi_info->curr_msg->data[1], 
(smi_info->curr_msg->rsp[0] >> 2), smi_info->curr_msg->rsp[1],
                        smi_info->curr_msg->msgid);
                        smi_inc_stat(smi_info, bmc_incorrect_responses);
                }

                /* compare response netfn and cmd in ipmi_smi_msg with 
ipmi_recv_msg kernel_ipmi_msg */
                if ((smi_info->curr_msg->rsp[0] >> 2) != (recv_msg->msg.netfn | 
1) ||
                        smi_info->curr_msg->data[1] != recv_msg->msg.cmd) {
                        printk(KERN_ERR "%s: ipmi_recv_msg error. expected 
netfn:%x cmd:%x, got netfn:%x cmd:%x msgid:%ld\n",
                        __FUNCTION__, (recv_msg->msg.netfn | 1), 
recv_msg->msg.cmd,
                        (smi_info->curr_msg->rsp[0] >> 2), 
smi_info->curr_msg->rsp[1], recv_msg->msgid);
                        smi_inc_stat(smi_info, bmc_incorrect_responses);
                }

Sep 27 09:52:03 oak-sh334 kernel: handle_transaction_done: ipmi_smi_msg error. 
expected netfn:b cmd:40, got netfn:7 cmd:35 msgid:113
Sep 27 09:52:03 oak-sh334 kernel: handle_transaction_done: ipmi_recv_msg error. 
expected netfn:b cmd:40, got netfn:7 cmd:35 msgid:113
Sep 27 09:52:03 oak-sh334 kernel: IPMI message handler: BMC returned incorrect 
response, expected netfn b cmd 40, got netfn 7 cmd 35 msgid:113

The message ipmi_recv_msg error is interesting in that the contents of the smi 
message data do not match the kernel message data as
It exists in the user_data buffer. Not sure how this happens.

Hope this is useful info.

Dave



------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
Openipmi-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openipmi-developer

Reply via email to