Skip to content

Commit

Permalink
Reorganize omi training steps accounting for new omi training hwps
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
crgeddes authored and dcrowell77 committed Oct 17, 2019
1 parent 8f549e7 commit 5b6b984
Show file tree
Hide file tree
Showing 4 changed files with 201 additions and 99 deletions.
85 changes: 48 additions & 37 deletions src/usr/isteps/istep12/call_dmi_io_run_training.C
Expand Up @@ -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>
Expand All @@ -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
Expand Down Expand Up @@ -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,
Expand All @@ -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
Expand Down
112 changes: 80 additions & 32 deletions src/usr/isteps/istep12/call_dmi_post_trainadv.C
Expand Up @@ -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>
Expand All @@ -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;
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 5b6b984

Please sign in to comment.