PSCI: Publish CPU ON event

This allows other EL3 components to subscribe to CPU on events.

Update Firmware Design guide to list psci_cpu_on_finish as an available
event.

Change-Id: Ida774afe0f9cdce4021933fcc33a9527ba7aaae2
Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
This commit is contained in:
Jeenu Viswambharan 2017-09-22 08:32:10 +01:00
parent 8e743bcd6a
commit bd0c347781
3 changed files with 25 additions and 0 deletions

View file

@ -2339,6 +2339,22 @@ implement:
SUBSCRIBE_TO_EVENT(foo, foo_handler);
Available Events
~~~~~~~~~~~~~~~~
ARM Trusted Firmware core makes some events available by default. They're listed
below, along with information as to when they're published, and the arguments
passed to subscribed handlers.
Other EL3 components that are conditionally compiled in may make their own
events available, but aren't documented here.
- ``psci_cpu_on_finish``
- When: Published on a PE after it's finished its power-up sequence.
- Argument: ``NULL``.
Performance Measurement Framework
---------------------------------

View file

@ -10,3 +10,9 @@
* This file defines a list of pubsub events, declared using
* REGISTER_PUBSUB_EVENT() macro.
*/
/*
* Event published after a CPU has been powered up and finished its
* initialization.
*/
REGISTER_PUBSUB_EVENT(psci_cpu_on_finish);

View file

@ -11,6 +11,7 @@
#include <context_mgmt.h>
#include <debug.h>
#include <platform.h>
#include <pubsub_events.h>
#include <stddef.h>
#include "psci_private.h"
@ -188,6 +189,8 @@ void psci_cpu_on_finish(unsigned int cpu_idx,
if (psci_spd_pm && psci_spd_pm->svc_on_finish)
psci_spd_pm->svc_on_finish(0);
PUBLISH_EVENT(psci_cpu_on_finish);
/* Populate the mpidr field within the cpu node array */
/* This needs to be done only once */
psci_cpu_pd_nodes[cpu_idx].mpidr = read_mpidr() & MPIDR_AFFINITY_MASK;