diff options
author | Andre Marin <aamarin@us.ibm.com> | 2017-01-16 15:42:54 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-06-14 16:53:04 -0400 |
commit | 772291f30ccfe843f585c6bf9e23e6b1c9b13813 (patch) | |
tree | 85b0e57027ba5bbb59ddb4661e3dceaacedf2a97 /src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C | |
parent | 389c4cfbe086a04f9a05eba9f516d04402a9b360 (diff) | |
download | talos-hostboot-772291f30ccfe843f585c6bf9e23e6b1c9b13813.tar.gz talos-hostboot-772291f30ccfe843f585c6bf9e23e6b1c9b13813.zip |
Fix tREFI calculation to use MRW REFRESH REQUEST RATE as opposed to TEMP RANGE
Reverting to P8 attribute used to calculate tREFI. Lab request
expects to use MRW REFRESH REQUEST RATE since it has more enum
options to control refresh range and assure we are in SPEC.
Change-Id: Ibdb6023c60fdf000f642becb53513ecaaf88aa15
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/35003
Reviewed-by: Michael D. Pardeik <pardeik@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Matt K. Light <mklight@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/35435
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C index 06ee66044..1c7055e4b 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C +++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C @@ -636,7 +636,7 @@ fapi2::ReturnCode eff_dimm::dram_trefi() case fapi2::ENUM_ATTR_MSS_MRW_FINE_REFRESH_MODE_NORMAL: FAPI_TRY( calc_trefi( mss::refresh_rate::REF1X, - iv_temp_refresh_range, + iv_refresh_rate_request, l_trefi_in_ps), "Failed to calculate tREF1 for target %s", mss::c_str(iv_dimm) ); break; @@ -645,7 +645,7 @@ fapi2::ReturnCode eff_dimm::dram_trefi() case fapi2::ENUM_ATTR_MSS_MRW_FINE_REFRESH_MODE_FLY_2X: FAPI_TRY( calc_trefi( mss::refresh_rate::REF2X, - iv_temp_refresh_range, + iv_refresh_rate_request, l_trefi_in_ps), "Failed to calculate tREF2 for target %s", mss::c_str(iv_dimm) ); break; @@ -654,7 +654,7 @@ fapi2::ReturnCode eff_dimm::dram_trefi() case fapi2::ENUM_ATTR_MSS_MRW_FINE_REFRESH_MODE_FLY_4X: FAPI_TRY( calc_trefi( mss::refresh_rate::REF4X, - iv_temp_refresh_range, + iv_refresh_rate_request, l_trefi_in_ps), "Failed to calculate tREF4 for target %s", mss::c_str(iv_dimm) ); break; @@ -674,7 +674,9 @@ fapi2::ReturnCode eff_dimm::dram_trefi() { // Calculate refresh cycle time in nCK & set attribute + constexpr double PERCENT_ADJUST = 0.999; std::vector<uint16_t> l_mcs_attrs_trefi(PORTS_PER_MCS, 0); + uint64_t l_trefi_in_nck = 0; // Retrieve MCS attribute data @@ -687,6 +689,16 @@ fapi2::ReturnCode eff_dimm::dram_trefi() l_trefi_in_nck), "Error in calculating tREFI for target %s, with value of l_trefi_in_ps: %d", mss::c_str(iv_dimm), l_trefi_in_ps); + // Per Mike P., requested 99.9% of tREFI calculation to avoid any latency impact and violation of any + // refresh specification (across all number of ranks and frequencies) observed during lab tests. + + FAPI_INF("For %s, adjusting tREFI calculation by 99.9%, calculated tREFI (nck): %lu, adjusted tREFI (nck): %lu,", + mss::c_str(iv_dimm), l_trefi_in_nck, l_trefi_in_nck * PERCENT_ADJUST); + + // The compiler does this under the covers but just to be explicit on intent: + // Floating point arithmetic and truncation of result saved to an unsigned integer + l_trefi_in_nck = static_cast<double>(l_trefi_in_nck * PERCENT_ADJUST); + FAPI_INF("tCK (ps): %d, tREFI (ps): %d, tREFI (nck): %d", iv_tCK_in_ps, l_trefi_in_ps, l_trefi_in_nck); |