In my opinion this is the simplest way to do it, however if you think it
should be done other way I can change it.
grzesiek
On 05/06/13 20:45, Adrian Chadd wrote:
.. is this really the only way to do this reliably?
adrian
On 6 May 2013 07:27, Grzegorz Bernacki<g...@freebsd.org> wrote:
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-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"