Skip to content

Commit

Permalink
Deconfigure MCA if there is a VPD load error
Browse files Browse the repository at this point in the history
CQ: SW375286
Change-Id: I925d05649888d1ca71937e0774a7b06d7b83bef2
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/37489
Reviewed-by: Brian R. Silver <bsilver@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: JACOB L. HARVEY <jlharvey@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/37492
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
  • Loading branch information
stermole authored and dcrowell77 committed Mar 8, 2017
1 parent 1cbf4c7 commit 5123ce8
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 21 deletions.
60 changes: 39 additions & 21 deletions src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C
Expand Up @@ -4268,32 +4268,50 @@ fapi2::ReturnCode eff_dimm::decode_vpd(const fapi2::Target<TARGET_TYPE_MCS>& i_t
fapi2::Assert(false);
}

FAPI_TRY( fapi2::getVPD(i_target, l_vpd_info, &(l_mt_blob[0])),
"Failed to retrieve MT VPD");
// Log any error code from getVPD separately in case the error code is meaningful
fapi2::ReturnCode l_rc = fapi2::getVPD(i_target, l_vpd_info, &(l_mt_blob[0]));

if (l_rc != fapi2::FAPI2_RC_SUCCESS)
{
fapi2::logError(l_rc);
FAPI_ASSERT( false,
fapi2::MSS_VPD_MT_LOAD_FAIL()
.set_MCA_TARGET(p),
"%s Failed to retrieve MT VPD", mss::c_str(p));
}
}
}// mca

// Only get the MR blob if we have a freq. It's possible for Cronus to give us an MCS which
// is connected to a controller which has 0 DIMM installed. In this case, we won't have
// a frequency, and thus we'd fail getting the VPD. So we initiaized the VPD to 0's and if
// there's no freq, we us a 0 filled VPD.
if (l_vpd_info.iv_freq_mhz != 0)
{
l_vpd_info.iv_vpd_type = fapi2::MemVpdData::MR;
// Only get the MR blob if we have a freq. It's possible for Cronus to give us an MCS which
// is connected to a controller which has 0 DIMM installed. In this case, we won't have
// a frequency, and thus we'd fail getting the VPD. So we initiaized the VPD to 0's and if
// there's no freq, we us a 0 filled VPD.
if (l_vpd_info.iv_freq_mhz != 0)
{
l_vpd_info.iv_vpd_type = fapi2::MemVpdData::MR;

// Check the max for giggles. Programming bug so we should assert.
FAPI_TRY( fapi2::getVPD(i_target, l_vpd_info, nullptr),
"Failed to retrieve MR size from VPD");
// Check the max for giggles. Programming bug so we should assert.
FAPI_TRY( fapi2::getVPD(i_target, l_vpd_info, nullptr),
"Failed to retrieve MR size from VPD");

if (l_vpd_info.iv_size > mss::VPD_KEYWORD_MAX)
{
FAPI_ERR("VPD MR keyword is too big for our array");
fapi2::Assert(false);
}
if (l_vpd_info.iv_size > mss::VPD_KEYWORD_MAX)
{
FAPI_ERR("VPD MR keyword is too big for our array");
fapi2::Assert(false);
}

FAPI_TRY( fapi2::getVPD(i_target, l_vpd_info, &(l_mr_blob[0])),
"Failed to retrieve MR VPD");
}
// Log any error code from getVPD separately in case the error code is meaningful
fapi2::ReturnCode l_rc = fapi2::getVPD(i_target, l_vpd_info, &(l_mr_blob[0]));

if (l_rc != fapi2::FAPI2_RC_SUCCESS)
{
fapi2::logError(l_rc);
FAPI_ASSERT( false,
fapi2::MSS_VPD_MR_LOAD_FAIL()
.set_MCA_TARGET(p),
"%s Failed to retrieve MR VPD", mss::c_str(p));
}
}
}// mca

// Get CKE data
l_vpd_info.iv_vpd_type = fapi2::MemVpdData::CK;
Expand Down
Expand Up @@ -87,6 +87,36 @@
</deconfigure>
</hwpError>

<hwpError>
<rc>RC_MSS_VPD_MT_LOAD_FAIL</rc>
<description>
Loading of VPD MT keyword failed. Could be due to an invalid port configuration.
</description>
<ffdc>MCA_TARGET</ffdc>
<callout>
<target>MCA_TARGET</target>
<priority>HIGH</priority>
</callout>
<deconfigure>
<target>MCA_TARGET</target>
</deconfigure>
</hwpError>

<hwpError>
<rc>RC_MSS_VPD_MR_LOAD_FAIL</rc>
<description>
Loading of VPD MR keyword failed. Could be due to an invalid port configuration.
</description>
<ffdc>MCA_TARGET</ffdc>
<callout>
<target>MCA_TARGET</target>
<priority>HIGH</priority>
</callout>
<deconfigure>
<target>MCA_TARGET</target>
</deconfigure>
</hwpError>

<hwpError>
<rc>RC_MSS_INVALID_VPD_VREF_DRAM_WR_RANGE</rc>
<description>
Expand Down

0 comments on commit 5123ce8

Please sign in to comment.