PSCI: Unify warm reset entry points
There used to be 2 warm reset entry points:

 - the "on finisher", for when the core has been turned on using a
   PSCI CPU_ON call;

 - the "suspend finisher", entered upon resumption from a previous
   PSCI CPU_SUSPEND call.

The appropriate warm reset entry point used to be programmed into the
mailboxes by the power management hooks.

However, it is not required to provide this information to the PSCI
entry point code, as it can figure it out by itself. By querying affinity
info state, a core is able to determine on which execution path it is.
If the state is ON_PENDING then it means it's been turned on else
it is resuming from suspend.

This patch unifies the 2 warm reset entry points into a single one:
psci_entrypoint(). The patch also implements the necessary logic
to distinguish between the 2 types of warm resets in the power up
finisher.

The plat_setup_psci_ops() API now takes the
secure entry point as an additional parameter to enable the platforms
to configure their mailbox. The platform hooks `pwr_domain_on`
and `pwr_domain_suspend` no longer take secure entry point as
a parameter.

Change-Id: I7d1c93787b54213aefdbc046b8cd66a555dfbfd9
1 parent 8ee2498 commit eb975f52ea2e70216d214efcff3154f3cf081cb0
@Sandrine Bailleux Sandrine Bailleux authored on 11 Jun 2015
Achin Gupta committed on 13 Aug 2015
Showing 8 changed files
View
include/bl31/services/psci1.0/psci.h
View
include/plat/common/psci1.0/platform.h
View
services/std_svc/psci1.0/psci_common.c
View
services/std_svc/psci1.0/psci_entry.S
View
services/std_svc/psci1.0/psci_on.c
View
services/std_svc/psci1.0/psci_private.h
View
services/std_svc/psci1.0/psci_setup.c
View
services/std_svc/psci1.0/psci_suspend.c