diff options
Diffstat (limited to 'src/usr/isteps/istep12/call_cen_set_inband_addr.C')
-rw-r--r-- | src/usr/isteps/istep12/call_cen_set_inband_addr.C | 68 |
1 files changed, 65 insertions, 3 deletions
diff --git a/src/usr/isteps/istep12/call_cen_set_inband_addr.C b/src/usr/isteps/istep12/call_cen_set_inband_addr.C index 58bc37cd0..ed6751087 100644 --- a/src/usr/isteps/istep12/call_cen_set_inband_addr.C +++ b/src/usr/isteps/istep12/call_cen_set_inband_addr.C @@ -22,17 +22,30 @@ /* permissions and limitations under the License. */ /* */ /* IBM_PROLOG_END_TAG */ -#include <errl/errlentry.H> +#include <stdint.h> -#include <initservice/isteps_trace.H> +#include <trace/interface.H> +#include <initservice/taskargs.H> +#include <errl/errlentry.H> #include <isteps/hwpisteperror.H> #include <errl/errludtarget.H> +#include <initservice/isteps_trace.H> + // targeting support. #include <targeting/common/commontargeting.H> #include <targeting/common/utilFilter.H> +//Fapi Support +#include <config.h> +#include <fapi2.H> +#include <fapi2/plat_hwp_invoker.H> +#include <util/utilmbox_scratch.H> + +//HWP +#include <p9c_set_inband_addr.H> + using namespace ISTEP; using namespace ISTEP_ERROR; using namespace ERRORLOG; @@ -44,9 +57,58 @@ namespace ISTEP_12 void* call_cen_set_inband_addr (void *io_pArgs) { IStepError l_StepError; - + errlHndl_t l_err = NULL; + + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_cen_set_inband_addr entry" ); + + TARGETING::TargetHandleList l_procTargetList; + getAllChips(l_procTargetList, TYPE_PROC); + + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "call_cen_set_inband_addr: %d proc chips found", + l_procTargetList.size()); + + for (const auto & l_proc_target : l_procTargetList) + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "p9c_set_inband_addr HWP target HUID %.8x", + TARGETING::get_huid(l_proc_target)); + + // call the HWP with each target + fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> l_fapi_proc_target + (l_proc_target); + + FAPI_INVOKE_HWP(l_err, p9c_set_inband_addr, l_fapi_proc_target); + + // process return code. + if ( l_err ) + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "ERROR 0x%.8X: p9c_set_inband_addr HWP on target HUID %.8x", + l_err->reasonCode(), TARGETING::get_huid(l_proc_target) ); + + // capture the target data in the elog + ErrlUserDetailsTarget(l_proc_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 : p9c_set_inband_addr HWP"); + } + + } + + + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_cen_set_inband_addr exit" ); + // end task, returning any errorlogs to IStepDisp return l_StepError.getErrorHandle(); + } }; |