From 4e4dbf34cd08855833bce3b3f3519761a839d6db Mon Sep 17 00:00:00 2001 From: Dan Crowell Date: Thu, 30 Aug 2018 12:19:21 -0500 Subject: Forcibly clear all previous wakeups when the PM Complex starts The power management logic was designed with the assumption that the external callers would manage the state machine such that the order of operations is always: load->start->reset->load->start->reset->etc. However, we have discovered edge cases where a reset can happen before the first load or after a previous reset. In either case we will end up with our wakeup counter being off by one and thus never releasing wakeup. The solution is to add logic to the start path that will explicitly clear the counter out completely, regardless of its current value. This will ensure that wakeup is released once the complex is alive. Change-Id: Ifb436335090ff910b9ee0f083d9a550b81833287 CQ: SW442639 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/65518 Reviewed-by: Matt Derksen Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Tested-by: Jenkins OP HW Reviewed-by: William G. Hoffa --- src/include/runtime/interface.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/include/runtime/interface.h') diff --git a/src/include/runtime/interface.h b/src/include/runtime/interface.h index 21e596ab5..ae922d23c 100644 --- a/src/include/runtime/interface.h +++ b/src/include/runtime/interface.h @@ -127,9 +127,12 @@ enum HbrtRcPiberr_t * Wakeup mode for the wakeup() interface * HBRT_WKUP_FORCE_AWAKE: force a core awake * HBRT_WKUP_CLEAR_FORCE: clear a previous force + * HBRT_WKUP_CLEAR_FORCE_COMPLETELY: clear all previous forces, regardless + * of internal counts */ #define HBRT_WKUP_FORCE_AWAKE 0 #define HBRT_WKUP_CLEAR_FORCE 1 +#define HBRT_WKUP_CLEAR_FORCE_COMPLETELY 2 /** * Chip ID types included in the chip_id / proc_id / core_id @@ -167,6 +170,7 @@ enum HbrtRcPiberr_t #define HBRT_CAPS_SET1_OPAL 1 #define HBRT_CAPS_OPAL_HAS_XSCOM_RC (1ul << 0) #define HBRT_CAPS_OPAL_HAS_WAKEUP (1ul << 1) +#define HBRT_CAPS_OPAL_HAS_WAKEUP_CLEAR (1ul << 2) /* PHYP fixes */ #define HBRT_CAPS_SET2_PHYP 2 -- cgit v1.2.1