From 7a27f4603a1b222e2d527d1167e5a3c3653c404b Mon Sep 17 00:00:00 2001 From: Mark Pizzutillo Date: Tue, 3 Sep 2019 12:55:26 -0400 Subject: Add ekb dual drop support for p9a SPD and VPD will need to be revisited once we architect how this will work from the Cronus and HB side. In the meantime, we pass EKB unit tests so we are on the right track. Change-Id: Ie4516339dcc6e43ee1e6dd7aaaa9589fbfcace89 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/83218 Tested-by: FSP CI Jenkins Tested-by: Jenkins Server Tested-by: Hostboot CI Reviewed-by: Louis Stermole Reviewed-by: STEPHEN GLANCY Dev-Ready: STEPHEN GLANCY Reviewed-by: Jennifer A Stofer Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/83436 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Nicholas E Bofferding --- .../hwp/memory/lib/freq/axone_mss_freq.C | 4 ++-- .../p9a/procedures/hwp/memory/p9a_mss_eff_config.C | 25 +++++++++++----------- 2 files changed, 14 insertions(+), 15 deletions(-) (limited to 'src/import/chips/p9a') diff --git a/src/import/chips/p9a/procedures/hwp/memory/lib/freq/axone_mss_freq.C b/src/import/chips/p9a/procedures/hwp/memory/lib/freq/axone_mss_freq.C index d4c280c2f..1a66aa77a 100644 --- a/src/import/chips/p9a/procedures/hwp/memory/lib/freq/axone_mss_freq.C +++ b/src/import/chips/p9a/procedures/hwp/memory/lib/freq/axone_mss_freq.C @@ -286,9 +286,9 @@ fapi2::ReturnCode check_freq_support_vpd( const fapi2::Ta continue; } - l_vpd_info.iv_rank = l_rank.get_port_rank(); + l_vpd_info.iv_rank = l_rank.get_dimm_rank(); FAPI_INF("%s. VPD info - checking rank: %d", - mss::c_str(i_target), l_rank.get_port_rank()); + mss::c_str(i_target), l_rank.get_dimm_rank()); // Check if this VPD configuration is supported FAPI_TRY(is_vpd_config_supported(l_vpd_target, i_proposed_freq, l_vpd_info, o_supported), diff --git a/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_eff_config.C b/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_eff_config.C index 9210684d1..7a62e36a0 100644 --- a/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_eff_config.C +++ b/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_eff_config.C @@ -33,9 +33,11 @@ // *HWP Level: 1 // *HWP Consumed by: FSP:HB -// fapi2 #include #include +#include +#include +#include #include #include #include @@ -57,25 +59,22 @@ /// fapi2::ReturnCode p9a_mss_eff_config( const fapi2::Target& i_target ) { - mss::display_git_commit_info("p9a_mss_eff_config"); - - // Workaround until DIMM level attrs work - uint8_t l_ranks[mss::exp::MAX_DIMM_PER_PORT] = {}; + using mss::DEFAULT_MC_TYPE; - FAPI_TRY( mss::attr::get_num_master_ranks_per_dimm(i_target, l_ranks) ); + mss::display_git_commit_info("p9a_mss_eff_config"); for(const auto& dimm : mss::find_targets(i_target)) { - uint8_t l_dimm_index = 0; uint64_t l_freq = 0; uint32_t l_omi_freq = 0; - FAPI_TRY( mss::attr::get_freq(mss::find_target(dimm), l_freq) ); - FAPI_TRY( mss::convert_ddr_freq_to_omi_freq(mss::find_target(dimm), l_freq, l_omi_freq)); + FAPI_TRY( mss::attr::get_freq(i_target, l_freq) ); + FAPI_TRY( mss::convert_ddr_freq_to_omi_freq(i_target, l_freq, l_omi_freq)); - // Quick hack to get the index until DIMM level attrs work - FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_REL_POS, dimm, l_dimm_index) ); + // Get ranks via rank API + std::vector> l_ranks; + mss::rank::ranks_on_dimm(dimm, l_ranks); - for( auto rank = 0; rank < l_ranks[l_dimm_index]; ++rank ) + for (const auto& l_rank : l_ranks) { std::shared_ptr l_efd_data; @@ -83,7 +82,7 @@ fapi2::ReturnCode p9a_mss_eff_config( const fapi2::Target(i_target); fapi2::MemVpdData_t l_vpd_type(fapi2::MemVpdData::EFD); fapi2::VPDInfo l_vpd_info(l_vpd_type); - l_vpd_info.iv_rank = rank; + l_vpd_info.iv_rank = l_rank.get_dimm_rank(); l_vpd_info.iv_omi_freq_mhz = l_omi_freq; FAPI_TRY( fapi2::getVPD(l_ocmb, l_vpd_info, nullptr), "failed getting VPD size from getVPD" ); -- cgit v1.2.1