arm64: secmon: wait for all CPUs to enter secmon
There is state within the system that relies on having all CPUs present in order to proceed with initialization. The current expectation is that all CPUs are online and entering the secure monitor. Therefore, wait until all CONFIG_MAX_CPUs show up. BUG=chrome-os-partner:32112 BRANCH=None TEST=Can get all CPUs up in kernel using PSCI. Change-Id: Ia0f744c93766efc694b522ab0af9aedf7329ac43 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/227547 Reviewed-by: Furquan Shaikh <furquan@chromium.org>
This commit is contained in:
parent
575437354c
commit
030535b7c9
1 changed files with 21 additions and 0 deletions
|
|
@ -53,6 +53,24 @@ static void cpu_init(int bsp)
|
|||
cpu_set_bsp();
|
||||
}
|
||||
|
||||
static void wait_for_all_cpus(void)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
static void secmon_init(struct secmon_params *params, int bsp)
|
||||
{
|
||||
struct cpu_action action = {
|
||||
|
|
@ -67,6 +85,9 @@ static void secmon_init(struct secmon_params *params, int bsp)
|
|||
if (!cpu_is_bsp())
|
||||
secmon_wait_for_action();
|
||||
|
||||
/* Wait for all CPUs to enter secmon. */
|
||||
wait_for_all_cpus();
|
||||
|
||||
smc_init();
|
||||
psci_init();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue