From ddad6a525c4c12bfda720f065f359da62933580e Mon Sep 17 00:00:00 2001 From: Dan Crowell Date: Wed, 4 Dec 2019 17:01:07 -0600 Subject: Call p9a_throttle_sync inside mss_scominit We need to setup the memory throttles for worstcase mode for a portion of the boot before we have the real values later in mss_thermal_init. Changes to IPL flow - 13.8 mss_scominit - exp_scominit() - p9a_throttle_sync() <<< new 14.2 mss_thermal_init - exp_mss_thermal_init() - p9a_throttle_sync() <<< current place, stays here but also called earlier Change-Id: Iebf4ccb0f8b3f84ca146314b2a5d94ccbe88fc06 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/88118 Reviewed-by: Christian R Geddes Reviewed-by: Corey V Swenson Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: William G Hoffa --- src/include/usr/isteps/istep13list.H | 1 + src/usr/hwplibs/nest/nestmemutils.mk | 13 ++++++- src/usr/isteps/istep13/call_mss_scominit.C | 55 +++++++++++++++++++++++++++--- src/usr/isteps/istep13/makefile | 1 - src/usr/isteps/istep14/makefile | 1 - 5 files changed, 64 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/include/usr/isteps/istep13list.H b/src/include/usr/isteps/istep13list.H index 1b3238496..89041eae0 100644 --- a/src/include/usr/isteps/istep13list.H +++ b/src/include/usr/isteps/istep13list.H @@ -295,6 +295,7 @@ const DepModInfo g_istep13Dependancies = { DEP_LIB(libistep13.so), DEP_LIB(libisteps_mss.so), DEP_LIB(libcen.so), + DEP_LIB(libnestmemutils.so), NULL } }; diff --git a/src/usr/hwplibs/nest/nestmemutils.mk b/src/usr/hwplibs/nest/nestmemutils.mk index 26b6a406c..9962f3b0e 100644 --- a/src/usr/hwplibs/nest/nestmemutils.mk +++ b/src/usr/hwplibs/nest/nestmemutils.mk @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2017,2018 +# Contributors Listed Below - COPYRIGHT 2017,2019 # [+] International Business Machines Corp. # # @@ -26,15 +26,26 @@ ROOTPATH=../../../.. +P9_PROCEDURE_PATH = ${ROOTPATH}/src/import/chips/p9/procedures/ HWP_NEST_MEM_UTILS_PATH := ${ROOTPATH}/src/import/chips/p9/procedures/hwp/nest/ +EXP_COMMON_PATH = ${ROOTPATH}/src/import/chips/ocmb/explorer/common +AXONE_PROCEDURE_PATH = ${ROOTPATH}/src/import/chips/p9a/procedures EXTRAINCDIR += ${HWP_NEST_MEM_UTILS_PATH} EXTRAINCDIR += ${ROOTPATH}/src/include/usr/fapi2/ EXTRAINCDIR += ${ROOTPATH}/src/import/hwpf/fapi2/include EXTRAINCDIR += ${ROOTPATH}/src/import/chips/common/utils/imageProcs +EXTRAINCDIR += ${EXP_COMMON_PATH}/include/ +EXTRAINCDIR += ${ROOTPATH}/obj/genfiles/ +EXTRAINCDIR += ${ROOTPATH}/src/import/ +EXTRAINCDIR += ${AXONE_PROCEDURE_PATH}/hwp/memory/ +EXTRAINCDIR += ${P9_PROCEDURE_PATH}/hwp/memory VPATH += ${HWP_NEST_MEM_UTILS_PATH} include ${ROOTPATH}/procedure.rules.mk include ${HWP_NEST_MEM_UTILS_PATH}/p9_putmemproc.mk +OBJS += $(if $(CONFIG_AXONE),p9a_throttle_sync.o,p9_throttle_sync.o) + +include ${ROOTPATH}/config.mk diff --git a/src/usr/isteps/istep13/call_mss_scominit.C b/src/usr/isteps/istep13/call_mss_scominit.C index 26dae4e4c..3cb4b1223 100644 --- a/src/usr/isteps/istep13/call_mss_scominit.C +++ b/src/usr/isteps/istep13/call_mss_scominit.C @@ -42,12 +42,12 @@ #include #include #include -#include #ifdef CONFIG_AXONE -#include -#include // for EXPLORER ID + #include + #include // for EXPLORER ID + #include #else -#include + #include #endif using namespace ERRORLOG; @@ -264,6 +264,53 @@ void axone_call_mss_scominit(IStepError & io_istepError) "target HUID %.8X", TARGETING::get_huid(l_ocmb_target)); } } + + // Need to setup the memory throttles for worstcase mode until + // we get the thermals really setup later + + // Get all functional proc chip targets + // Use targeting code to get a list of all processors + TARGETING::TargetHandleList l_procChips; + getAllChips( l_procChips, TARGETING::TYPE_PROC ); + + for (const auto & l_procChip: l_procChips) + { + //Convert the TARGETING::Target into a fapi2::Target by passing + //l_procChip into the fapi2::Target constructor + fapi2::Target + l_fapi2CpuTarget((l_procChip)); + + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "Running p9a_throttle_sync HWP on target HUID %.8X", + TARGETING::get_huid(l_procChip) ); + FAPI_INVOKE_HWP( l_err, p9a_throttle_sync, l_fapi2CpuTarget ); + + if (l_err) + { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + "ERROR 0x%.8X: p9_throttle_sync HWP returns error", + l_err->reasonCode()); + + // Capture the target data in the elog + ErrlUserDetailsTarget(l_procChip).addToLog(l_err); + + // Create IStep error log and cross reference + // to error that occurred + io_istepError.addErrorDetails( l_err ); + + // Commit Error + errlCommit( l_err, HWPF_COMP_ID ); + + break; + } + else + { + TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "SUCCESS : p9_throttle_sync HWP on 0x%.8X processor", + TARGETING::get_huid(l_procChip) ); + } + } + } #else void axone_call_mss_scominit(IStepError & io_istepError) diff --git a/src/usr/isteps/istep13/makefile b/src/usr/isteps/istep13/makefile index 1ff490fe2..d85873963 100644 --- a/src/usr/isteps/istep13/makefile +++ b/src/usr/isteps/istep13/makefile @@ -97,7 +97,6 @@ include ${P9_PROCEDURES_PATH}/hwp/perv/p9_mem_startclocks.mk #Scom init include ${P9_PROCEDURES_PATH}/hwp/memory/p9_mss_scominit.mk -include ${P9_PROCEDURES_PATH}/hwp/nest/p9_throttle_sync.mk OBJS += $(if $(CONFIG_AXONE),,p9c_mss_scominit.o) include ${P9_PROCEDURES_PATH}/hwp/initfiles/p9n_ddrphy_scom.mk diff --git a/src/usr/isteps/istep14/makefile b/src/usr/isteps/istep14/makefile index 8aff38063..9aaa19c97 100644 --- a/src/usr/isteps/istep14/makefile +++ b/src/usr/isteps/istep14/makefile @@ -113,7 +113,6 @@ VPATH += ${PROCEDURE_PATH}/hwp/memory/lib/dimm/ddr4/ # Axone vs non-Axone specific HWP VPATH += $(if $(CONFIG_AXONE),${EXPLORER_HWP_PATH},) -OBJS += $(if $(CONFIG_AXONE),p9a_throttle_sync.o,p9_throttle_sync.o) OBJS += $(if $(CONFIG_AXONE),exp_mss_thermal_init.o,) # TODO RTC:245219 # use PRD's version of memdiags instead of this cronus verison once its working -- cgit v1.2.1