Sorry, I missed this.  What version of Linux?  I believe this has been 
fixed a while ago, but you may not have the fix.

-corey

On 03/01/2013 05:08 PM, David Bashaw wrote:
> 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


------------------------------------------------------------------------------
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

Reply via email to