We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Description:
I'm using FVP + boot-wrapper-aarch64 to boot a kernel. When running with a single core, the boot process is successful. However, when enabling multiple cores, the boot fails.
Observations:
In boot-wrapper-aarch64/common/init.c, it appears that only the primary CPU (CPU 0) executes the following function:
boot-wrapper-aarch64/common/init.c
void cpu_init_bootwrapper(void) { static volatile unsigned int cpu_next = 0; unsigned int cpu = this_cpu_logical_id(); if (cpu == 0) init_bootwrapper(); while (cpu_next != cpu) wfe(); cpu_init_self(cpu); cpu_next = cpu + 1; dsb(sy); sev(); if (cpu != 0) return; while (cpu_next != NR_CPUS) wfe(); print_string("All CPUs initialized. Entering kernel...\r\n\r\n"); }
Possible causes:
sev()
Additional Information:
boot-wrapper-aarch64
Further questions:
Any insights or debugging methods would be appreciated
Thanks for your reply. You are correct: After reviewing the boot-wrapper-aarch64 code, I found that it indeed implements the PSCI method and responds to PSCI requests, this is not related to FVP.
Additionally, TarmacTrace.so does output the CPU status, including the EL status.
Regarding the boot failure, I discovered that boot-wrapper-aarch64 only supports booting with all cores reset at system startup. To resolve this, I should use the following FVP parameter:
-C pctl.startup=0.0.0.*
Previously, this parameter was set to 0.0.0.0. At that time, I used AFT to boot, which supports two boot modes: one where all cores are reset at system startup and another where only the primary CPU is reset.
0.0.0.0