Skip to content

Commit

Permalink
Add workaround for Nimbus symbol mark performance hw bug
Browse files Browse the repository at this point in the history
  This is the HWP portion of the fix for HW474117.
  When a symbol mark is placed, it activates the WAT bit to
  force exit-0 bypass disable in the ecc checker. It also
  masks the FIR attention bit for the WAT.

Change-Id: I0516e19a623880d9ed659b2e7e0a89c6facb95cc
CQ:SW453101
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/74813
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/74831
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 31, 2019
1 parent c00d44a commit e904aae
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 14 deletions.
6 changes: 5 additions & 1 deletion src/import/chips/p9/procedures/hwp/memory/lib/mc/port.C
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2016,2018 */
/* Contributors Listed Below - COPYRIGHT 2016,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -38,6 +38,7 @@
#include <lib/shared/mss_const.H>
#include <generic/memory/lib/utils/scom.H>
#include <lib/ecc/ecc.H>
#include <lib/workarounds/mca_workarounds.H>

namespace mss
{
Expand Down Expand Up @@ -358,6 +359,9 @@ fapi2::ReturnCode place_symbol_mark(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>
FAPI_TRY( mss::ecc::set_fwms(l_mca, i_rank, l_galois, mss::ecc::fwms::mark_type::SYMBOL,
mss::ecc::fwms::mark_region::MRANK, l_addr) );

// Apply workaround for HW474117 if we place a symbol mark
FAPI_TRY( mss::workarounds::disable_bypass(l_mca) );

fapi_try_exit:
return fapi2::current_err;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2017,2018 */
/* Contributors Listed Below - COPYRIGHT 2017,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -175,6 +175,25 @@ fapi_try_exit:
return fapi2::current_err;
}

///
/// @brief Disable bypass on port with symbol mark placed
/// @param[in] i_target the fapi2 target of the port
/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS if ok
/// @note The workaround for HW474117 applies to all EC versions, so no switch is necessary
///
fapi2::ReturnCode disable_bypass( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target )
{
fapi2::buffer<uint64_t> l_mca_dbgr_buffer;

// Trigger WAT logic to 'disable bypass' for the given port: set DBGR[8]
FAPI_TRY( mss::getScom(i_target, MCA_DBGR, l_mca_dbgr_buffer) );
l_mca_dbgr_buffer.setBit<MCA_DBGR_ECC_WAT_ENABLE>();
FAPI_TRY( mss::putScom(i_target, MCA_DBGR, l_mca_dbgr_buffer) );

fapi_try_exit:
return fapi2::current_err;
}

} // ns workarounds

} // ns mss
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2017 */
/* Contributors Listed Below - COPYRIGHT 2017,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -71,6 +71,13 @@ fapi2::ReturnCode disable_cid_parity(const fapi2::Target<fapi2::TARGET_TYPE_MCA>
///
fapi2::ReturnCode str_non_tsv_parity(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target);

///
/// @brief Disable bypass on port with symbol mark placed
/// @param[in] i_target the fapi2 target of the port
/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS if ok
///
fapi2::ReturnCode disable_bypass( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target );

} // ns workarounds

} // ns mss
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2016,2018 */
/* Contributors Listed Below - COPYRIGHT 2016,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -147,28 +147,23 @@ fapi2::ReturnCode end_of_rank( const fapi2::Target<TARGET_TYPE_MCBIST>& i_target
///
/// @brief WAT debug attention
/// For Nimbus DD1 the MCBIST engine uses the WAT debug bit as a workaround
/// For Nimbus DD2 the WAT debug bit is used for a different workaround
/// @param[in] i_target the fapi2 target of the mcbist
/// @return fapi2::ReturnCode FAPI2_RC_SUCCESS if ok
///
fapi2::ReturnCode wat_debug_attention( const fapi2::Target<fapi2::TARGET_TYPE_MCBIST>& i_target )
{
// MCBIST attentions are already special attention
if (mss::chip_ec_feature_mss_wat_debug_attn(i_target))
{
fapi2::ReturnCode l_rc;
fir::reg<MCBIST_MCBISTFIRQ> mcbist_fir_register(i_target, l_rc);
FAPI_TRY(l_rc, "unable to create fir::reg for %d", MCBIST_MCBISTFIRQ);
fapi2::ReturnCode l_rc;
fir::reg<MCBIST_MCBISTFIRQ> mcbist_fir_register(i_target, l_rc);
FAPI_TRY(l_rc, "unable to create fir::reg for %d", MCBIST_MCBISTFIRQ);

FAPI_TRY(mcbist_fir_register.attention<MCBIST_MCBISTFIRQ_WAT_DEBUG_ATTN>().write());
}

return fapi2::FAPI2_RC_SUCCESS;
FAPI_TRY(mcbist_fir_register.attention<MCBIST_MCBISTFIRQ_WAT_DEBUG_ATTN>().write());

fapi_try_exit:
return fapi2::current_err;
}


///
/// @brief BROADCAST OUT OF SYNC workaround
/// A UE noise window is triggered by UE/AUEs causing an out of sync error
Expand Down

0 comments on commit e904aae

Please sign in to comment.