I sent this some time ago. Is anyone still actively working IPMI bugs? I would like to make some progress on this issue. We see this on lots of machines here.
Regards. Dave -----Original Message----- From: David Bashaw Sent: Tuesday, January 22, 2013 3:04 PM To: [email protected] Subject: BMC returned incorrect response, expected Hello. Still chasing this bug. I posted some time ago some debugs and was asked to clean them up and try again. So, I re-coded my debug. The messages are below and the code change follows. ====================== ( 1 ) handle_transaction_done: smi cmd:0x2c does not match the smi cmd:0x06 in response ( 2 ) handle_transaction_done: smi netfn:0x07 does not match user data cmd:0x2d IPMI message handler: BMC returned incorrect response, expected netfn 2d cmd 0, got netfn 7 cmd 35 msgid:0 handle_transaction_done: smi cmd:0x06 does not match the smi cmd:0x2c in response handle_transaction_done: smi netfn:0x2d does not match user data cmd:0x07 IPMI message handler: BMC returned incorrect response, expected netfn 7 cmd 1, got netfn 2d cmd 0 msgid:1 ====================== It appears the command and response in SMI message do not match what is in the user data. I hope this is helpful. Dave 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); recv_msg = (struct ipmi_recv_msg *) smi_info->curr_msg->user_data; if (recv_msg) { int err = 0; u8 msgCmd = (smi_info->curr_msg->data[0] >> 2); /* the request */ u8 CurMsgCmd = ((smi_info->curr_msg->rsp[0] >> 2) & 0xFE); /* the resp */ u8 smiCmd = smi_info->curr_msg->data[1]; u8 RecvMsgCmd = recv_msg->msg.cmd; u8 smiNetfn = (smi_info->curr_msg->rsp[0] >> 2); u8 RecvMsgNetfn = (recv_msg->msg.netfn | 1); ( 1 ) --- /* check req and rsp match between smi msg->data[] and smi msg->rsp[] */ if (msgCmd != CurMsgCmd) { printk(KERN_ERR "%s: smi cmd:0x%02x does not match the smi cmd:0x%02x in response\n", __FUNCTION__, msgCmd, CurMsgCmd); ++err; } ( 2 ) ---- /* compare smi cmd and userdata cmd */ if (smiCmd != RecvMsgCmd) { printk(KERN_ERR "%s: smi cmd:0x%02x does not match user data cmd:0x%02x\n", __FUNCTION__, smiCmd, RecvMsgCmd); ++err; } /* compare smi request netfn matches user data netfn */ if (smiNetfn != RecvMsgNetfn) { printk(KERN_ERR "%s: smi netfn:0x%02x does not match user data cmd:0x%02x\n", __FUNCTION__, smiNetfn, RecvMsgNetfn); ++err; } if (err) { smi_inc_stat(smi_info, bmc_incorrect_responses); } } ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_feb _______________________________________________ Openipmi-developer mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openipmi-developer
