diff options
author | Anshuman Khandual <khandual@linux.vnet.ibm.com> | 2014-10-13 16:48:45 +0530 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2014-10-15 14:34:18 +1100 |
commit | ae839f895a5ab94d1475a70368fb10428a10bb4b (patch) | |
tree | 00c7aa1b591e9f4e8c49c6da82631ee42fe804d6 /hw | |
parent | edcf6bc3f3af2c07b1e57ee5d0168f3b3f492871 (diff) | |
download | skiboot-ae839f895a5ab94d1475a70368fb10428a10bb4b.zip skiboot-ae839f895a5ab94d1475a70368fb10428a10bb4b.tar.gz skiboot-ae839f895a5ab94d1475a70368fb10428a10bb4b.tar.bz2 |
led: Handle all the FSP_MCLASS_INDICATOR class sub commands
Right now if any non-LED FSP_MCLASS_INDICATOR class sub
command is received, we print it as an invalid sub command
like the following which then eventually gets reported as an
unhandled FSP message.
[163022636453,5] FSPLED: Invalid FSP async sub command da1105
[163022638116,3] FSP: Unhandled message da1105
This patch defines the complete list of FSP_MCLASS_INDICATOR
sub commands and handle them in the registered FSP async command
client by sending a generic error acknowledgement to the FSP.
Reported-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com>
Reviewed-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/fsp/fsp-leds.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/hw/fsp/fsp-leds.c b/hw/fsp/fsp-leds.c index 05f12d8..4eea8d6 100644 --- a/hw/fsp/fsp-leds.c +++ b/hw/fsp/fsp-leds.c @@ -741,6 +741,8 @@ void fsp_set_led_state(struct fsp_msg *msg) /* Handle received indicator message from FSP */ static bool fsp_indicator_message(u32 cmd_sub_mod, struct fsp_msg *msg) { + u32 cmd; + /* LED support not available yet */ if (!led_support) { log_simple_error(&e_info(OPAL_RC_LED_SUPPORT), @@ -770,12 +772,73 @@ static bool fsp_indicator_message(u32 cmd_sub_mod, struct fsp_msg *msg) "FSP_CMD_SET_LED_STATE command received\n"); fsp_set_led_state(msg); return true; + /* + * FSP async sub commands which have not been implemented. + * For these async sub commands, print for the log and ack + * the field service processor with a generic error. + */ + case FSP_CMD_GET_MTMS_LIST: + prlog(PR_TRACE, PREFIX + "FSP_CMD_GET_MTMS_LIST command received\n"); + cmd = FSP_RSP_GET_MTMS_LIST; + break; + case FSP_CMD_RET_MTMS_BUFFER: + prlog(PR_TRACE, PREFIX + "FSP_CMD_RET_MTMS_BUFFER command received\n"); + cmd = FSP_RSP_RET_MTMS_BUFFER; + break; + case FSP_CMD_SET_ENCL_MTMS: + prlog(PR_TRACE, PREFIX + "FSP_CMD_SET_MTMS command received\n"); + cmd = FSP_RSP_SET_ENCL_MTMS; + break; + case FSP_CMD_CLR_INCT_ENCL: + prlog(PR_TRACE, PREFIX + "FSP_CMD_CLR_INCT_ENCL command received\n"); + cmd = FSP_RSP_CLR_INCT_ENCL; + break; + case FSP_CMD_ENCL_MCODE_INIT: + prlog(PR_TRACE, PREFIX + "FSP_CMD_ENCL_MCODE_INIT command received\n"); + cmd = FSP_RSP_ENCL_MCODE_INIT; + break; + case FSP_CMD_ENCL_MCODE_INTR: + prlog(PR_TRACE, PREFIX + "FSP_CMD_ENCL_MCODE_INTR command received\n"); + cmd = FSP_RSP_ENCL_MCODE_INTR; + break; + case FSP_CMD_ENCL_POWR_TRACE: + prlog(PR_TRACE, PREFIX + "FSP_CMD_ENCL_POWR_TRACE command received\n"); + cmd = FSP_RSP_ENCL_POWR_TRACE; + break; + case FSP_CMD_RET_ENCL_TRACE_BUFFER: + prlog(PR_TRACE, PREFIX + "FSP_CMD_RET_ENCL_TRACE_BUFFER \ + command received\n"); + cmd = FSP_RSP_RET_ENCL_TRACE_BUFFER; + break; + case FSP_CMD_GET_SPCN_LOOP_STATUS: + prlog(PR_TRACE, PREFIX + "FSP_CMD_GET_SPCN_LOOP_STATUS \ + command received\n"); + cmd = FSP_RSP_GET_SPCN_LOOP_STATUS; + break; + case FSP_CMD_INITIATE_LAMP_TEST: + /* XXX: FSP ACK not required for this sub command */ + prlog(PR_TRACE, PREFIX + "FSP_CMD_INITIATE_LAMP_TEST \ + command received\n"); + return true; default: prlog(PR_WARNING, PREFIX "Invalid FSP async sub command %06x\n", cmd_sub_mod); return false; } + cmd |= FSP_STATUS_GENERIC_ERROR; + fsp_queue_msg(fsp_mkmsg(cmd, 0), fsp_freemsg); + return true; } /* Indicator class client */ |