summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/memory/lib/mc
diff options
context:
space:
mode:
authorBrian Silver <bsilver@us.ibm.com>2016-07-11 08:06:54 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-08-20 08:37:18 -0500
commita123070b9a630404a234c67db12ae06729597f23 (patch)
treea53c09808f8fc089c0ebe42164751ac0cb2666df /src/import/chips/p9/procedures/hwp/memory/lib/mc
parent53b580bab27316840520a61c73a036c647b60ac3 (diff)
downloadtalos-hostboot-a123070b9a630404a234c67db12ae06729597f23.tar.gz
talos-hostboot-a123070b9a630404a234c67db12ae06729597f23.zip
Add support for dynamic MC PERF2 register setup
Add dimm::kind::vector function to get vectors of kinds Add slave rank calculation to dimm::kind Change-Id: I99c27332d3fae2e7c31fa0ae6de7d0706c315124 Original-Change-Id: I6fce24b30bb9c455f5b3f213e05ca1b956492b4e Depends-On: I0fc6f6ab6f209f7399d0f5369b03a4504838a026 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/26865 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Louis Stermole <stermole@us.ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/82427 Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com> Tested-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/mc')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/mc/mc.C105
1 files changed, 8 insertions, 97 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mc/mc.C b/src/import/chips/p9/procedures/hwp/memory/lib/mc/mc.C
index 42dd1255e..77f2cd481 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/mc/mc.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/mc/mc.C
@@ -52,101 +52,7 @@ namespace mss
template<>
fapi2::ReturnCode dump_regs( const fapi2::Target<TARGET_TYPE_MCS>& i_target )
{
- // To generate this vector:
- // grep MCA_MBA chips/p9/common/include/p9_mc_scom_addresses.H | awk '{ print "{\42" $2 "\42,", $2, "}," }'
- static const std::vector< std::pair<char const*, uint64_t> > l_mba_registers =
- {
- {"MCA_MBACALFIRQ", MCA_MBACALFIRQ },
- {"MCA_MBACALFIRQ_AND", MCA_MBACALFIRQ_AND },
- {"MCA_MBACALFIRQ_OR", MCA_MBACALFIRQ_OR },
- {"MCA_MBACALFIR_ACTION0", MCA_MBACALFIR_ACTION0 },
- {"MCA_MBACALFIR_ACTION1", MCA_MBACALFIR_ACTION1 },
- {"MCA_MBACALFIR_MASK", MCA_MBACALFIR_MASK },
- {"MCA_MBACALFIR_MASK_AND", MCA_MBACALFIR_MASK_AND },
- {"MCA_MBACALFIR_MASK_OR", MCA_MBACALFIR_MASK_OR },
- {"MCA_MBAREF0Q", MCA_MBAREF0Q },
- {"MCA_MBAREFAQ", MCA_MBAREFAQ },
- {"MCA_MBARPC0Q", MCA_MBARPC0Q },
- {"MCA_MBASTR0Q", MCA_MBASTR0Q },
- {"MCA_MBA_CAL0Q", MCA_MBA_CAL0Q },
- {"MCA_MBA_CAL1Q", MCA_MBA_CAL1Q },
- {"MCA_MBA_CAL2Q", MCA_MBA_CAL2Q },
- {"MCA_MBA_CAL3Q", MCA_MBA_CAL3Q },
- {"MCA_MBA_DBG0Q", MCA_MBA_DBG0Q },
- {"MCA_MBA_DBG1Q", MCA_MBA_DBG1Q },
- {"MCA_MBA_DSM0Q", MCA_MBA_DSM0Q },
- {"MCA_MBA_ERR_REPORTQ", MCA_MBA_ERR_REPORTQ },
- {"MCA_MBA_FARB0Q", MCA_MBA_FARB0Q },
- {"MCA_MBA_FARB1Q", MCA_MBA_FARB1Q },
- {"MCA_MBA_FARB2Q", MCA_MBA_FARB2Q },
- {"MCA_MBA_FARB3Q", MCA_MBA_FARB3Q },
- {"MCA_MBA_FARB4Q", MCA_MBA_FARB4Q },
- {"MCA_MBA_FARB5Q", MCA_MBA_FARB5Q },
- {"MCA_MBA_FARB6Q", MCA_MBA_FARB6Q },
- {"MCA_MBA_FARB7Q", MCA_MBA_FARB7Q },
- {"MCA_MBA_PMU0Q", MCA_MBA_PMU0Q },
- {"MCA_MBA_PMU1Q", MCA_MBA_PMU1Q },
- {"MCA_MBA_PMU2Q", MCA_MBA_PMU2Q },
- {"MCA_MBA_PMU3Q", MCA_MBA_PMU3Q },
- {"MCA_MBA_PMU4Q", MCA_MBA_PMU4Q },
- {"MCA_MBA_PMU5Q", MCA_MBA_PMU5Q },
- {"MCA_MBA_PMU6Q", MCA_MBA_PMU6Q },
- {"MCA_MBA_PMU7Q", MCA_MBA_PMU7Q },
- {"MCA_MBA_PMU8Q", MCA_MBA_PMU8Q },
- {"MCA_MBA_RRQ0Q", MCA_MBA_RRQ0Q },
- {"MCA_MBA_TMR0Q", MCA_MBA_TMR0Q },
- {"MCA_MBA_TMR1Q", MCA_MBA_TMR1Q },
- {"MCA_MBA_TMR2Q", MCA_MBA_TMR2Q },
- {"MCA_MBA_WRQ0Q", MCA_MBA_WRQ0Q },
- };
-
- // To generate this vector:
- // grep MCA_M chips/p9/common/include/p9_mc_scom_addresses.H | awk '{ print "{\42" $2 "\42,", $2, "}," }'
- // grep MCS_PORT02 chips/p9/common/include/p9_mc_scom_addresses.H | awk '{ print "{\42" $2 "\42,", $2, "}," }'
- // grep MCS_PORT13 chips/p9/common/include/p9_mc_scom_addresses.H | awk '{ print "{\42" $2 "\42,", $2, "}," }'
- static const std::vector< std::pair<char const*, uint64_t> > l_mcs_registers =
- {
- {"MCS_MCFGP", MCS_MCFGP },
- {"MCS_MCFGPA", MCS_MCFGPA },
- {"MCS_MCFGPM", MCS_MCFGPM },
- {"MCS_MCFGPMA", MCS_MCFGPMA },
- {"MCS_MCFIR", MCS_MCFIR },
- {"MCS_MCFIR_AND", MCS_MCFIR_AND },
- {"MCS_MCFIR_OR", MCS_MCFIR_OR },
- {"MCS_MCFIRACT0", MCS_MCFIRACT0 },
- {"MCS_MCFIRACT1", MCS_MCFIRACT1 },
- {"MCS_MCFIRMASK", MCS_MCFIRMASK },
- {"MCS_MCFIRMASK_AND", MCS_MCFIRMASK_AND },
- {"MCS_MCFIRMASK_OR", MCS_MCFIRMASK_OR },
- {"MCS_MCLFSR", MCS_MCLFSR },
- {"MCS_MCMODE0", MCS_MCMODE0 },
- {"MCS_MCMODE1", MCS_MCMODE1 },
- {"MCS_MCMODE2", MCS_MCMODE2 },
- {"MCS_MCPERF1", MCS_MCPERF1 },
- {"MCS_MCSYNC", MCS_MCSYNC },
- {"MCS_MCTO", MCS_MCTO },
- {"MCS_MCWATCNTL", MCS_MCWATCNTL },
- };
-
- for (const auto& r : l_mcs_registers)
- {
- fapi2::buffer<uint64_t> l_data;
- FAPI_TRY( mss::getScom(i_target, r.second, l_data) );
- FAPI_DBG("dump %s: 0x%016lx 0x%016lx", r.first, r.second, l_data);
- }
-
- for (const auto& p : find_targets<TARGET_TYPE_MCA>(i_target))
- {
- for (const auto r : l_mba_registers)
- {
- fapi2::buffer<uint64_t> l_data;
- FAPI_TRY( mss::getScom(p, r.second, l_data) );
- FAPI_DBG("dump %s: 0x%016lx 0x%016lx", r.first, r.second, l_data);
- }
- }
-
-fapi_try_exit:
- return fapi2::current_err;
+ return fapi2::FAPI2_RC_SUCCESS;
}
namespace mc
@@ -168,7 +74,6 @@ fapi2::ReturnCode thermal_throttle_scominit (const fapi2::Target<fapi2::TARGET_T
FAPI_TRY(mss::getScom(i_target, MCA_MBA_FARB3Q, l_data));
uint32_t l_throttle_per_port = 0;
-
FAPI_TRY( mss::mrw_safemode_mem_throttled_n_commands_per_port( l_throttle_per_port) );
l_data.insertFromRight<MCA_MBA_FARB3Q_CFG_NM_N_PER_SLOT, MCA_MBA_FARB3Q_CFG_NM_N_PER_SLOT_LEN>(l_throttle_per_port);
@@ -178,8 +83,8 @@ fapi2::ReturnCode thermal_throttle_scominit (const fapi2::Target<fapi2::TARGET_T
l_data.clearBit<MCA_MBA_FARB3Q_CFG_NM_CHANGE_AFTER_SYNC>();
FAPI_TRY( mss::putScom(i_target, MCA_MBA_FARB3Q, l_data) );
-
}
+
{
fapi2::buffer<uint64_t> l_data;
uint32_t l_throttle_per_slot = 0;
@@ -191,9 +96,11 @@ fapi2::ReturnCode thermal_throttle_scominit (const fapi2::Target<fapi2::TARGET_T
l_data.insertFromRight<MCA_MBA_FARB4Q_EMERGENCY_N, MCA_MBA_FARB4Q_EMERGENCY_N_LEN>(l_throttle_per_slot);
FAPI_TRY( mss::putScom(i_target, MCA_MBA_FARB4Q, l_data) );
}
+
fapi_try_exit:
return fapi2::current_err;
}
+
///
/// @brief Disable emergency mode throttle for thermal_init
/// @param[in] i_target the MCS target
@@ -203,11 +110,15 @@ fapi_try_exit:
fapi2::ReturnCode disable_emergency_throttle (const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target)
{
fapi2::buffer<uint64_t> l_data;
+
FAPI_TRY( mss::getScom(i_target, MCS_MCMODE0, l_data));
l_data.clearBit<MCS_MCMODE0_ENABLE_EMER_THROTTLE>();
FAPI_TRY( mss::putScom(i_target, MCS_MCMODE0, l_data));
+
fapi_try_exit:
return fapi2::current_err;
}
+
} // namespace mc
+
} //close namespace mss
OpenPOWER on IntegriCloud