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 +++++++++++++++++----- src/usr/isteps/istep12/makefile | 25 ++-- 2 files changed, 152 insertions(+), 41 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 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 diff --git a/src/usr/isteps/istep12/makefile b/src/usr/isteps/istep12/makefile index eba5516a4..6e565529d 100644 --- a/src/usr/isteps/istep12/makefile +++ b/src/usr/isteps/istep12/makefile @@ -29,6 +29,10 @@ P9_IO_HWP_PATH = $(P9_PROCEDURES_PATH)/hwp/io P9_PERV_HWP_PATH = $(P9_PROCEDURES_PATH)/hwp/perv P9_NEST_HWP_PATH = $(P9_PROCEDURES_PATH)/hwp/nest P9_INITFILE_PATH = $(P9_PROCEDURES_PATH)/hwp/initfiles +P9_MEMORY_HWP_PATH = $(P9_PROCEDURES_PATH)/hwp/memory + +P9A_MSS_HWP_PATH = ${ROOTPATH}/src/import/chips/p9a/procedures/hwp/memory/ +P9A_MSS_ACCESSOR_PATH = ${ROOTPATH}/obj/genfiles/chips/p9a/procedures/hwp/memory/lib/ P9A_MSS_HWP_PATH = ${ROOTPATH}/src/import/chips/p9a/procedures/hwp/memory/ EXPLORER_HWP_PATH = ${ROOTPATH}/src/import/chips/ocmb/explorer/procedures/hwp/memory/ @@ -56,12 +60,14 @@ EXTRAINCDIR += $(P9_IO_HWP_PATH) EXTRAINCDIR += $(P9_NEST_HWP_PATH) EXTRAINCDIR += $(P9_PERV_HWP_PATH) EXTRAINCDIR += $(P9_INITFILE_PATH) +EXTRAINCDIR += ${P9_MEMORY_HWP_PATH} EXTRAINCDIR += $(CENT_MEM_HWP_PATH) EXTRAINCDIR += $(CENT_INITFILE_PATH) EXTRAINCDIR += $(CENT_IO_HWP_PATH) EXTRAINCDIR += ${P9A_MSS_HWP_PATH} EXTRAINCDIR += ${EXPLORER_HWP_PATH} EXTRAINCDIR += ${EXPLORER_INC_PATH} +EXTRAINCDIR += ${P9A_MSS_ACCESSOR_PATH} VPATH += $(P9_NEST_HWP_PATH) VPATH += $(P9_PERV_HWP_PATH) @@ -119,14 +125,17 @@ include $(P9_IO_HWP_PATH)/p9_io_erepairAccessorHwpFuncs.mk VPATH += $(if $(CONFIG_AXONE),${P9A_MSS_HWP_PATH},) VPATH += $(if $(CONFIG_AXONE),${EXPLORER_HWP_PATH},) VPATH += $(if $(CONFIG_AXONE),${EXPLORER_OMI_HWP_PATH},) - -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_train.o,) -OBJS += $(if $(CONFIG_AXONE),p9a_omi_train_check.o,) -OBJS += $(if $(CONFIG_AXONE),p9a_omi_setup_bars.o,) -OBJS += $(if $(CONFIG_AXONE),p9a_addr_ext.o,) +VPATH += $(if $(CONFIG_AXONE),${P9_MEMORY_HWP_PATH},) +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_train.o,) +OBJS += $(if $(CONFIG_AXONE),p9a_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,) +OBJS += $(if $(CONFIG_AXONE),p9a_omi_init.o,) +OBJS += $(if $(CONFIG_AXONE),p9a_omi_init_scom.o,) include ${ROOTPATH}/config.mk -- cgit v1.2.1