aboutsummaryrefslogtreecommitdiff
path: root/sys/geom
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2007-01-28 20:29:12 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2007-01-28 20:29:12 +0000
commita1ea1a22e9787059f177ce0636e76be1fa23a0ec (patch)
tree4b9be15c902e95ab07ddba46bf884932480a50e1 /sys/geom
parent3d14f9377c5539cdc182d8f45e74960e9bae7da2 (diff)
Notes
Diffstat (limited to 'sys/geom')
-rw-r--r--sys/geom/eli/g_eli.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/geom/eli/g_eli.c b/sys/geom/eli/g_eli.c
index d4b85cd0724ba..0e5b53108c971 100644
--- a/sys/geom/eli/g_eli.c
+++ b/sys/geom/eli/g_eli.c
@@ -324,6 +324,13 @@ g_eli_worker(void *arg)
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)