diff options
author | Chris Cain <cjcain@us.ibm.com> | 2016-11-10 13:16:05 -0600 |
---|---|---|
committer | Christopher J. Cain <cjcain@us.ibm.com> | 2016-11-16 17:20:16 -0500 |
commit | 8654bf4844176f1f7f28792362e475617fea1a23 (patch) | |
tree | dd6c865e3d38640c32a6332c3373d3fa4bbd619d /src | |
parent | 4dd19f3f1c69ced74b76a76571e9962f74546caa (diff) | |
download | talos-occ-8654bf4844176f1f7f28792362e475617fea1a23.tar.gz talos-occ-8654bf4844176f1f7f28792362e475617fea1a23.zip |
Open linear window for SRAM access on OCB channel 2 for secure mode
Also enabled call home logs and some debug commands
Change-Id: Ieac936fd1b259b0165e54ab98e05899e0d2b6912
CQ: SW371042
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/32602
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Martha Broyles <mbroyles@us.ibm.com>
Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Reviewed-by: Christopher J. Cain <cjcain@us.ibm.com>
Diffstat (limited to 'src')
-rwxr-xr-x | src/occ_405/cmdh/cmdh_dbug_cmd.h | 1 | ||||
-rwxr-xr-x | src/occ_405/cmdh/cmdh_fsp.c | 16 | ||||
-rwxr-xr-x | src/occ_405/cmdh/cmdh_fsp_cmds.c | 31 | ||||
-rwxr-xr-x | src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c | 9 | ||||
-rwxr-xr-x | src/occ_405/incl/occ_common.h | 1 | ||||
-rwxr-xr-x | src/occ_405/main.c | 3 | ||||
-rw-r--r-- | src/occ_405/occLinkInputFile | 1 | ||||
-rw-r--r-- | src/occ_405/occ_service_codes.h | 2 |
8 files changed, 36 insertions, 28 deletions
diff --git a/src/occ_405/cmdh/cmdh_dbug_cmd.h b/src/occ_405/cmdh/cmdh_dbug_cmd.h index fc46db3..fa5074d 100755 --- a/src/occ_405/cmdh/cmdh_dbug_cmd.h +++ b/src/occ_405/cmdh/cmdh_dbug_cmd.h @@ -75,6 +75,7 @@ typedef struct __attribute__ ((packed)) //************************************************************************* // Function Prototypes //************************************************************************* +errlHndl_t cmdhDbugCmd(void * i_arg); //************************************************************************* // Functions diff --git a/src/occ_405/cmdh/cmdh_fsp.c b/src/occ_405/cmdh/cmdh_fsp.c index e6af4eb..798826e 100755 --- a/src/occ_405/cmdh/cmdh_fsp.c +++ b/src/occ_405/cmdh/cmdh_fsp.c @@ -24,7 +24,6 @@ /* IBM_PROLOG_END_TAG */ #include "ssx.h" -//#include "special_wakeup.h" // lib/special_wakeup.h doesn't exist #include "cmdh_service_codes.h" #include "errl.h" #include "trac.h" @@ -230,6 +229,21 @@ void cmdh_comm_init(void) ocb_request_schedule(&G_fsp_doorbell_ocb_request); + CHECKPOINT(OCB_DOORBELL_INITIALIZED); + + // ----------------------------------------------------------------- + // Open Up Linear Window for FSP & BMC Communication in Secure Mode + // ----------------------------------------------------------------- + // OCB channel 0 is used by TMGT (FSP) to write to the command buffer + // OCB channel 2 is used by BMC to write to the command buffer + uint8_t channel = 0; + if (G_occ_interrupt_type != FSP_SUPPORTED_OCC) + { + channel = 2; + } + // Initialize the linear window to allow writes to command buffer in SRAM + ocb_linear_window_initialize(channel, CMDH_LINEAR_WINDOW_BASE_ADDRESS, LOG_SIZEOF_FSP_CMD_BUFFER); + CHECKPOINT(OCB_INITIALIZED); // ---------------------------------------------------- diff --git a/src/occ_405/cmdh/cmdh_fsp_cmds.c b/src/occ_405/cmdh/cmdh_fsp_cmds.c index 171bba3..b0be790 100755 --- a/src/occ_405/cmdh/cmdh_fsp_cmds.c +++ b/src/occ_405/cmdh/cmdh_fsp_cmds.c @@ -47,6 +47,7 @@ #include <proc_data.h> #include "homer.h" #include <centaur_data.h> +#include "cmdh_dbug_cmd.h" extern dimm_sensor_flags_t G_dimm_temp_expired_bitmap; @@ -476,7 +477,7 @@ ERRL_RC cmdh_poll_v20(cmdh_fsp_rsp_t * o_rsp_ptr) // // Name: cmdh_reset_prep_t // -// Description: TODO -- Add description +// Description: Process reset prep command // // End Function Specification errlHndl_t cmdh_reset_prep (const cmdh_fsp_cmd_t * i_cmd_ptr, @@ -663,7 +664,7 @@ errlHndl_t cmdh_clear_elog (const cmdh_fsp_cmd_t * i_cmd_ptr, // // Name: cmdh_dbug_get_trace // -// Description: TODO Add description +// Description: Process get trace command // // End Function Specification void cmdh_dbug_get_trace (const cmdh_fsp_cmd_t * i_cmd_ptr, @@ -696,7 +697,7 @@ void cmdh_dbug_get_trace (const cmdh_fsp_cmd_t * i_cmd_ptr, // // Name: cmdh_dbug_get_ame_sensor // -// Description: TODO Add description +// Description: Process get sensor data command // // End Function Specification void cmdh_dbug_get_ame_sensor (const cmdh_fsp_cmd_t * i_cmd_ptr, @@ -809,7 +810,7 @@ void cmdh_dbug_get_ame_sensor (const cmdh_fsp_cmd_t * i_cmd_ptr, // // Name: cmdh_dbug_peek // -// Description: TODO Add description +// Description: Process peek debug command // // End Function Specification void cmdh_dbug_peek (const cmdh_fsp_cmd_t * i_cmd_ptr, @@ -841,7 +842,7 @@ void cmdh_dbug_peek (const cmdh_fsp_cmd_t * i_cmd_ptr, // Make sure we don't overflow our response buffer l_len = (l_len > CMDH_FSP_RSP_DATA_SIZE ) ? CMDH_FSP_RSP_DATA_SIZE : l_len; - // TODO: didn't do anything, respond with zero bytes + // didn't do anything, respond with zero bytes l_len = 0; break; @@ -901,7 +902,7 @@ void cmdh_dbug_peek (const cmdh_fsp_cmd_t * i_cmd_ptr, // // Name: cmdh_dbug_get_apss_data // -// Description: TODO Add description +// Description: Process APSS data request // // End Function Specification void cmdh_dbug_get_apss_data (const cmdh_fsp_cmd_t * i_cmd_ptr, @@ -963,8 +964,8 @@ void cmdh_dbug_cmd (const cmdh_fsp_cmd_t * i_cmd_ptr, uint8_t l_rc = 0; uint8_t l_sub_cmd = 0; errl_generic_resp_t * l_err_rsp_ptr = (errl_generic_resp_t *) o_rsp_ptr; -// errlHndl_t l_errl = NULL; -// cmdhDbugCmdArg_t l_cmdh_dbug_args; + errlHndl_t l_errl = NULL; + cmdhDbugCmdArg_t l_cmdh_dbug_args; // Sub Command for debug is always first byte of data l_sub_cmd = i_cmd_ptr->data[0]; @@ -1008,8 +1009,7 @@ void cmdh_dbug_cmd (const cmdh_fsp_cmd_t * i_cmd_ptr, TRAC_reset_buf(); G_rsp_status = ERRL_RC_SUCCESS; break; -/* TEMP -- NOT YET SUPPORTED */ -#if 0 + case DBUG_PEEK: cmdh_dbug_peek(i_cmd_ptr, o_rsp_ptr); break; @@ -1058,7 +1058,6 @@ void cmdh_dbug_cmd (const cmdh_fsp_cmd_t * i_cmd_ptr, commitErrl( &l_errl ); } break; -#endif // #if 0 case DBUG_DUMP_APSS_DATA: cmdh_dbug_get_apss_data(i_cmd_ptr, o_rsp_ptr); @@ -1084,7 +1083,7 @@ void cmdh_dbug_cmd (const cmdh_fsp_cmd_t * i_cmd_ptr, // // Name: SMGR_base_setmodestate_cmdh // -// Description: TODO Add description +// Description: Process set mode and state command // // End Function Specification errlHndl_t cmdh_tmgt_setmodestate(const cmdh_fsp_cmd_t * i_cmd_ptr, @@ -1262,7 +1261,7 @@ errlHndl_t cmdh_tmgt_setmodestate(const cmdh_fsp_cmd_t * i_cmd_ptr, // // Name: cmdh_amec_pass_through // -// Description: TODO Add description +// Description: Process Amester pass-through command // // End Function Specification errlHndl_t cmdh_amec_pass_through(const cmdh_fsp_cmd_t * i_cmd_ptr, @@ -1328,8 +1327,8 @@ errlHndl_t cmdh_amec_pass_through(const cmdh_fsp_cmd_t * i_cmd_ptr, AMEC_AMESTER_INTERFACE, //modId INTERNAL_FAILURE, //reasoncode OCC_NO_EXTENDED_RC, //Extended reason code - ERRL_SEV_INFORMATIONAL, //Severity - NULL, //TODO: create trace //Trace Buf + ERRL_SEV_INFORMATIONAL, //Severity + NULL, //Trace Buf DEFAULT_TRACE_SIZE, //Trace Size l_rsp_data_length, //userdata1 IPMI_MAX_MSG_SIZE //userdata2 @@ -1369,7 +1368,7 @@ errlHndl_t cmdh_amec_pass_through(const cmdh_fsp_cmd_t * i_cmd_ptr, // // Name: cmdh_tmgt_get_field_debug_data // -// Description: TODO Add description +// Description: Process get field debug data command // // End Function Specification errlHndl_t cmdh_tmgt_get_field_debug_data(const cmdh_fsp_cmd_t * i_cmd_ptr, diff --git a/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c b/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c index c36b2f1..c076f1b 100755 --- a/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c +++ b/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c @@ -1075,15 +1075,6 @@ errlHndl_t data_store_avsbus_config(const cmdh_fsp_cmd_t * i_cmd_ptr, if (l_invalid_data) { - /* @ - * @errortype - * @moduleid DATA_STORE_GENERIC_DATA - * @reasoncode INVALID_INPUT_DATA - * @userdata1 data size - * @userdata2 packet version - * @userdata4 OCC_NO_EXTENDED_RC - * @devdesc OCC recieved an invalid data packet from the FSP - */ cmdh_build_errl_rsp(i_cmd_ptr, o_rsp_ptr, ERRL_RC_INVALID_DATA, &l_err); G_avsbus_vdd_monitoring = FALSE; G_avsbus_vdn_monitoring = FALSE; diff --git a/src/occ_405/incl/occ_common.h b/src/occ_405/incl/occ_common.h index ae0172a..2dc0c9f 100755 --- a/src/occ_405/incl/occ_common.h +++ b/src/occ_405/incl/occ_common.h @@ -272,6 +272,7 @@ enum APPLETS_INITIALIZED = 0x0cff, CMDH_THREAD_STARTED = 0x0dff, INIT_OCB = 0x0e05, + OCB_DOORBELL_INITIALIZED = 0x0e06, OCB_INITIALIZED = 0x0e07, COMM_INIT_COMPLETED = 0x0eff, ABOUT_TO_HALT = 0x0f00, diff --git a/src/occ_405/main.c b/src/occ_405/main.c index 18e680f..33ba4c7 100755 --- a/src/occ_405/main.c +++ b/src/occ_405/main.c @@ -1055,11 +1055,10 @@ void Main_thread_routine(void *private) } else { - // For Simics phase 1, we don't want to call the call-home thread // Only Master OCC will log call home data if (OCC_MASTER == G_occ_role) { - //chom_main(); + chom_main(); } } } diff --git a/src/occ_405/occLinkInputFile b/src/occ_405/occLinkInputFile index eb0167d..ba2e047 100644 --- a/src/occ_405/occLinkInputFile +++ b/src/occ_405/occLinkInputFile @@ -21,6 +21,7 @@ INPUT ( amec_amester.o avsbus.o centaur_control.o centaur_data.o + chom.o cmdh_dbug_cmd.o cmdh_fsp_cmds_datacnfg.o cmdh_fsp_cmds.o diff --git a/src/occ_405/occ_service_codes.h b/src/occ_405/occ_service_codes.h index 3fc866f..2654851 100644 --- a/src/occ_405/occ_service_codes.h +++ b/src/occ_405/occ_service_codes.h @@ -253,6 +253,8 @@ enum occModuleId enum occUserDataType { OCC_FULL_ELOG_TYPE = 0x0000, // complete error log data + OCC_TRACE_TYPE = 0x0002, // OCC trace (from TMGT) + OCC_EXCEPTION_TYPE = 0x00E0, // OCC exception data (from TMGT) }; enum occUserDataVersion |