From 625a082c5e39460925c868a6ae27233fecc029dd Mon Sep 17 00:00:00 2001 From: Christian Geddes Date: Wed, 27 Mar 2019 11:53:49 -0500 Subject: Add p9a_omi_init and exp_omi_init calls to istep 12.13 As per P9A IPL Flow document exp_omi_init followed by p9a_omi_init must be called during istep 12 prior to firmware update of explorer card. Change-Id: I00b51f075152d2120143661404755ec5791c1691 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/75097 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Matt Derksen Reviewed-by: Glenn Miles Reviewed-by: William G. Hoffa --- src/usr/isteps/istep12/call_cen_set_inband_addr.C | 168 +++++++++++++++++----- 1 file changed, 135 insertions(+), 33 deletions(-) (limited to 'src/usr/isteps/istep12/call_cen_set_inband_addr.C') 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 6d78eeb55..196f7bed7 100644 --- a/src/usr/isteps/istep12/call_cen_set_inband_addr.C +++ b/src/usr/isteps/istep12/call_cen_set_inband_addr.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2018 */ +/* Contributors Listed Below - COPYRIGHT 2015,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -47,6 +47,11 @@ //HWP #include +#ifdef CONFIG_AXONE +#include +#include +#endif + //Inband SCOM #include @@ -62,50 +67,55 @@ void* call_cen_set_inband_addr (void *io_pArgs) { IStepError l_StepError; errlHndl_t l_err = NULL; + auto l_procModel = TARGETING::targetService().getProcessorModel(); - 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()); + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_cen_set_inband_addr entry" ); - for (const auto & l_proc_target : l_procTargetList) + if(l_procModel == TARGETING::MODEL_CUMULUS) { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "p9c_set_inband_addr HWP target HUID %.8x", - TARGETING::get_huid(l_proc_target)); + TARGETING::TargetHandleList l_procTargetList; + getAllChips(l_procTargetList, TYPE_PROC); - // call the HWP with each target - fapi2::Target l_fapi_proc_target - (l_proc_target); + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "call_cen_set_inband_addr: %d proc chips found", + l_procTargetList.size()); - FAPI_INVOKE_HWP(l_err, p9c_set_inband_addr, l_fapi_proc_target); - - // process return code. - if ( l_err ) + for (const auto & l_proc_target : l_procTargetList) { + 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) ); + "p9c_set_inband_addr HWP target HUID %.8x", + TARGETING::get_huid(l_proc_target)); - // capture the target data in the elog - ErrlUserDetailsTarget(l_proc_target).addToLog( l_err ); + // call the HWP with each target + fapi2::Target l_fapi_proc_target + (l_proc_target); - // Create IStep error log and cross reference to error that occurred - l_StepError.addErrorDetails( l_err ); + FAPI_INVOKE_HWP(l_err, p9c_set_inband_addr, l_fapi_proc_target); - // Commit Error - errlCommit( l_err, ISTEP_COMP_ID ); + // 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) ); - } - else - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "SUCCESS : p9c_set_inband_addr HWP"); - } + // 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"); + } + + } } // @todo RTC 187913 inband centaur scom in P9 @@ -116,6 +126,98 @@ void* call_cen_set_inband_addr (void *io_pArgs) IBSCOM::enableInbandScoms(); } +#ifdef CONFIG_AXONE + if(l_procModel == TARGETING::MODEL_AXONE) + { + + TARGETING::TargetHandleList l_ocmbTargetList; + getAllChips(l_ocmbTargetList, TYPE_OCMB_CHIP); + + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, "call_cen_set_inband_addr: %d ocmb chips found", + l_ocmbTargetList.size()); + + for (const auto & l_ocmb_target : l_ocmbTargetList) + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "exp_omi_init HWP target HUID %.8x", + TARGETING::get_huid(l_ocmb_target)); + + // call the HWP with each target + fapi2::Target l_fapi_ocmb_target + (l_ocmb_target); + + FAPI_INVOKE_HWP(l_err, exp_omi_init , l_fapi_ocmb_target); + + // process return code. + if ( l_err ) + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "ERROR 0x%.8X: exp_omi_init HWP on target HUID 0x%.8x", + 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 + errlCommit( l_err, ISTEP_COMP_ID ); + + } + else + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "SUCCESS : exp_omi_init HWP on target HUID 0x%.8x", + TARGETING::get_huid(l_ocmb_target)); + } + + } + + TARGETING::TargetHandleList l_mccTargetList; + getAllChiplets(l_mccTargetList, TYPE_MCC); + + for (const auto & l_mcc_target : l_mccTargetList) + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "p9a_omi_init HWP target HUID %.8x", + TARGETING::get_huid(l_mcc_target)); + + // call the HWP with each target + fapi2::Target l_fapi_mcc_target + (l_mcc_target); + + FAPI_INVOKE_HWP(l_err, p9a_omi_init, l_fapi_mcc_target); + + // process return code. + if ( l_err ) + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "ERROR 0x%.8X: p9a_omi_init HWP on target HUID %.8x", + l_err->reasonCode(), TARGETING::get_huid(l_mcc_target) ); + + // capture the target data in the elog + ErrlUserDetailsTarget(l_mcc_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_init HWP on target HUID 0x%.8x", + TARGETING::get_huid(l_mcc_target)); + } + + } + } +#endif // CONFIG_AXONE + + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_cen_set_inband_addr exit" ); // end task, returning any errorlogs to IStepDisp -- cgit v1.2.1