Skip to content

Commit

Permalink
Add some FIR unmask updates for p9a and explorer
Browse files Browse the repository at this point in the history
Change-Id: I39475c32f24be4ed955593872d3063b8bece1854
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/92396
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Mark Pizzutillo <mark.pizzutillo@ibm.com>
Reviewed-by: NICOLAS R FAJARDO <nicolas.fajardo@ibm.com>
Dev-Ready: Louis Stermole <stermole@us.ibm.com>
Reviewed-by: Jennifer A Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/92421
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
  • Loading branch information
stermole authored and dcrowell77 committed Mar 9, 2020
1 parent 31dd002 commit 9c2a95e
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 29 deletions.
Expand Up @@ -271,6 +271,8 @@ template<>
fapi2::ReturnCode after_mc_omi_setup<mss::mc_type::EXPLORER>( const fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP>&
i_target )
{
fapi2::buffer<uint64_t> l_dl0_error_mask;

fapi2::ReturnCode l_rc1 = fapi2::FAPI2_RC_SUCCESS;
fapi2::ReturnCode l_rc2 = fapi2::FAPI2_RC_SUCCESS;
fapi2::ReturnCode l_rc3 = fapi2::FAPI2_RC_SUCCESS;
Expand All @@ -286,7 +288,7 @@ fapi2::ReturnCode after_mc_omi_setup<mss::mc_type::EXPLORER>( const fapi2::Targe

// Write LOCAL_FIR register per Explorer unmask spec
FAPI_TRY(l_exp_local_fir_reg.recoverable_error<EXPLR_TP_MB_UNIT_TOP_LOCAL_FIR_PCS_GPBC_IRQ_106>()
.local_checkstop<EXPLR_TP_MB_UNIT_TOP_LOCAL_FIR_PCS_GPBC_IRQ_111>()
.recoverable_error<EXPLR_TP_MB_UNIT_TOP_LOCAL_FIR_PCS_GPBC_IRQ_111>()
.recoverable_error<EXPLR_TP_MB_UNIT_TOP_LOCAL_FIR_PCS_GPBC_IRQ_112>()
.recoverable_error<EXPLR_TP_MB_UNIT_TOP_LOCAL_FIR_PROC_SS__TOP_FATAL>()
.recoverable_error<EXPLR_TP_MB_UNIT_TOP_LOCAL_FIR_PROC_SS__TOP_NON_FATAL>()
Expand Down Expand Up @@ -320,6 +322,26 @@ fapi2::ReturnCode after_mc_omi_setup<mss::mc_type::EXPLORER>( const fapi2::Targe
.recoverable_error<EXPLR_DLX_MC_OMI_FIR_REG_DL0_EDPL_RETRAIN>()
.write());

FAPI_TRY(fapi2::getScom(i_target, EXPLR_DLX_DL0_ERROR_MASK, l_dl0_error_mask));
l_dl0_error_mask.setBit<EXPLR_DLX_DL0_ERROR_MASK_47>()
.setBit<EXPLR_DLX_DL0_ERROR_MASK_46>()
.setBit<EXPLR_DLX_DL0_ERROR_MASK_45>()
.setBit<EXPLR_DLX_DL0_ERROR_MASK_44>()
.setBit<EXPLR_DLX_DL0_ERROR_MASK_43>()
.setBit<EXPLR_DLX_DL0_ERROR_MASK_42>()
.setBit<EXPLR_DLX_DL0_ERROR_MASK_41>()
.setBit<EXPLR_DLX_DL0_ERROR_MASK_40>()
.setBit<EXPLR_DLX_DL0_ERROR_MASK_38>()
.clearBit<EXPLR_DLX_DL0_ERROR_MASK_37>()
.setBit<EXPLR_DLX_DL0_ERROR_MASK_36>()
.clearBit<EXPLR_DLX_DL0_ERROR_MASK_33>()
.setBit<EXPLR_DLX_DL0_ERROR_MASK_32>()
.clearBit<EXPLR_DLX_DL0_ERROR_MASK_17>()
.clearBit<EXPLR_DLX_DL0_ERROR_MASK_16>()
.clearBit<EXPLR_DLX_DL0_ERROR_MASK_15>()
.clearBit<EXPLR_DLX_DL0_ERROR_MASK_14>();
FAPI_TRY(fapi2::putScom(i_target, EXPLR_DLX_DL0_ERROR_MASK, l_dl0_error_mask));

return fapi2::FAPI2_RC_SUCCESS;

fapi_try_exit:
Expand Down
90 changes: 62 additions & 28 deletions src/import/chips/p9a/procedures/hwp/memory/lib/fir/p9a_fir.H
Expand Up @@ -226,19 +226,53 @@ fapi_try_exit:
/// @brief Clear error bits P9A_MC_REGm_DLn_ERROR_MASK registers m[0:2], n[0:2] since they are now "active"
/// @tparam R the REG_DL register we want to write to
/// @param[in] i_target MC target to find targets to initialize
/// @param[in] i_state state to set FIR masks to
/// @return fapi2::FAPI2_RC_SUCCESS iff ok
///
template<uint64_t R>
inline fapi2::ReturnCode setup_reg_dl_helper(const fapi2::Target<fapi2::TARGET_TYPE_MC>& i_target,
const mss::states i_state)
inline fapi2::ReturnCode setup_reg_dl_after_omi_init_helper(const fapi2::Target<fapi2::TARGET_TYPE_MC>& i_target)
{
fapi2::buffer<uint64_t> l_reg_data;

FAPI_TRY(fapi2::getScom(i_target, R, l_reg_data));
l_reg_data.writeBit<P9A_MC_REG2_DL2_ERROR_MASK_34>(i_state)
.writeBit<P9A_MC_REG2_DL2_ERROR_MASK_33>(i_state)
.writeBit<P9A_MC_REG2_DL2_ERROR_MASK_32>(i_state);
l_reg_data.clearBit<P9A_MC_REG2_DL2_ERROR_MASK_34>()
.clearBit<P9A_MC_REG2_DL2_ERROR_MASK_33>();
FAPI_TRY(fapi2::putScom(i_target, R, l_reg_data));

fapi_try_exit:
return fapi2::current_err;
}

///
/// @brief Set up error bits P9A_MC_REGm_DLn_ERROR_MASK registers m[0:2], n[0:2] after chiplet_scominit
/// @tparam R the REG_DL register we want to write to
/// @param[in] i_target MC target to find targets to initialize
/// @return fapi2::FAPI2_RC_SUCCESS iff ok
///
template<uint64_t R>
inline fapi2::ReturnCode setup_reg_dl_after_chiplet_scominit_helper(const fapi2::Target<fapi2::TARGET_TYPE_MC>&
i_target)
{
fapi2::buffer<uint64_t> l_reg_data;

FAPI_TRY(fapi2::getScom(i_target, R, l_reg_data));
l_reg_data.setBit<P9A_MC_REG2_DL2_ERROR_MASK_47>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_46>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_45>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_44>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_43>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_42>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_41>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_40>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_38>()
.clearBit<P9A_MC_REG2_DL2_ERROR_MASK_37>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_36>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_34>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_33>()
.setBit<P9A_MC_REG2_DL2_ERROR_MASK_32>()
.clearBit<P9A_MC_REG2_DL2_ERROR_MASK_17>()
.clearBit<P9A_MC_REG2_DL2_ERROR_MASK_16>()
.clearBit<P9A_MC_REG2_DL2_ERROR_MASK_15>()
.clearBit<P9A_MC_REG2_DL2_ERROR_MASK_14>();
FAPI_TRY(fapi2::putScom(i_target, R, l_reg_data));

fapi_try_exit:
Expand Down Expand Up @@ -288,7 +322,7 @@ inline fapi2::ReturnCode after_p9a_chiplet_scominit(const fapi2::Target<fapi2::T
switch(l_pos)
{
case 0:
l_mc_omi_fir_reg.local_checkstop<P9A_MC_MC_OMI_FIR_REG_DL0_FATAL_ERROR>()
l_mc_omi_fir_reg.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL0_FATAL_ERROR>()
.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL0_DATA_UE>()
.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL0_X4_MODE>()
.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL0_TIMEOUT>()
Expand All @@ -297,7 +331,7 @@ inline fapi2::ReturnCode after_p9a_chiplet_scominit(const fapi2::Target<fapi2::T
break;

case 1:
l_mc_omi_fir_reg.local_checkstop<P9A_MC_MC_OMI_FIR_REG_DL1_FATAL_ERROR>()
l_mc_omi_fir_reg.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL1_FATAL_ERROR>()
.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL1_DATA_UE>()
.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL1_X4_MODE>()
.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL1_TIMEOUT>()
Expand All @@ -306,7 +340,7 @@ inline fapi2::ReturnCode after_p9a_chiplet_scominit(const fapi2::Target<fapi2::T
break;

case 2:
l_mc_omi_fir_reg.local_checkstop<P9A_MC_MC_OMI_FIR_REG_DL2_FATAL_ERROR>()
l_mc_omi_fir_reg.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL2_FATAL_ERROR>()
.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL2_DATA_UE>()
.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL2_X4_MODE>()
.recoverable_error<P9A_MC_MC_OMI_FIR_REG_DL2_TIMEOUT>()
Expand Down Expand Up @@ -377,16 +411,16 @@ inline fapi2::ReturnCode after_p9a_chiplet_scominit(const fapi2::Target<fapi2::T
.write());
}

// Set ERROR_MASK on REGm_DLn 0:2 registers because they are not considered valid at this point
FAPI_TRY(setup_reg_dl_helper<MCT::REG0_DL0_ERROR_MASK>(i_target, mss::HIGH));
FAPI_TRY(setup_reg_dl_helper<MCT::REG0_DL1_ERROR_MASK>(i_target, mss::HIGH));
FAPI_TRY(setup_reg_dl_helper<MCT::REG0_DL2_ERROR_MASK>(i_target, mss::HIGH));
FAPI_TRY(setup_reg_dl_helper<MCT::REG1_DL0_ERROR_MASK>(i_target, mss::HIGH));
FAPI_TRY(setup_reg_dl_helper<MCT::REG1_DL1_ERROR_MASK>(i_target, mss::HIGH));
FAPI_TRY(setup_reg_dl_helper<MCT::REG1_DL2_ERROR_MASK>(i_target, mss::HIGH));
FAPI_TRY(setup_reg_dl_helper<MCT::REG2_DL0_ERROR_MASK>(i_target, mss::HIGH));
FAPI_TRY(setup_reg_dl_helper<MCT::REG2_DL1_ERROR_MASK>(i_target, mss::HIGH));
FAPI_TRY(setup_reg_dl_helper<MCT::REG2_DL2_ERROR_MASK>(i_target, mss::HIGH));
// Set up ERROR_MASK on REGm_DLn 0:2 registers
FAPI_TRY(setup_reg_dl_after_chiplet_scominit_helper<MCT::REG0_DL0_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_chiplet_scominit_helper<MCT::REG0_DL1_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_chiplet_scominit_helper<MCT::REG0_DL2_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_chiplet_scominit_helper<MCT::REG1_DL0_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_chiplet_scominit_helper<MCT::REG1_DL1_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_chiplet_scominit_helper<MCT::REG1_DL2_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_chiplet_scominit_helper<MCT::REG2_DL0_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_chiplet_scominit_helper<MCT::REG2_DL1_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_chiplet_scominit_helper<MCT::REG2_DL2_ERROR_MASK>(i_target));

return fapi2::FAPI2_RC_SUCCESS;

Expand All @@ -411,15 +445,15 @@ inline fapi2::ReturnCode after_p9a_omi_init_omi_fir_helper(const fapi2::Target<f
using MCT = mss::mcTraits<mss::proc_type::AXONE>;

// Clear ERROR_MASK on REGm_DLn 0:2 registers because they are now considered valid
FAPI_TRY(setup_reg_dl_helper<MCT::REG0_DL0_ERROR_MASK>(i_target, mss::LOW));
FAPI_TRY(setup_reg_dl_helper<MCT::REG0_DL1_ERROR_MASK>(i_target, mss::LOW));
FAPI_TRY(setup_reg_dl_helper<MCT::REG0_DL2_ERROR_MASK>(i_target, mss::LOW));
FAPI_TRY(setup_reg_dl_helper<MCT::REG1_DL0_ERROR_MASK>(i_target, mss::LOW));
FAPI_TRY(setup_reg_dl_helper<MCT::REG1_DL1_ERROR_MASK>(i_target, mss::LOW));
FAPI_TRY(setup_reg_dl_helper<MCT::REG1_DL2_ERROR_MASK>(i_target, mss::LOW));
FAPI_TRY(setup_reg_dl_helper<MCT::REG2_DL0_ERROR_MASK>(i_target, mss::LOW));
FAPI_TRY(setup_reg_dl_helper<MCT::REG2_DL1_ERROR_MASK>(i_target, mss::LOW));
FAPI_TRY(setup_reg_dl_helper<MCT::REG2_DL2_ERROR_MASK>(i_target, mss::LOW));
FAPI_TRY(setup_reg_dl_after_omi_init_helper<MCT::REG0_DL0_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_omi_init_helper<MCT::REG0_DL1_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_omi_init_helper<MCT::REG0_DL2_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_omi_init_helper<MCT::REG1_DL0_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_omi_init_helper<MCT::REG1_DL1_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_omi_init_helper<MCT::REG1_DL2_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_omi_init_helper<MCT::REG2_DL0_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_omi_init_helper<MCT::REG2_DL1_ERROR_MASK>(i_target));
FAPI_TRY(setup_reg_dl_after_omi_init_helper<MCT::REG2_DL2_ERROR_MASK>(i_target));

fapi_try_exit:

Expand Down

0 comments on commit 9c2a95e

Please sign in to comment.