diff options
author | Christian Geddes <crgeddes@us.ibm.com> | 2019-10-14 13:30:30 -0500 |
---|---|---|
committer | Daniel M Crowell <dcrowell@us.ibm.com> | 2019-10-17 15:27:08 -0500 |
commit | 5b6b984fa8eeba54caa06853e43a14bca92d0371 (patch) | |
tree | 9ec99d598b17d69f3269fe4bb5d1db72ebd21d23 /src/usr/isteps | |
parent | 8f549e7548fb45819fc4fd8637448f428f14eec1 (diff) | |
download | talos-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.C | 85 | ||||
-rw-r--r-- | src/usr/isteps/istep12/call_dmi_post_trainadv.C | 112 | ||||
-rw-r--r-- | src/usr/isteps/istep12/call_dmi_pre_trainadv.C | 101 | ||||
-rw-r--r-- | src/usr/isteps/istep12/makefile | 2 |
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,) |