[Skiboot] [PATCH V2] hw/bt.c: Retry sending ipmi message in bt with correct data

Mamatha Inamdar mamatha4 at linux.vnet.ibm.com
Mon Feb 29 22:49:57 AEDT 2016


When bt times out reading data from BMC, it will retry sending same command,
but while retrying it's failing to send the correct data to BMC.

This patch will send the correct data while retrying the sent message.

Changes in V2:
1)Check for bt_idle() before calling bt_send_msg()

before fix:
IPMIMain: [693 WARNING][corecmdselect.c:913]Request: Channel:f; Netfn:a; Cmd:11; Data:0 0 0 ff
IPMIMain: [693 WARNING][corecmdselect.c:913]Request: Channel:f; Netfn:3f; Cmd:ff; Data:ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff ff f

After Fix:

2693:Feb 19 09:21:21 AMIA0423F306276 IPMIMain: [693 WARNING][corecmdselect.c:913]Request: Channel:f; Netfn:a; Cmd:11; Data:0 0 0 ff
2695:Feb 19 09:21:21 AMIA0423F306276 IPMIMain: [693 WARNING][corecmdselect.c:913]Request: Channel:f; Netfn:a; Cmd:11; Data:0 0 0 ff

Cc: stable

Signed-off-by: Mamatha Inamdar <mamatha4 at linux.vnet.ibm.com>
---
 hw/bt.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/hw/bt.c b/hw/bt.c
index 3325f69..f5fd5d7 100644
--- a/hw/bt.c
+++ b/hw/bt.c
@@ -396,13 +396,13 @@ static void bt_expire_old_msg(uint64_t tb)
 		if (bt_msg->send_count < BT_MAX_SEND_COUNT) {
 			/* A message timeout is usually due to the BMC
 			clearing the H2B_ATN flag without actually
-			doing anything. The data will still be in the
-			FIFO so just reset the flag.*/
+			doing anything. */
 			BT_Q_ERR(bt_msg, "Retry sending message");
-			bt_msg->send_count++;
-
 			bt_msg->tb = tb;
-			bt_outb(BT_CTRL_H2B_ATN, BT_CTRL);
+
+			/* retry sending ipmi_msg */
+			if (!bt_idle())
+				bt_send_msg(bt_msg);
 		} else {
 			BT_Q_ERR(bt_msg, "Timeout sending message");
 			bt_msg_del(bt_msg);



More information about the Skiboot mailing list