diff options
author | Louis Stermole <stermole@us.ibm.com> | 2019-03-22 18:48:29 -0400 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2019-04-05 18:00:23 -0500 |
commit | 54a9c7b4a9e85d7d49a38e3d5e3f2407241cde13 (patch) | |
tree | 052d3e7646a5905d7a4a940a98fbe77333ee0ed1 /src/import/generic | |
parent | acd09d45c209ec014825cb7539aaab357493ea42 (diff) | |
download | talos-hostboot-54a9c7b4a9e85d7d49a38e3d5e3f2407241cde13.tar.gz talos-hostboot-54a9c7b4a9e85d7d49a38e3d5e3f2407241cde13.zip |
Fix duplicate symbol errors from DEFAULT_MC_TYPE
Change-Id: I7a5a40c0f0ab6a809e6906ad40e26fa473cfb286
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/74903
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com>
Reviewed-by: Mark Pizzutillo <mark.pizzutillo@ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/74908
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/generic')
5 files changed, 100 insertions, 155 deletions
diff --git a/src/import/generic/memory/lib/utils/freq/gen_mss_freq.H b/src/import/generic/memory/lib/utils/freq/gen_mss_freq.H index 5abfbfc00..a70dcebb5 100644 --- a/src/import/generic/memory/lib/utils/freq/gen_mss_freq.H +++ b/src/import/generic/memory/lib/utils/freq/gen_mss_freq.H @@ -36,6 +36,7 @@ #ifndef _GEN_MSS_FREQ_H_ #define _GEN_MSS_FREQ_H_ +#include <generic/memory/lib/utils/pos.H> #include <generic/memory/lib/utils/freq/gen_mss_freq_traits.H> #include <generic/memory/lib/utils/find.H> #include <generic/memory/lib/spd/spd_facade.H> diff --git a/src/import/generic/memory/lib/utils/freq/mss_freq_scoreboard.C b/src/import/generic/memory/lib/utils/freq/mss_freq_scoreboard.C index 6ee1e8056..a648fdadc 100644 --- a/src/import/generic/memory/lib/utils/freq/mss_freq_scoreboard.C +++ b/src/import/generic/memory/lib/utils/freq/mss_freq_scoreboard.C @@ -22,153 +22,3 @@ /* permissions and limitations under the License. */ /* */ /* IBM_PROLOG_END_TAG */ - -/// -/// @file mss_freq_scoreboard.C -/// @brief Frequency scoreboard class definitions -/// -// *HWP HWP Owner: Stephen Glancy <sglancy@us.ibm.com> -// *HWP HWP Backup: Louis Stermole <stermole@us.ibm.com> -// *HWP Team: Memory -// *HWP Level: 3 -// *HWP Consumed by: HB:FSP - -#include <vector> -#include <fapi2.H> -#include <generic/memory/lib/utils/freq/mss_freq_scoreboard.H> -#include <generic/memory/lib/utils/c_str.H> -#include <generic/memory/lib/utils/find.H> -#include <generic/memory/lib/utils/shared/mss_generic_consts.H> - -namespace mss -{ - -/// -/// @brief Remove frequencies above a limit from the scoreboard -/// @param[in] i_port_pos position index of port within parent MCBIST -/// @param[in] i_freq_limit upper limit for frequency -/// @return FAPI2_RC_SUCCESS if successful -/// -fapi2::ReturnCode freq_scoreboard::remove_freqs_above_limit(const uint64_t i_port_pos, - const uint32_t i_freq_limit) -{ - FAPI_TRY( check_port_position(i_port_pos, - generic_ffdc_codes::FREQ_SCOREBOARD_REMOVE_FREQS_ABOVE_LIMIT), - "Invalid port index passed to remove_freqs_above_limit (%d)", - i_port_pos); - - { - auto& l_port_supported_freqs = iv_supported_port_freqs[i_port_pos]; - - // Can't do a ranged for loop here because we need the index to get the frequency out of iv_freq_values - for ( size_t l_index = 0; l_index < l_port_supported_freqs.size(); ++l_index ) - { - const auto l_scoreboard_freq = iv_freq_values[l_index]; - - if ( l_scoreboard_freq > i_freq_limit ) - { - FAPI_INF("Removing freq %d on port %d since it's above the limit %d", l_scoreboard_freq, i_port_pos, i_freq_limit); - l_port_supported_freqs[l_index] = false; - } - } - } - - return fapi2::FAPI2_RC_SUCCESS; - -fapi_try_exit: - return fapi2::current_err; -} - -/// -/// @brief Remove frequencies above a limit from the scoreboard -/// @param[in] i_port_pos position index of port within parent MCBIST -/// @param[in] i_freq_limits reference to vector of upper limits for frequency per port -/// @return FAPI2_RC_SUCCESS if successful -/// -fapi2::ReturnCode freq_scoreboard::remove_freqs_above_limit(const uint64_t i_port_pos, - const std::vector<uint32_t> i_freq_limits) -{ - FAPI_TRY( check_port_position(i_port_pos, - generic_ffdc_codes::FREQ_SCOREBOARD_REMOVE_FREQS_ABOVE_LIMIT_VECTOR), - "Invalid port index passed to remove_freqs_above_limit (%d)", - i_port_pos); - - FAPI_ASSERT(i_freq_limits.size() == iv_num_ports, - fapi2::MSS_INVALID_FREQ_LIST_PASSED() - .set_SIZE(i_freq_limits.size()) - .set_EXPECTED(iv_num_ports), - "Invalid frequency list passed to remove_freqs_above_limit (size should be %d but got %d)", - iv_num_ports, i_freq_limits.size()); - - { - const auto l_freq_limit = i_freq_limits[i_port_pos]; - FAPI_TRY( this->remove_freqs_above_limit(i_port_pos, l_freq_limit) ); - } - - return fapi2::FAPI2_RC_SUCCESS; - -fapi_try_exit: - return fapi2::current_err; -} - -/// -/// @brief Return the maximum supported frequency for a given port -/// @param[in] i_port_pos position index of port within parent MCBIST -/// @param[out] o_freq max supported frequency -/// @return FAPI2_RC_SUCCESS if successful -/// -fapi2::ReturnCode freq_scoreboard::max_supported_freq(const uint64_t i_port_pos, - uint32_t& o_freq) const -{ - FAPI_TRY( this->check_port_position(i_port_pos, - generic_ffdc_codes::FREQ_SCOREBOARD_MAX_SUPPORTED_FREQ), - "Invalid port index passed to max_supported_freq (%d)", - i_port_pos); - - { - std::vector<uint32_t> l_supported_freqs; - FAPI_TRY( this->supported_freqs(i_port_pos, l_supported_freqs) ); - - o_freq = l_supported_freqs.empty() ? 0 : l_supported_freqs.back(); - } - - return fapi2::FAPI2_RC_SUCCESS; - -fapi_try_exit: - return fapi2::current_err; -} - -/// -/// @brief Return a list of supported frequencies for a given port -/// @param[in] i_port_pos position index of port within parent MCBIST -/// @param[out] o_freq vector of supported frequencies -/// @return FAPI2_RC_SUCCESS if successful -/// -fapi2::ReturnCode freq_scoreboard::supported_freqs(const uint64_t i_port_pos, - std::vector<uint32_t>& o_freqs) const -{ - FAPI_TRY( check_port_position(i_port_pos, - generic_ffdc_codes::FREQ_SCOREBOARD_SUPPORTED_FREQS), - "Invalid port index passed to supported_freqs (%d)", - i_port_pos); - - { - o_freqs.clear(); - auto& l_port_supported_freqs = iv_supported_port_freqs[i_port_pos]; - - for ( size_t l_index = 0; l_index < iv_freq_values.size(); ++l_index ) - { - if (l_port_supported_freqs[l_index]) - { - o_freqs.push_back(iv_freq_values[l_index]); - } - } - } - - return fapi2::FAPI2_RC_SUCCESS; - -fapi_try_exit: - return fapi2::current_err; -} - -} // ns mss diff --git a/src/import/generic/memory/lib/utils/freq/mss_freq_scoreboard.H b/src/import/generic/memory/lib/utils/freq/mss_freq_scoreboard.H index 1cd31adc5..104bf38ca 100644 --- a/src/import/generic/memory/lib/utils/freq/mss_freq_scoreboard.H +++ b/src/import/generic/memory/lib/utils/freq/mss_freq_scoreboard.H @@ -39,6 +39,7 @@ #include <vector> #include <fapi2.H> #include <generic/memory/lib/utils/freq/gen_mss_freq_traits.H> +#include <generic/memory/lib/utils/pos.H> #include <generic/memory/lib/utils/c_str.H> #include <generic/memory/lib/utils/find.H> #include <generic/memory/lib/utils/pos.H> @@ -132,7 +133,34 @@ class freq_scoreboard /// @return FAPI2_RC_SUCCESS if successful /// fapi2::ReturnCode remove_freqs_above_limit(const uint64_t i_port_pos, - const uint32_t i_freq_limit); + const uint32_t i_freq_limit) + { + FAPI_TRY( check_port_position(i_port_pos, + generic_ffdc_codes::FREQ_SCOREBOARD_REMOVE_FREQS_ABOVE_LIMIT), + "Invalid port index passed to remove_freqs_above_limit (%d)", + i_port_pos); + + { + auto& l_port_supported_freqs = iv_supported_port_freqs[i_port_pos]; + + // Can't do a ranged for loop here because we need the index to get the frequency out of iv_freq_values + for ( size_t l_index = 0; l_index < l_port_supported_freqs.size(); ++l_index ) + { + const auto l_scoreboard_freq = iv_freq_values[l_index]; + + if ( l_scoreboard_freq > i_freq_limit ) + { + FAPI_INF("Removing freq %d on port %d since it's above the limit %d", l_scoreboard_freq, i_port_pos, i_freq_limit); + l_port_supported_freqs[l_index] = false; + } + } + } + + return fapi2::FAPI2_RC_SUCCESS; + + fapi_try_exit: + return fapi2::current_err; + } /// /// @brief Remove frequencies above a limit from the scoreboard @@ -141,7 +169,30 @@ class freq_scoreboard /// @return FAPI2_RC_SUCCESS if successful /// fapi2::ReturnCode remove_freqs_above_limit(const uint64_t i_port_pos, - const std::vector<uint32_t> i_freq_limits); + const std::vector<uint32_t> i_freq_limits) + { + FAPI_TRY( check_port_position(i_port_pos, + generic_ffdc_codes::FREQ_SCOREBOARD_REMOVE_FREQS_ABOVE_LIMIT_VECTOR), + "Invalid port index passed to remove_freqs_above_limit (%d)", + i_port_pos); + + FAPI_ASSERT(i_freq_limits.size() == iv_num_ports, + fapi2::MSS_INVALID_FREQ_LIST_PASSED() + .set_SIZE(i_freq_limits.size()) + .set_EXPECTED(iv_num_ports), + "Invalid frequency list passed to remove_freqs_above_limit (size should be %d but got %d)", + iv_num_ports, i_freq_limits.size()); + + { + const auto l_freq_limit = i_freq_limits[i_port_pos]; + FAPI_TRY( this->remove_freqs_above_limit(i_port_pos, l_freq_limit) ); + } + + return fapi2::FAPI2_RC_SUCCESS; + + fapi_try_exit: + return fapi2::current_err; + } /// /// @brief Remove frequencies not on a given list from the scoreboard @@ -185,7 +236,25 @@ class freq_scoreboard /// @return FAPI2_RC_SUCCESS if successful /// fapi2::ReturnCode max_supported_freq(const uint64_t i_port_pos, - uint32_t& o_freq) const; + uint32_t& o_freq) const + { + FAPI_TRY( this->check_port_position(i_port_pos, + generic_ffdc_codes::FREQ_SCOREBOARD_MAX_SUPPORTED_FREQ), + "Invalid port index passed to max_supported_freq (%d)", + i_port_pos); + + { + std::vector<uint32_t> l_supported_freqs; + FAPI_TRY( this->supported_freqs(i_port_pos, l_supported_freqs) ); + + o_freq = l_supported_freqs.empty() ? 0 : l_supported_freqs.back(); + } + + return fapi2::FAPI2_RC_SUCCESS; + + fapi_try_exit: + return fapi2::current_err; + } /// /// @brief Return a list of supported frequencies for a given port @@ -194,7 +263,31 @@ class freq_scoreboard /// @return FAPI2_RC_SUCCESS if successful /// fapi2::ReturnCode supported_freqs(const uint64_t i_port_pos, - std::vector<uint32_t>& o_freqs) const; + std::vector<uint32_t>& o_freqs) const + { + FAPI_TRY( check_port_position(i_port_pos, + generic_ffdc_codes::FREQ_SCOREBOARD_SUPPORTED_FREQS), + "Invalid port index passed to supported_freqs (%d)", + i_port_pos); + + { + o_freqs.clear(); + auto& l_port_supported_freqs = iv_supported_port_freqs[i_port_pos]; + + for ( size_t l_index = 0; l_index < iv_freq_values.size(); ++l_index ) + { + if (l_port_supported_freqs[l_index]) + { + o_freqs.push_back(iv_freq_values[l_index]); + } + } + } + + return fapi2::FAPI2_RC_SUCCESS; + + fapi_try_exit: + return fapi2::current_err; + } /// /// @brief Resolve frequency scoreboard by deconfiguring any non-conforming ports diff --git a/src/import/generic/memory/lib/utils/mss_math.H b/src/import/generic/memory/lib/utils/mss_math.H index fc9a9eb7d..b60cbc2ae 100644 --- a/src/import/generic/memory/lib/utils/mss_math.H +++ b/src/import/generic/memory/lib/utils/mss_math.H @@ -31,6 +31,7 @@ #ifndef _MSS_MATH_H_ #define _MSS_MATH_H_ +#include <fapi2.H> #include <cstdint> namespace mss diff --git a/src/import/generic/memory/lib/utils/voltage/gen_mss_volt.H b/src/import/generic/memory/lib/utils/voltage/gen_mss_volt.H index 1b74f0028..d84c97dbe 100644 --- a/src/import/generic/memory/lib/utils/voltage/gen_mss_volt.H +++ b/src/import/generic/memory/lib/utils/voltage/gen_mss_volt.H @@ -37,9 +37,9 @@ #define _GEN_MSS_VOLT_H_ #include <fapi2.H> -#include <generic/memory/lib/utils/shared/mss_generic_consts.H> #include <generic/memory/lib/utils/find.H> #include <generic/memory/lib/utils/c_str.H> +#include <generic/memory/lib/utils/shared/mss_generic_consts.H> #include <generic/memory/lib/utils/voltage/gen_mss_voltage_traits.H> namespace mss |