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: I87e944f870105dbde33b5460660c96c93c3cdf93
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/227488
Tested-by: David Riley <davidriley@chromium.org>
Reviewed-by: Tom Warren <twarren@nvidia.com>
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
This commit is contained in:
Aaron Durbin 2014-11-04 20:47:23 -06:00 committed by chrome-internal-fetch
commit 575437354c

View file

@ -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)