summaryrefslogtreecommitdiffstats
path: root/src/usr/isteps
diff options
context:
space:
mode:
authorChristian Geddes <crgeddes@us.ibm.com>2019-10-14 13:30:30 -0500
committerDaniel M Crowell <dcrowell@us.ibm.com>2019-10-17 15:27:08 -0500
commit5b6b984fa8eeba54caa06853e43a14bca92d0371 (patch)
tree9ec99d598b17d69f3269fe4bb5d1db72ebd21d23 /src/usr/isteps
parent8f549e7548fb45819fc4fd8637448f428f14eec1 (diff)
downloadtalos-hostboot-5b6b984fa8eeba54caa06853e43a14bca92d0371.tar.gz
talos-hostboot-5b6b984fa8eeba54caa06853e43a14bca92d0371.zip
Reorganize omi training steps accounting for new omi training hwps
A few new steps have been added that were found to be required for explorer power on. The correct steps of the OMI training need to be dmi_pre_trainadv: - exp_omi_setup - p9a_omi_setup dmi_io_run_training: - exp_omi_train (skip on gemini) - p9a_omi_train dmi_post_trainadv: - exp_omi_train_check (skip on gemini) - p9a_omi_train_check Change-Id: I90a3c2dfb1bec8983d38e0d4810753154651e452 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/85289 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> 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: Matt Derksen <mderkse1@us.ibm.com> Reviewed-by: William G Hoffa <wghoffa@us.ibm.com> Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/isteps')
-rw-r--r--src/usr/isteps/istep12/call_dmi_io_run_training.C85
-rw-r--r--src/usr/isteps/istep12/call_dmi_post_trainadv.C112
-rw-r--r--src/usr/isteps/istep12/call_dmi_pre_trainadv.C101
-rw-r--r--src/usr/isteps/istep12/makefile2
4 files changed, 201 insertions, 99 deletions
diff --git a/src/usr/isteps/istep12/call_dmi_io_run_training.C b/src/usr/isteps/istep12/call_dmi_io_run_training.C
index 9e93e816c..8c7ead318 100644
--- a/src/usr/isteps/istep12/call_dmi_io_run_training.C
+++ b/src/usr/isteps/istep12/call_dmi_io_run_training.C
@@ -26,12 +26,12 @@
#include <trace/interface.H>
#include <initservice/taskargs.H>
+#include <initservice/isteps_trace.H>
#include <errl/errlentry.H>
-
-#include <isteps/hwpisteperror.H>
#include <errl/errludtarget.H>
-
-#include <initservice/isteps_trace.H>
+#include <util/utilmbox_scratch.H>
+#include <util/misc.H>
+#include <isteps/hwpisteperror.H>
// targeting support.
#include <targeting/common/commontargeting.H>
@@ -41,13 +41,13 @@
#include <config.h>
#include <fapi2.H>
#include <fapi2/plat_hwp_invoker.H>
-#include <util/utilmbox_scratch.H>
//HWP
#include <p9_io_dmi_linktrain.H>
#ifdef CONFIG_AXONE
#include <exp_omi_setup.H>
+#include <p9a_omi_train.H>
#include <exp_omi_train.H>
#include <chipids.H> // for EXPLORER ID
#endif
@@ -110,43 +110,18 @@ void* call_dmi_io_run_training (void *io_pArgs)
}
#ifdef CONFIG_AXONE
- TARGETING::TargetHandleList l_ocmbTargetList;
- getAllChips(l_ocmbTargetList, TYPE_OCMB_CHIP);
- for (const auto & l_ocmb_target : l_ocmbTargetList)
+ if( ! Util::isSimicsRunning() )
{
- // call the HWP with each target
- fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP> l_fapi_ocmb_target
- (l_ocmb_target);
-
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "exp_omi_setup HWP target HUID 0x%.08x",
- TARGETING::get_huid(l_ocmb_target));
-
- FAPI_INVOKE_HWP(l_err, exp_omi_setup, l_fapi_ocmb_target);
+ TARGETING::TargetHandleList l_ocmbTargetList;
+ getAllChips(l_ocmbTargetList, TYPE_OCMB_CHIP);
- // process return code.
- if ( l_err )
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: exp_omi_setup HWP on target HUID 0x%.08x",
- l_err->reasonCode(), TARGETING::get_huid(l_ocmb_target) );
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_ocmb_target).addToLog( l_err );
-
- // Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails( l_err );
-
- // Commit Error , continue on to next OCMB
- errlCommit( l_err, ISTEP_COMP_ID );
- }
- else
+ for (const auto & l_ocmb_target : l_ocmbTargetList)
{
// Only run exp_omi_train on EXPLORER OCMB targets. This step
// cannot run on GEMINI targets.
uint32_t chipId = l_ocmb_target->getAttr< TARGETING::ATTR_CHIP_ID>();
+ fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP> l_fapi_ocmb_target( l_ocmb_target );
if (chipId == POWER_CHIPID::EXPLORER_16)
{
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
@@ -173,18 +148,54 @@ void* call_dmi_io_run_training (void *io_pArgs)
else
{
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : exp_omi_train HWP on target 0x%.08X", TARGETING::get_huid(l_ocmb_target));
+ "SUCCESS : exp_omi_train HWP on target 0x%.08X", TARGETING::get_huid(l_ocmb_target));
}
}
else
{
- // Gemini, just skip omi_setup call
+ // Gemini, just skip exp_omi_train call
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
"Skipping exp_omi_train HWP on because target HUID 0x%.8X, chipId 0x%.4X is a Gemini OCMB",
TARGETING::get_huid(l_ocmb_target), chipId );
}
}
+ TARGETING::TargetHandleList l_omiTargetList;
+ getAllChiplets(l_omiTargetList, TYPE_OMI);
+
+ for (const auto & l_omi_target : l_omiTargetList)
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "p9a_omi_train HWP target HUID %.8x",
+ TARGETING::get_huid(l_omi_target));
+
+ // call the HWP with each OMI target
+ fapi2::Target<fapi2::TARGET_TYPE_OMI> l_fapi_omi_target(l_omi_target);
+
+ FAPI_INVOKE_HWP(l_err, p9a_omi_train , l_fapi_omi_target );
+
+ // process return code.
+ if ( l_err )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: p9a_omi_train HWP on target HUID %.8x",
+ l_err->reasonCode(), TARGETING::get_huid(l_omi_target) );
+
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_omi_target).addToLog( l_err );
+
+ // Create IStep error log and cross reference to error that occurred
+ l_StepError.addErrorDetails( l_err );
+
+ // Commit Error
+ errlCommit( l_err, ISTEP_COMP_ID );
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : p9a_omi_train HWP on 0x%.08X", TARGETING::get_huid(l_omi_target));
+ }
+ }
}
#endif
diff --git a/src/usr/isteps/istep12/call_dmi_post_trainadv.C b/src/usr/isteps/istep12/call_dmi_post_trainadv.C
index 8f5e34106..af8ca6d0f 100644
--- a/src/usr/isteps/istep12/call_dmi_post_trainadv.C
+++ b/src/usr/isteps/istep12/call_dmi_post_trainadv.C
@@ -26,12 +26,13 @@
#include <trace/interface.H>
#include <initservice/taskargs.H>
+#include <initservice/isteps_trace.H>
#include <errl/errlentry.H>
-
-#include <isteps/hwpisteperror.H>
#include <errl/errludtarget.H>
+#include <isteps/hwpisteperror.H>
+#include <util/utilmbox_scratch.H>
+#include <util/misc.H>
-#include <initservice/isteps_trace.H>
// targeting support.
#include <targeting/common/commontargeting.H>
@@ -41,13 +42,14 @@
#include <config.h>
#include <fapi2.H>
#include <fapi2/plat_hwp_invoker.H>
-#include <util/utilmbox_scratch.H>
//HWP
#include <p9_io_dmi_post_trainadv.H>
#ifdef CONFIG_AXONE
#include <p9a_omi_train_check.H>
+#include <exp_omi_train_check.H>
+#include <chipids.H> // for EXPLORER ID
#endif
using namespace ISTEP;
@@ -129,41 +131,87 @@ void* call_dmi_post_trainadv (void *io_pArgs)
}
#ifdef CONFIG_AXONE
- // Find omi targets
- TARGETING::TargetHandleList l_omiTargetList;
- getAllChiplets(l_omiTargetList, TYPE_OMI);
-
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "call_dmi_post_trainadv: %d OMIs found",
- l_omiTargetList.size());
-
- for (const auto & l_omi_target : l_omiTargetList)
+ if( ! Util::isSimicsRunning() )
{
- // call the HWP with each OMI target
- fapi2::Target<fapi2::TARGET_TYPE_OMI> l_fapi_omi_target(l_omi_target);
+ // Find ocmb targets
+ TARGETING::TargetHandleList l_chipList;
+ TARGETING::getAllChips(l_chipList, TARGETING::TYPE_OCMB_CHIP, true);
- FAPI_INVOKE_HWP(l_err, p9a_omi_train_check, l_fapi_omi_target );
+ for (auto & l_ocmb: l_chipList)
+ {
+ // Only run exp_omi_train on EXPLORER OCMB targets. This step
+ // cannot run on GEMINI targets.
+ uint32_t chipId = l_ocmb->getAttr< TARGETING::ATTR_CHIP_ID>();
+ if (chipId == POWER_CHIPID::EXPLORER_16)
+ {
+ fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP> l_ocmb_target( l_ocmb );
+ FAPI_INVOKE_HWP(l_err, exp_omi_train_check, l_ocmb_target );
+
+ // process return code.
+ if ( l_err )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: exp_omi_train_check HWP on target HUID %.8x",
+ l_err->reasonCode(), TARGETING::get_huid(l_ocmb) );
+
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_ocmb).addToLog( l_err );
+
+ // Create IStep error log and cross reference to error that occurred
+ l_StepError.addErrorDetails( l_err );
+
+ // Commit Error
+ errlCommit( l_err, ISTEP_COMP_ID );
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : exp_omi_train_check HWP on target HUID %.08x",
+ TARGETING::get_huid(l_ocmb));
+ }
+ }
+ else
+ {
+ // Gemini, just skip exp_omi_train_check call
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "Skipping exp_omi_train_check HWP on because target HUID 0x%.8X, chipId 0x%.4X is a Gemini OCMB",
+ TARGETING::get_huid(l_ocmb), chipId );
+ }
+ }
- // process return code.
- if ( l_err )
+ // Find omi targets
+ TARGETING::TargetHandleList l_omiTargetList;
+ getAllChiplets(l_omiTargetList, TYPE_OMI);
+
+ for (const auto & l_omi_target : l_omiTargetList)
{
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: p9a_omi_train_check HWP on target HUID %.8x",
- l_err->reasonCode(), TARGETING::get_huid(l_omi_target) );
+ // call the HWP with each OMI target
+ fapi2::Target<fapi2::TARGET_TYPE_OMI> l_fapi_omi_target(l_omi_target);
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_omi_target).addToLog( l_err );
+ FAPI_INVOKE_HWP(l_err, p9a_omi_train_check, l_fapi_omi_target );
- // Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails( l_err );
+ // process return code.
+ if ( l_err )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: p9a_omi_train_check HWP on target HUID %.8x",
+ l_err->reasonCode(), TARGETING::get_huid(l_omi_target) );
- // Commit Error
- errlCommit( l_err, ISTEP_COMP_ID );
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : p9a_omi_train_check HWP on target HUID %.08x",
- TARGETING::get_huid(l_omi_target));
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_omi_target).addToLog( l_err );
+
+ // Create IStep error log and cross reference to error that occurred
+ l_StepError.addErrorDetails( l_err );
+
+ // Commit Error
+ errlCommit( l_err, ISTEP_COMP_ID );
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : p9a_omi_train_check HWP on target HUID %.08x",
+ TARGETING::get_huid(l_omi_target));
+ }
}
}
#endif
diff --git a/src/usr/isteps/istep12/call_dmi_pre_trainadv.C b/src/usr/isteps/istep12/call_dmi_pre_trainadv.C
index da8a9bb96..aaec7d89b 100644
--- a/src/usr/isteps/istep12/call_dmi_pre_trainadv.C
+++ b/src/usr/isteps/istep12/call_dmi_pre_trainadv.C
@@ -26,12 +26,12 @@
#include <trace/interface.H>
#include <initservice/taskargs.H>
+#include <initservice/isteps_trace.H>
#include <errl/errlentry.H>
-
-#include <isteps/hwpisteperror.H>
#include <errl/errludtarget.H>
-
-#include <initservice/isteps_trace.H>
+#include <isteps/hwpisteperror.H>
+#include <util/misc.H>
+#include <util/utilmbox_scratch.H>
// targeting support.
#include <targeting/common/commontargeting.H>
@@ -41,11 +41,13 @@
#include <config.h>
#include <fapi2.H>
#include <fapi2/plat_hwp_invoker.H>
-#include <util/utilmbox_scratch.H>
+
//HWP
#include <p9_io_dmi_pre_trainadv.H>
#ifdef CONFIG_AXONE
+#include <exp_omi_setup.H>
+#include <p9a_omi_setup.H>
#include <p9a_omi_train.H>
#endif
@@ -128,45 +130,84 @@ void* call_dmi_pre_trainadv (void *io_pArgs)
}
#ifdef CONFIG_AXONE
- TARGETING::TargetHandleList l_omiTargetList;
- getAllChiplets(l_omiTargetList, TYPE_OMI);
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "call_dmi_pre_trainadv: %d OMIs found",
- l_omiTargetList.size());
-
- for (const auto & l_omi_target : l_omiTargetList)
+ if( ! Util::isSimicsRunning() )
{
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "p9a_omi_train HWP target HUID %.8x",
- TARGETING::get_huid(l_omi_target));
+ TARGETING::TargetHandleList l_ocmbTargetList;
+ getAllChips(l_ocmbTargetList, TYPE_OCMB_CHIP);
- // call the HWP with each OMI target
- fapi2::Target<fapi2::TARGET_TYPE_OMI> l_fapi_omi_target(l_omi_target);
+ for (const auto & l_ocmb_target : l_ocmbTargetList)
+ {
+ // call the HWP with each target
+ fapi2::Target<fapi2::TARGET_TYPE_OCMB_CHIP> l_fapi_ocmb_target
+ (l_ocmb_target);
- FAPI_INVOKE_HWP(l_err, p9a_omi_train , l_fapi_omi_target );
- // process return code.
- if ( l_err )
- {
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: p9a_omi_train HWP on target HUID %.8x",
- l_err->reasonCode(), TARGETING::get_huid(l_omi_target) );
+ "exp_omi_setup HWP target HUID 0x%.08x",
+ TARGETING::get_huid(l_ocmb_target));
+
+ FAPI_INVOKE_HWP(l_err, exp_omi_setup, l_fapi_ocmb_target);
+
+ // process return code.
+ if ( l_err )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: exp_omi_setup HWP on target HUID 0x%.08x",
+ l_err->reasonCode(), TARGETING::get_huid(l_ocmb_target) );
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_omi_target).addToLog( l_err );
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_ocmb_target).addToLog( l_err );
- // Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails( l_err );
+ // Create IStep error log and cross reference to error that occurred
+ l_StepError.addErrorDetails( l_err );
- // Commit Error
- errlCommit( l_err, ISTEP_COMP_ID );
+ // Commit Error , continue on to next OCMB
+ errlCommit( l_err, ISTEP_COMP_ID );
+ }
}
- else
+
+ TARGETING::TargetHandleList l_omiTargetList;
+ getAllChiplets(l_omiTargetList, TYPE_OMI);
+
+ TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "call_dmi_pre_trainadv: %d OMIs found",
+ l_omiTargetList.size());
+
+ for (const auto & l_omi_target : l_omiTargetList)
{
TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : p9a_omi_train HWP on 0x%.08X", TARGETING::get_huid(l_omi_target));
+ "p9a_omi_setup HWP target HUID %.8x",
+ TARGETING::get_huid(l_omi_target));
+
+ // call the HWP with each OMI target
+ fapi2::Target<fapi2::TARGET_TYPE_OMI> l_fapi_omi_target(l_omi_target);
+
+ FAPI_INVOKE_HWP(l_err, p9a_omi_setup , l_fapi_omi_target );
+
+ // process return code.
+ if ( l_err )
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "ERROR 0x%.8X: p9a_omi_setup HWP on target HUID %.8x",
+ l_err->reasonCode(), TARGETING::get_huid(l_omi_target) );
+
+ // capture the target data in the elog
+ ErrlUserDetailsTarget(l_omi_target).addToLog( l_err );
+
+ // Create IStep error log and cross reference to error that occurred
+ l_StepError.addErrorDetails( l_err );
+
+ // Commit Error
+ errlCommit( l_err, ISTEP_COMP_ID );
+ }
+ else
+ {
+ TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
+ "SUCCESS : p9a_omi_setup HWP on 0x%.08X", TARGETING::get_huid(l_omi_target));
+ }
}
}
+
#endif
diff --git a/src/usr/isteps/istep12/makefile b/src/usr/isteps/istep12/makefile
index 1928deadd..94796d610 100644
--- a/src/usr/isteps/istep12/makefile
+++ b/src/usr/isteps/istep12/makefile
@@ -137,8 +137,10 @@ VPATH += $(if $(CONFIG_AXONE),${GEM_PROCEDURES_PATH}/hwp/memory,)
OBJS += $(if $(CONFIG_AXONE),exp_omi_utils.o,)
OBJS += $(if $(CONFIG_AXONE),exp_omi_setup.o,)
OBJS += $(if $(CONFIG_AXONE),exp_omi_train.o,)
+OBJS += $(if $(CONFIG_AXONE),p9a_omi_setup.o,)
OBJS += $(if $(CONFIG_AXONE),p9a_omi_train.o,)
OBJS += $(if $(CONFIG_AXONE),p9a_omi_train_check.o,)
+OBJS += $(if $(CONFIG_AXONE),exp_omi_train_check.o,)
OBJS += $(if $(CONFIG_AXONE),p9a_omi_setup_bars.o,)
OBJS += $(if $(CONFIG_AXONE),p9a_addr_ext.o,)
OBJS += $(if $(CONFIG_AXONE),exp_omi_init.o,)
OpenPOWER on IntegriCloud