On Sun, Jan 28, 2007 at 09:14:58PM -0800, Nate Lawson wrote:
> Pawel Jakub Dawidek wrote:
> >pjd         2007-01-28 20:29:12 UTC
> >  FreeBSD src repository
> >  Modified files:
> >    sys/geom/eli         g_eli.c   Log:
> >  It is possible that GEOM taste provider before SMP is started.
> >  We can't bind to a CPU which is not yet on-line, so add code that wait for
> >  CPUs to go on-line before binding to them.
> >    Reported by:    Alin-Adrian Anton <[EMAIL PROTECTED]>
> >  MFC after:      2 weeks
> >    Revision  Changes    Path
> >  1.34      +7 -0      src/sys/geom/eli/g_eli.c
> >Index: src/sys/geom/eli/g_eli.c
> >diff -u src/sys/geom/eli/g_eli.c:1.33 src/sys/geom/eli/g_eli.c:1.34
> >--- src/sys/geom/eli/g_eli.c:1.33    Thu Nov  2 09:01:34 2006
> >+++ src/sys/geom/eli/g_eli.c Sun Jan 28 20:29:12 2007
> >@@ -324,6 +324,13 @@
> >     wr = arg;
> >     sc = wr->w_softc;
> >+#ifdef SMP
> >+    /* Before sched_bind() to a CPU, wait for all CPUs to go on-line. */
> >+    if (sc->sc_crypto == G_ELI_CRYPTO_SW && g_eli_threads == 0) {
> >+            while (!smp_started)
> >+                    tsleep(wr, 0, "geli:smp", hz / 4);
> >+    }
> >+#endif
> >     mtx_lock_spin(&sched_lock);
> >     sched_prio(curthread, PRIBIO);
> >     if (sc->sc_crypto == G_ELI_CRYPTO_SW && g_eli_threads == 0)
> 
> I thought tsleep() didn't work right before !cold.  Is that old knowledge?

Hmm, I thought that cold is zeroed before smp_started is set?

-- 
Pawel Jakub Dawidek                       http://www.wheel.pl
[EMAIL PROTECTED]                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!

Attachment: pgpZdIgoQg9mC.pgp
Description: PGP signature

Reply via email to