[Skiboot] [PATCH] OPAL:Handle mbox response with bad status:0x24 during FSP termination

Mamatha Inamdar mamatha4 at linux.vnet.ibm.com
Wed Jan 27 19:49:44 AEDT 2016


Problem Description:
During FSP termination/reset, FSP received mbox command from OPAL for  
"Fetching platform management function data". As FSP is in termination 
state DMAE operation failed to write memory data to hypervisor, 
so FSP sent mbox command with response status as 0x24 to OPAL and
OPAL committed a predictive log with SRC BB822411 and sent back 
response status as 0xFE, which FSP IPMI will not understand the 
failure at the Host and IPMI will log the error.

Fix:This patch is to fix when OPAL receives a bad response from FSP 0x24 
due to DMAE error, commit informational log and return response status 
as SUCCESS and for all other bad status response commit predictive log. 

Signed-off-by: Mamatha Inamdar <mamatha4 at linux.vnet.ibm.com>
---
 hw/fsp/fsp-ipmi.c  |   16 +++++++++++++---
 include/errorlog.h |    2 ++
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/hw/fsp/fsp-ipmi.c b/hw/fsp/fsp-ipmi.c
index 750d144..f803f17 100644
--- a/hw/fsp/fsp-ipmi.c
+++ b/hw/fsp/fsp-ipmi.c
@@ -50,6 +50,10 @@ DEFINE_LOG_ENTRY(OPAL_RC_IPMI_RESP, OPAL_PLATFORM_ERR_EVT, OPAL_IPMI,
 		 OPAL_PLATFORM_FIRMWARE, OPAL_PREDICTIVE_ERR_GENERAL,
 		 OPAL_NA);
 
+DEFINE_LOG_ENTRY(OPAL_RC_IPMI_DMA_ERROR_RESP, OPAL_PLATFORM_ERR_EVT, OPAL_IPMI,
+		 OPAL_PLATFORM_FIRMWARE, OPAL_INFO,
+		 OPAL_NA);
+
 struct fsp_ipmi_msg {
 	struct list_node	link;
 	struct ipmi_msg		ipmi_msg;
@@ -281,13 +285,19 @@ static bool fsp_ipmi_read_response(struct fsp_msg *msg)
 	assert(msg->data.words[1] == PSI_DMA_PLAT_RESP_BUF);
 
 	if (status != FSP_STATUS_SUCCESS) {
-		log_simple_error(&e_info(OPAL_RC_IPMI_RESP), "IPMI: Response "
-				 "with bad status:0x%02x\n", status);
+		if(status == FSP_STATUS_DMA_ERROR)
+			log_simple_error(&e_info(OPAL_RC_IPMI_DMA_ERROR_RESP), "IPMI: Received "
+				"DMA ERROR response from FSP, this may be due to FSP "
+				"is in termination state:0x%02x\n", status);
+		else
+			log_simple_error(&e_info(OPAL_RC_IPMI_RESP), "IPMI: FSP response "
+				 "received with bad status:0x%02x\n", status);
+
 		fsp_ipmi_cmd_done(ipmi_msg->cmd,
 				  IPMI_NETFN_RETURN_CODE(ipmi_msg->netfn),
 				  IPMI_ERR_UNSPECIFIED);
 		return fsp_ipmi_send_response(FSP_RSP_PLAT_DATA |
-					      FSP_STATUS_GENERIC_ERROR);
+					      FSP_STATUS_SUCCESS);
 	}
 
 	/* KCS response message format */
diff --git a/include/errorlog.h b/include/errorlog.h
index 33d2de2..ed90dab 100644
--- a/include/errorlog.h
+++ b/include/errorlog.h
@@ -322,6 +322,8 @@ enum opal_reasoncode {
 /* IPMI */
 	OPAL_RC_IPMI_REQ	= OPAL_IP | 0x10,
 	OPAL_RC_IPMI_RESP	= OPAL_IP | 0x11,
+	OPAL_RC_IPMI_DMA_ERROR_RESP
+				= OPAL_IP | 0x12,
 
 /* Platform error */
 	OPAL_RC_ABNORMAL_REBOOT	= OPAL_CE | 0x10,



More information about the Skiboot mailing list