aboutsummaryrefslogtreecommitdiff
path: root/src/arch/arm64/armv8/secmon/secmon_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm64/armv8/secmon/secmon_init.c')
-rw-r--r--src/arch/arm64/armv8/secmon/secmon_init.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/src/arch/arm64/armv8/secmon/secmon_init.c b/src/arch/arm64/armv8/secmon/secmon_init.c
index 9e104c759b..3405027f2f 100644
--- a/src/arch/arm64/armv8/secmon/secmon_init.c
+++ b/src/arch/arm64/armv8/secmon/secmon_init.c
@@ -58,22 +58,10 @@ static void cpu_init(int bsp)
cpu_set_bsp();
}
-static void wait_for_all_cpus(void)
+static void wait_for_all_cpus(size_t expected)
{
- int all_online;
-
- while (1) {
- int i;
-
- all_online = 1;
- for (i = 0; i < CONFIG_MAX_CPUS; i++) {
- if (!cpu_online(cpu_info_for_cpu(i)))
- all_online = 0;
- }
-
- if (all_online)
- break;
- }
+ while (cpus_online() != expected)
+ ;
}
static void secmon_init(struct secmon_params *params, int bsp)
@@ -90,7 +78,7 @@ static void secmon_init(struct secmon_params *params, int bsp)
secmon_wait_for_action();
/* Wait for all CPUs to enter secmon. */
- wait_for_all_cpus();
+ wait_for_all_cpus(params->online_cpus);
smc_init();
psci_init();