diff options
author | Li Meng <shlimeng@cn.ibm.com> | 2018-10-22 15:29:07 -0500 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2018-10-29 17:40:12 -0500 |
commit | 24186bec3e6e98341b79a53020a3a6c606dfd699 (patch) | |
tree | 2da8e8d441083c789f5b39c029a08ba96c254fef /src/import/chips/p9/procedures | |
parent | 3376ac3e22bbe50367e11aa42eceaf1f671c549a (diff) | |
download | talos-hostboot-24186bec3e6e98341b79a53020a3a6c606dfd699.tar.gz talos-hostboot-24186bec3e6e98341b79a53020a3a6c606dfd699.zip |
add lrdimm plug rules
Change-Id: Id4768ad5b53d2fa9dc5bd9f3bb5ce267dd365734
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67852
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com>
Reviewed-by: Louis Stermole <stermole@us.ibm.com>
Dev-Ready: STEPHEN GLANCY <sglancy@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/67859
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures')
3 files changed, 42 insertions, 17 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/kind.H b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/kind.H index fd2604061..ee707c821 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/kind.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/kind.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -92,6 +92,7 @@ class kind iv_stack_type = i_rhs.iv_stack_type; iv_hybrid = i_rhs.iv_hybrid; iv_hybrid_memory_type = i_rhs.iv_hybrid_memory_type; + iv_rcd_mfgid = i_rhs.iv_rcd_mfgid; return *this; } @@ -114,7 +115,8 @@ class kind (iv_size == i_rhs.iv_size) && (iv_stack_type == i_rhs.iv_stack_type) && (iv_hybrid == i_rhs.iv_hybrid) && - (iv_hybrid_memory_type == i_rhs.iv_hybrid_memory_type)); + (iv_hybrid_memory_type == i_rhs.iv_hybrid_memory_type) && + (iv_rcd_mfgid == i_rhs.iv_rcd_mfgid)); } /// @@ -147,6 +149,7 @@ class kind FAPI_TRY( mss::eff_prim_stack_type( i_target, iv_stack_type) ); FAPI_TRY( mss::eff_hybrid( i_target, iv_hybrid )); FAPI_TRY( mss::eff_hybrid_memory_type( i_target, iv_hybrid_memory_type )); + FAPI_TRY( mss::eff_rcd_mfg_id(i_target, iv_rcd_mfgid) ); return; fapi_try_exit: @@ -167,6 +170,9 @@ class kind /// @param[in] i_size the overal size of the DIMM in GB /// @param[in] i_mfgid the dram manufacturer id of the dimm, defaulted to 0 /// @param[in] i_stack_type dram die type, single die package or 3DS + /// @param[in] i_hybrid, default not hybrid + /// @param[in] i_hybrid_memory_type, defult none + /// @param[in] i_rcd_mfgid dimm register and data buffer manufacturer id, default 0 /// @note can't be constexpr as fapi2::Target doesn't have a constexpr ctor. /// kind( const uint8_t i_master_ranks, @@ -180,7 +186,8 @@ class kind const uint16_t i_mfgid = 0, const uint8_t i_stack_type = fapi2::ENUM_ATTR_EFF_PRIM_STACK_TYPE_SDP, const uint8_t i_hybrid = fapi2::ENUM_ATTR_EFF_HYBRID_NOT_HYBRID, - const uint8_t i_hybrid_memory_type = fapi2::ENUM_ATTR_EFF_HYBRID_MEMORY_TYPE_NONE): + const uint8_t i_hybrid_memory_type = fapi2::ENUM_ATTR_EFF_HYBRID_MEMORY_TYPE_NONE, + const uint16_t i_rcd_mfgid = 0): iv_target(0), iv_master_ranks(i_master_ranks), iv_total_ranks(i_total_ranks), @@ -194,7 +201,8 @@ class kind iv_mfgid(i_mfgid), iv_stack_type(i_stack_type), iv_hybrid(i_hybrid), - iv_hybrid_memory_type(i_hybrid_memory_type) + iv_hybrid_memory_type(i_hybrid_memory_type), + iv_rcd_mfgid(i_rcd_mfgid) { // Bit of an idiot-check to be sure a hand-crafted dimm::kind make sense wrt slaves, masters, packages, etc. // Both of these are checked in eff_config. If they are messed up, they should be caught there @@ -228,6 +236,7 @@ class kind uint8_t iv_stack_type; uint8_t iv_hybrid; uint8_t iv_hybrid_memory_type; + uint16_t iv_rcd_mfgid; /// /// @brief equal_config diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/plug_rules.C b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/plug_rules.C index 5c7f25867..7305f2e67 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/plug_rules.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/plug_rules.C @@ -76,24 +76,18 @@ fapi2::ReturnCode check_lrdimm( const std::vector<dimm::kind>& i_kinds ) // We don't want to exit with an error as we are in development, but want to know we have LRDIMM if( l_kind.iv_dimm_type == fapi2::ENUM_ATTR_EFF_DIMM_TYPE_LRDIMM ) { - FAPI_ERR("%s has an LRDIMM plugged into it!", mss::c_str(l_kind.iv_target)); + FAPI_INF("%s has a LRDIMM plugged into it!", mss::c_str(l_kind.iv_target)); + FAPI_ASSERT(l_kind.iv_rcd_mfgid == fapi2::ENUM_ATTR_EFF_RCD_MFG_ID_IDT, + fapi2::MSS_PLUG_RULES_LRDIMM_RCD_DB_MANUFACTURER_ID_UNSUPPORTED() + .set_RCD_MFGID(l_kind.iv_rcd_mfgid) + .set_DIMM_TARGET(l_kind.iv_target), + "%s has a LRDIMM with an unsupported register and buffer manufacturer, rcd_mfgid=%x", + mss::c_str(l_kind.iv_target), l_kind.iv_rcd_mfgid); } - -#if 0 - - FAPI_ASSERT( l_kind.iv_dimm_type != fapi2::ENUM_ATTR_EFF_DIMM_TYPE_LRDIMM, - fapi2::MSS_PLUG_RULES_LRDIMM_UNSUPPORTED() - .set_DIMM_TARGET(l_kind.iv_target), - "%s has an LRDIMM plugged and is currently unsupported", - mss::c_str(l_kind.iv_target) ); -#endif } -#if 0 fapi_try_exit: return fapi2::current_err; -#endif - return fapi2::FAPI2_RC_SUCCESS; } /// diff --git a/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_plug_rules.xml b/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_plug_rules.xml index b290b48fc..657c61e0c 100644 --- a/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_plug_rules.xml +++ b/src/import/chips/p9/procedures/xml/error_info/p9_memory_mss_plug_rules.xml @@ -262,6 +262,28 @@ </hwpError> <hwpError> + <rc>RC_MSS_PLUG_RULES_LRDIMM_RCD_DB_MANUFACTURER_ID_UNSUPPORTED</rc> + <description> + The manufacturer of the LRDIMM need to be IDT currently, others do not supported + </description> + <ffdc>RCD_MFGID</ffdc> + <callout> + <procedure>MEMORY_PLUGGING_ERROR</procedure> + <priority>HIGH</priority> + </callout> + <callout> + <target>DIMM_TARGET</target> + <priority>MEDIUM</priority> + </callout> + <deconfigure> + <target>DIMM_TARGET</target> + </deconfigure> + <gard> + <target>DIMM_TARGET</target> + </gard> + </hwpError> + + <hwpError> <rc>RC_MSS_DEAD_LOAD_ON_PORT</rc> <description> A DIMM is deconfigured on a dual-drop port that has two DIMMS installed |