diff options
-rwxr-xr-x | src/occ_405/dimm/dimm.c | 12 | ||||
-rwxr-xr-x | src/occ_405/state.c | 17 |
2 files changed, 27 insertions, 2 deletions
diff --git a/src/occ_405/dimm/dimm.c b/src/occ_405/dimm/dimm.c index 5dac23d..bcdfb6c 100755 --- a/src/occ_405/dimm/dimm.c +++ b/src/occ_405/dimm/dimm.c @@ -702,6 +702,15 @@ void process_dimm_temp() } // end process_dimm_temp() +void disable_all_dimms() +{ + if (G_mem_monitoring_allowed) + { + TRAC_INFO("disable_all_dimms: DIMM temp collection is being stopped"); + G_mem_monitoring_allowed = false; + } + occ_i2c_lock_release(G_dimm_sm_args.i2cEngine); +} // Function Specification // @@ -746,9 +755,8 @@ void task_dimm_sm(struct task *i_self) // I2C failure occurred during a reset... INTR_TRAC_ERR("task_dimm_sm: Failure during I2C reset - memory monitoring disabled"); // release I2C lock to the host for this engine and stop monitoring - occ_i2c_lock_release(G_dimm_sm_args.i2cEngine); L_occ_owns_lock = false; - G_mem_monitoring_allowed = false; + disable_all_dimms(); } else { diff --git a/src/occ_405/state.c b/src/occ_405/state.c index 9474d0b..4fec5f8 100755 --- a/src/occ_405/state.c +++ b/src/occ_405/state.c @@ -115,6 +115,11 @@ const uint8_t G_smgr_state_trans_count = sizeof(G_smgr_state_trans)/sizeof(smgr_ uint32_t G_smgr_validate_data_active_mask = SMGR_VALIDATE_DATA_ACTIVE_MASK_HARDCODES; uint32_t G_smgr_validate_data_observation_mask = SMGR_VALIDATE_DATA_OBSERVATION_MASK_HARDCODES; + +void disable_all_dimms(); +void disable_all_gpus(); + + // Function Specification // // Name: SMGR_is_state_transitioning @@ -332,6 +337,12 @@ errlHndl_t SMGR_all_to_standby() rtl_clr_run_mask_deferred(RTL_FLAG_ACTIVE | RTL_FLAG_OBS ); rtl_set_run_mask_deferred(RTL_FLAG_STANDBY); + // Stop reading DIMM temps + disable_all_dimms(); + + // Stop monitoring GPUs + disable_all_gpus(); + // Set the actual STATE now that we have finished everything else CURRENT_STATE() = OCC_STATE_STANDBY; @@ -1141,6 +1152,12 @@ errlHndl_t SMGR_all_to_safe() // !!! There is no recovery to this except a reset !!! rtl_set_run_mask_deferred(RTL_FLAG_RST_REQ); + // Stop reading DIMM temps + disable_all_dimms(); + + // Stop monitoring GPUs + disable_all_gpus(); + // Notes: // - We can still talk to FSP // - We will still be able to go out on PIB |