svn commit: r250294 - head/sys/arm/arm
Grzegorz Bernacki
gber at FreeBSD.org
Mon May 6 14:27:47 UTC 2013
Author: gber
Date: Mon May 6 14:27:46 2013
New Revision: 250294
URL: http://svnweb.freebsd.org/changeset/base/250294
Log:
Avoid calling pcpu_init() simultaneously.
pcpu_init() updates queue, so cannot be called by multiple cores
at the same time
Obtained from: Semihalf
Modified:
head/sys/arm/arm/mp_machdep.c
Modified: head/sys/arm/arm/mp_machdep.c
==============================================================================
--- head/sys/arm/arm/mp_machdep.c Mon May 6 14:12:36 2013 (r250293)
+++ head/sys/arm/arm/mp_machdep.c Mon May 6 14:27:46 2013 (r250294)
@@ -173,8 +173,15 @@ init_secondary(int cpu)
pc = &__pcpu[cpu];
set_pcpu(pc);
- pcpu_init(pc, cpu, sizeof(struct pcpu));
+ /*
+ * pcpu_init() updates queue, so it should not be executed in parallel
+ * on several cores
+ */
+ while(mp_naps < (cpu - 1))
+ ;
+
+ pcpu_init(pc, cpu, sizeof(struct pcpu));
dpcpu_init(dpcpu[cpu - 1], cpu);
/* Provide stack pointers for other processor modes. */
More information about the svn-src-head
mailing list