[Skiboot] [RFC PATCH] IPMI: Enable synchronous eSEL logging option

Vasant Hegde hegdevasant at linux.vnet.ibm.com
Mon Aug 10 20:22:50 AEST 2015


Presently we use queue method (ipmi_queue_msg) to send eSEL logs
to BMC.

There are cases like assert() where we want to commit messages
synchronously. This patch checks for log severity and logs PANIC
messages synchronously to BMC (Similar to what we do in FSP based
system).

Note:
  Presently we rely on event severity to decided the logging path.
  With this we should create log with severity PANIC to push events
  via synchrous path.

  Alternatively we can pass boolean variable to log_commit(). (like
  below). This approach allows users to decide on the logging path.

  int ipmi_elog_commit(struct errorlog *elog_buf, bool sync);
  struct platform {
	  ....
	  int             (*elog_commit)(struct errorlog *buf, bool sync);
	  ....
  };

 Let me know which is the best approach here.

-Vasant

Signed-off-by: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
---
Stewart,
  I've observed "reservation getting lost" issue [1] with synchronous path.
  Hence please *don't* merge this patch.

[1] https://github.com/open-power/tyan-openpower/issues/284

-Vasant

 hw/ipmi/ipmi-sel.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/hw/ipmi/ipmi-sel.c b/hw/ipmi/ipmi-sel.c
index 2bf3d03..f817e4a 100644
--- a/hw/ipmi/ipmi-sel.c
+++ b/hw/ipmi/ipmi-sel.c
@@ -370,7 +370,11 @@ int ipmi_elog_commit(struct errorlog *elog_buf)
 	msg->error = ipmi_elog_error;
 
 	msg->req_size = 0;
-	ipmi_queue_msg(msg);
+
+	if (elog_buf->event_severity == OPAL_ERROR_PANIC)
+		ipmi_queue_msg_sync(msg);
+	else
+		ipmi_queue_msg(msg);
 
 	return 0;
 }
-- 
2.1.0



More information about the Skiboot mailing list