Bill Hoffa | 4c5a759 | 2019-01-14 09:06:44 -0600 | [diff] [blame] | 1 | From daab9055723d6cde608b0ea9bb2318ebb0594e0e Mon Sep 17 00:00:00 2001 |
| 2 | From: Louis Stermole <stermole@us.ibm.com> |
| 3 | Date: Fri, 4 Jan 2019 10:26:21 -0500 |
| 4 | Subject: [PATCH] Fix RC09 ODT errors on Nimbus dual-drop configs |
| 5 | |
| 6 | Change-Id: Icefa3c20102627e8819b8f8738bb143d7156d3bb |
| 7 | CQ:SW452278 |
| 8 | Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/70096 |
| 9 | Reviewed-by: Michael D. Pardeik <pardeik@us.ibm.com> |
| 10 | Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> |
| 11 | Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> |
| 12 | Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> |
| 13 | Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com> |
| 14 | Dev-Ready: Louis Stermole <stermole@us.ibm.com> |
| 15 | Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> |
| 16 | --- |
| 17 | .../p9/procedures/hwp/memory/p9_mss_eff_config.C | 19 +++++++++++++++++-- |
| 18 | 1 file changed, 17 insertions(+), 2 deletions(-) |
| 19 | |
| 20 | diff --git a/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C b/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C |
| 21 | index 6b078f9..7b40852 100755 |
| 22 | --- a/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C |
| 23 | +++ b/src/import/chips/p9/procedures/hwp/memory/p9_mss_eff_config.C |
| 24 | @@ -5,7 +5,7 @@ |
| 25 | /* */ |
| 26 | /* OpenPOWER HostBoot Project */ |
| 27 | /* */ |
| 28 | -/* Contributors Listed Below - COPYRIGHT 2015,2018 */ |
| 29 | +/* Contributors Listed Below - COPYRIGHT 2015,2019 */ |
| 30 | /* [+] International Business Machines Corp. */ |
| 31 | /* */ |
| 32 | /* */ |
| 33 | @@ -88,6 +88,8 @@ fapi2::ReturnCode p9_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MCS> |
| 34 | "Unable to decode VPD for %s", mss::c_str(i_target) ); |
| 35 | } |
| 36 | |
| 37 | + // First we process the ODIC and ODT values since we need these initialized for both DIMM |
| 38 | + // on a port if we're in a dual-drop config |
| 39 | for( const auto& l_spd : l_spd_facades ) |
| 40 | { |
| 41 | const auto l_dimm = l_spd.get_dimm_target(); |
| 42 | @@ -96,7 +98,7 @@ fapi2::ReturnCode p9_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MCS> |
| 43 | FAPI_TRY( mss::eff_dimm::factory( l_spd, l_eff_dimm), |
| 44 | "Failed factory for %s", mss::c_str(l_dimm)); |
| 45 | |
| 46 | - FAPI_INF("Running eff_config on %s", mss::c_str(l_dimm) ); |
| 47 | + FAPI_INF("Setting up ODIC and ODT attributes on %s", mss::c_str(l_dimm) ); |
| 48 | |
| 49 | FAPI_TRY( l_eff_dimm->dram_odic(), |
| 50 | "Failed dram_odic for %s", mss::c_str(l_dimm) ); |
| 51 | @@ -104,6 +106,19 @@ fapi2::ReturnCode p9_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MCS> |
| 52 | "Failed odt_wr for %s", mss::c_str(l_dimm) ); |
| 53 | FAPI_TRY( l_eff_dimm->odt_rd(), |
| 54 | "Failed odt_rd for %s", mss::c_str(l_dimm) ); |
| 55 | + } |
| 56 | + |
| 57 | + // Now we continue with the remainder of eff_config |
| 58 | + for( const auto& l_spd : l_spd_facades ) |
| 59 | + { |
| 60 | + const auto l_dimm = l_spd.get_dimm_target(); |
| 61 | + |
| 62 | + std::shared_ptr<mss::eff_dimm> l_eff_dimm; |
| 63 | + FAPI_TRY( mss::eff_dimm::factory( l_spd, l_eff_dimm), |
| 64 | + "Failed factory for %s", mss::c_str(l_dimm)); |
| 65 | + |
| 66 | + FAPI_INF("Running eff_config on %s", mss::c_str(l_dimm) ); |
| 67 | + |
| 68 | FAPI_TRY( l_eff_dimm->rcd_mfg_id(), |
| 69 | "Failed rcd_mfg_id for %s", mss::c_str(l_dimm) ); |
| 70 | FAPI_TRY( l_eff_dimm->register_type(), |
| 71 | -- |
| 72 | 1.8.2.2 |
| 73 | |