Commit cdf14088 authored by Sandrine Bailleux's avatar Sandrine Bailleux Committed by Achin Gupta
Browse files

FVP: Do not power off secondary CPUs when booting an EL3 payload

Normally, in the FVP port, secondary CPUs are immediately powered
down if they are powered on at reset. However, when booting an EL3
payload, we need to keep them powered on as the requirement is for
all CPUs to enter the EL3 payload image. This patch puts them in a
holding pen instead of powering them off.

Change-Id: I6526a88b907a0ddb820bead72f1d350a99b1692c
parent 2bc42067
...@@ -468,9 +468,11 @@ for placing the executing secondary CPU in a platform-specific state until the ...@@ -468,9 +468,11 @@ for placing the executing secondary CPU in a platform-specific state until the
primary CPU performs the necessary actions to bring it out of that state and primary CPU performs the necessary actions to bring it out of that state and
allow entry into the OS. This function must not return. allow entry into the OS. This function must not return.
In the ARM FVP port, each secondary CPU powers itself off. The primary CPU is In the ARM FVP port, when using the normal boot flow, each secondary CPU powers
responsible for powering up the secondary CPU when normal world software itself off. The primary CPU is responsible for powering up the secondary CPUs
requires them. when normal world software requires them. When booting an EL3 payload instead,
they stay powered on and are put in a holding pen until their mailbox gets
populated.
This function fulfills requirement 2 above. This function fulfills requirement 2 above.
......
...@@ -60,6 +60,7 @@ ...@@ -60,6 +60,7 @@
* ----------------------------------------------------- * -----------------------------------------------------
*/ */
func plat_secondary_cold_boot_setup func plat_secondary_cold_boot_setup
#ifndef EL3_PAYLOAD_BASE
/* --------------------------------------------- /* ---------------------------------------------
* Power down this cpu. * Power down this cpu.
* TODO: Do we need to worry about powering the * TODO: Do we need to worry about powering the
...@@ -93,6 +94,18 @@ func plat_secondary_cold_boot_setup ...@@ -93,6 +94,18 @@ func plat_secondary_cold_boot_setup
wfi wfi
cb_panic: cb_panic:
b cb_panic b cb_panic
#else
mov_imm x0, PLAT_ARM_TRUSTED_MAILBOX_BASE
/* Wait until the entrypoint gets populated */
poll_mailbox:
ldr x1, [x0]
cbz x1, 1f
br x1
1:
wfe
b poll_mailbox
#endif /* EL3_PAYLOAD_BASE */
endfunc plat_secondary_cold_boot_setup endfunc plat_secondary_cold_boot_setup
/* --------------------------------------------------------------------- /* ---------------------------------------------------------------------
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment