MP Implmentation 3/4: MAJOR progress on SMP, full userland MP is now working!
[dragonfly.git] / sys / kern / init_main.c
index 602507c..fd534bc 100644 (file)
@@ -40,7 +40,7 @@
  *
  *     @(#)init_main.c 8.9 (Berkeley) 1/21/94
  * $FreeBSD: src/sys/kern/init_main.c,v 1.134.2.8 2003/06/06 20:21:32 tegge Exp $
- * $DragonFly: src/sys/kern/init_main.c,v 1.19 2003/07/06 21:23:51 dillon Exp $
+ * $DragonFly: src/sys/kern/init_main.c,v 1.20 2003/07/10 04:47:54 dillon Exp $
  */
 
 #include "opt_init_path.h"
@@ -290,7 +290,7 @@ proc0_init(void *dummy __unused)
 
        p->p_sysent = &aout_sysvec;
 
-       p->p_flag = P_INMEM | P_SYSTEM | P_CURPROC;
+       p->p_flag = P_INMEM | P_SYSTEM | P_CP_RELEASED;
        p->p_stat = SRUN;
        p->p_nice = NZERO;
        p->p_rtprio.type = RTP_PRIO_NORMAL;
@@ -530,8 +530,13 @@ start_init(void *dummy)
                 *
                 * Otherwise, return via fork_trampoline() all the way
                 * to user mode as init!
+                *
+                * WARNING!  We may have been moved to another cpu after
+                * acquiring P_CURPROC.  The MP lock will migrate with us
+                * though so we still have to release it.
                 */
                if ((error = execve(&args)) == 0) {
+                       acquire_curproc(p);
                        rel_mplock();
                        return;
                }