Author: andrew
Date: Tue Jun 14 16:41:39 2016
New Revision: 301890
URL: https://svnweb.freebsd.org/changeset/base/301890

Log:
  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

Modified:
  head/sys/arm/arm/mp_machdep.c

Modified: head/sys/arm/arm/mp_machdep.c
==============================================================================
--- head/sys/arm/arm/mp_machdep.c       Tue Jun 14 16:20:25 2016        
(r301889)
+++ head/sys/arm/arm/mp_machdep.c       Tue Jun 14 16:41:39 2016        
(r301890)
@@ -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);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to