summaryrefslogtreecommitdiffstats
path: root/src/occ_405
diff options
context:
space:
mode:
authorChris Cain <cjcain@us.ibm.com>2016-11-10 13:16:05 -0600
committerChristopher J. Cain <cjcain@us.ibm.com>2016-11-16 17:20:16 -0500
commit8654bf4844176f1f7f28792362e475617fea1a23 (patch)
treedd6c865e3d38640c32a6332c3373d3fa4bbd619d /src/occ_405
parent4dd19f3f1c69ced74b76a76571e9962f74546caa (diff)
downloadtalos-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/occ_405')
-rwxr-xr-xsrc/occ_405/cmdh/cmdh_dbug_cmd.h1
-rwxr-xr-xsrc/occ_405/cmdh/cmdh_fsp.c16
-rwxr-xr-xsrc/occ_405/cmdh/cmdh_fsp_cmds.c31
-rwxr-xr-xsrc/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c9
-rwxr-xr-xsrc/occ_405/incl/occ_common.h1
-rwxr-xr-xsrc/occ_405/main.c3
-rw-r--r--src/occ_405/occLinkInputFile1
-rw-r--r--src/occ_405/occ_service_codes.h2
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
OpenPOWER on IntegriCloud