aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorVasant Hegde <hegdevasant@linux.vnet.ibm.com>2019-02-06 11:44:13 +0530
committerVasant Hegde <hegdevasant@linux.vnet.ibm.com>2019-03-04 22:02:31 +0530
commit57b6b87a7810eacc7113d15a6b15535197a7eaf0 (patch)
tree9a593065606180c20cb80cfb005dd0b3f162c1bd /include
parent0d8a56aee77cbaa0bb9c4d83cf1f271aa2992fc7 (diff)
downloadskiboot-57b6b87a7810eacc7113d15a6b15535197a7eaf0.zip
skiboot-57b6b87a7810eacc7113d15a6b15535197a7eaf0.tar.gz
skiboot-57b6b87a7810eacc7113d15a6b15535197a7eaf0.tar.bz2
hw/bt: Add backend interface to disable ipmi message retry option
[ Upstream commit 01f977c33d46f35ae6735c874d415a793d7bd9af ] 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 <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.ibm.com> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Diffstat (limited to 'include')
-rw-r--r--include/ipmi.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/ipmi.h b/include/ipmi.h
index a2735f1..4999bb5 100644
--- a/include/ipmi.h
+++ b/include/ipmi.h
@@ -181,6 +181,7 @@ struct ipmi_backend {
int (*queue_msg)(struct ipmi_msg *);
int (*queue_msg_head)(struct ipmi_msg *);
int (*dequeue_msg)(struct ipmi_msg *);
+ void (*disable_retry)(struct ipmi_msg *);
};
extern struct ipmi_backend *ipmi_backend;