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>
This commit is contained in:
Aaron Durbin 2014-11-04 20:47:23 -06:00 committed by Patrick Georgi
parent db3f383494
commit 1816649b90
1 changed files with 4 additions and 1 deletions

View File

@ -70,7 +70,10 @@ static void secmon_init(struct secmon_params *params, int bsp)
smc_init(); smc_init();
psci_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"); printk(BIOS_ERR, "CPU turn on failed for BSP.\n");
while (1) while (1)