Index: sys/arch/arm64/arm64/cpu.c =================================================================== RCS file: /cvs/src/sys/arch/arm64/arm64/cpu.c,v retrieving revision 1.88 diff -u -p -r1.88 cpu.c --- sys/arch/arm64/arm64/cpu.c 13 Apr 2023 02:19:04 -0000 1.88 +++ sys/arch/arm64/arm64/cpu.c 18 Apr 2023 23:22:48 -0000 @@ -1036,6 +1036,8 @@ cpu_start_secondary(struct cpu_info *ci, void cpu_boot_secondary(struct cpu_info *ci) { + int i; + atomic_setbits_int(&ci->ci_flags, CPUF_GO); __asm volatile("dsb sy; sev" ::: "memory"); @@ -1045,8 +1047,17 @@ cpu_boot_secondary(struct cpu_info *ci) */ arm_send_ipi(ci, ARM_IPI_NOP); - while ((ci->ci_flags & CPUF_RUNNING) == 0) + for (i = 1000; (!(ci->ci_flags & CPUF_RUNNING)) && i>0;i--) { __asm volatile("wfe"); + } + if (! (ci->ci_flags & CPUF_RUNNING)) { + printf("cpu %d failed to start\n", ci->ci_cpuid); +#if defined(MPDEBUG) && defined(DDB) + printf("dropping into debugger; continue from here to resume boot\n"); + db_enter(); +#endif + } + } void