Skip to content

Commit 5123ce8

Browse files
stermoledcrowell77
authored andcommitted
Deconfigure MCA if there is a VPD load error
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>
1 parent 1cbf4c7 commit 5123ce8

File tree

2 files changed

+69
-21
lines changed

2 files changed

+69
-21
lines changed

src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4268,32 +4268,50 @@ fapi2::ReturnCode eff_dimm::decode_vpd(const fapi2::Target<TARGET_TYPE_MCS>& i_t
42684268
fapi2::Assert(false);
42694269
}
42704270

4271-
FAPI_TRY( fapi2::getVPD(i_target, l_vpd_info, &(l_mt_blob[0])),
4272-
"Failed to retrieve MT VPD");
4271+
// Log any error code from getVPD separately in case the error code is meaningful
4272+
fapi2::ReturnCode l_rc = fapi2::getVPD(i_target, l_vpd_info, &(l_mt_blob[0]));
4273+
4274+
if (l_rc != fapi2::FAPI2_RC_SUCCESS)
4275+
{
4276+
fapi2::logError(l_rc);
4277+
FAPI_ASSERT( false,
4278+
fapi2::MSS_VPD_MT_LOAD_FAIL()
4279+
.set_MCA_TARGET(p),
4280+
"%s Failed to retrieve MT VPD", mss::c_str(p));
4281+
}
42734282
}
4274-
}// mca
42754283

4276-
// Only get the MR blob if we have a freq. It's possible for Cronus to give us an MCS which
4277-
// is connected to a controller which has 0 DIMM installed. In this case, we won't have
4278-
// a frequency, and thus we'd fail getting the VPD. So we initiaized the VPD to 0's and if
4279-
// there's no freq, we us a 0 filled VPD.
4280-
if (l_vpd_info.iv_freq_mhz != 0)
4281-
{
4282-
l_vpd_info.iv_vpd_type = fapi2::MemVpdData::MR;
4284+
// Only get the MR blob if we have a freq. It's possible for Cronus to give us an MCS which
4285+
// is connected to a controller which has 0 DIMM installed. In this case, we won't have
4286+
// a frequency, and thus we'd fail getting the VPD. So we initiaized the VPD to 0's and if
4287+
// there's no freq, we us a 0 filled VPD.
4288+
if (l_vpd_info.iv_freq_mhz != 0)
4289+
{
4290+
l_vpd_info.iv_vpd_type = fapi2::MemVpdData::MR;
42834291

4284-
// Check the max for giggles. Programming bug so we should assert.
4285-
FAPI_TRY( fapi2::getVPD(i_target, l_vpd_info, nullptr),
4286-
"Failed to retrieve MR size from VPD");
4292+
// Check the max for giggles. Programming bug so we should assert.
4293+
FAPI_TRY( fapi2::getVPD(i_target, l_vpd_info, nullptr),
4294+
"Failed to retrieve MR size from VPD");
42874295

4288-
if (l_vpd_info.iv_size > mss::VPD_KEYWORD_MAX)
4289-
{
4290-
FAPI_ERR("VPD MR keyword is too big for our array");
4291-
fapi2::Assert(false);
4292-
}
4296+
if (l_vpd_info.iv_size > mss::VPD_KEYWORD_MAX)
4297+
{
4298+
FAPI_ERR("VPD MR keyword is too big for our array");
4299+
fapi2::Assert(false);
4300+
}
42934301

4294-
FAPI_TRY( fapi2::getVPD(i_target, l_vpd_info, &(l_mr_blob[0])),
4295-
"Failed to retrieve MR VPD");
4296-
}
4302+
// Log any error code from getVPD separately in case the error code is meaningful
4303+
fapi2::ReturnCode l_rc = fapi2::getVPD(i_target, l_vpd_info, &(l_mr_blob[0]));
4304+
4305+
if (l_rc != fapi2::FAPI2_RC_SUCCESS)
4306+
{
4307+
fapi2::logError(l_rc);
4308+
FAPI_ASSERT( false,
4309+
fapi2::MSS_VPD_MR_LOAD_FAIL()
4310+
.set_MCA_TARGET(p),
4311+
"%s Failed to retrieve MR VPD", mss::c_str(p));
4312+
}
4313+
}
4314+
}// mca
42974315

42984316
// Get CKE data
42994317
l_vpd_info.iv_vpd_type = fapi2::MemVpdData::CK;

src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_eff_config.xml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,36 @@
8787
</deconfigure>
8888
</hwpError>
8989

90+
<hwpError>
91+
<rc>RC_MSS_VPD_MT_LOAD_FAIL</rc>
92+
<description>
93+
Loading of VPD MT keyword failed. Could be due to an invalid port configuration.
94+
</description>
95+
<ffdc>MCA_TARGET</ffdc>
96+
<callout>
97+
<target>MCA_TARGET</target>
98+
<priority>HIGH</priority>
99+
</callout>
100+
<deconfigure>
101+
<target>MCA_TARGET</target>
102+
</deconfigure>
103+
</hwpError>
104+
105+
<hwpError>
106+
<rc>RC_MSS_VPD_MR_LOAD_FAIL</rc>
107+
<description>
108+
Loading of VPD MR keyword failed. Could be due to an invalid port configuration.
109+
</description>
110+
<ffdc>MCA_TARGET</ffdc>
111+
<callout>
112+
<target>MCA_TARGET</target>
113+
<priority>HIGH</priority>
114+
</callout>
115+
<deconfigure>
116+
<target>MCA_TARGET</target>
117+
</deconfigure>
118+
</hwpError>
119+
90120
<hwpError>
91121
<rc>RC_MSS_INVALID_VPD_VREF_DRAM_WR_RANGE</rc>
92122
<description>

0 commit comments

Comments
 (0)