diff options
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/fir/check.H')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/memory/lib/fir/check.H | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/fir/check.H b/src/import/chips/p9/procedures/hwp/memory/lib/fir/check.H index 6bf155317..1667f9f23 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/fir/check.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/fir/check.H @@ -94,120 +94,6 @@ fapi2::ReturnCode pll_fir( const fapi2::Target<fapi2::TARGET_TYPE_MCBIST>& i_tar fapi2::ReturnCode& io_rc, bool& o_fir_error ); -/// -/// @brief Checks whether the passed in FIRs have any un-masked errors set -/// @tparam T the fapi2::TargetType which hold the FIR bits -/// @param[in] i_target - the target on which to operate -/// @param[in] i_fir_regs - FIR register and mask register -/// @param[out] o_fir_error - true iff a FIR was hit -/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff ok -/// -template< fapi2::TargetType T > -inline fapi2::ReturnCode fir_with_mask( const fapi2::Target<T>& i_target, - const std::pair<uint64_t, uint64_t>& i_fir_regs, - bool& o_fir_error ) -{ - // Temporary variables to make the code a bit more readable - const auto FIR_REG = i_fir_regs.first; - const auto FIR_MASK = i_fir_regs.second; - - fapi2::buffer<uint64_t> l_fir; - fapi2::buffer<uint64_t> l_fir_mask; - - // Read the registers - FAPI_TRY(mss::getScom(i_target, FIR_REG, l_fir)); - FAPI_TRY(mss::getScom(i_target, FIR_MASK, l_fir_mask)); - - - // The mask register will need to be inverted as a 0 in the mask register means the FIR is legit - // A bitwise and works the opposite way - l_fir_mask.invert(); - - // If we have any unmasked bit, set that we have a FIR error and exit out with success - // Note: we want to set success here as PRD will find the FIR as "new" and retrigger the procedure this way - o_fir_error = ((l_fir & l_fir_mask) != 0); - - // And print the information for debuggability - FAPI_INF("%s %s on reg 0x%016lx value 0x%016lx and mask 0x%016lx value 0x%016lx", mss::c_str(i_target), - o_fir_error ? "has FIR's set" : "has no FIR's set", FIR_REG, l_fir, FIR_MASK, l_fir_mask.invert()); - -fapi_try_exit: - return fapi2::current_err; -} - -/// -/// @brief Checks whether a FIR or unlocked PLL could be the root cause of another failure -/// @tparam T the fapi2::TargetType which hold the FIR bits -/// @param[in] i_target - the target on which to operate -/// @param[in,out] io_rc - the return code for the function -/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff ok -/// @note This is a helper function to enable unit testing -/// -template< fapi2::TargetType T > -fapi2::ReturnCode hostboot_fir_or_pll_fail( const fapi2::Target<T>& i_target, fapi2::ReturnCode& io_rc) -{ - // We didn't have an error, so return success - if(io_rc == fapi2::FAPI2_RC_SUCCESS) - { - FAPI_INF("%s has a good return code, returning success", mss::c_str(i_target)); - return fapi2::FAPI2_RC_SUCCESS; - } - - fapi2::ReturnCode l_fircheck_scom_err(fapi2::FAPI2_RC_SUCCESS); - bool l_fir_error = false; - - FAPI_ERR("%s has a bad return code, time to check some firs!", mss::c_str(i_target)); - - l_fircheck_scom_err = bad_fir_bits<mss::mc_type::NIMBUS>(i_target, io_rc, l_fir_error); - - FAPI_ERR("%s took a fail. FIR was %s", mss::c_str(i_target), - l_fir_error ? "set - returning FIR RC" : "unset - returning inputted RC"); - - // If we had a FIR error, log the original error and return success - // PRD will handle the original error - if(l_fir_error) - { - fapi2::current_err = fapi2::FAPI2_RC_SUCCESS; - } - else - { - fapi2::current_err = io_rc; - } - - return fapi2::current_err; -} - -/// -/// @brief Checks whether a FIR or unlocked PLL could be the root cause of another failure, if a check fir boolean is passed in -/// @tparam T the fapi2::TargetType which hold the FIR bits -/// @param[in] i_target - the target on which to operate -/// @param[in,out] io_rc - the return code for the function -/// @param[in] i_check_fir - true IFF the FIR needs to be checked - defaults to true -/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS iff ok -/// -template< fapi2::TargetType T > -fapi2::ReturnCode fir_or_pll_fail( const fapi2::Target<T>& i_target, - fapi2::ReturnCode& io_rc, - const bool i_check_fir = true) -{ -#ifdef __HOSTBOOT_MODULE - - fapi2::ReturnCode l_rc(io_rc); - - // If need be, check the FIR below - if(i_check_fir) - { - // Handle any issues according to PRD FIR scheme, as a FIR could have caused this issue - l_rc = hostboot_fir_or_pll_fail(i_target, l_rc); - } - - return l_rc; - -#else - return io_rc; -#endif -} - } } #endif |