diff options
author | Achin Gupta <achin.gupta@arm.com> | 2016-06-28 16:46:15 +0100 |
---|---|---|
committer | Achin Gupta <achin.gupta@arm.com> | 2016-07-25 15:53:00 +0100 |
commit | 61eae524b6e452fd1be931c6e1ff8f7cf3ae969c (patch) | |
tree | 8c194b98602c38799ef0c1b0078b04c2dd590f10 /lib/psci/psci_private.h | |
parent | 3dd9835f8ab3c2e7f57ddc92505d6c800bbacd47 (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_private.h')
-rw-r--r-- | lib/psci/psci_private.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/psci/psci_private.h b/lib/psci/psci_private.h index 49352144..b795c8e0 100644 --- a/lib/psci/psci_private.h +++ b/lib/psci/psci_private.h @@ -192,6 +192,8 @@ int psci_validate_power_state(unsigned int power_state, void psci_query_sys_suspend_pwrstate(psci_power_state_t *state_info); int psci_validate_mpidr(u_register_t mpidr); void psci_init_req_local_pwr_states(void); +void psci_get_target_local_pwr_states(unsigned int end_pwrlvl, + psci_power_state_t *target_state); int psci_validate_entry_point(entry_point_info_t *ep, uintptr_t entrypoint, u_register_t context_id); void psci_get_parent_pwr_domain_nodes(unsigned int cpu_idx, |