diff options
Diffstat (limited to 'src/usr/isteps/istep12/call_dmi_post_trainadv.C')
-rw-r--r-- | src/usr/isteps/istep12/call_dmi_post_trainadv.C | 112 |
1 files changed, 80 insertions, 32 deletions
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 |