Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Jun 2016 16:41:39 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r301890 - head/sys/arm/arm
Message-ID:  <201606141641.u5EGfdwD016190@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201606141641.u5EGfdwD016190>