Skip to content

Commit

Permalink
Fixed DLL workarounds to always run
Browse files Browse the repository at this point in the history
DLL workarounds will not be fixed in hardware,
in the foreseeable future.  As such, always run the workarounds.

Change-Id: Iaa48b1b976908fdbb8af1eb8d518147fabc8cdce
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/41998
Reviewed-by: LUCAS W. MULKEY <lwmulkey@us.ibm.com>
Reviewed-by: JACOB L. HARVEY <jlharvey@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Dev-Ready: STEPHEN GLANCY <sglancy@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Matt K. Light <mklight@us.ibm.com>
Reviewed-by: Louis Stermole <stermole@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42008
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
  • Loading branch information
sglancy6 authored and dcrowell77 committed Jun 20, 2017
1 parent 2ba9ff8 commit 32d63b3
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -436,28 +436,6 @@ fapi_try_exit:
return false;
}

///
/// @brief ATTR_CHIP_EC_FEATURE_MSS_DLL_WORKAROUND getter
/// @tparam T the fapi2 target type of the target
/// @param[in] const ref to the target
/// @return bool true iff we're on a Nimbus < EC 2.0
///
template< fapi2::TargetType T >
inline bool chip_ec_feature_mss_dll_workaround(const fapi2::Target<T>& i_target)
{
const auto l_chip = mss::find_target<fapi2::TARGET_TYPE_PROC_CHIP>(i_target);
uint8_t l_value = 0;

FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_MSS_DLL_WORKAROUND, l_chip, l_value) );
return l_value != 0;

fapi_try_exit:
FAPI_ERR("failed accessing ATTR_CHIP_EC_FEATURE_MSS_DLL_WORKAROUND: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
fapi2::Assert(false);
return false;
}

///
/// @brief ATTR_CHIP_EC_FEATURE_MSS_RUN_DQS_LOOP getter
/// @tparam T the fapi2 target type of the target
Expand Down
17 changes: 2 additions & 15 deletions src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C
Original file line number Diff line number Diff line change
Expand Up @@ -1637,25 +1637,12 @@ fapi2::ReturnCode dll_calibration( const fapi2::Target<fapi2::TARGET_TYPE_MCBIST

if( mss::pc::get_dll_cal_status(l_read) != mss::YES )
{
// For < DD2.0 parts we want to run DLL workaround so
// For all Nimbus parts parts we want to run DLL workaround so
// Instead of using FAPI_ASSERT and logging FFDC we will
// return a "bad" ReturnCode to trigger a workaround that
// will be run after DLL Calibration for all failing DLLs.
// FFDC will be collected there if it doesn't pass.
if( mss::chip_ec_feature_mss_dll_workaround(p) )
{
FAPI_INF("%s DLL failed to calibrate", mss::c_str(p));
return fapi2::FAPI2_RC_FALSE;
}

// If we are here than we are not running DLL workaround
// because this part is not < DD2.0, so we want to fail out here
// and log FFDC
FAPI_ASSERT( false,
fapi2::MSS_DLL_FAILED_TO_CALIBRATE()
.set_MCA_IN_ERROR(p),
"%s DLL failed to calibrate",
mss::c_str(i_target) );
return fapi2::FAPI2_RC_FALSE;

}// endif

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,10 @@ extern "C"
FAPI_INF( "starting DLL calibration %s", mss::c_str(i_target) );
fapi2::ReturnCode l_rc = mss::dll_calibration(i_target);

// Only run DLL workaround if we fail DLL cal and we are a < DD2.0 part
if( l_rc != fapi2::FAPI2_RC_SUCCESS &&
mss::chip_ec_feature_mss_dll_workaround(i_target) )
// Only run DLL workaround if we fail DLL cal
// Note: there is no EC workaround for this workaround
// The designer team informed me that there is no hardware fix in plan for this type of fail as of DD2 - SPG
if( l_rc != fapi2::FAPI2_RC_SUCCESS )
{
FAPI_INF( "%s Applying DLL workaround", mss::c_str(i_target) );
l_rc = mss::workarounds::dll::fix_bad_voltage_settings(i_target);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3493,23 +3493,6 @@
</chipEcFeature>
</attribute>

<attribute>
<id>ATTR_CHIP_EC_FEATURE_MSS_DLL_WORKAROUND</id>
<targetType>TARGET_TYPE_PROC_CHIP</targetType>
<description>
Run DLL workaround algorithm to fix bad voltage settings pre DD2.0
</description>
<chipEcFeature>
<chip>
<name>ENUM_ATTR_NAME_NIMBUS</name>
<ec>
<value>0x20</value>
<test>LESS_THAN</test>
</ec>
</chip>
</chipEcFeature>
</attribute>

<attribute>
<id>ATTR_CHIP_EC_FEATURE_MSS_RUN_DQS_LOOP</id>
<targetType>TARGET_TYPE_PROC_CHIP</targetType>
Expand Down

0 comments on commit 32d63b3

Please sign in to comment.