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