summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2016-08-26 12:50:31 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-09-04 13:11:14 -0400
commit720f2d1fe4a8d140b11830883793d243ade06b7b (patch)
tree6b5b1b6ce96831f3cf76c63446e39ed401a204cf /src/import/chips/p9/procedures
parentbb634937204792efe411c1463ee7bf04abf1de6f (diff)
downloadtalos-hostboot-720f2d1fe4a8d140b11830883793d243ade06b7b.tar.gz
talos-hostboot-720f2d1fe4a8d140b11830883793d243ade06b7b.zip
Remove explicit calls to p9_cpu_special_wakeup from HWPs
It is illegal for HWPs to call p9_cpu_special_wakeup themselves. HWPs need to call fapi2::specialWakeup() instead so that the platform can decide what to do. There are a couple reasons for this: 1) There may be multiple different pieces of logic running simultaneously on the platform that are all manipulating the special wakeup bit in the hardware. For example, when HBRT is running on top of PHYP, HBRT can't just mess around with the wakeup bit that PHYP could already be setting/clearing on its own. 2) The platform owns the recursion counter to handle wakeup being called while wakeup is already enabled. Change-Id: I9ff8ac7c6eec566873b1a2f95ce95123982a8fb6 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28852 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28855 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/import/chips/p9/procedures')
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_reset.C19
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_pm_stop_gpe_init.C34
2 files changed, 5 insertions, 48 deletions
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_reset.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_reset.C
index b1d334ce1..62d9b6a75 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_reset.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_reset.C
@@ -84,16 +84,14 @@ enum PPM_MASK
/// @brief Sets or clears special wake-up on all configured EX on a target
///
/// @param[in] i_target Chip target
-/// @param[in] i_action enable/disable specialwakeup
-/// @param[in] i_entity Entities for special wakeup
+/// @param[in] i_enable true = enable. false = disable.
///
/// @return FAPI2_RC_SUCCESS If the special wake-up is successful,
/// else error code.
///
fapi2::ReturnCode special_wakeup_all(
const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target,
- const p9specialWakeup::PROC_SPCWKUP_OPS i_action,
- const p9specialWakeup::PROC_SPCWKUP_ENTITY i_entity);
+ bool i_enable);
///
/// @brief Clear the Deep Exit Masks
@@ -142,8 +140,7 @@ fapi2::ReturnCode p9_pm_reset(
// ************************************************************************
FAPI_DBG("Enable special wakeup for all functional EX targets.");
FAPI_TRY(special_wakeup_all(i_target,
- p9specialWakeup::SPCWKUP_ENABLE,//Enable splwkup
- p9specialWakeup::SPW_ALL),//Apply to all
+ true),//Enable splwkup
"ERROR: Failed to remove EX chiplets from special wakeup");
FAPI_TRY(p9_pm_glob_fir_trace(i_target, "After EX in special wakeup"));
@@ -240,8 +237,7 @@ fapi_try_exit:
fapi2::ReturnCode special_wakeup_all(
const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target,
- const p9specialWakeup::PROC_SPCWKUP_OPS i_action,
- const p9specialWakeup::PROC_SPCWKUP_ENTITY i_entity)
+ const bool i_enable)
{
FAPI_INF("special_wakeup_all Enter");
@@ -254,12 +250,7 @@ fapi2::ReturnCode special_wakeup_all(
{
FAPI_DBG("Running special wakeup on ex chiplet 0x%08X ", l_ex_chplt);
- FAPI_EXEC_HWP(l_rc, p9_cpu_special_wakeup,
- l_ex_chplt, // EX chiplet
- i_action, // Enable/Disable action
- i_entity // Anitites to apply action on
- );
- FAPI_TRY(l_rc, "ERROR: Failed to enable/disable special wakeup");
+ FAPI_TRY( fapi2::specialWakeup( l_ex_chplt, i_enable ) );
}
fapi_try_exit:
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_pm_stop_gpe_init.C b/src/import/chips/p9/procedures/hwp/pm/p9_pm_stop_gpe_init.C
index 3985a67f7..c65e26097 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_pm_stop_gpe_init.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_pm_stop_gpe_init.C
@@ -62,11 +62,6 @@
#include <p9_pm_pfet_init.H>
-// @todo RTC 147679 This will be uncommented upon the formal availability
-// This is needed to initialize the special wakeup tracking attributes
-// in stop_corecache_setup section
-//#include "p9_cpu_special_wakeup.H"
-
// ----------------------------------------------------------------------
// Constants
// ----------------------------------------------------------------------
@@ -333,35 +328,6 @@ fapi2::ReturnCode stop_corecache_setup(
auto l_cache_functional_vector =
i_target.getChildren<fapi2::TARGET_TYPE_EQ>
(fapi2::TARGET_STATE_FUNCTIONAL);
-#if 0
-
- for (auto l_chplt_trgt : l_core_functional_vector)
- {
- // @todo RTC 147679 Enable when special wake-up is available
- // --------------------------------------
- // Initialize the special wake-up tracking attributes
- FAPI_INF("\tInitialize the special wake-up tracking attributes for the cores");
- FAPI_EXEC_HWP(rc, p9_cpu_special_wakeup,
- l_chplt_trgt,
- SPCWKUP_INIT,
- SPW_ALL);
- } // core chiplet loop
-
- // Process all cache chiplets
- for (auto l_chplt_trgt : l_cache_functional_vector)
- {
- // @todo RTC 147679 Enable when special wake-up is available
- // --------------------------------------
- // Initialize the special wake-up tracking attributes
- FAPI_INF("\tInitialize the special wake-up tracking attributes for the caches");
- FAPI_EXEC_HWP(rc, p9_cpu_special_wakeup,
- l_chplt_trgt,
- SPCWKUP_INIT,
- SPW_ALL);
-
- } // cache chiplet loop
-
-#endif
return fapi2::current_err;
}
OpenPOWER on IntegriCloud