From 01f977c33d46f35ae6735c874d415a793d7bd9af Mon Sep 17 00:00:00 2001 From: Vasant Hegde Date: Wed, 6 Feb 2019 11:44:13 +0530 Subject: hw/bt: Add backend interface to disable ipmi message retry option During boot OPAL makes IPMI_GET_BT_CAPS call to BMC to get BT interface capabilities which includes IPMI message max resend count, message timeout, etc,. Most of the time OPAL gets response from BMC within specified timeout. In some corner cases (like mboxd daemon reset in BMC, BMC reboot, etc) OPAL may not get response within timeout period. In such scenarios, OPAL resends message until max resend count reaches. OPAL uses synchronous IPMI message (ipmi_queue_msg_sync()) for few operations like flash read, write, etc. Thread will wait in OPAL until it gets response from BMC. In some corner cases like BMC reboot, thread may wait in OPAL for long time (more than 20 seconds) and results in kernel hardlockup. This patch introduces new interface to disable message resend option. We will disable message resend option for synchrous message. This will greatly reduces kernel hardlock up issues. This is short term fix. Long term solution is to convert all synchronous messages to asynhrounous one. Signed-off-by: Vasant Hegde Signed-off-by: Stewart Smith --- core/ipmi.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'core') diff --git a/core/ipmi.c b/core/ipmi.c index 5cdc924..6770b43 100644 --- a/core/ipmi.c +++ b/core/ipmi.c @@ -176,6 +176,8 @@ void ipmi_queue_msg_sync(struct ipmi_msg *msg) lock(&sync_lock); while (sync_msg); sync_msg = msg; + if (msg->backend->disable_retry) + msg->backend->disable_retry(msg); ipmi_queue_msg(msg); unlock(&sync_lock); -- cgit v1.1