diff options
author | Andre Marin <aamarin@us.ibm.com> | 2019-07-09 15:50:06 -0400 |
---|---|---|
committer | Daniel M Crowell <dcrowell@us.ibm.com> | 2019-07-19 09:07:03 -0500 |
commit | 831f9e0d8b3297f38acd3f059b853f5711877530 (patch) | |
tree | a9b405fc568edca26ce2239fc15adc442c520794 /src/import/chips/ocmb/explorer/procedures/hwp/memory | |
parent | dd6aa0faadde7069f8bf628b5557b98206730c2c (diff) | |
download | talos-hostboot-831f9e0d8b3297f38acd3f059b853f5711877530.tar.gz talos-hostboot-831f9e0d8b3297f38acd3f059b853f5711877530.zip |
Fix HB error with -Os compile flag due to eff_config
Top level template is NOT unique between the two files
when using the -Os compile flag. The linker just picks
the wrong file template definition between p9a and p9n.
In -O3 everything is left in place, inline so it just works
which is why we didn't hit this error before in HB
Change-Id: I529f93fc91684ae14a132d96f518a5f66f036d4b
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/80167
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com>
Reviewed-by: Louis Stermole <stermole@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@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/80229
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/ocmb/explorer/procedures/hwp/memory')
-rw-r--r-- | src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_attr_engine_traits.H | 102 | ||||
-rw-r--r-- | src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H | 6 |
2 files changed, 48 insertions, 60 deletions
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_attr_engine_traits.H b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_attr_engine_traits.H index ff72e2e65..8ed2289b5 100644 --- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_attr_engine_traits.H +++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_attr_engine_traits.H @@ -58,7 +58,7 @@ namespace mss /// @note exp::attr_eff_engine_fields, SPD_TAA_MIN /// template< > -struct setTimingTraits< exp::attr_eff_engine_fields, exp::SPD_TAA_MIN > +struct setTimingTraits< exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::SPD_TAA_MIN > { static constexpr const char* TIMING_NAME = "tAAmin"; @@ -74,19 +74,21 @@ struct setTimingTraits< exp::attr_eff_engine_fields, exp::SPD_TAA_MIN > /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, ATTR_EFF_BASE_CASE specialization /// NOP for base case needed to trigger partial specialization of attr_engine /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::ATTR_EFF_BASE_CASE> {}; +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::ATTR_EFF_BASE_CASE> {}; /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, ADDRESS_MIRROR specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::ADDRESS_MIRROR> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::ADDRESS_MIRROR> { using attr_type = fapi2::ATTR_MEM_EXP_DRAM_ADDRESS_MIRRORING_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -133,10 +135,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::ADDRESS_MIRROR> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, BYTE_ENABLES specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::BYTE_ENABLES> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::BYTE_ENABLES> { using attr_type = fapi2::ATTR_MEM_EFF_BYTE_ENABLES_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -183,10 +186,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::BYTE_ENABLES> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, NIBBLE_ENABLES specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::NIBBLE_ENABLES> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::NIBBLE_ENABLES> { using attr_type = fapi2::ATTR_MEM_EFF_NIBBLE_ENABLES_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -233,10 +237,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::NIBBLE_ENABLES> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, SPD_TAA_MIN specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::SPD_TAA_MIN> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::SPD_TAA_MIN> { using attr_type = fapi2::ATTR_MEM_EXP_SPD_TAA_MIN_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -276,17 +281,19 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::SPD_TAA_MIN> static fapi2::ReturnCode get_value_to_set(const spd::facade& i_spd_data, attr_integral_type& o_setting) { - return mss::calc_spd_time_in_ps<exp::attr_eff_engine_fields, exp::SPD_TAA_MIN>(i_spd_data, o_setting); + return mss::calc_spd_time_in_ps<exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::SPD_TAA_MIN>(i_spd_data, + o_setting); } }; /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, FOUR_RANK_MODE specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::FOUR_RANK_MODE> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::FOUR_RANK_MODE> { using attr_type = fapi2::ATTR_MEM_EFF_FOUR_RANK_MODE_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -340,10 +347,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::FOUR_RANK_MODE> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, DDP_COMPATIBILITY specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::DDP_COMPATIBILITY> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::DDP_COMPATIBILITY> { using attr_type = fapi2::ATTR_MEM_EFF_DDP_COMPATIBILITY_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -397,10 +405,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::DDP_COMPATIBILITY> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, TSV_8H_SUPPORT specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::TSV_8H_SUPPORT> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::TSV_8H_SUPPORT> { using attr_type = fapi2::ATTR_MEM_EFF_TSV_8H_SUPPORT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -447,10 +456,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::TSV_8H_SUPPORT> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, PSTATES specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::PSTATES> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::PSTATES> { using attr_type = fapi2::ATTR_MEM_EFF_PSTATES_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -497,10 +507,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::PSTATES> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, MRAM_SUPPORT specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::MRAM_SUPPORT> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::MRAM_SUPPORT> { using attr_type = fapi2::ATTR_MEM_EFF_MRAM_SUPPORT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -554,10 +565,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::MRAM_SUPPORT> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, SPD_CL_SUPPORTED specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::SPD_CL_SUPPORTED> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::SPD_CL_SUPPORTED> { using attr_type = fapi2::ATTR_MEM_EXP_SPD_CL_SUPPORTED_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -610,10 +622,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::SPD_CL_SUPPORTED> /// /// @brief Traits for pre_data_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note AXONE, DIMM_TYPE_METADATA specialization /// -template<> -struct attrEngineTraits<generic_metadata_fields, DIMM_TYPE_METADATA> +template< proc_type P > +struct attrEngineTraits<P, generic_metadata_fields, generic_metadata_fields::DIMM_TYPE_METADATA> { using attr_type = fapi2::ATTR_MEM_DIMM_TYPE_METADATA_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -694,10 +707,11 @@ class dimmPosTraits<mss::mc_type::EXPLORER> /// /// @brief Traits for pre_data_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note generic_metadata_fields, DRAM_GEN_METADATA specialization /// -template<> -struct attrEngineTraits<generic_metadata_fields, DRAM_GEN_METADATA> +template< proc_type P > +struct attrEngineTraits<P, generic_metadata_fields, generic_metadata_fields::DRAM_GEN_METADATA> { using attr_type = fapi2::ATTR_MEM_DRAM_GEN_METADATA_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -744,10 +758,11 @@ struct attrEngineTraits<generic_metadata_fields, DRAM_GEN_METADATA> /// /// @brief Traits for pre_data_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note generic_metadata_fields, DIMM_POS_METADATA specialization /// -template<> -struct attrEngineTraits<generic_metadata_fields, DIMM_POS_METADATA> +template< proc_type P > +struct attrEngineTraits<P, generic_metadata_fields, generic_metadata_fields::DIMM_POS_METADATA> { using attr_type = fapi2::ATTR_MEM_DIMM_POS_METADATA_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -792,33 +807,6 @@ struct attrEngineTraits<generic_metadata_fields, DIMM_POS_METADATA> } }; -//////////////////////////////////////////////////////// -// Explorer specific traits for attrEnumTraits -//////////////////////////////////////////////////////// - - -/// -/// @brief Value traits for attr_eff_engine_fields -/// @class attrEngineTraits -/// @note exp::attr_eff_engine_fields are exp DDIMM SPD fields -/// -template < > -struct attrEnumTraits<exp::attr_eff_engine_fields> -{ - static constexpr size_t DISPATCHER = exp::ATTR_EFF_DISPATCHER; -}; - -/// -/// @brief Value traits for attr_eff_engine_fields -/// @class attrEngineTraits -/// @note generic_metadata_fields used for dimm pos setting -/// -template < > -struct attrEnumTraits<generic_metadata_fields> -{ - static constexpr size_t DISPATCHER = ATTR_METADATA_DISPATCHER; -}; - }//mss #endif diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H index 910213e59..b2b93fedf 100644 --- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H +++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H @@ -90,9 +90,9 @@ enum attr_delay_index /// @brief enum list of explorer SPD derived attributes to set /// @note these attrs are strictly derived from SPD /// @warning wrapped in exp namesapce to be distinguished from -/// the generic attr_eff_engine_fields +/// the exp::attr_eff_engine_fields /// -enum attr_eff_engine_fields +enum class attr_eff_engine_fields { // Template recursive base case ATTR_EFF_BASE_CASE = 0, @@ -110,7 +110,7 @@ enum attr_eff_engine_fields ADDRESS_MIRROR = 10, // Dispatcher set to last enum value - ATTR_EFF_DISPATCHER = ADDRESS_MIRROR, + DISPATCHER = ADDRESS_MIRROR, }; /// |