summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/accessors
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2016-11-17 15:57:19 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-12-20 11:58:40 -0500
commit17003aae2a9797e990fb2a6869d77967db9c1633 (patch)
tree5e5efdbf8b62e2536bd5748e3d33dcbb90347e61 /src/import/chips/p9/procedures/hwp/accessors
parentcec9b06e89d027d084bac7876604efbcb7d297eb (diff)
downloadtalos-hostboot-17003aae2a9797e990fb2a6869d77967db9c1633.tar.gz
talos-hostboot-17003aae2a9797e990fb2a6869d77967db9c1633.zip
Improve detection and description for MEMVPD_POS issues
Updated attribute description based on changes to requirements Added explicit check for invalid data to improve debug Change-Id: Ie22287166855be1e0d99a52cc4a3ad89d354acfa Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/32793 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: Brian R. Silver <bsilver@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33833 Reviewed-by: Hostboot Team <hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/accessors')
-rw-r--r--src/import/chips/p9/procedures/hwp/accessors/p9_get_mem_vpd_keyword.C12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/accessors/p9_get_mem_vpd_keyword.C b/src/import/chips/p9/procedures/hwp/accessors/p9_get_mem_vpd_keyword.C
index 4b392e682..8a7e7f6ce 100644
--- a/src/import/chips/p9/procedures/hwp/accessors/p9_get_mem_vpd_keyword.C
+++ b/src/import/chips/p9/procedures/hwp/accessors/p9_get_mem_vpd_keyword.C
@@ -117,6 +117,9 @@ struct mappingDqRow_t // DQ map entries following header
const size_t DQ_MAP_SIZE = 36;
const size_t DQ_BLOB_SIZE = 160;
+// VPD format only supports up to 16 unique MCS entries
+constexpr fapi2::ATTR_MEMVPD_POS_Type MAX_MEMVPD_POS = 16;
+
extern "C"
{
@@ -240,6 +243,15 @@ extern "C"
i_target,
l_mcsPos),
"p9_get_mem_vpd_keyword: get ATTR_MEMVPD_POS failed");
+ // verify we have a valid MEMVPD_POS
+ FAPI_ASSERT(l_mcsPos < MAX_MEMVPD_POS,
+ fapi2::GET_MEM_VPD_POS_OUT_OF_RANGE().
+ set_MCS_POS(l_mcsPos).
+ set_MAX_MEMVPD_POS(MAX_MEMVPD_POS).
+ set_TARGET(i_target).
+ set_VPDTYPE(i_vpd_info.iv_vpd_type),
+ "ATTR_MEMVPD_POS out of range (=%d)",
+ l_mcsPos);
l_mcsMask = (MAPPING_LAYOUT_MCS_0 >> l_mcsPos); //zero based
FAPI_DBG ("p9_get_mem_vpd_keyword: mca position = %d mask=0x%04x",
l_mcsPos, l_mcsMask);
OpenPOWER on IntegriCloud