summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp
diff options
context:
space:
mode:
authorJoe McGill <jmcgill@us.ibm.com>2016-07-23 17:48:47 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-08-06 22:41:34 -0400
commit7ca98de565892e13d5ea08733ebc7fa33192eac6 (patch)
treea58a8b291b9da73d599d894e01cf1a80b663e449 /src/import/chips/p9/procedures/hwp
parent1ce7b0abf88a945385f498ee4d0b602290289497 (diff)
downloadtalos-hostboot-7ca98de565892e13d5ea08733ebc7fa33192eac6.tar.gz
talos-hostboot-7ca98de565892e13d5ea08733ebc7fa33192eac6.zip
VBU IPL framework updates
p9_sim_ipl_sequencer run_ipl ipl_base.inc switch to Cronus istep calls (work-in-progress) add cache contained RUNN mode default to scan via image via putRing reduce default checkpoint frequency to end of each numbered istep p9_revert_sbe_mcs_setup update for chip contained mode execution clear SBE setup via absolute addressing based on HW/FW interlock discussion p9_sim_model_boot p9_sim_pll_refclk_setup configure variable osc for PNOR model switch to final refclock setting prior to proc_sbe_npll_setup (SBE/GSD2PIB) p9_mss_eff_grouping p9_mss_setup_bars p9_throttle_sync remove libmss build dependency for compatibility with cronus istep base_hwp_attribute_file remove RUNN attribute init sethier_R_exceptions add qualification based on input from Darren Duffy Change-Id: I634a2541b23f37ab44005a88961a19bcc1d4708e Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27408 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Brian R. Silver <bsilver@us.ibm.com> Reviewed-by: James N. Klazynski <jklazyns@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27409 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/mss.mk2
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_mss_eff_grouping.mk2
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_mss_setup_bars.mk2
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_revert_sbe_mcs_setup.C104
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_throttle_sync.mk2
5 files changed, 71 insertions, 41 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mss.mk b/src/import/chips/p9/procedures/hwp/memory/lib/mss.mk
index 1061ffa70..f7a7434e4 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/mss.mk
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/mss.mk
@@ -39,6 +39,8 @@ MSS_SOURCE_DIRS := $(shell find $(MSS_PATH) -type d)
# Define common source and include paths.
define MSS_MODULE_INCLUDES
$(foreach dir, $(MSS_SOURCE_DIRS), $(call ADD_MODULE_SRCDIR,$(1),$(dir)))
+$(call ADD_MODULE_INCDIR,$(1),$(ROOTPATH)/chips/p9/procedures/hwp/memory)
+$(call ADD_MODULE_INCDIR,$(1),$(FAPI2_PATH)/include)
$(call ADD_MODULE_INCDIR,$(1),$(GENPATH))
$(call ADD_MODULE_INCDIR,$(1),$(FAPI2_PLAT_INCLUDE))
endef
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_mss_eff_grouping.mk b/src/import/chips/p9/procedures/hwp/nest/p9_mss_eff_grouping.mk
index 60d636419..86e28ed1c 100644
--- a/src/import/chips/p9/procedures/hwp/nest/p9_mss_eff_grouping.mk
+++ b/src/import/chips/p9/procedures/hwp/nest/p9_mss_eff_grouping.mk
@@ -24,6 +24,6 @@
# IBM_PROLOG_END_TAG
PROCEDURE=p9_mss_eff_grouping
OBJS+=p9_fbc_utils.o
-lib$(PROCEDURE)_DEPLIBS+=mss
$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/p9/procedures/hwp/memory/)
+$(call ADD_MODULE_INDDIR,$(PROCEDURE),$(ROOTPATH)/chips/p9/procedures/hwp/memory/lib)
$(call BUILD_PROCEDURE)
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_mss_setup_bars.mk b/src/import/chips/p9/procedures/hwp/nest/p9_mss_setup_bars.mk
index 0f17ee0e1..bee1ce1d9 100644
--- a/src/import/chips/p9/procedures/hwp/nest/p9_mss_setup_bars.mk
+++ b/src/import/chips/p9/procedures/hwp/nest/p9_mss_setup_bars.mk
@@ -23,6 +23,6 @@
#
# IBM_PROLOG_END_TAG
PROCEDURE=p9_mss_setup_bars
-lib$(PROCEDURE)_DEPLIBS+=mss
$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/p9/procedures/hwp/memory/)
+$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/p9/procedures/hwp/memory/lib)
$(call BUILD_PROCEDURE)
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_revert_sbe_mcs_setup.C b/src/import/chips/p9/procedures/hwp/nest/p9_revert_sbe_mcs_setup.C
index d5eac3b01..5f97d14a7 100644
--- a/src/import/chips/p9/procedures/hwp/nest/p9_revert_sbe_mcs_setup.C
+++ b/src/import/chips/p9/procedures/hwp/nest/p9_revert_sbe_mcs_setup.C
@@ -45,19 +45,33 @@
#include <p9_mc_scom_addresses.H>
#include <p9_mc_scom_addresses_fld.H>
-
//------------------------------------------------------------------------------
-// Function prototypes
+// Constant definitions
//------------------------------------------------------------------------------
-///
-/// @brief Reset SBE applied hostboot dcbz MC configuration for one unit target
-///
-/// @param[in] i_target Reference to an MC target (MCS/MI)
-/// @return FAPI2_RC_SUCCESS if success, else error code.
-///
-template<fapi2::TargetType T>
-fapi2::ReturnCode revert_hb_dcbz_config(const fapi2::Target<T>& i_target);
+// MCS target type constants
+const uint8_t NUM_MCS_TARGETS = 4;
+const uint64_t MCS_MCFGP_ARR[NUM_MCS_TARGETS] =
+{
+ MCS_0_MCFGP,
+ MCS_1_MCFGP,
+ MCS_2_MCFGP,
+ MCS_3_MCFGP
+};
+const uint64_t MCS_MCMODE1_ARR[NUM_MCS_TARGETS] =
+{
+ MCS_0_MCMODE1,
+ MCS_1_MCMODE1,
+ MCS_2_MCMODE1,
+ MCS_3_MCMODE1
+};
+const uint64_t MCS_MCFIRMASK_OR_ARR[NUM_MCS_TARGETS] =
+{
+ MCS_0_MCFIRMASK_OR,
+ MCS_1_MCFIRMASK_OR,
+ MCS_2_MCFIRMASK_OR,
+ MCS_3_MCFIRMASK_OR
+};
//------------------------------------------------------------------------------
@@ -65,9 +79,10 @@ fapi2::ReturnCode revert_hb_dcbz_config(const fapi2::Target<T>& i_target);
//------------------------------------------------------------------------------
-// specialization for MCS target type
-template<>
-fapi2::ReturnCode revert_hb_dcbz_config(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target)
+// helper function for MCS target type
+fapi2::ReturnCode
+revert_mcs_hb_dcbz_config(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target,
+ const uint8_t i_mcs)
{
FAPI_DBG("Start");
fapi2::buffer<uint64_t> l_mcfgp;
@@ -75,30 +90,30 @@ fapi2::ReturnCode revert_hb_dcbz_config(const fapi2::Target<fapi2::TARGET_TYPE_M
fapi2::buffer<uint64_t> l_mcfirmask;
// MCFGP -- mark BAR invalid & reset grouping configuration fields
- FAPI_TRY(fapi2::getScom(i_target, MCS_MCFGP, l_mcfgp),
- "Error from getScom (MCS_MCFGP)");
+ FAPI_TRY(fapi2::getScom(i_target, MCS_MCFGP_ARR[i_mcs], l_mcfgp),
+ "Error from getScom (MCS%d_MCFGP)", i_mcs);
l_mcfgp.clearBit<MCS_MCFGP_VALID>();
l_mcfgp.clearBit<MCS_MCFGP_MC_CHANNELS_PER_GROUP,
MCS_MCFGP_MC_CHANNELS_PER_GROUP_LEN>();
l_mcfgp.clearBit<MCS_MCFGP_CHANNEL_0_GROUP_MEMBER_IDENTIFICATION,
MCS_MCFGP_CHANNEL_0_GROUP_MEMBER_IDENTIFICATION_LEN>();
l_mcfgp.clearBit<MCS_MCFGP_GROUP_SIZE, MCS_MCFGP_GROUP_SIZE_LEN>();
- FAPI_TRY(fapi2::putScom(i_target, MCS_MCFGP, l_mcfgp),
- "Error from putScom (MCS_MCFGP)");
+ FAPI_TRY(fapi2::putScom(i_target, MCS_MCFGP_ARR[i_mcs], l_mcfgp),
+ "Error from putScom (MCS%d_MCFGP)", i_mcs);
// MCMODE1 -- enable speculation
- FAPI_TRY(fapi2::getScom(i_target, MCS_MCMODE1, l_mcmode1),
- "Error from getScom (MCS_MCMODE1)");
+ FAPI_TRY(fapi2::getScom(i_target, MCS_MCMODE1_ARR[i_mcs], l_mcmode1),
+ "Error from getScom (MCS%d_MCMODE1)", i_mcs);
l_mcmode1.clearBit<MCS_MCMODE1_DISABLE_ALL_SPEC_OPS>();
l_mcmode1.clearBit<MCS_MCMODE1_DISABLE_SPEC_OP,
MCS_MCMODE1_DISABLE_SPEC_OP_LEN>();
- FAPI_TRY(fapi2::putScom(i_target, MCS_MCMODE1, l_mcmode1),
- "Error from putScom (MCS_MCMODE1)");
+ FAPI_TRY(fapi2::putScom(i_target, MCS_MCMODE1_ARR[i_mcs], l_mcmode1),
+ "Error from putScom (MCS%d_MCMODE1)", i_mcs);
// MCFIRMASK -- mask all errors
l_mcfirmask.flush<1>();
- FAPI_TRY(fapi2::putScom(i_target, MCS_MCFIRMASK_OR, l_mcfirmask),
- "Error from putScom (MCS_MCFIRMASK_OR)");
+ FAPI_TRY(fapi2::putScom(i_target, MCS_MCFIRMASK_OR_ARR[i_mcs], l_mcfirmask),
+ "Error from putScom (MCS%d_MCFIRMASK_OR)", i_mcs);
fapi_try_exit:
FAPI_DBG("End");
@@ -106,11 +121,18 @@ fapi_try_exit:
}
-// specialization for MI target type
-template<>
-fapi2::ReturnCode revert_hb_dcbz_config(const fapi2::Target<fapi2::TARGET_TYPE_MI>& i_target)
+// helper function for MI target type
+fapi2::ReturnCode
+revert_mi_hb_dcbz_config(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
{
- // TODO: implement for Cumulus (MI target)
+ FAPI_DBG("Start");
+
+ // TODO: implement for Cumulus/MI target type
+ (void) i_target;
+ goto fapi_try_exit;
+
+fapi_try_exit:
+ FAPI_DBG("End");
return fapi2::current_err;
}
@@ -121,25 +143,31 @@ p9_revert_sbe_mcs_setup(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_tar
{
FAPI_INF("Start");
- auto l_mcs_chiplets = i_target.getChildren<fapi2::TARGET_TYPE_MCS>();
+ fapi2::Target<fapi2::TARGET_TYPE_SYSTEM> FAPI_SYSTEM;
+ fapi2::ATTR_SYSTEM_IPL_PHASE_Type l_ipl_phase;
+ auto l_mcs_chiplets = i_target.getChildren<fapi2::TARGET_TYPE_MCS>(fapi2::TARGET_STATE_PRESENT);
+
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_SYSTEM_IPL_PHASE, FAPI_SYSTEM, l_ipl_phase),
+ "Error from FAPI_ATTR_GET (ATTR_SYSTEM_IPL_PHASE)");
+
+ if (l_ipl_phase == fapi2::ENUM_ATTR_SYSTEM_IPL_PHASE_CHIP_CONTAINED)
+ {
+ FAPI_INF("Leaving MC BAR configured for chip contained execution");
+ goto fapi_try_exit;
+ }
if (l_mcs_chiplets.size())
{
- for (auto l_target_mcs : l_mcs_chiplets)
+ for (uint8_t l_mcs = 0; l_mcs < NUM_MCS_TARGETS; l_mcs++)
{
- FAPI_TRY(revert_hb_dcbz_config(l_target_mcs),
- "Error from revert_hb_dcbz_config (MCS)");
+ FAPI_TRY(revert_mcs_hb_dcbz_config(i_target, l_mcs),
+ "Error from revert_mcs_hb_dcbz_config");
}
}
else
{
- auto l_mi_chiplets = i_target.getChildren<fapi2::TARGET_TYPE_MI>();
-
- for (auto l_target_mi : l_mi_chiplets)
- {
- FAPI_TRY(revert_hb_dcbz_config(l_target_mi),
- "Error from revert_hb_dcbz_config (MI)");
- }
+ FAPI_TRY(revert_mi_hb_dcbz_config(i_target),
+ "Error from revert_mi_hb_dcbz_config");
}
fapi_try_exit:
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_throttle_sync.mk b/src/import/chips/p9/procedures/hwp/nest/p9_throttle_sync.mk
index 6e3f5a653..3f1f2c4d6 100644
--- a/src/import/chips/p9/procedures/hwp/nest/p9_throttle_sync.mk
+++ b/src/import/chips/p9/procedures/hwp/nest/p9_throttle_sync.mk
@@ -23,6 +23,6 @@
#
# IBM_PROLOG_END_TAG
PROCEDURE=p9_throttle_sync
-lib$(PROCEDURE)_DEPLIBS+=mss
$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/p9/procedures/hwp/memory/)
+$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(ROOTPATH)/chips/p9/procedures/hwp/memory/lib)
$(call BUILD_PROCEDURE)
OpenPOWER on IntegriCloud