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. */
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"