summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2014-11-04 20:47:23 -0600
committerPatrick Georgi <pgeorgi@google.com>2015-04-09 14:40:24 +0200
commit1816649b9027a48f03217f9c2a91f90678fd9446 (patch)
tree56a68e4edbd93cf786262312bfd4ea296bf08808 /src
parentdb3f383494053535e3f0e19ea1346c8084ee54eb (diff)
downloadcoreboot-1816649b9027a48f03217f9c2a91f90678fd9446.tar.xz
arm64: secmon: direct non-BSP cpus to start before BSP
The arch_run_on_all_cpus[_async]() APIs can run the BSP before the APs if the BSP's id is less than the APs' ids. Fix this by ensuring we run the necessary callback on all but self. BUG=chrome-os-partner:33532 BRANCH=None TEST=Booted spin table kernel. All CPUs are up. Change-Id: Ic9a466c3642595bad06cac83647de81873b8353e Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: 575437354cc20eeac8015a0f7b0c9999ecb0deee Original-Change-Id: I87e944f870105dbde33b5460660c96c93c3cdf93 Original-Signed-off-by: Aaron Durbin <adurbin@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/227488 Original-Tested-by: David Riley <davidriley@chromium.org> Original-Reviewed-by: Tom Warren <twarren@nvidia.com> Original-Reviewed-by: Furquan Shaikh <furquan@chromium.org> Reviewed-on: http://review.coreboot.org/9392 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh <furquan@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/arch/arm64/armv8/secmon/secmon_init.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/arch/arm64/armv8/secmon/secmon_init.c b/src/arch/arm64/armv8/secmon/secmon_init.c
index 9097a08b36..2ec2f136f7 100644
--- a/src/arch/arm64/armv8/secmon/secmon_init.c
+++ b/src/arch/arm64/armv8/secmon/secmon_init.c
@@ -70,7 +70,10 @@ static void secmon_init(struct secmon_params *params, int bsp)
smc_init();
psci_init();
- arch_run_on_all_cpus_async(&action);
+ /* Make sure all non-BSP CPUs take action before the BSP. */
+ arch_run_on_all_cpus_but_self_async(&action);
+ /* Turn on BSP. */
+ start_up_cpu(NULL);
printk(BIOS_ERR, "CPU turn on failed for BSP.\n");
while (1)