diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/include/usr/isteps/istep21list.H | 1 | ||||
-rw-r--r-- | src/usr/isteps/cpuWkup/makefile | 5 | ||||
-rw-r--r-- | src/usr/isteps/istep06/thread_activate/makefile | 5 | ||||
-rw-r--r-- | src/usr/isteps/istep06/thread_activate/thread_activate.C | 8 | ||||
-rw-r--r-- | src/usr/isteps/istep16/call_host_activate_master.C | 8 | ||||
-rw-r--r-- | src/usr/isteps/istep16/call_host_activate_slave_cores.C | 8 | ||||
-rw-r--r-- | src/usr/isteps/istep16/makefile | 5 | ||||
-rw-r--r-- | src/usr/isteps/istep21/call_host_start_payload.C | 69 | ||||
-rw-r--r-- | src/usr/isteps/istep21/makefile | 8 | ||||
-rw-r--r-- | src/usr/isteps/pm/pm.mk | 5 | ||||
-rwxr-xr-x | src/usr/targeting/common/xmltohb/target_types.xml | 1 |
11 files changed, 89 insertions, 34 deletions
diff --git a/src/include/usr/isteps/istep21list.H b/src/include/usr/isteps/istep21list.H index b5aa22fb8..de8dfd99d 100644 --- a/src/include/usr/isteps/istep21list.H +++ b/src/include/usr/isteps/istep21list.H @@ -122,6 +122,7 @@ const DepModInfo g_istep21Dependancies = { DEP_LIB(libistep21.so), DEP_LIB(libdevtree.so), DEP_LIB(libruntime.so), + DEP_LIB(libp9_cpuWkup.so), NULL } }; diff --git a/src/usr/isteps/cpuWkup/makefile b/src/usr/isteps/cpuWkup/makefile index 3d29bbf91..a76c39142 100644 --- a/src/usr/isteps/cpuWkup/makefile +++ b/src/usr/isteps/cpuWkup/makefile @@ -36,7 +36,10 @@ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/utils/imageProcs/ EXTRAINCDIR += ${ROOTPATH}/obj/genfiles/ include ${ROOTPATH}/procedure.rules.mk -include $(PROCEDURES_PATH)/hwp/pm/p9_cpu_special_wakeup.mk +include $(PROCEDURES_PATH)/hwp/pm/p9_cpu_special_wakeup_eq.mk +include $(PROCEDURES_PATH)/hwp/pm/p9_cpu_special_wakeup_ex.mk +include $(PROCEDURES_PATH)/hwp/pm/p9_cpu_special_wakeup_core.mk +include $(PROCEDURES_PATH)/hwp/pm/p9_cpu_special_wakeup_lib.mk include ${ROOTPATH}/config.mk VPATH += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/pm/ diff --git a/src/usr/isteps/istep06/thread_activate/makefile b/src/usr/isteps/istep06/thread_activate/makefile index 66db38d2f..b9e1042c6 100644 --- a/src/usr/isteps/istep06/thread_activate/makefile +++ b/src/usr/isteps/istep06/thread_activate/makefile @@ -53,10 +53,5 @@ VPATH += ${HWP_PATH} include ${ROOTPATH}/procedure.rules.mk # p9_thread_control.o brought in by p9_thread_control.mk include $(HWP_PATH_1)/p9_thread_control.mk -#TODO RTC:147383 Need to create a seperate module for cpu_special_wakeup -include ${HWP_PATH_2}/p9_cpu_special_wakeup.mk -include ${HWP_PATH_2}/p9_cpu_special_wakeup_core.mk -include ${HWP_PATH_2}/p9_cpu_special_wakeup_ex.mk -include ${HWP_PATH_2}/p9_cpu_special_wakeup_lib.mk include ${ROOTPATH}/config.mk diff --git a/src/usr/isteps/istep06/thread_activate/thread_activate.C b/src/usr/isteps/istep06/thread_activate/thread_activate.C index 7a6e8526f..df2b63ea0 100644 --- a/src/usr/isteps/istep06/thread_activate/thread_activate.C +++ b/src/usr/isteps/istep06/thread_activate/thread_activate.C @@ -330,7 +330,7 @@ void activate_threads( errlHndl_t& io_rtaskRetErrl ) l_wakeup_lib_loaded = true; } - FAPI_INVOKE_HWP(l_errl, p9_cpu_special_wakeup, + FAPI_INVOKE_HWP(l_errl, p9_cpu_special_wakeup_core, l_fapiCore, p9specialWakeup::SPCWKUP_ENABLE, p9specialWakeup::HOST); @@ -338,9 +338,9 @@ void activate_threads( errlHndl_t& io_rtaskRetErrl ) if(l_errl) { TRACFCOMP( g_fapiImpTd, - "ERROR: 0x%.8X : p9_cpu_special_wakeup set HWP(cpu %d)", - l_errl->reasonCode(), - l_masterCoreID); + "ERROR: 0x%.8X : p9_cpu_special_wakeup_core set HWP(cpu %d)", + l_errl->reasonCode(), + l_masterCoreID); break; } diff --git a/src/usr/isteps/istep16/call_host_activate_master.C b/src/usr/isteps/istep16/call_host_activate_master.C index 37ab4300d..fa70c5da0 100644 --- a/src/usr/isteps/istep16/call_host_activate_master.C +++ b/src/usr/isteps/istep16/call_host_activate_master.C @@ -163,7 +163,7 @@ void* call_host_activate_master (void *io_pArgs) TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "Disable special wakeup on master core"); - FAPI_INVOKE_HWP(l_errl, p9_cpu_special_wakeup, + FAPI_INVOKE_HWP(l_errl, p9_cpu_special_wakeup_core, l_fapi2_coreTarget, SPCWKUP_DISABLE, HOST); @@ -172,7 +172,7 @@ void* call_host_activate_master (void *io_pArgs) if(l_errl) { TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Disable p9_cpu_special_wakeup ERROR : Returning errorlog," + "Disable p9_cpu_special_wakeup_core ERROR : Returning errorlog," " reason=0x%x", l_errl->reasonCode() ); @@ -266,7 +266,7 @@ void* call_host_activate_master (void *io_pArgs) "Enable special wakeup on master core"); - FAPI_INVOKE_HWP(l_errl, p9_cpu_special_wakeup, + FAPI_INVOKE_HWP(l_errl, p9_cpu_special_wakeup_core, l_fapi2_coreTarget, SPCWKUP_ENABLE, HOST); @@ -274,7 +274,7 @@ void* call_host_activate_master (void *io_pArgs) if(l_errl) { TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Enable p9_cpu_special_wakeup ERROR : Returning errorlog, " + "Enable p9_cpu_special_wakeup_core ERROR : Returning errorlog, " "reason=0x%x", l_errl->reasonCode() ); diff --git a/src/usr/isteps/istep16/call_host_activate_slave_cores.C b/src/usr/isteps/istep16/call_host_activate_slave_cores.C index 25a53c323..9658aafe0 100644 --- a/src/usr/isteps/istep16/call_host_activate_slave_cores.C +++ b/src/usr/isteps/istep16/call_host_activate_slave_cores.C @@ -185,13 +185,13 @@ void* call_host_activate_slave_cores (void *io_pArgs) } TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "Running p9_cpu_special_wakeup (ENABLE)" + "Running p9_cpu_special_wakeup_core (ENABLE)" " EX target HUID %.8X", TARGETING::get_huid(*l_core)); // Enable special wakeup on core FAPI_INVOKE_HWP( l_errl, - p9_cpu_special_wakeup, + p9_cpu_special_wakeup_core, l_fapi2_coreTarget, SPCWKUP_ENABLE, HOST); @@ -208,13 +208,13 @@ void* call_host_activate_slave_cores (void *io_pArgs) errlCommit( l_errl, HWPF_COMP_ID ); TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR : enable p9_cpu_special_wakeup, " + "ERROR : enable p9_cpu_special_wakeup_core, " "PLID=0x%x", l_errl->plid() ); } else { TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "SUCCESS: enable p9_cpu_special_wakeup"); + "SUCCESS: enable p9_cpu_special_wakeup_core"); } } } diff --git a/src/usr/isteps/istep16/makefile b/src/usr/isteps/istep16/makefile index 84ca2ceb4..690ed925a 100644 --- a/src/usr/isteps/istep16/makefile +++ b/src/usr/isteps/istep16/makefile @@ -45,11 +45,6 @@ OBJS += call_host_ipl_complete.o include ${ROOTPATH}/procedure.rules.mk include ${PROCEDURES_PATH}/hwp/pm/p9_block_wakeup_intr.mk -#TODO RTC:147383 Need to create a seperate module for cpu_special_wakeup -include ${PROCEDURES_PATH}/hwp/pm/p9_cpu_special_wakeup.mk -include ${PROCEDURES_PATH}/hwp/pm//p9_cpu_special_wakeup_core.mk -include ${PROCEDURES_PATH}/hwp/pm//p9_cpu_special_wakeup_ex.mk -include ${PROCEDURES_PATH}/hwp/pm//p9_cpu_special_wakeup_lib.mk include ${PROCEDURES_PATH}/hwp/perv/p9_switch_cfsim.mk include ${PROCEDURES_PATH}/hwp/perv/p9_switch_rec_attn.mk include ${ROOTPATH}/config.mk diff --git a/src/usr/isteps/istep21/call_host_start_payload.C b/src/usr/isteps/istep21/call_host_start_payload.C index 004e95976..e1eb52d86 100644 --- a/src/usr/isteps/istep21/call_host_start_payload.C +++ b/src/usr/isteps/istep21/call_host_start_payload.C @@ -25,6 +25,7 @@ #include <errl/errlentry.H> #include <errl/errlmanager.H> +#include <errl/errludtarget.H> #include <initservice/isteps_trace.H> #include <isteps/hwpisteperror.H> #include <isteps/istep_reasoncodes.H> @@ -45,14 +46,16 @@ #include <devicefw/userif.H> #include <arch/pirformat.H> #include <isteps/hwpf_reasoncodes.H> - -#include <errl/errludtarget.H> +#include <fapi2/target.H> +#include <fapi2/plat_hwp_invoker.H> +#include <p9_cpu_special_wakeup.H> using namespace ERRORLOG; using namespace ISTEP; using namespace ISTEP_ERROR; using namespace TARGETING; +using namespace p9specialWakeup; namespace ISTEP_21 { @@ -78,6 +81,14 @@ errlHndl_t callShutdown ( uint64_t i_hbInstance, bool i_masterIntance ); errlHndl_t broadcastShutdown ( uint64_t i_hbInstance ); /** + * @brief This function disables the special wakeup that allows scom + * operations on napped cores + * + * @return errlHndl_t error handle + */ +errlHndl_t disableSpecialWakeup(); + +/** * @brief Re-enables the local core checkstop function * * @return errlHndl_t error handle @@ -179,10 +190,7 @@ void* call_host_start_payload (void *io_pArgs) if( l_errl == NULL ) { -// todo RTC:132413 Special Wakeup updates for P9 -#if (0) l_errl = disableSpecialWakeup(); -#endif } if( l_errl == NULL ) @@ -468,6 +476,57 @@ errlHndl_t broadcastShutdown ( uint64_t i_hbInstance ) return err; } + + +errlHndl_t disableSpecialWakeup() +{ + errlHndl_t l_errl = NULL; + + TargetHandleList l_cores; + getAllChiplets(l_cores, TYPE_CORE); + uint32_t l_numCores = 0; + + for( const auto & l_core: l_cores ) + { + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "Iterating all cores in system - " + "This is core: %d", l_numCores); + l_numCores += 1; + + const fapi2::Target<fapi2::TARGET_TYPE_CORE> + l_fapi2_coreTarget(l_core); + + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + "Running p9_cpu_special_wakeup_core (DISABLE) target HUID %.8X", + TARGETING::get_huid(l_core)); + + // Disable special wakeup on core + FAPI_INVOKE_HWP( l_errl, + p9_cpu_special_wakeup_core, + l_fapi2_coreTarget, + SPCWKUP_ENABLE, + HOST); + if( l_errl ) + { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + "ERROR : disable p9_cpu_special_wakeup_core, " + "PLID=0x%x", l_errl->plid() ); + + ErrlUserDetailsTarget(l_core).addToLog( l_errl ); + + break; + } + else + { + TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, + "SUCCESS: disable p9_cpu_special_wakeup_core"); + } + } + + return l_errl; +} + + /** * @brief Re-enables the local core checkstop function */ diff --git a/src/usr/isteps/istep21/makefile b/src/usr/isteps/istep21/makefile index 05fa4ac23..eed55ba52 100644 --- a/src/usr/isteps/istep21/makefile +++ b/src/usr/isteps/istep21/makefile @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2015 +# Contributors Listed Below - COPYRIGHT 2015,2016 # [+] International Business Machines Corp. # # @@ -25,6 +25,12 @@ ROOTPATH = ../../../.. MODULE = istep21 +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/pm/ +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/ffdc/ +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/utils/imageProcs/ +EXTRAINCDIR += ${ROOTPATH}/src/import/hwpf/fapi2/include/ +EXTRAINCDIR += ${ROOTPATH}/src/include/usr/fapi2/ + OBJS += call_host_runtime_setup.o OBJS += call_host_verify_hdat.o OBJS += call_host_start_payload.o diff --git a/src/usr/isteps/pm/pm.mk b/src/usr/isteps/pm/pm.mk index c77cc1ff6..976d44c12 100644 --- a/src/usr/isteps/pm/pm.mk +++ b/src/usr/isteps/pm/pm.mk @@ -70,11 +70,6 @@ include ${HWP_PATH}/p9_hcode_image_build.mk include ${HWP_PATH}/p9_pm_stop_gpe_init.mk include ${HWP_PATH}/p9_pm_pfet_init.mk include ${HWP_PATH}/p9_pm_reset.mk -#TODO RTC:147383 Need to create a seperate module for cpu_special_wakeup -include ${HWP_PATH}/p9_cpu_special_wakeup.mk -include ${HWP_PATH}/p9_cpu_special_wakeup_core.mk -include ${HWP_PATH}/p9_cpu_special_wakeup_ex.mk -include ${HWP_PATH}/p9_cpu_special_wakeup_lib.mk include ${HWP_PATH}/p9_pm_occ_sram_init.mk include ${HWP_PATH}/p9_pm_occ_gpe_init.mk include ${HWP_PATH}/p9_pm_ppm_firinit.mk diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml index a3c62643f..2c9be0238 100755 --- a/src/usr/targeting/common/xmltohb/target_types.xml +++ b/src/usr/targeting/common/xmltohb/target_types.xml @@ -1244,6 +1244,7 @@ <attribute><id>PROC_PERV_BNDY_PLL_DATA</id></attribute> <attribute><id>DEVICE_ID</id></attribute> <attribute><id>TOD_CPU_DATA</id></attribute> + <attribute><id>PM_SPWUP_IGNORE_XSTOP_FLAG</id></attribute> </targetType><!-- chip-processor-power9 --> <!-- chip-processor-nimbus --> |