diff options
author | Christian Geddes <crgeddes@us.ibm.com> | 2018-02-15 10:41:31 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-02-16 20:22:29 -0500 |
commit | 35165b3476254ee9a6f95786b93e6425ed6482a2 (patch) | |
tree | b660147a42574839bc32cdf8dcd4f99249a991a4 /src/usr/isteps | |
parent | 2d6ba11ae2fc6dd2aca923be277cb94ef7e95c92 (diff) | |
download | talos-hostboot-35165b3476254ee9a6f95786b93e6425ed6482a2.tar.gz talos-hostboot-35165b3476254ee9a6f95786b93e6425ed6482a2.zip |
Remove all explicit calls to special_wakeup from hostboot code
The only time that special wakeup should be called on the hostboot
platform is when it is called by other HWPs. PM_RESET will only
enable special wakeup if the SKIP_WAKEUP attribute is set to 0
Change-Id: Ib9939eae857fa5113a876a717f8169e150b78318
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/54148
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/isteps')
-rw-r--r-- | src/usr/isteps/istep06/host_discover_targets.C | 3 | ||||
-rw-r--r-- | src/usr/isteps/istep06/thread_activate/thread_activate.C | 50 | ||||
-rw-r--r-- | src/usr/isteps/istep16/call_host_activate_master.C | 117 | ||||
-rw-r--r-- | src/usr/isteps/istep16/call_host_activate_slave_cores.C | 35 | ||||
-rw-r--r-- | src/usr/isteps/istep18/establish_system_smp.C | 91 | ||||
-rw-r--r-- | src/usr/isteps/istep18/establish_system_smp.H | 8 | ||||
-rw-r--r-- | src/usr/isteps/istep21/call_host_start_payload.C | 61 | ||||
-rw-r--r-- | src/usr/isteps/pm/occCheckstop.C | 14 |
8 files changed, 3 insertions, 376 deletions
diff --git a/src/usr/isteps/istep06/host_discover_targets.C b/src/usr/isteps/istep06/host_discover_targets.C index f503576b8..65d38b839 100644 --- a/src/usr/isteps/istep06/host_discover_targets.C +++ b/src/usr/isteps/istep06/host_discover_targets.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2017 */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ /* [+] Google Inc. */ /* [+] International Business Machines Corp. */ /* */ @@ -60,7 +60,6 @@ #include <sbeio/sbeioif.H> #include <sys/misc.h> -#include <p9_cpu_special_wakeup.H> #include <p9_query_core_access_state.H> #include <p9_query_cache_access_state.H> #include <p9_hcd_core_stopclocks.H> diff --git a/src/usr/isteps/istep06/thread_activate/thread_activate.C b/src/usr/isteps/istep06/thread_activate/thread_activate.C index 5689952ff..00a63ef04 100644 --- a/src/usr/isteps/istep06/thread_activate/thread_activate.C +++ b/src/usr/isteps/istep06/thread_activate/thread_activate.C @@ -60,7 +60,6 @@ #include <fapi2_hw_access.H> #include <plat_hwp_invoker.H> #include <istep_reasoncodes.H> -#include <p9_cpu_special_wakeup.H> #include <pnor/pnorif.H> #include <vpd/mvpdenums.H> @@ -385,37 +384,6 @@ void activate_threads( errlHndl_t& io_rtaskRetErrl ) const fapi2::Target<fapi2::TARGET_TYPE_CORE>& l_fapiCore0 = (const_cast<TARGETING::Target*>(l_masterCore)); - // -------------------------------------------------------------------- - //Enable the special wake-up on master core - FAPI_INF("Enable special wake-up on master core"); - - //Need to explicitly load the library that has the wakeup HWP in it - if( !VFS::module_is_loaded( "libp9_cpuWkup.so" ) ) - { - l_errl = VFS::module_load( "libp9_cpuWkup.so" ); - if ( l_errl ) - { - // load module returned with errl set - TRACFCOMP( g_fapiTd,ERR_MRK"activate_threads: Could not load libp9_cpuWkup module" ); - // break from do loop if error occured - break; - } - l_wakeup_lib_loaded = true; - } - - FAPI_INVOKE_HWP(l_errl, p9_cpu_special_wakeup_core, - l_fapiCore0, - p9specialWakeup::SPCWKUP_ENABLE, - p9specialWakeup::HOST); - if(l_errl) - { - TRACFCOMP( g_fapiImpTd, - "ERROR: 0x%.8X : p9_cpu_special_wakeup_core set HWP(cpu %d)", - l_errl->reasonCode(), - l_masterCoreID); - break; - } - // AVPs might enable a subset of the available threads uint64_t max_threads = cpu_thread_count(); uint64_t en_threads, en_threads_master; @@ -560,24 +528,6 @@ void activate_threads( errlHndl_t& io_rtaskRetErrl ) const fapi2::Target<fapi2::TARGET_TYPE_CORE>& l_fapiCore1 = (const_cast<TARGETING::Target*>(l_fusedCore)); - // ------------------------------------------------------------- - //Enable the special wake-up on master-fused core - FAPI_INF("Enable special wake-up on master-fused core"); - - FAPI_INVOKE_HWP(l_errl, p9_cpu_special_wakeup_core, - l_fapiCore1, - p9specialWakeup::SPCWKUP_ENABLE, - p9specialWakeup::HOST); - if(l_errl) - { - TRACFCOMP( g_fapiImpTd, - "ERROR: 0x%.8X : " - "p9_cpu_special_wakeup_core set HWP(cpu %d)", - l_errl->reasonCode(), - l_masterCoreID); - break; - } - // First capture if threads 1,3 are enabled. Then eliminate // even threads and compress to bits 0,1 uint64_t en_threads_c1; diff --git a/src/usr/isteps/istep16/call_host_activate_master.C b/src/usr/isteps/istep16/call_host_activate_master.C index d75bac90a..635dd2950 100644 --- a/src/usr/isteps/istep16/call_host_activate_master.C +++ b/src/usr/isteps/istep16/call_host_activate_master.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2017 */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -51,7 +51,6 @@ //Import directory (EKB) #include <p9_block_wakeup_intr.H> -#include <p9_cpu_special_wakeup.H> //HWP invoker #include <fapi2/plat_hwp_invoker.H> @@ -60,7 +59,6 @@ using namespace ERRORLOG; using namespace TARGETING; using namespace ISTEP; using namespace ISTEP_ERROR; -using namespace p9specialWakeup; namespace ISTEP_16 @@ -263,34 +261,6 @@ void* call_host_activate_master (void *io_pArgs) "p9_block_wakeup_intr SUCCESS" ); } - // Clear special wakeup - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Disable special wakeup on master core"); - - FAPI_INVOKE_HWP(l_errl, p9_cpu_special_wakeup_core, - l_fapi2_coreTarget, - SPCWKUP_DISABLE, - HOST); - - - if(l_errl) - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Disable p9_cpu_special_wakeup_core ERROR : Returning errorlog," - " reason=0x%x", - l_errl->reasonCode() ); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_masterCore).addToLog( l_errl ); - - break; - } - else - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "Disable special wakeup on master core SUCCESS"); - } - if(l_fusedCore != NULL) { TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, @@ -319,34 +289,6 @@ void* call_host_activate_master (void *io_pArgs) TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "p9_block_wakeup_intr SUCCESS" ); } - - // Clear special wakeup - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Disable special wakeup on fused core"); - - FAPI_INVOKE_HWP(l_errl, p9_cpu_special_wakeup_core, - l_fapi2_fusedTarget, - SPCWKUP_DISABLE, - HOST); - - - if(l_errl) - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Disable p9_cpu_special_wakeup_core ERROR : Returning errorlog," - " reason=0x%x", - l_errl->reasonCode() ); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_fusedCore).addToLog( l_errl ); - - break; - } - else - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "Disable special wakeup on master core SUCCESS"); - } } // put the master into winkle. @@ -422,63 +364,6 @@ void* call_host_activate_master (void *io_pArgs) TARGETING::Target* sys = NULL; TARGETING::targetService().getTopLevelTarget(sys); - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Enable special wakeup on master 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, - "Enable p9_cpu_special_wakeup_core ERROR : Returning errorlog, " - "reason=0x%x", - l_errl->reasonCode() ); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_masterCore).addToLog( l_errl ); - - break; - } - else - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "Enable special wakeup on master core SUCCESS"); - } - - if(l_fusedCore != NULL) - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Enable special wakeup on fused core"); - - - FAPI_INVOKE_HWP(l_errl, p9_cpu_special_wakeup_core, - l_fapi2_fusedTarget, - SPCWKUP_ENABLE, - HOST); - - if(l_errl) - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Enable p9_cpu_special_wakeup_core ERROR : Returning errorlog, " - "reason=0x%x", - l_errl->reasonCode() ); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_fusedCore).addToLog( l_errl ); - - break; - } - else - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "Enable special wakeup on master core SUCCESS"); - } - } - } while ( 0 ); if( l_errl ) 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 865a4f5d0..e18639077 100644 --- a/src/usr/isteps/istep16/call_host_activate_slave_cores.C +++ b/src/usr/isteps/istep16/call_host_activate_slave_cores.C @@ -42,7 +42,6 @@ #include <sys/misc.h> #include <fapi2/plat_hwp_invoker.H> -#include <p9_cpu_special_wakeup.H> #include <p9_check_idle_stop_done.H> #ifdef CONFIG_IPLTIME_CHECKSTOP_ANALYSIS @@ -55,7 +54,6 @@ using namespace ERRORLOG; using namespace TARGETING; using namespace ISTEP; using namespace ISTEP_ERROR; -using namespace p9specialWakeup; using namespace p9_check_idle_stop; namespace ISTEP_16 @@ -200,39 +198,6 @@ void* call_host_activate_slave_cores (void *io_pArgs) errlCommit( l_errl, HWPF_COMP_ID ); break; } - - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "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_core, - l_fapi2_coreTarget, - SPCWKUP_ENABLE, - HOST); - - if( l_errl ) - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "ERROR : enable p9_cpu_special_wakeup_core, " - "PLID=0x%x", l_errl->plid() ); - - ErrlUserDetailsTarget(*l_core).addToLog( l_errl ); - - // Create IStep error log and cross ref error that - // occurred - l_stepError.addErrorDetails( l_errl ); - - // Commit Error - errlCommit( l_errl, HWPF_COMP_ID ); - } - else - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "SUCCESS: enable p9_cpu_special_wakeup_core"); - } } } // @@@@@ END CUSTOM BLOCK: @@@@@ diff --git a/src/usr/isteps/istep18/establish_system_smp.C b/src/usr/isteps/istep18/establish_system_smp.C index 1394322e2..ab26df229 100644 --- a/src/usr/isteps/istep18/establish_system_smp.C +++ b/src/usr/isteps/istep18/establish_system_smp.C @@ -75,7 +75,6 @@ // Uncomment these files as they become available: // #include "host_coalesce_host/host_coalesce_host.H" #include <p9_block_wakeup_intr.H> -#include <p9_cpu_special_wakeup.H> #include <initservice/istepdispatcherif.H> #include <isteps/hwpf_reasoncodes.H> @@ -440,8 +439,6 @@ void *host_sys_fab_iovalid_processing(void* io_ptr ) // assume success, unless we hit an error later. io_pMsg->data[0] = INITSERVICE::HWSVR_MSG_SUCCESS; - errlHndl_t l_errl = NULL; - // if there is extra data, start processing it if(io_pMsg->extra_data) { @@ -516,49 +513,6 @@ void *host_sys_fab_iovalid_processing(void* io_ptr ) io_pMsg->data[1] = 0; - // if there wasn't an error - if (io_pMsg->data[0] == INITSERVICE::HWSVR_MSG_SUCCESS) - { - // Get all functional core units - TARGETING::TargetHandleList l_coreList; - getAllChiplets(l_coreList, TYPE_CORE); - - for (auto l_core : l_coreList) - { - fapi2::Target<fapi2::TARGET_TYPE_CORE> l_fapi2_core_target(l_core); - - // disable special wakeup - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "Running p9_cpu_special_wakeup_core (DISABLE) on Core target" - " HUID %.8X", - TARGETING::get_huid(l_core)); - - FAPI_INVOKE_HWP(l_errl, - p9_cpu_special_wakeup_core, - l_fapi2_core_target, - p9specialWakeup::SPCWKUP_DISABLE, - p9specialWakeup::HOST); - - if(l_errl) - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Disable p9_cpu_special_wakeup_core ERROR :" - " Returning errorlog, reason=0x%x", - l_errl->reasonCode() ); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_core).addToLog( l_errl ); - - break; - } - else - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "SUCCESS: Disable special wakeup"); - } - } - } - // response will be sent by calling routine // IStepDispatcher::handleProcFabIovalidMsg() // which will also execute the procedure to winkle all cores @@ -611,49 +565,4 @@ errlHndl_t blockInterrupts() return l_errl; } -errlHndl_t enableSpecialWakeup() -{ - errlHndl_t l_errl = NULL; - - // Get all functional core units - TARGETING::TargetHandleList l_coreList; - getAllChiplets(l_coreList, TYPE_CORE); - - for (auto l_core : l_coreList) - { - - fapi2::Target<fapi2::TARGET_TYPE_CORE> l_fapi2_core_target(l_core); - - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "Running p9_cpu_special_wakeup_core(ENABLE) " - "on Core target HUID %.8X", - TARGETING::get_huid(l_core)); - - FAPI_INVOKE_HWP(l_errl, - p9_cpu_special_wakeup_core, - l_fapi2_core_target, - p9specialWakeup::SPCWKUP_ENABLE, - p9specialWakeup::HOST); - - if(l_errl) - { - TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, - "Enable p9_cpu_special_wakeup_core ERROR :" - " Returning errorlog, reason=0x%x", - l_errl->reasonCode() ); - - // capture the target data in the elog - ErrlUserDetailsTarget(l_core).addToLog( l_errl ); - - break; - } - else - { - TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, - "SUCCESS: Enable special wakeup"); - } - } - return l_errl; -} - }; // end namespace diff --git a/src/usr/isteps/istep18/establish_system_smp.H b/src/usr/isteps/istep18/establish_system_smp.H index 410030ff6..e0a07aed4 100644 --- a/src/usr/isteps/istep18/establish_system_smp.H +++ b/src/usr/isteps/istep18/establish_system_smp.H @@ -111,14 +111,6 @@ namespace ESTABLISH_SYSTEM_SMP void* host_sys_fab_iovalid_processing( void* io_pMsg ); /** - * @brief enableSpecialWakeup on all functional cores after - * winkle wakeup. - * - * @return error log handle - */ - errlHndl_t enableSpecialWakeup(); - - /** * @brief block interrupts on all functional cores * * @return error log handle diff --git a/src/usr/isteps/istep21/call_host_start_payload.C b/src/usr/isteps/istep21/call_host_start_payload.C index 7024fd98c..eba79e0f5 100644 --- a/src/usr/isteps/istep21/call_host_start_payload.C +++ b/src/usr/isteps/istep21/call_host_start_payload.C @@ -49,7 +49,6 @@ #include <isteps/hwpf_reasoncodes.H> #include <fapi2/target.H> #include <fapi2/plat_hwp_invoker.H> -#include <p9_cpu_special_wakeup.H> #include <p9n2_quad_scom_addresses_fld.H> #include <ipmi/ipmiwatchdog.H> #include <config.h> @@ -67,7 +66,6 @@ using namespace ERRORLOG; using namespace ISTEP; using namespace ISTEP_ERROR; using namespace TARGETING; -using namespace p9specialWakeup; namespace ISTEP_21 { @@ -92,13 +90,6 @@ 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 @@ -366,12 +357,6 @@ errlHndl_t callShutdown ( uint64_t i_masterInstance, do { - err = disableSpecialWakeup(); - if(err) - { - break; - } - // Tell SBE to Close All Unsecure Memory Regions err = SBEIO::closeAllUnsecureMemRegions(); if (err) @@ -654,52 +639,6 @@ errlHndl_t broadcastShutdown ( uint64_t i_hbInstance ) } -errlHndl_t disableSpecialWakeup() -{ - errlHndl_t l_errl = nullptr; - - TargetHandleList l_cores; - getAllChiplets(l_cores, TYPE_CORE); - uint32_t l_numCores = 0; - - for( const auto & l_core: l_cores ) - { - 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_DISABLE, - 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/pm/occCheckstop.C b/src/usr/isteps/pm/occCheckstop.C index 476638d98..c42996728 100644 --- a/src/usr/isteps/pm/occCheckstop.C +++ b/src/usr/isteps/pm/occCheckstop.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2013,2017 */ +/* Contributors Listed Below - COPYRIGHT 2013,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -172,18 +172,6 @@ namespace HBOCC break; } - // ************************************************************ - // Take all EX chiplets out of special wakeup - // ************************************************************ - FAPI_DBG("Disable special wakeup for all functional" - " EX targets."); - FAPI_INVOKE_HWP(l_errl, special_wakeup_all, l_target, false); - if(l_errl) - { - TRACFCOMP(g_fapiTd, - "ERROR: Failed to remove EX chiplets from special wakeup"); - } - // Hack provided by Doug Gilbert (@dgilbert). The following six // scoms set up the communications between GPE0 and the 405. This // allows to not load and start SGPE that is responsible for setting |