diff options
-rw-r--r-- | hw/fsp/fsp-ipmi.c | 16 | ||||
-rw-r--r-- | 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, |