diff options
author | mbroyles <mbroyles@us.ibm.com> | 2018-03-30 16:17:12 -0500 |
---|---|---|
committer | Martha Broyles <mbroyles@us.ibm.com> | 2018-04-02 09:34:43 -0400 |
commit | b57b1a9333a52fb728c14fd3c56633494b64b05b (patch) | |
tree | 6eda1626375380729ff72a756906c12e233baedf | |
parent | 1bbbfec92b3a3744a6ffbc5e9f4a4eb46ca4abd1 (diff) | |
download | talos-occ-b57b1a9333a52fb728c14fd3c56633494b64b05b.tar.gz talos-occ-b57b1a9333a52fb728c14fd3c56633494b64b05b.zip |
Prevent Nimbus tasks from running prior to knowing memory type
Change-Id: I8c4a3566f111235a50066a06f3b4f9153f9fcd3b
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/56539
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christopher J. Cain <cjcain@us.ibm.com>
Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com>
Reviewed-by: Martha Broyles <mbroyles@us.ibm.com>
-rwxr-xr-x | src/occ_405/amec/amec_slave_smh.c | 2 | ||||
-rwxr-xr-x | src/occ_405/cmdh/cmdh_fsp_cmds.c | 3 | ||||
-rw-r--r-- | src/occ_405/dimm/dimm.h | 5 | ||||
-rwxr-xr-x | src/occ_405/occ_sys_config.c | 2 | ||||
-rwxr-xr-x | src/occ_405/timer/timer.c | 20 |
5 files changed, 17 insertions, 15 deletions
diff --git a/src/occ_405/amec/amec_slave_smh.c b/src/occ_405/amec/amec_slave_smh.c index 703c9a2..d6fdcdf 100755 --- a/src/occ_405/amec/amec_slave_smh.c +++ b/src/occ_405/amec/amec_slave_smh.c @@ -429,7 +429,7 @@ void amec_slv_common_tasks_post(void) // Call amec_power_control amec_power_control(); - if (MEM_TYPE_CUMULUS != G_sysConfigData.mem_type) + if (MEM_TYPE_NIMBUS == G_sysConfigData.mem_type) { // Nimbus only // Apply memory power control, if needed. diff --git a/src/occ_405/cmdh/cmdh_fsp_cmds.c b/src/occ_405/cmdh/cmdh_fsp_cmds.c index c1cfd8e..3249962 100755 --- a/src/occ_405/cmdh/cmdh_fsp_cmds.c +++ b/src/occ_405/cmdh/cmdh_fsp_cmds.c @@ -2098,9 +2098,6 @@ errlHndl_t cmdh_tmgt_get_field_debug_data(const cmdh_fsp_cmd_t * i_cmd_ptr, } else { - TRAC_INFO("get_field_debug_data: Numbers of sensors found[%u]", - l_num_of_sensors); - // Populate the response data packet l_resp_ptr->num_sensors = l_num_of_sensors; for (i=0; i<l_num_of_sensors; i++) diff --git a/src/occ_405/dimm/dimm.h b/src/occ_405/dimm/dimm.h index 894fc4d..431338f 100644 --- a/src/occ_405/dimm/dimm.h +++ b/src/occ_405/dimm/dimm.h @@ -74,8 +74,9 @@ typedef enum typedef enum { - MEM_TYPE_CUMULUS = 0x00, - MEM_TYPE_NIMBUS = 0xFF + MEM_TYPE_UNKNOWN = 0x00, + MEM_TYPE_CUMULUS = 0xCC, + MEM_TYPE_NIMBUS = 0xFF // Nimbus must be 0xFF per interface with (H)TMGT } MEMORY_TYPE; // Generic memory initialization to handle init for all memory types diff --git a/src/occ_405/occ_sys_config.c b/src/occ_405/occ_sys_config.c index 93f0805..c3b5839 100755 --- a/src/occ_405/occ_sys_config.c +++ b/src/occ_405/occ_sys_config.c @@ -203,7 +203,7 @@ occSysConfigData_t G_sysConfigData = // ----------------------------------------------------------- .centaur_huids = {0}, .dimm_huids = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}}, - .mem_type = MEM_TYPE_NIMBUS, + .mem_type = MEM_TYPE_UNKNOWN, .dimm_i2c_engine = PIB_I2C_ENGINE_E, .ips_mem_pwr_ctl = MEM_PWR_CTL_OFF, .default_mem_pwr_ctl = MEM_PWR_CTL_OFF, diff --git a/src/occ_405/timer/timer.c b/src/occ_405/timer/timer.c index 17194b2..6716858 100755 --- a/src/occ_405/timer/timer.c +++ b/src/occ_405/timer/timer.c @@ -144,12 +144,8 @@ void initWatchdogTimers() commitErrl(&l_err); } - // initialize memory deadman timer's IPC task - if(G_sysConfigData.mem_type == MEM_TYPE_NIMBUS) - { - // Initialize the GPE1 IPC task that resets the deadman timer. - init_mem_deadman_reset_task(); - } + // We can't initialize memory here since we do not know what type of memory we have + // until comm is established with (H)TMGT to tell us } // Function Specification @@ -208,7 +204,7 @@ void init_mem_deadman_reset_task(void) 0 //userdata2 ); - CHECKPOINT_FAIL_AND_HALT(l_err); + REQUEST_RESET(l_err); //This will add a firmware callout for us } } @@ -272,7 +268,7 @@ void task_poke_watchdogs(struct task * i_self) // then it is completed. Then if there is a new task to be scheduled // for this cycle, then schedule it on the GPE1 engine. This task // is also used to collect memory performance measurements. -// Called every 500us. +// Called every 500us. This should only be called on NIMBUS! // // End Function Specification @@ -293,6 +289,14 @@ void manage_mem_deadman_task(void) static bool L_gpe_idle_traced = false; static bool L_gpe_timeout_logged = false; static bool L_gpe_had_1_tick = false; + static bool L_init_complete = false; + + if(!L_init_complete) + { + // Initialize the GPE1 IPC task that resets the deadman timer. + init_mem_deadman_reset_task(); + L_init_complete = true; + } // There is no way to synchronously start or stop the counter, so must // take the difference between two readings. |