aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitris Papastamos <dimitris.papastamos@arm.com>2018-09-07 15:05:28 +0100
committerGitHub <noreply@github.com>2018-09-07 15:05:28 +0100
commit2013523cdd2e19a79bb5d83ea26c02fa9fc3cfec (patch)
treef8f412dd767e0e7f6b1d5809938783779e87299a
parente976e1fdb4f936352262122e5c3e80aff11bdc6b (diff)
parentf933b44bd6c35df1ee3685cbf8a88c3498116138 (diff)
downloadplatform_external_arm-trusted-firmware-2013523cdd2e19a79bb5d83ea26c02fa9fc3cfec.tar.gz
platform_external_arm-trusted-firmware-2013523cdd2e19a79bb5d83ea26c02fa9fc3cfec.tar.bz2
platform_external_arm-trusted-firmware-2013523cdd2e19a79bb5d83ea26c02fa9fc3cfec.zip
Merge pull request #1564 from jeenu-arm/sdei-suspend
SDEI: Mask events after CPU wakeup
-rw-r--r--services/std_svc/sdei/sdei_main.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/services/std_svc/sdei/sdei_main.c b/services/std_svc/sdei/sdei_main.c
index 9b78d7fbc..990d02876 100644
--- a/services/std_svc/sdei/sdei_main.c
+++ b/services/std_svc/sdei/sdei_main.c
@@ -81,6 +81,17 @@ static void *sdei_cpu_on_init(const void *arg)
return NULL;
}
+/* CPU initialisation after wakeup from suspend */
+static void *sdei_cpu_wakeup_init(const void *arg)
+{
+ SDEI_LOG("Events masked on %lx\n", read_mpidr_el1());
+
+ /* All PEs wake up with SDEI events masked */
+ sdei_pe_mask();
+
+ return 0;
+}
+
/* Initialise an SDEI class */
static void sdei_class_init(sdei_class_t class)
{
@@ -1075,3 +1086,6 @@ uint64_t sdei_smc_handler(uint32_t smc_fid,
/* Subscribe to PSCI CPU on to initialize per-CPU SDEI configuration */
SUBSCRIBE_TO_EVENT(psci_cpu_on_finish, sdei_cpu_on_init);
+
+/* Subscribe to PSCI CPU suspend finisher for per-CPU configuration */
+SUBSCRIBE_TO_EVENT(psci_suspend_pwrdown_finish, sdei_cpu_wakeup_init);