summaryrefslogtreecommitdiff
path: root/lib/psci/psci_common.c
diff options
context:
space:
mode:
authorAchin Gupta <achin.gupta@arm.com>2016-06-28 16:46:15 +0100
committerAchin Gupta <achin.gupta@arm.com>2016-07-25 15:53:00 +0100
commit61eae524b6e452fd1be931c6e1ff8f7cf3ae969c (patch)
tree8c194b98602c38799ef0c1b0078b04c2dd590f10 /lib/psci/psci_common.c
parent3dd9835f8ab3c2e7f57ddc92505d6c800bbacd47 (diff)
Fix use of stale power states in PSCI standby finisher
A PSCI CPU_SUSPEND request to place a CPU in retention states at power levels higher than the CPU power level is subject to the same state coordination as a power down state. A CPU could implement multiple retention states at a particular power level. When exiting WFI, the non-CPU power levels may be in a different retention state to what was initially requested, therefore each CPU should refresh its view of the states of all power levels. Previously, a CPU re-used the state of the power levels when it entered the retention state. This patch fixes this issue by ensuring that a CPU upon exit from retention reads the state of each power level afresh. Change-Id: I93b5f5065c63400c6fd2598dbaafac385748f989
Diffstat (limited to 'lib/psci/psci_common.c')
-rw-r--r--lib/psci/psci_common.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/psci/psci_common.c b/lib/psci/psci_common.c
index c6fea5b0..e87e8c05 100644
--- a/lib/psci/psci_common.c
+++ b/lib/psci/psci_common.c
@@ -252,8 +252,8 @@ static plat_local_state_t *psci_get_req_local_pwr_states(unsigned int pwrlvl,
* function will be called after a cpu is powered on to find the local state
* each power domain has emerged from.
*****************************************************************************/
-static void psci_get_target_local_pwr_states(unsigned int end_pwrlvl,
- psci_power_state_t *target_state)
+void psci_get_target_local_pwr_states(unsigned int end_pwrlvl,
+ psci_power_state_t *target_state)
{
unsigned int parent_idx, lvl;
plat_local_state_t *pd_state = target_state->pwr_domain_state;