Add PubSub events for CPU powerdown/powerup
authorDimitris Papastamos <dimitris.papastamos@arm.com>
Tue, 28 Nov 2017 15:16:00 +0000 (15:16 +0000)
committerDimitris Papastamos <dimitris.papastamos@arm.com>
Thu, 11 Jan 2018 10:33:41 +0000 (10:33 +0000)
The suspend hook is published at the start of a CPU powerdown
operation.  The resume hook is published at the end of a CPU powerup
operation.

Change-Id: I50c05e2dde0d33834095ac41b4fcea4c161bb434
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>
include/lib/el3_runtime/pubsub_events.h
lib/psci/psci_suspend.c

index 9cfedb4de78e5ff51d461f5bf8ba56be221d58fa..64b3f630c98ada4e1b7d309d0a22b87c97c98428 100644 (file)
  */
 REGISTER_PUBSUB_EVENT(psci_cpu_on_finish);
 
+/*
+ * These events are published before/after a CPU has been powered down/up
+ * via the PSCI CPU SUSPEND API.
+ */
+REGISTER_PUBSUB_EVENT(psci_suspend_pwrdown_start);
+REGISTER_PUBSUB_EVENT(psci_suspend_pwrdown_finish);
+
 #ifdef AARCH64
 /*
  * These events are published by the AArch64 context management framework
index d9490672eb470c1a3b53a6433907be41dbe6320d..a77972d38c26e34863a9d5caf83597d59931333e 100644 (file)
@@ -14,6 +14,7 @@
 #include <debug.h>
 #include <platform.h>
 #include <pmf.h>
+#include <pubsub_events.h>
 #include <runtime_instr.h>
 #include <stddef.h>
 #include "psci_private.h"
@@ -68,6 +69,8 @@ static void psci_suspend_to_pwrdown_start(unsigned int end_pwrlvl,
 {
        unsigned int max_off_lvl = psci_find_max_off_lvl(state_info);
 
+       PUBLISH_EVENT(psci_suspend_pwrdown_start);
+
        /* Save PSCI target power level for the suspend finisher handler */
        psci_set_suspend_pwrlvl(end_pwrlvl);
 
@@ -308,6 +311,8 @@ void psci_cpu_suspend_finish(unsigned int cpu_idx,
        /* Invalidate the suspend level for the cpu */
        psci_set_suspend_pwrlvl(PSCI_INVALID_PWR_LVL);
 
+       PUBLISH_EVENT(psci_suspend_pwrdown_finish);
+
        /*
         * Generic management: Now we just need to retrieve the
         * information that we had stashed away during the suspend