Fix use of stale power states in PSCI standby finisher
authorAchin Gupta <achin.gupta@arm.com>
Tue, 28 Jun 2016 15:46:15 +0000 (16:46 +0100)
committerAchin Gupta <achin.gupta@arm.com>
Mon, 25 Jul 2016 14:53:00 +0000 (15:53 +0100)
commit61eae524b6e452fd1be931c6e1ff8f7cf3ae969c
tree8c194b98602c38799ef0c1b0078b04c2dd590f10
parent3dd9835f8ab3c2e7f57ddc92505d6c800bbacd47
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
lib/psci/psci_common.c
lib/psci/psci_private.h
lib/psci/psci_suspend.c