Move the arm call to intr_pic_init_secondary earlier in the secondary CPU
initialisation. This ensures it will complete before signalling to the boot CPU it has booted. This fixes a race with the GIC where the arm_gic_map may not be populated before it is used to bind interrupts leading to some interrupts becoming bound to no CPUs. Approved by: re (kib) Sponsored by: ABT Systems Ltd
This commit is contained in:
@@ -199,6 +199,9 @@ init_secondary(int cpu)
|
||||
vfp_init();
|
||||
#endif
|
||||
|
||||
/* Configure the interrupt controller */
|
||||
intr_pic_init_secondary();
|
||||
|
||||
mtx_lock_spin(&ap_boot_mtx);
|
||||
|
||||
atomic_add_rel_32(&smp_cpus, 1);
|
||||
@@ -237,7 +240,6 @@ init_secondary(int cpu)
|
||||
cpu_initclocks_ap();
|
||||
|
||||
CTR0(KTR_SMP, "go into scheduler");
|
||||
intr_pic_init_secondary();
|
||||
|
||||
/* Enter the scheduler */
|
||||
sched_throw(NULL);
|
||||
|
||||
Reference in New Issue
Block a user