summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorCorey Swenson <cswenson@us.ibm.com>2016-09-28 16:39:50 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-10-05 10:53:10 -0400
commit465c463bd32aa12c417e2e26e44832a6de4b661e (patch)
tree4bef6e46c4c61fe60269556b80c1d93eb32b6448 /src
parent4415fb37f923bfeb63f1f81c55fe177d2e0adb95 (diff)
downloadtalos-hostboot-465c463bd32aa12c417e2e26e44832a6de4b661e.tar.gz
talos-hostboot-465c463bd32aa12c417e2e26e44832a6de4b661e.zip
Special wakeup updates for P9 power-on
Change-Id: I851e854eed0fa273d6b1e6cea6d6ff3e1ed007ae RTC:161674 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30439 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Martin Gloff <mgloff@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')
-rw-r--r--src/include/usr/isteps/istep21list.H1
-rw-r--r--src/usr/isteps/cpuWkup/makefile5
-rw-r--r--src/usr/isteps/istep06/thread_activate/makefile5
-rw-r--r--src/usr/isteps/istep06/thread_activate/thread_activate.C8
-rw-r--r--src/usr/isteps/istep16/call_host_activate_master.C8
-rw-r--r--src/usr/isteps/istep16/call_host_activate_slave_cores.C8
-rw-r--r--src/usr/isteps/istep16/makefile5
-rw-r--r--src/usr/isteps/istep21/call_host_start_payload.C69
-rw-r--r--src/usr/isteps/istep21/makefile8
-rw-r--r--src/usr/isteps/pm/pm.mk5
-rwxr-xr-xsrc/usr/targeting/common/xmltohb/target_types.xml1
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 -->
OpenPOWER on IntegriCloud