Remove coherent stack usage from the warm boot path
authorAchin Gupta <achin.gupta@arm.com>
Thu, 26 Jun 2014 08:58:52 +0000 (09:58 +0100)
committerAchin Gupta <achin.gupta@arm.com>
Sat, 19 Jul 2014 22:31:53 +0000 (23:31 +0100)
commitb51da821821cfda0d44f09a6f92fdc5933f9b23b
tree01d72a57badfa7cc19c5530d64f4c308b6d37799
parentafff8cbdd816ca9b0d71ab54882ce70b21ed84e1
Remove coherent stack usage from the warm boot path

This patch uses stacks allocated in normal memory to enable the MMU early in the
warm boot path thus removing the dependency on stacks allocated in coherent
memory. Necessary cache and stack maintenance is performed when a cpu is being
powered down and up. This avoids any coherency issues that can arise from
reading speculatively fetched stale stack memory from another CPUs cache. These
changes affect the warm boot path in both BL3-1 and BL3-2.

The EL3 system registers responsible for preserving the MMU state are not saved
and restored any longer. Static values are used to program these system
registers when a cpu is powered on or resumed from suspend.

Change-Id: I8357e2eb5eb6c5f448492c5094b82b8927603784
12 files changed:
bl31/aarch64/context.S
bl31/aarch64/runtime_exceptions.S
bl31/bl31.mk
bl32/tsp/aarch64/tsp_entrypoint.S
include/bl31/context.h
services/std_svc/psci/psci_afflvl_off.c
services/std_svc/psci/psci_afflvl_on.c
services/std_svc/psci/psci_afflvl_suspend.c
services/std_svc/psci/psci_entry.S
services/std_svc/psci/psci_helpers.S [new file with mode: 0644]
services/std_svc/psci/psci_main.c
services/std_svc/psci/psci_private.h