Revamp SYSINIT ordering. Relabel sysinit IDs (SI_* in sys/kernel.h) to
authorMatthew Dillon <dillon@dragonflybsd.org>
Mon, 30 Apr 2007 07:18:57 +0000 (07:18 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Mon, 30 Apr 2007 07:18:57 +0000 (07:18 +0000)
make them less confusing, particularly with regard to the relative order
init routines are called in.

Reorder many sysinits.  Reorder the SMP and CLOCK code to bring all the
cpus up far earlier in the boot sequence and to make the full threading and
clocking subsystems available for device config.

57 files changed:
sys/dev/acpica5/acpi.c
sys/dev/acpica5/acpi_powerres.c
sys/dev/drm/drm_drv.h
sys/dev/misc/syscons/syscons.c
sys/dev/netif/ex/if_ex_isa.c
sys/dev/raid/aac/aac_linux.c
sys/dev/video/fb/fb.c
sys/emulation/linux/linux_ioctl.c
sys/kern/imgact_resident.c
sys/kern/init_main.c
sys/kern/kern_ccms.c
sys/kern/kern_clock.c
sys/kern/kern_environment.c
sys/kern/kern_intr.c
sys/kern/kern_ktr.c
sys/kern/kern_linker.c
sys/kern/kern_module.c
sys/kern/kern_msfbuf.c
sys/kern/kern_ntptime.c
sys/kern/kern_objcache.c
sys/kern/kern_poll.c
sys/kern/kern_sfbuf.c
sys/kern/kern_shutdown.c
sys/kern/kern_slaballoc.c
sys/kern/kern_sysctl.c
sys/kern/kern_sysref.c
sys/kern/kern_systimer.c
sys/kern/kern_timeout.c
sys/kern/kern_varsym.c
sys/kern/link_aout.c
sys/kern/link_elf.c
sys/kern/subr_bus.c
sys/kern/subr_kobj.c
sys/kern/uipc_mbuf.c
sys/kern/uipc_socket2.c
sys/kern/usched_bsd4.c
sys/kern/usched_dummy.c
sys/kern/vfs_aio.c
sys/netproto/natm/natm.c
sys/platform/pc32/acpica5/acpi_wakeup.c
sys/platform/pc32/acpica5/madt.c
sys/platform/pc32/i386/bios.c
sys/platform/pc32/i386/est.c
sys/platform/pc32/i386/machdep.c
sys/platform/pc32/i386/mp_machdep.c
sys/platform/pc32/i386/p4tcc.c
sys/platform/pc32/i386/vm_machdep.c
sys/platform/pc32/isa/clock.c
sys/platform/vkernel/i386/autoconf.c
sys/platform/vkernel/platform/systimer.c
sys/sys/kernel.h
sys/sys/malloc.h
sys/sys/systm.h
sys/vm/vm_extern.h
sys/vm/vm_glue.c
sys/vm/vm_init.c
sys/vm/vm_mmap.c

index 6101a4b..fb3f35d 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.157 2004/06/05 09:56:04 njl Exp $
- *     $DragonFly: src/sys/dev/acpica5/acpi.c,v 1.30 2007/01/28 06:33:49 y0netan1 Exp $
+ *     $DragonFly: src/sys/dev/acpica5/acpi.c,v 1.31 2007/04/30 07:18:47 dillon Exp $
  */
 
 #include "opt_acpi.h"
@@ -2773,10 +2773,14 @@ acpi_parse_debug(char *cp, struct debugtag *tag, UINT32 *flag)
     }
 }
 
+/*
+ * Warning: also called in early boot, before any allocators
+ * are working.
+ */
 static void
 acpi_set_debugging(void *junk)
 {
-    char       *layer, *level;
+    char *layer, *level;
 
     if (cold) {
        AcpiDbgLayer = 0;
@@ -2803,8 +2807,8 @@ acpi_set_debugging(void *junk)
     }
     kprintf("\n");
 }
-SYSINIT(acpi_debugging, SI_SUB_TUNABLES, SI_ORDER_ANY, acpi_set_debugging,
-       NULL);
+SYSINIT(acpi_debugging, SI_BOOT1_TUNABLES, SI_ORDER_ANY,
+       acpi_set_debugging, NULL);
 
 static int
 acpi_debug_sysctl(SYSCTL_HANDLER_ARGS)
@@ -2910,4 +2914,4 @@ acpi_pm_register(void *arg)
     power_pm_register(POWER_PM_TYPE_ACPI, acpi_pm_func, NULL);
 }
 
-SYSINIT(power, SI_SUB_KLD, SI_ORDER_ANY, acpi_pm_register, 0);
+SYSINIT(power, SI_BOOT2_KLD, SI_ORDER_ANY, acpi_pm_register, 0);
index fd4038f..378afa6 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/acpica/acpi_powerres.c,v 1.22 2004/04/14 17:58:19 njl Exp $
- * $DragonFly: src/sys/dev/acpica5/acpi_powerres.c,v 1.4 2006/09/05 00:55:36 dillon Exp $
+ * $DragonFly: src/sys/dev/acpica5/acpi_powerres.c,v 1.5 2007/04/30 07:18:47 dillon Exp $
  */
 
 #include "opt_acpi.h"
@@ -119,7 +119,8 @@ acpi_pwr_init(void *junk)
     TAILQ_INIT(&acpi_powerresources);
     TAILQ_INIT(&acpi_powerconsumers);
 }
-SYSINIT(acpi_powerresource, SI_SUB_TUNABLES, SI_ORDER_ANY, acpi_pwr_init, NULL);
+SYSINIT(acpi_powerresource, SI_BOOT1_LOCK, SI_ORDER_ANY,
+       acpi_pwr_init, NULL);
 
 /*
  * Register a power resource.
index fb2052a..3c9d1d7 100644 (file)
@@ -29,7 +29,7 @@
  *    Gareth Hughes <gareth@valinux.com>
  *
  * $FreeBSD: src/sys/dev/drm/drm_drv.h,v 1.13.2.1 2003/04/26 07:05:28 anholt Exp $
- * $DragonFly: src/sys/dev/drm/Attic/drm_drv.h,v 1.15 2006/09/10 01:26:34 dillon Exp $
+ * $DragonFly: src/sys/dev/drm/Attic/drm_drv.h,v 1.16 2007/04/30 07:18:48 dillon Exp $
  */
 
 /*
@@ -1151,9 +1151,9 @@ static struct ioctl_map_handler DRM(ioctl_handler) = {
        DRM(ioctl_cmds)
 };
 
-SYSINIT(DRM(register), SI_SUB_KLD, SI_ORDER_MIDDLE, 
+SYSINIT(DRM(register), SI_BOOT2_KLD, SI_ORDER_MIDDLE, 
     mapped_ioctl_register_handler, &DRM(ioctl_handler));
-SYSUNINIT(DRM(unregister), SI_SUB_KLD, SI_ORDER_MIDDLE, 
+SYSUNINIT(DRM(unregister), SI_BOOT2_KLD, SI_ORDER_MIDDLE, 
     mapped_ioctl_unregister_handler, &DRM(ioctl_handler));
 
 #endif /* DRM_LINUX */
index dbd6423..ff9f147 100644 (file)
@@ -29,7 +29,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/dev/syscons/syscons.c,v 1.336.2.17 2004/03/25 08:41:09 ru Exp $
- * $DragonFly: src/sys/dev/misc/syscons/syscons.c,v 1.30 2007/02/03 17:05:57 corecode Exp $
+ * $DragonFly: src/sys/dev/misc/syscons/syscons.c,v 1.31 2007/04/30 07:18:49 dillon Exp $
  */
 
 #include "use_splash.h"
@@ -419,8 +419,7 @@ scmeminit(void *arg)
 #endif
 }
 
-/* XXX */
-SYSINIT(sc_mem, SI_SUB_KMEM, SI_ORDER_ANY, scmeminit, NULL);
+SYSINIT(sc_mem, SI_BOOT1_POST, SI_ORDER_ANY, scmeminit, NULL);
 
 static int
 scdevtounit(cdev_t dev)
index 5734fb6..2301c73 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/ex/if_ex_isa.c,v 1.3.2.1 2001/03/05 05:33:20 imp Exp $
- *     $DragonFly: src/sys/dev/netif/ex/if_ex_isa.c,v 1.13 2006/12/22 23:26:19 swildner Exp $
+ *     $DragonFly: src/sys/dev/netif/ex/if_ex_isa.c,v 1.14 2007/04/30 07:18:50 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -53,12 +53,6 @@ static int   ex_isa_identify (driver_t *, device_t);
 static int     ex_isa_probe    (device_t);
 static int     ex_isa_attach   (device_t);
 
-#if 0
-static void    ex_pnp_wakeup   (void *);
-
-SYSINIT(ex_pnpwakeup, SI_SUB_CPU, SI_ORDER_ANY, ex_pnp_wakeup, NULL);
-#endif
-
 /*
  * We need an identify function to 'probe' the ISA bus.
  */
@@ -87,31 +81,6 @@ static struct isa_pnp_id ex_ids[] = {
        { 0,            NULL },
 };
 
-#if 0
-#define EX_PNP_WAKE            0x279
-
-static u_int8_t ex_pnp_wake_seq[] =
-                       { 0x6A, 0xB5, 0xDA, 0xED, 0xF6, 0xFB, 0x7D, 0xBE,
-                         0xDF, 0x6F, 0x37, 0x1B, 0x0D, 0x86, 0xC3, 0x61,
-                         0xB0, 0x58, 0x2C, 0x16, 0x8B, 0x45, 0xA2, 0xD1,
-                         0xE8, 0x74, 0x3A, 0x9D, 0xCE, 0xE7, 0x73, 0x43 };
-
-static void
-ex_pnp_wakeup (void * dummy)
-{
-       int     tmp;
-
-       if (bootverbose)
-               kprintf("ex_pnp_wakeup()\n");
-
-       outb(EX_PNP_WAKE, 0);
-       outb(EX_PNP_WAKE, 0);
-       for (tmp = 0; tmp < 32; tmp++) {
-               outb(EX_PNP_WAKE, ex_pnp_wake_seq[tmp]);
-       }
-}
-#endif
-
 /*
  * Non-destructive identify.
  */
index ea4a3e8..71fc5d0 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/aac/aac_linux.c,v 1.1.4.1 2003/03/28 19:50:17 scottl Exp $
- *     $DragonFly: src/sys/dev/raid/aac/aac_linux.c,v 1.5 2004/08/15 14:15:00 joerg Exp $
+ *     $DragonFly: src/sys/dev/raid/aac/aac_linux.c,v 1.6 2007/04/30 07:18:51 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -80,9 +80,9 @@ static struct ioctl_map_handler aac_linux_ioctl_handler = {
        aac_linux_ioctl_cmds
 };
 
-SYSINIT  (aac_register,   SI_SUB_KLD, SI_ORDER_MIDDLE,
+SYSINIT  (aac_register,   SI_BOOT2_KLD, SI_ORDER_MIDDLE,
          mapped_ioctl_register_handler, &aac_linux_ioctl_handler);
-SYSUNINIT(aac_unregister, SI_SUB_KLD, SI_ORDER_MIDDLE,
+SYSUNINIT(aac_unregister, SI_BOOT2_KLD, SI_ORDER_MIDDLE,
          mapped_ioctl_unregister_handler, &aac_linux_ioctl_handler);
 
 static int
index 55f3a49..5857af2 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/fb/fb.c,v 1.11.2.2 2000/08/02 22:35:22 peter Exp $
- * $DragonFly: src/sys/dev/video/fb/fb.c,v 1.17 2006/12/22 23:26:27 swildner Exp $
+ * $DragonFly: src/sys/dev/video/fb/fb.c,v 1.18 2007/04/30 07:18:52 dillon Exp $
  */
 
 #include "opt_fb.h"
@@ -126,7 +126,7 @@ vid_malloc_init(void *arg)
        vid_malloc = TRUE;
 }
 
-SYSINIT(vid_mem, SI_SUB_KMEM, SI_ORDER_ANY, vid_malloc_init, NULL);
+SYSINIT(vid_mem, SI_BOOT1_POST, SI_ORDER_ANY, vid_malloc_init, NULL);
 
 /*
  * Low-level frame buffer driver functions
index 32123d3..c62a663 100644 (file)
@@ -27,7 +27,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.55.2.11 2003/05/01 20:16:09 anholt Exp $
- * $DragonFly: src/sys/emulation/linux/linux_ioctl.c,v 1.22 2006/12/23 00:27:02 swildner Exp $
+ * $DragonFly: src/sys/emulation/linux/linux_ioctl.c,v 1.23 2007/04/30 07:18:53 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -1292,7 +1292,7 @@ sys_linux_ioctl(struct linux_ioctl_args *args)
        return (mapped_ioctl(args->fd, args->cmd, (caddr_t)args->arg, &linux_ioctl_map));
 }
 
-SYSINIT  (linux_ioctl_register, SI_SUB_KLD, SI_ORDER_MIDDLE,
+SYSINIT  (linux_ioctl_register, SI_BOOT2_KLD, SI_ORDER_MIDDLE,
          mapped_ioctl_register_handler, &linux_ioctl_base_handler);
-SYSUNINIT(linux_ioctl_register, SI_SUB_KLD, SI_ORDER_MIDDLE,
+SYSUNINIT(linux_ioctl_register, SI_BOOT2_KLD, SI_ORDER_MIDDLE,
          mapped_ioctl_unregister_handler, &linux_ioctl_base_handler);
index 179696b..72128a1 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/kern/imgact_resident.c,v 1.16 2007/04/29 18:25:34 dillon Exp $
+ * $DragonFly: src/sys/kern/imgact_resident.c,v 1.17 2007/04/30 07:18:53 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -77,7 +77,7 @@ vm_resident_init(void *__dummy)
        lockinit(&exec_list_lock, "vmres", 0, 0);
        TAILQ_INIT(&exec_res_list);
 }
-SYSINIT(vmres, SI_SUB_VM, SI_ORDER_ANY, vm_resident_init, 0);
+SYSINIT(vmres, SI_BOOT1_LOCK, SI_ORDER_ANY, vm_resident_init, 0);
 
 static int
 fill_xresident(struct vmresident *vr, struct xresident *in, struct thread *td)
index 439f528..c1c197e 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.76 2007/04/29 18:25:34 dillon Exp $
+ * $DragonFly: src/sys/kern/init_main.c,v 1.77 2007/04/30 07:18:53 dillon Exp $
  */
 
 #include "opt_init_path.h"
@@ -73,6 +73,7 @@
 #include <sys/lock.h>
 #include <vm/pmap.h>
 #include <vm/vm_map.h>
+#include <vm/vm_extern.h>
 #include <sys/user.h>
 #include <sys/copyright.h>
 
@@ -97,10 +98,10 @@ SYSCTL_INT(_debug, OID_AUTO, boothowto, CTLFLAG_RD, &boothowto, 0, "");
 
 /*
  * This ensures that there is at least one entry so that the sysinit_set
- * symbol is not undefined.  A sybsystem ID of SI_SUB_DUMMY is never
+ * symbol is not undefined.  A sybsystem ID of SI_SPECIAL_DUMMY is never
  * executed.
  */
-SYSINIT(placeholder, SI_SUB_DUMMY, SI_ORDER_ANY, NULL, NULL)
+SYSINIT(placeholder, SI_SPECIAL_DUMMY, SI_ORDER_ANY, NULL, NULL)
 
 /*
  * The sysinit table itself.  Items are checked off as the are run.
@@ -221,17 +222,17 @@ restart:
         */
        for (sipp = sysinit; sipp < sysinit_end; sipp++) {
                sip = *sipp;
-               if (sip->subsystem == SI_SUB_DUMMY)
+               if (sip->subsystem == SI_SPECIAL_DUMMY)
                        continue;       /* skip dummy task(s)*/
 
-               if (sip->subsystem == SI_SUB_DONE)
+               if (sip->subsystem == SI_SPECIAL_DONE)
                        continue;
 
                /* Call function */
                (*(sip->func))(sip->udata);
 
                /* Check off the one we're just done */
-               sip->subsystem = SI_SUB_DONE;
+               sip->subsystem = SI_SPECIAL_DONE;
 
                /* Check if we've installed more sysinit items via KLD */
                if (newsysinit != NULL) {
@@ -263,7 +264,7 @@ print_caddr_t(void *data __unused)
 {
        kprintf("%s", (char *)data);
 }
-SYSINIT(announce, SI_SUB_COPYRIGHT, SI_ORDER_FIRST, print_caddr_t, copyright)
+SYSINIT(announce, SI_BOOT1_COPYRIGHT, SI_ORDER_FIRST, print_caddr_t, copyright)
 
 /*
  * Leave the critical section that protected us from spurious interrupts
@@ -277,7 +278,7 @@ leavecrit(void *dummy __unused)
        if (bootverbose)
                kprintf("Leaving critical section, allowing interrupts\n");
 }
-SYSINIT(leavecrit, SI_SUB_LEAVE_CRIT, SI_ORDER_ANY, leavecrit, NULL)
+SYSINIT(leavecrit, SI_BOOT2_LEAVE_CRIT, SI_ORDER_ANY, leavecrit, NULL)
 
 /*
  ***************************************************************************
@@ -378,9 +379,9 @@ proc0_init(void *dummy __unused)
         * Charge root for one process.
         */
        (void)chgproccnt(p->p_ucred->cr_uidinfo, 1, 0);
-
+       vm_init_limits(p);
 }
-SYSINIT(p0init, SI_SUB_INTRINSIC, SI_ORDER_FIRST, proc0_init, NULL)
+SYSINIT(p0init, SI_BOOT2_PROC0, SI_ORDER_FIRST, proc0_init, NULL)
 
 static int proc0_post_callback(struct proc *p, void *data __unused);
 
@@ -411,7 +412,7 @@ proc0_post_callback(struct proc *p, void *data __unused)
        return(0);
 }
 
-SYSINIT(p0post, SI_SUB_INTRINSIC_POST, SI_ORDER_FIRST, proc0_post, NULL)
+SYSINIT(p0post, SI_SUB_PROC0_POST, SI_ORDER_FIRST, proc0_post, NULL)
 
 /*
  ***************************************************************************
@@ -611,7 +612,7 @@ create_init(const void *udata __unused)
        cpu_set_fork_handler(lp, start_init, NULL);
        crit_exit();
 }
-SYSINIT(init,SI_SUB_CREATE_INIT, SI_ORDER_FIRST, create_init, NULL)
+SYSINIT(init, SI_SUB_CREATE_INIT, SI_ORDER_FIRST, create_init, NULL)
 
 /*
  * Make it runnable now.
@@ -621,7 +622,7 @@ kick_init(const void *udata __unused)
 {
        start_forked_proc(&lwp0, initproc);
 }
-SYSINIT(kickinit,SI_SUB_KTHREAD_INIT, SI_ORDER_FIRST, kick_init, NULL)
+SYSINIT(kickinit, SI_SUB_KTHREAD_INIT, SI_ORDER_FIRST, kick_init, NULL)
 
 /*
  * Machine independant globaldata initialization
index ee924f4..56b2c29 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/kern/kern_ccms.c,v 1.3 2007/01/06 19:35:30 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_ccms.c,v 1.4 2007/04/30 07:18:53 dillon Exp $
  */
 /*
  * The Cache Coherency Management System (CCMS)
@@ -81,7 +81,7 @@ ccmsinit(void *dummy)
 {
     ccms_oc = objcache_create_simple(M_CCMS, sizeof(struct ccms_cst));
 }
-SYSINIT(ccms, SI_SUB_OBJCACHE, SI_ORDER_ANY, ccmsinit, NULL);
+SYSINIT(ccms, SI_BOOT2_MACHDEP, SI_ORDER_ANY, ccmsinit, NULL);
 
 /*
  * Initialize a new CCMS dataspace.  Create a new RB tree with a single
index c908d4b..0a9535b 100644 (file)
@@ -70,7 +70,7 @@
  *
  *     @(#)kern_clock.c        8.5 (Berkeley) 1/21/94
  * $FreeBSD: src/sys/kern/kern_clock.c,v 1.105.2.10 2002/10/17 13:19:40 maxim Exp $
- * $DragonFly: src/sys/kern/kern_clock.c,v 1.56 2007/01/01 22:51:17 corecode Exp $
+ * $DragonFly: src/sys/kern/kern_clock.c,v 1.57 2007/04/30 07:18:53 dillon Exp $
  */
 
 #include "opt_ntp.h"
@@ -113,7 +113,7 @@ static void do_pctrack(struct intrframe *frame, int which);
 #endif
 
 static void initclocks (void *dummy);
-SYSINIT(clocks, SI_SUB_CLOCKS, SI_ORDER_FIRST, initclocks, NULL)
+SYSINIT(clocks, SI_BOOT2_CLOCKS, SI_ORDER_FIRST, initclocks, NULL)
 
 /*
  * Some of these don't belong here, but it's easiest to concentrate them.
@@ -229,7 +229,6 @@ int ntp_leap_insert;        /* whether to insert or remove a second */
 static void
 initclocks(void *dummy)
 {
-       cpu_initclocks();
 #ifdef DEVICE_POLLING
        init_device_poll();
 #endif
index 39724b7..d9e581f 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/kern/kern_environment.c,v 1.10.2.7 2002/05/07 09:57:16 bde Exp $
- * $DragonFly: src/sys/kern/kern_environment.c,v 1.5 2007/01/27 14:14:13 y0netan1 Exp $
+ * $DragonFly: src/sys/kern/kern_environment.c,v 1.6 2007/04/30 07:18:53 dillon Exp $
  */
 
 /*
@@ -413,4 +413,4 @@ kenv_init(void *dummy)
        spin_init(&kenv_dynlock);
        kenv_isdynamic = 1;
 }
-SYSINIT(kenv, SI_SUB_KMEM, SI_ORDER_ANY, kenv_init, NULL);
+SYSINIT(kenv, SI_BOOT1_POST, SI_ORDER_ANY, kenv_init, NULL);
index f5a6737..f7e5f6c 100644 (file)
@@ -24,7 +24,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/kern/kern_intr.c,v 1.24.2.1 2001/10/14 20:05:50 luigi Exp $
- * $DragonFly: src/sys/kern/kern_intr.c,v 1.46 2007/01/22 19:37:04 corecode Exp $
+ * $DragonFly: src/sys/kern/kern_intr.c,v 1.47 2007/04/30 07:18:53 dillon Exp $
  *
  */
 
@@ -128,10 +128,10 @@ sysctl_emergency_enable(SYSCTL_HANDLER_ARGS)
                return error;
        emergency_intr_enable = enabled;
        if (emergency_intr_enable) {
-               emergency_intr_timer.periodic = 
-                       sys_cputimer->fromhz(emergency_intr_freq);
+               systimer_adjust_periodic(&emergency_intr_timer,
+                                        emergency_intr_freq);
        } else {
-               emergency_intr_timer.periodic = sys_cputimer->fromhz(1);
+               systimer_adjust_periodic(&emergency_intr_timer, 1);
        }
        return 0;
 }
@@ -152,10 +152,10 @@ sysctl_emergency_freq(SYSCTL_HANDLER_ARGS)
 
         emergency_intr_freq = phz;
        if (emergency_intr_enable) {
-               emergency_intr_timer.periodic = 
-                       sys_cputimer->fromhz(emergency_intr_freq);
+               systimer_adjust_periodic(&emergency_intr_timer,
+                                        emergency_intr_freq);
        } else {
-               emergency_intr_timer.periodic = sys_cputimer->fromhz(1);
+               systimer_adjust_periodic(&emergency_intr_timer, 1);
        }
         return 0;
 }
index ec53df2..91aeaed 100644 (file)
@@ -62,7 +62,7 @@
  * SUCH DAMAGE.
  */
 /*
- * $DragonFly: src/sys/kern/kern_ktr.c,v 1.20 2006/12/23 00:35:04 swildner Exp $
+ * $DragonFly: src/sys/kern/kern_ktr.c,v 1.21 2007/04/30 07:18:53 dillon Exp $
  */
 /*
  * Kernel tracepoint facility.
@@ -178,6 +178,8 @@ TUNABLE_INT("debug.ktr.verbose", &ktr_verbose);
 SYSCTL_INT(_debug_ktr, OID_AUTO, verbose, CTLFLAG_RW, &ktr_verbose, 0, "");
 #endif
 
+static void ktr_resync_callback(void *dummy __unused);
+
 extern int64_t tsc_offsets[];
 
 static void
@@ -189,8 +191,10 @@ ktr_sysinit(void *dummy)
                ktr_buf[i] = kmalloc(KTR_ENTRIES * sizeof(struct ktr_entry),
                                    M_KTR, M_WAITOK | M_ZERO);
        }
+       callout_init(&ktr_resync_callout);
+       callout_reset(&ktr_resync_callout, hz / 10, ktr_resync_callback, NULL);
 }
-SYSINIT(ktr_sysinit, SI_SUB_INTRINSIC, SI_ORDER_FIRST, ktr_sysinit, NULL);
+SYSINIT(ktr_sysinit, SI_BOOT2_KLD, SI_ORDER_ANY, ktr_sysinit, NULL);
 
 /*
  * Try to resynchronize the TSC's for all cpus.  This is really, really nasty.
@@ -201,20 +205,11 @@ SYSINIT(ktr_sysinit, SI_SUB_INTRINSIC, SI_ORDER_FIRST, ktr_sysinit, NULL);
  *
  * This callback occurs on cpu0.
  */
-static void ktr_resync_callback(void *dummy);
 #if KTR_TESTLOG
 static void ktr_pingpong_remote(void *dummy);
 static void ktr_pipeline_remote(void *dummy);
 #endif
 
-static void
-ktr_resyncinit(void *dummy)
-{
-       callout_init(&ktr_resync_callout);
-       callout_reset(&ktr_resync_callout, hz / 10, ktr_resync_callback, NULL);
-}
-SYSINIT(ktr_resync, SI_SUB_FINISH_SMP+1, SI_ORDER_ANY, ktr_resyncinit, NULL);
-
 #if defined(SMP) && defined(_RDTSC_SUPPORTED_)
 
 static void ktr_resync_remote(void *dummy);
index d8a33a1..9302093 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/kern/kern_linker.c,v 1.41.2.3 2001/11/21 17:50:35 luigi Exp $
- * $DragonFly: src/sys/kern/kern_linker.c,v 1.33 2007/01/15 20:51:14 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_linker.c,v 1.34 2007/04/30 07:18:53 dillon Exp $
  */
 
 #include "opt_ddb.h"
@@ -71,7 +71,7 @@ linker_init(void* arg)
     TAILQ_INIT(&linker_files);
 }
 
-SYSINIT(linker, SI_SUB_KLD, SI_ORDER_FIRST, linker_init, 0);
+SYSINIT(linker, SI_BOOT2_KLD, SI_ORDER_FIRST, linker_init, 0);
 
 int
 linker_add_class(const char* desc, void* priv,
@@ -146,7 +146,7 @@ linker_file_sysinit(linker_file_t lf)
      * Perform each task, and continue on to the next task.
      */
     for (sipp = start; sipp < stop; sipp++) {
-       if ((*sipp)->subsystem == SI_SUB_DUMMY)
+       if ((*sipp)->subsystem == SI_SPECIAL_DUMMY)
            continue;   /* skip dummy task(s)*/
 
        /* Call function */
@@ -194,7 +194,7 @@ linker_file_sysuninit(linker_file_t lf)
      * Perform each task, and continue on to the next task.
      */
     for (sipp = start; sipp < stop; sipp++) {
-       if ((*sipp)->subsystem == SI_SUB_DUMMY)
+       if ((*sipp)->subsystem == SI_SPECIAL_DUMMY)
            continue;   /* skip dummy task(s)*/
 
        /* Call function */
@@ -1062,7 +1062,7 @@ linker_preload(void* arg)
     }
 }
 
-SYSINIT(preload, SI_SUB_KLD, SI_ORDER_MIDDLE, linker_preload, 0);
+SYSINIT(preload, SI_BOOT2_KLD, SI_ORDER_MIDDLE, linker_preload, 0);
 
 /*
  * Search for a not-loaded module by name.
index f2dd57f..d5da2d1 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/kern/kern_module.c,v 1.21 1999/11/08 06:53:30 peter Exp $
- * $DragonFly: src/sys/kern/kern_module.c,v 1.13 2006/12/23 00:35:04 swildner Exp $
+ * $DragonFly: src/sys/kern/kern_module.c,v 1.14 2007/04/30 07:18:53 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -75,7 +75,7 @@ module_init(void* arg)
                          SHUTDOWN_PRI_DEFAULT);
 }
 
-SYSINIT(module, SI_SUB_KLD, SI_ORDER_FIRST, module_init, 0);
+SYSINIT(module, SI_BOOT2_KLD, SI_ORDER_FIRST, module_init, 0);
 
 static void
 module_shutdown(void* arg1, int arg2)
index c5e0b9b..b9ff427 100644 (file)
@@ -36,7 +36,7 @@
  *     Copyright (c) 1998 David Greenman.  All rights reserved.
  *     src/sys/kern/kern_sfbuf.c,v 1.7 2004/05/13 19:46:18 dillon
  *
- * $DragonFly: src/sys/kern/kern_msfbuf.c,v 1.19 2006/12/28 21:24:01 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_msfbuf.c,v 1.20 2007/04/30 07:18:53 dillon Exp $
  */
 /*
  * MSFBUFs cache linear multi-page ephermal mappings and operate similar
@@ -135,7 +135,7 @@ msf_buf_init(void *__dummy)
                TAILQ_INSERT_TAIL(&msf_buf_freelist, &msf_bufs[i], free_list);
        }
 }
-SYSINIT(msf_buf, SI_SUB_MBUF, SI_ORDER_ANY, msf_buf_init, NULL);
+SYSINIT(msf_buf, SI_BOOT2_MACHDEP, SI_ORDER_ANY, msf_buf_init, NULL);
 
 /*
  * Get an msf_buf from the freelist; if none are available
index 303be1e..90acb9d 100644 (file)
@@ -29,7 +29,7 @@
  * confusing and/or plain wrong in that context.
  *
  * $FreeBSD: src/sys/kern/kern_ntptime.c,v 1.32.2.2 2001/04/22 11:19:46 jhay Exp $
- * $DragonFly: src/sys/kern/kern_ntptime.c,v 1.12 2006/06/05 07:26:10 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_ntptime.c,v 1.13 2007/04/30 07:18:53 dillon Exp $
  */
 
 #include "opt_ntp.h"
@@ -572,7 +572,7 @@ ntp_init(void)
 #endif /* PPS_SYNC */     
 }
 
-SYSINIT(ntpclocks, SI_SUB_CLOCKS, SI_ORDER_FIRST, ntp_init, NULL)
+SYSINIT(ntpclocks, SI_BOOT2_CLOCKS, SI_ORDER_FIRST, ntp_init, NULL)
 
 /*
  * hardupdate() - local clock update
index 49449d1..c90ce94 100644 (file)
@@ -29,7 +29,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/sys/kern/kern_objcache.c,v 1.17 2007/04/29 01:26:46 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_objcache.c,v 1.18 2007/04/30 07:18:53 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -894,4 +894,4 @@ objcache_init(void)
                      objcache_timer, NULL);
 #endif
 }
-SYSINIT(objcache, SI_SUB_CPU, SI_ORDER_ANY, objcache_init, 0);
+SYSINIT(objcache, SI_BOOT2_OBJCACHE, SI_ORDER_FIRST, objcache_init, 0);
index 9d25189..d675dd6 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/kern/kern_poll.c,v 1.2.2.4 2002/06/27 23:26:33 luigi Exp $
- * $DragonFly: src/sys/kern/kern_poll.c,v 1.25 2007/01/05 22:16:28 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_poll.c,v 1.26 2007/04/30 07:18:53 dillon Exp $
  */
 
 #include "opt_polling.h"
@@ -211,7 +211,7 @@ sysctl_pollhz(SYSCTL_HANDLER_ARGS)
        crit_enter();
        pollhz = phz;
        if (polling_enabled)
-               gd0_pollclock.periodic = sys_cputimer->fromhz(phz);
+               systimer_adjust_periodic(&gd0_pollclock, phz);
        crit_exit();
        return 0;
 }
@@ -231,9 +231,9 @@ sysctl_polling(SYSCTL_HANDLER_ARGS)
                return error;
        polling_enabled = enabled;
        if (polling_enabled)
-               gd0_pollclock.periodic = sys_cputimer->fromhz(pollhz);
+               systimer_adjust_periodic(&gd0_pollclock, pollhz);
        else
-               gd0_pollclock.periodic = sys_cputimer->fromhz(1);
+               systimer_adjust_periodic(&gd0_pollclock, 1);
        return 0;
 }
 
index d3dd434..cb8b0a4 100644 (file)
@@ -22,7 +22,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/sys/kern/kern_sfbuf.c,v 1.14 2006/12/28 21:24:01 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_sfbuf.c,v 1.15 2007/04/30 07:18:53 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -43,7 +43,7 @@
 #include <sys/thread2.h>
 
 static void sf_buf_init(void *arg);
-SYSINIT(sock_sf, SI_SUB_MBUF, SI_ORDER_ANY, sf_buf_init, NULL)
+SYSINIT(sock_sf, SI_BOOT2_MACHDEP, SI_ORDER_ANY, sf_buf_init, NULL)
 
 LIST_HEAD(sf_buf_list, sf_buf);
 
index b6af2bd..3e8d001 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)kern_shutdown.c     8.3 (Berkeley) 1/21/94
  * $FreeBSD: src/sys/kern/kern_shutdown.c,v 1.72.2.12 2002/02/21 19:15:10 dillon Exp $
- * $DragonFly: src/sys/kern/kern_shutdown.c,v 1.49 2007/01/25 09:18:13 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_shutdown.c,v 1.50 2007/04/30 07:18:53 dillon Exp $
  */
 
 #include "opt_ddb.h"
@@ -167,7 +167,7 @@ shutdown_conf(void *unused)
        EVENTHANDLER_REGISTER(shutdown_final, shutdown_reset, NULL, SHUTDOWN_PRI_LAST + 200);
 }
 
-SYSINIT(shutdown_conf, SI_SUB_INTRINSIC, SI_ORDER_ANY, shutdown_conf, NULL)
+SYSINIT(shutdown_conf, SI_BOOT2_MACHDEP, SI_ORDER_ANY, shutdown_conf, NULL)
 
 /* ARGSUSED */
 
index dc6975f..6b46ce4 100644 (file)
@@ -33,7 +33,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/kern/kern_slaballoc.c,v 1.48 2007/01/12 03:05:49 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_slaballoc.c,v 1.49 2007/04/30 07:18:53 dillon Exp $
  *
  * This module implements a slab allocator drop-in replacement for the
  * kernel malloc().
@@ -202,7 +202,7 @@ MALLOC_DEFINE(M_IP6NDP, "ip6ndp", "IPv6 Neighbor Discovery");
  */
 static void kmeminit(void *dummy);
 
-SYSINIT(kmem, SI_SUB_KMEM, SI_ORDER_FIRST, kmeminit, NULL)
+SYSINIT(kmem, SI_BOOT1_ALLOCATOR, SI_ORDER_FIRST, kmeminit, NULL)
 
 #ifdef INVARIANTS
 /*
index 2ba15a0..ba5bdd2 100644 (file)
@@ -38,7 +38,7 @@
  *
  *     @(#)kern_sysctl.c       8.4 (Berkeley) 4/14/94
  * $FreeBSD: src/sys/kern/kern_sysctl.c,v 1.92.2.9 2003/05/01 22:48:09 trhodes Exp $
- * $DragonFly: src/sys/kern/kern_sysctl.c,v 1.26 2006/12/23 23:47:54 swildner Exp $
+ * $DragonFly: src/sys/kern/kern_sysctl.c,v 1.27 2007/04/30 07:18:54 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -471,7 +471,7 @@ sysctl_register_all(void *arg)
                sysctl_register_oid_int(*oidp);
 }
 
-SYSINIT(sysctl, SI_SUB_KMEM, SI_ORDER_ANY, sysctl_register_all, 0);
+SYSINIT(sysctl, SI_BOOT1_POST, SI_ORDER_ANY, sysctl_register_all, 0);
 
 /*
  * "Staff-functions"
index 2040e9d..e320f80 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/kern/kern_sysref.c,v 1.2 2007/04/29 06:11:19 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_sysref.c,v 1.3 2007/04/30 07:18:54 dillon Exp $
  */
 /*
  * System resource control module for all cluster-addressable system resource
@@ -85,7 +85,7 @@ sysrefbootinit(void *dummy __unused)
        }
 }
 
-SYSINIT(sysref, SI_SUB_OBJCACHE, SI_ORDER_ANY, sysrefbootinit, NULL);
+SYSINIT(sysref, SI_BOOT2_MACHDEP, SI_ORDER_ANY, sysrefbootinit, NULL);
 
 static
 int
index a341dc9..ce62ca9 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/kern/kern_systimer.c,v 1.9 2007/04/30 06:57:38 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_systimer.c,v 1.10 2007/04/30 07:18:54 dillon Exp $
  */
 
 /*
@@ -111,7 +111,6 @@ systimer_intr(sysclock_t *timep, int dummy, struct intrframe *frame)
            if (info->which != sys_cputimer) {
                info->periodic = sys_cputimer->fromhz(info->freq);
                info->which = sys_cputimer;
-               kprintf("readjusted systimer freq %p\n", info);
            }
            info->time += info->periodic;
            if ((info->flags & SYSTF_NONQUEUED) &&
index 9cf03fd..5672d40 100644 (file)
@@ -70,7 +70,7 @@
  *
  *     From: @(#)kern_clock.c  8.5 (Berkeley) 1/21/94
  * $FreeBSD: src/sys/kern/kern_timeout.c,v 1.59.2.1 2001/11/13 18:24:52 archie Exp $
- * $DragonFly: src/sys/kern/kern_timeout.c,v 1.24 2006/12/23 00:35:04 swildner Exp $
+ * $DragonFly: src/sys/kern/kern_timeout.c,v 1.25 2007/04/30 07:18:54 dillon Exp $
  */
 /*
  * DRAGONFLY BGL STATUS
@@ -193,7 +193,8 @@ swi_softclock_setup(void *arg)
 /*
  * Must occur after ncpus has been initialized.
  */
-SYSINIT(softclock_setup, SI_SUB_CPU, SI_ORDER_SECOND, swi_softclock_setup, NULL);
+SYSINIT(softclock_setup, SI_BOOT2_SOFTCLOCK, SI_ORDER_SECOND,
+       swi_softclock_setup, NULL);
 
 /*
  * This routine is called from the hardclock() (basically a FASTint/IPI) on
index 4ca0acb..c50a57c 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/kern/kern_varsym.c,v 1.8 2006/09/05 00:55:45 dillon Exp $
+ * $DragonFly: src/sys/kern/kern_varsym.c,v 1.9 2007/04/30 07:18:54 dillon Exp $
  */
 
 /*
@@ -64,7 +64,7 @@ varsym_sysinit(void *dummy)
 {
     varsymset_init(&varsymset_sys, NULL);
 }
-SYSINIT(announce, SI_SUB_INTRINSIC, SI_ORDER_FIRST, varsym_sysinit, NULL);
+SYSINIT(announce, SI_BOOT2_MACHDEP, SI_ORDER_FIRST, varsym_sysinit, NULL);
 
 /*
  * varsymreplace() - called from namei
index 60f2db6..cac5c19 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/kern/link_aout.c,v 1.26 1999/12/24 15:33:36 bde Exp $
- * $DragonFly: src/sys/kern/link_aout.c,v 1.21 2006/12/23 00:35:04 swildner Exp $
+ * $DragonFly: src/sys/kern/link_aout.c,v 1.22 2007/04/30 07:18:54 dillon Exp $
  */
 
 #define FREEBSD_AOUT   1
@@ -134,7 +134,7 @@ link_aout_init(void* arg)
 #endif
 }
 
-SYSINIT(link_aout, SI_SUB_KLD, SI_ORDER_THIRD, link_aout_init, 0);
+SYSINIT(link_aout, SI_BOOT2_KLD, SI_ORDER_THIRD, link_aout_init, 0);
 
 static int
 link_aout_load_module(const char* filename, linker_file_t* result)
index 4cdb32a..51e3e66 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/kern/link_elf.c,v 1.24 1999/12/24 15:33:36 bde Exp $
- * $DragonFly: src/sys/kern/link_elf.c,v 1.25 2006/12/28 21:24:01 dillon Exp $
+ * $DragonFly: src/sys/kern/link_elf.c,v 1.26 2007/04/30 07:18:54 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -175,7 +175,7 @@ link_elf_init(void* arg)
     }
 }
 
-SYSINIT(link_elf, SI_SUB_KLD, SI_ORDER_SECOND, link_elf_init, 0);
+SYSINIT(link_elf, SI_BOOT2_KLD, SI_ORDER_SECOND, link_elf_init, 0);
 
 static int
 parse_module_symbols(linker_file_t lf)
index 5121bed..71b5f02 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/kern/subr_bus.c,v 1.54.2.9 2002/10/10 15:13:32 jhb Exp $
- * $DragonFly: src/sys/kern/subr_bus.c,v 1.35 2006/12/23 00:35:04 swildner Exp $
+ * $DragonFly: src/sys/kern/subr_bus.c,v 1.36 2007/04/30 07:18:54 dillon Exp $
  */
 
 #include "opt_bus.h"
@@ -1622,7 +1622,7 @@ resource_cfgload(void *dummy __unused)
                }
        }
 }
-SYSINIT(cfgload, SI_SUB_KMEM, SI_ORDER_ANY + 50, resource_cfgload, 0)
+SYSINIT(cfgload, SI_BOOT1_POST, SI_ORDER_ANY + 50, resource_cfgload, 0)
 
 
 /*======================================*/
index 8c2cd9c..c12d68b 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/kern/subr_kobj.c,v 1.4.2.1 2001/02/02 19:49:13 cg Exp $
- * $DragonFly: src/sys/kern/subr_kobj.c,v 1.8 2006/09/05 00:55:45 dillon Exp $
+ * $DragonFly: src/sys/kern/subr_kobj.c,v 1.9 2007/04/30 07:18:54 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -69,7 +69,7 @@ kobj_init_token(void *arg)
        lwkt_token_init(&kobj_token);
 }
 
-SYSINIT(kobj, SI_SUB_LOCK, SI_ORDER_ANY, kobj_init_token, NULL);
+SYSINIT(kobj, SI_BOOT1_LOCK, SI_ORDER_ANY, kobj_init_token, NULL);
 
 /*
  * This method structure is used to initialise new caches. Since the
index 2643b9b..e7263f3 100644 (file)
@@ -65,7 +65,7 @@
  *
  * @(#)uipc_mbuf.c     8.2 (Berkeley) 1/4/94
  * $FreeBSD: src/sys/kern/uipc_mbuf.c,v 1.51.2.24 2003/04/15 06:59:29 silby Exp $
- * $DragonFly: src/sys/kern/uipc_mbuf.c,v 1.60 2007/03/04 18:51:59 swildner Exp $
+ * $DragonFly: src/sys/kern/uipc_mbuf.c,v 1.61 2007/04/30 07:18:54 dillon Exp $
  */
 
 #include "opt_param.h"
@@ -104,7 +104,7 @@ struct mbcluster {
 };
 
 static void mbinit(void *);
-SYSINIT(mbuf, SI_SUB_MBUF, SI_ORDER_FIRST, mbinit, NULL)
+SYSINIT(mbuf, SI_BOOT2_MACHDEP, SI_ORDER_FIRST, mbinit, NULL)
 
 static u_long  mbtypes[MT_NTYPES];
 
@@ -179,7 +179,6 @@ static void m_mclfree(void *arg);
 static void
 tunable_mbinit(void *dummy)
 {
-
        /*
         * This has to be done before VM init.
         */
@@ -190,10 +189,9 @@ tunable_mbinit(void *dummy)
        /* Sanity checks */
        if (nmbufs < nmbclusters * 2)
                nmbufs = nmbclusters * 2;
-
-       return;
 }
-SYSINIT(tunable_mbinit, SI_SUB_TUNABLES, SI_ORDER_ANY, tunable_mbinit, NULL);
+SYSINIT(tunable_mbinit, SI_BOOT1_TUNABLES, SI_ORDER_ANY,
+       tunable_mbinit, NULL);
 
 /* "number of clusters of pages" */
 #define NCL_INIT       1
index 32b40da..cc23f6b 100644 (file)
@@ -33,7 +33,7 @@
  *
  *     @(#)uipc_socket2.c      8.1 (Berkeley) 6/10/93
  * $FreeBSD: src/sys/kern/uipc_socket2.c,v 1.55.2.17 2002/08/31 19:04:55 dwmalone Exp $
- * $DragonFly: src/sys/kern/uipc_socket2.c,v 1.27 2007/04/22 01:13:10 dillon Exp $
+ * $DragonFly: src/sys/kern/uipc_socket2.c,v 1.28 2007/04/30 07:18:54 dillon Exp $
  */
 
 #include "opt_param.h"
@@ -568,7 +568,7 @@ SYSCTL_INT(_kern_ipc, KIPC_SOCKBUF_WASTE, sockbuf_waste_factor, CTLFLAG_RW,
     &sb_efficiency, 0, "");
 
 /*
- * Initialise maxsockets 
+ * Initialize maxsockets 
  */
 static void
 init_maxsockets(void *ignored)
@@ -576,4 +576,6 @@ init_maxsockets(void *ignored)
     TUNABLE_INT_FETCH("kern.ipc.maxsockets", &maxsockets);
     maxsockets = imax(maxsockets, imax(maxfiles, nmbclusters));
 }
-SYSINIT(param, SI_SUB_TUNABLES, SI_ORDER_ANY, init_maxsockets, NULL);
+SYSINIT(param, SI_BOOT1_TUNABLES, SI_ORDER_ANY,
+       init_maxsockets, NULL);
+
index fd54fc5..ac93db6 100644 (file)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/sys/kern/usched_bsd4.c,v 1.21 2007/02/18 16:16:11 corecode Exp $
+ * $DragonFly: src/sys/kern/usched_bsd4.c,v 1.22 2007/04/30 07:18:54 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -202,7 +202,7 @@ rqinit(void *dummy)
        }
        atomic_clear_int(&bsd4_curprocmask, 1);
 }
-SYSINIT(runqueue, SI_SUB_RUN_QUEUE, SI_ORDER_FIRST, rqinit, NULL)
+SYSINIT(runqueue, SI_BOOT2_USCHED, SI_ORDER_FIRST, rqinit, NULL)
 
 /*
  * BSD4_ACQUIRE_CURPROC
@@ -1190,7 +1190,8 @@ sched_thread_cpu_init(void)
     if (bootverbose)
        kprintf("\n");
 }
-SYSINIT(uschedtd, SI_SUB_FINISH_SMP, SI_ORDER_ANY, sched_thread_cpu_init, NULL)
+SYSINIT(uschedtd, SI_BOOT2_USCHED, SI_ORDER_SECOND,
+       sched_thread_cpu_init, NULL)
 
 #endif
 
index a6911cf..744c415 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/kern/usched_dummy.c,v 1.7 2007/02/18 16:16:11 corecode Exp $
+ * $DragonFly: src/sys/kern/usched_dummy.c,v 1.8 2007/04/30 07:18:54 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -118,7 +118,7 @@ dummyinit(void *dummy)
        spin_init(&dummy_spin);
        atomic_clear_int(&dummy_curprocmask, 1);
 }
-SYSINIT(runqueue, SI_SUB_RUN_QUEUE, SI_ORDER_FIRST, dummyinit, NULL)
+SYSINIT(runqueue, SI_BOOT2_USCHED, SI_ORDER_FIRST, dummyinit, NULL)
 
 /*
  * DUMMY_ACQUIRE_CURPROC
@@ -539,7 +539,7 @@ dummy_sched_thread_cpu_init(void)
     if (bootverbose)
        kprintf("\n");
 }
-SYSINIT(uschedtd, SI_SUB_FINISH_SMP, SI_ORDER_ANY,
+SYSINIT(uschedtd, SI_BOOT2_USCHED, SI_ORDER_SECOND,
        dummy_sched_thread_cpu_init, NULL)
 
 #endif
index 447f23c..052c0be 100644 (file)
@@ -14,7 +14,7 @@
  * of the author.  This software is distributed AS-IS.
  *
  * $FreeBSD: src/sys/kern/vfs_aio.c,v 1.70.2.28 2003/05/29 06:15:35 alc Exp $
- * $DragonFly: src/sys/kern/vfs_aio.c,v 1.39 2007/04/29 18:25:34 dillon Exp $
+ * $DragonFly: src/sys/kern/vfs_aio.c,v 1.40 2007/04/30 07:18:54 dillon Exp $
  */
 
 /*
@@ -49,6 +49,7 @@
 #include <sys/aio.h>
 #include <sys/file2.h>
 #include <sys/buf2.h>
+#include <sys/sysref2.h>
 #include <sys/thread2.h>
 
 #include <machine/limits.h>
@@ -619,7 +620,7 @@ aio_daemon(void *uproc, struct trapframe *frame)
        struct aioproclist *aiop;
        struct kaioinfo *ki;
        struct proc *curcp, *mycp, *userp;
-       struct vmspace *myvm, *tmpvm;
+       struct vmspace *myvm;
        struct ucred *cr;
 
        /*
index c7b5571..65ca96d 100644 (file)
@@ -1,6 +1,6 @@
 /*     $NetBSD: natm.c,v 1.5 1996/11/09 03:26:26 chuck Exp $   */
 /* $FreeBSD: src/sys/netnatm/natm.c,v 1.12 2000/02/13 03:32:03 peter Exp $ */
-/* $DragonFly: src/sys/netproto/natm/natm.c,v 1.25 2007/04/22 01:13:15 dillon Exp $ */
+/* $DragonFly: src/sys/netproto/natm/natm.c,v 1.26 2007/04/30 07:18:55 dillon Exp $ */
 
 /*
  *
@@ -748,10 +748,9 @@ static int natmintr(struct netmsg *);
 static void
 netisr_natm_setup(void *dummy __unused)
 {
-
        netisr_register(NETISR_NATM, cpu0_portfn, natmintr);
 }
-SYSINIT(natm_setup, SI_SUB_CPU, SI_ORDER_ANY, netisr_natm_setup, NULL);
+SYSINIT(natm_setup, SI_BOOT2_KLD, SI_ORDER_ANY, netisr_natm_setup, NULL);
 #endif
 
 void
index 5fabb32..07003f5 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/acpica/acpi_wakeup.c,v 1.33 2004/05/06 02:18:58 njl Exp $
- * $DragonFly: src/sys/platform/pc32/acpica5/acpi_wakeup.c,v 1.13 2006/12/23 00:27:02 swildner Exp $
+ * $DragonFly: src/sys/platform/pc32/acpica5/acpi_wakeup.c,v 1.14 2007/04/30 07:18:55 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -331,7 +331,7 @@ acpi_alloc_wakeup_handler(void)
        }
 }
 
-SYSINIT(acpiwakeup, SI_SUB_KMEM, SI_ORDER_ANY, acpi_alloc_wakeup_handler, 0)
+SYSINIT(acpiwakeup, SI_BOOT1_POST, SI_ORDER_ANY, acpi_alloc_wakeup_handler, 0)
 
 static void
 acpi_realmodeinst(void *arg, bus_dma_segment_t *segs, int nsegs, int error)
index fcd8b88..bebcf21 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/acpica/madt.c,v 1.17 2004/06/10 20:03:46 jhb Exp $
- * $DragonFly: src/sys/platform/pc32/acpica5/madt.c,v 1.8 2006/12/23 00:27:03 swildner Exp $
+ * $DragonFly: src/sys/platform/pc32/acpica5/madt.c,v 1.9 2007/04/30 07:18:55 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -401,13 +401,15 @@ madt_setup_io(void)
        return (0);
 }
 
+/*
+ * Register an enumerator that the SMP startup code might use
+ */
 static void
 madt_register(void *dummy __unused)
 {
-
        apic_register_enumerator(&madt_enumerator);
 }
-SYSINIT(madt_register, SI_SUB_CPU - 1, SI_ORDER_FIRST, madt_register, NULL)
+SYSINIT(madt_register, SI_BOOT2_PRESMP, SI_ORDER_FIRST, madt_register, NULL)
 
 /*
  * Call the handler routine for each entry in the MADT table.
@@ -746,7 +748,8 @@ madt_parse_ints(APIC_HEADER *entry, void *arg __unused)
 }
 
 /*
- * Setup per-CPU ACPI IDs.
+ * Setup per-CPU ACPI IDs.  This is done as part of the high-level BIOS
+ * setup (after SMP), but before MACHDEP systems are initialized.
  */
 static void
 madt_set_ids(void *dummy)
@@ -772,4 +775,4 @@ madt_set_ids(void *dummy)
                            la->la_acpi_id);
        }
 }
-SYSINIT(madt_set_ids, SI_SUB_CPU, SI_ORDER_ANY, madt_set_ids, NULL)
+SYSINIT(madt_set_ids, SI_BOOT2_BIOS, SI_ORDER_FIRST, madt_set_ids, NULL)
index 9576648..7518b72 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/i386/bios.c,v 1.29.2.3 2001/07/19 18:07:35 imp Exp $
- * $DragonFly: src/sys/platform/pc32/i386/bios.c,v 1.14 2006/12/28 18:29:04 dillon Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/bios.c,v 1.15 2007/04/30 07:18:55 dillon Exp $
  */
 
 /*
@@ -53,7 +53,7 @@ static u_int                  bios32_SDCI;
 
 /* start fairly early */
 static void                    bios32_init(void *junk);
-SYSINIT(bios32, SI_SUB_CPU, SI_ORDER_ANY, bios32_init, NULL);
+SYSINIT(bios32, SI_BOOT2_BIOS, SI_ORDER_ANY, bios32_init, NULL);
 
 /*
  * bios32_init
index 51a8486..e79b98e 100644 (file)
@@ -85,7 +85,7 @@
  *   ACPI objects: _PCT is MSR location, _PSS is freq/voltage, _PPC is caps.
  *
  * $NetBSD: est.c,v 1.25 2006/06/18 16:39:56 nonaka Exp $
- * $DragonFly: src/sys/platform/pc32/i386/est.c,v 1.6 2007/01/28 17:32:35 y0netan1 Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/est.c,v 1.7 2007/04/30 07:18:55 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -727,4 +727,4 @@ static moduledata_t est_mod = {
        NULL,
 };
 
-DECLARE_MODULE(est, est_mod, SI_SUB_KLD, SI_ORDER_ANY);
+DECLARE_MODULE(est, est_mod, SI_BOOT2_BIOS, SI_ORDER_ANY);
index af01d26..a739e22 100644 (file)
@@ -36,7 +36,7 @@
  *
  *     from: @(#)machdep.c     7.4 (Berkeley) 6/3/91
  * $FreeBSD: src/sys/i386/i386/machdep.c,v 1.385.2.30 2003/05/31 08:48:05 alc Exp $
- * $DragonFly: src/sys/platform/pc32/i386/machdep.c,v 1.119 2007/04/27 23:27:16 dillon Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/machdep.c,v 1.120 2007/04/30 07:18:55 dillon Exp $
  */
 
 #include "use_apm.h"
@@ -137,7 +137,7 @@ extern void ffs_rawread_setup(void);
 #endif /* DIRECTIO */
 static void init_locks(void);
 
-SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL)
+SYSINIT(cpu, SI_BOOT2_SMP, SI_ORDER_FIRST, cpu_startup, NULL)
 
 int    _udatasel, _ucodesel;
 u_int  atdevbase;
@@ -2124,7 +2124,7 @@ globaldata_find(int cpu)
 
 #if defined(I586_CPU) && !defined(NO_F00F_HACK)
 static void f00f_hack(void *unused);
-SYSINIT(f00f_hack, SI_SUB_INTRINSIC, SI_ORDER_FIRST, f00f_hack, NULL);
+SYSINIT(f00f_hack, SI_BOOT2_BIOS, SI_ORDER_ANY, f00f_hack, NULL);
 
 static void
 f00f_hack(void *unused) 
index b56de8e..f278f23 100644 (file)
@@ -23,7 +23,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.115.2.15 2003/03/14 21:22:35 jhb Exp $
- * $DragonFly: src/sys/platform/pc32/i386/mp_machdep.c,v 1.56 2007/04/27 23:27:16 dillon Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/mp_machdep.c,v 1.57 2007/04/30 07:18:55 dillon Exp $
  */
 
 #include "opt_cpu.h"
@@ -2542,7 +2542,7 @@ ap_finish(void)
                kprintf("Active CPU Mask: %08x\n", smp_active_mask);
 }
 
-SYSINIT(finishsmp, SI_SUB_FINISH_SMP, SI_ORDER_FIRST, ap_finish, NULL)
+SYSINIT(finishsmp, SI_BOOT2_FINISH_SMP, SI_ORDER_FIRST, ap_finish, NULL)
 
 void
 cpu_send_ipiq(int dcpu)
index 50973ed..e97196c 100644 (file)
@@ -37,7 +37,7 @@
  * Workarounds included below.
  *
  * $FreeBSD: /repoman/r/ncvs/src/sys/i386/i386/p4tcc.c,v 1.3.2.1 2004/03/03 15:24:15 sobomax Exp $
- * $DragonFly: src/sys/platform/pc32/i386/p4tcc.c,v 1.2 2006/12/23 00:27:03 swildner Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/p4tcc.c,v 1.3 2007/04/30 07:18:55 dillon Exp $
  */
 
 #include <sys/cdefs.h>
@@ -248,4 +248,10 @@ setup_p4tcc(void *dummy __unused)
        /* register performance profile change handler */
        EVENTHANDLER_REGISTER(power_profile_change, p4tcc_power_profile, NULL, 0);
 }
-SYSINIT(setup_p4tcc, SI_SUB_CPU, SI_ORDER_ANY, setup_p4tcc, NULL);
+
+/*
+ * Set this is pre-smp to give us a chance to play nice in case
+ * SMP startup locks the system up.
+ */
+SYSINIT(setup_p4tcc, SI_BOOT2_PRESMP, SI_ORDER_ANY, setup_p4tcc, NULL);
+
index 055f7df..24c5c81 100644 (file)
@@ -39,7 +39,7 @@
  *     from: @(#)vm_machdep.c  7.3 (Berkeley) 5/13/91
  *     Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$
  * $FreeBSD: src/sys/i386/i386/vm_machdep.c,v 1.132.2.9 2003/01/25 19:02:23 dillon Exp $
- * $DragonFly: src/sys/platform/pc32/i386/vm_machdep.c,v 1.58 2007/03/01 01:46:52 corecode Exp $
+ * $DragonFly: src/sys/platform/pc32/i386/vm_machdep.c,v 1.59 2007/04/30 07:18:55 dillon Exp $
  */
 
 #include "use_npx.h"
@@ -499,7 +499,7 @@ swi_vm_setup(void *arg)
        register_swi(SWI_VM, swi_vm, NULL, "swi_vm", NULL);
 }
 
-SYSINIT(vm_setup, SI_SUB_CPU, SI_ORDER_ANY, swi_vm_setup, NULL);
+SYSINIT(vm_setup, SI_BOOT2_MACHDEP, SI_ORDER_ANY, swi_vm_setup, NULL);
 
 
 /*
index 931c06d..234075c 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     from: @(#)clock.c       7.2 (Berkeley) 5/12/91
  * $FreeBSD: src/sys/i386/isa/clock.c,v 1.149.2.6 2002/11/02 04:41:50 iwasaki Exp $
- * $DragonFly: src/sys/platform/pc32/isa/clock.c,v 1.50 2006/12/23 00:27:03 swildner Exp $
+ * $DragonFly: src/sys/platform/pc32/isa/clock.c,v 1.51 2007/04/30 07:18:55 dillon Exp $
  */
 
 /*
@@ -955,7 +955,7 @@ resettodr(void)
  * interrupts.  statclock_disable is set by default.
  */
 void
-cpu_initclocks(void)
+cpu_initclocks(void *arg __unused)
 {
        int diag;
 #ifdef APIC_IO
@@ -1099,6 +1099,7 @@ cpu_initclocks(void)
 #endif
        callout_init(&sysbeepstop_ch);
 }
+SYSINIT(clocks8254, SI_BOOT2_CLOCKREG, SI_ORDER_FIRST, cpu_initclocks, NULL)
 
 #ifdef APIC_IO
 
index b53e0c4..545c459 100644 (file)
@@ -35,7 +35,7 @@
  *
  *     from: @(#)autoconf.c    7.1 (Berkeley) 5/9/91
  * $FreeBSD: src/sys/i386/i386/autoconf.c,v 1.146.2.2 2001/06/07 06:05:58 dd Exp $
- * $DragonFly: src/sys/platform/vkernel/i386/autoconf.c,v 1.7 2007/01/06 19:40:53 dillon Exp $
+ * $DragonFly: src/sys/platform/vkernel/i386/autoconf.c,v 1.8 2007/04/30 07:18:55 dillon Exp $
  */
 
 /*
@@ -107,7 +107,7 @@ static void pxe_setup_nfsdiskless(void);
 #endif
 #endif
 
-SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL);
+SYSINIT(cpu, SI_BOOT2_SMP, SI_ORDER_FIRST, cpu_startup, NULL);
 SYSINIT(configure1, SI_SUB_CONFIGURE, SI_ORDER_FIRST, configure_first, NULL);
 /* SI_ORDER_SECOND is hookable */
 SYSINIT(configure2, SI_SUB_CONFIGURE, SI_ORDER_THIRD, configure, NULL);
index 73ccbfb..c266b3b 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/platform/vkernel/platform/systimer.c,v 1.11 2007/01/15 19:08:10 dillon Exp $
+ * $DragonFly: src/sys/platform/vkernel/platform/systimer.c,v 1.12 2007/04/30 07:18:55 dillon Exp $
  */
 
 #include <sys/types.h>
@@ -87,12 +87,13 @@ static struct cputimer vkernel_cputimer = {
  * Initialize the systimer subsystem, called from MI code in early boot.
  */
 void
-cpu_initclocks(void)
+cpu_initclocks(void *arg __unused)
 {
        kprintf("initclocks\n");
        cputimer_register(&vkernel_cputimer);
        cputimer_select(&vkernel_cputimer, 0);
 }
+SYSINIT(clocksvk, SI_BOOT2_CLOCKREG, SI_ORDER_FIRST, cpu_initclocks, NULL)
 
 /*
  * Constructor to initialize timer->base and get an initial count.
index 53f193b..57c0d15 100644 (file)
@@ -40,7 +40,7 @@
  *
  *     @(#)kernel.h    8.3 (Berkeley) 1/21/94
  * $FreeBSD: src/sys/sys/kernel.h,v 1.63.2.9 2002/07/02 23:00:30 archie Exp $
- * $DragonFly: src/sys/sys/kernel.h,v 1.25 2006/12/23 02:58:09 swildner Exp $
+ * $DragonFly: src/sys/sys/kernel.h,v 1.26 2007/04/30 07:18:56 dillon Exp $
  */
 
 #ifndef _SYS_KERNEL_H_
@@ -99,35 +99,59 @@ extern int lbolt_syncer;            /* approx 1 hz but may be sped up */
  * for binary compatibility with inserted elements.
  *
  * The SI_SUB_RUN_SCHEDULER value must have the highest lexical value.
- *
- * The SI_SUB_CONSOLE and SI_SUB_SWAP values represent values used by
- * the BSD 4.4Lite but not by FreeBSD; they are maintained in dependent
- * order to support porting.
  */
 enum sysinit_sub_id {
-       SI_SUB_DUMMY            = 0x0000000,    /* not executed; for linker*/
-       SI_SUB_DONE             = 0x0000001,    /* processed*/
-       SI_SUB_TUNABLES         = 0x0700000,    /* establish tunable values */
-       SI_SUB_CONSOLE          = 0x0800000,    /* console*/
-       SI_SUB_COPYRIGHT        = 0x0800001,    /* first use of console*/
-       SI_SUB_LOCK             = 0x0900000,    /* lockmgr locks and tokens */
-       SI_SUB_VM               = 0x1000000,    /* virtual memory system init*/
-       SI_SUB_KMEM             = 0x1800000,    /* kernel memory*/
-       SI_SUB_KVM_RSRC         = 0x1A00000,    /* kvm operational limits*/
-       SI_SUB_CPU              = 0x1e00000,    /* CPU resource(s)*/
-       SI_SUB_OBJCACHE         = 0x1e80000,    /* inits w/ objcache/malloc */
-       SI_SUB_KLD              = 0x1f00000,    /* KLD and module setup */
-       SI_SUB_INTRINSIC        = 0x2000000,    /* proc 0*/
-       SI_SUB_VM_CONF          = 0x2100000,    /* config VM, set limits*/
-       SI_SUB_RUN_QUEUE        = 0x2200000,    /* the run queue*/
+       /*
+        * Special cased
+        */
+       SI_SPECIAL_DUMMY        = 0x0000000,    /* not executed; for linker*/
+       SI_SPECIAL_DONE         = 0x0000001,    /* flag sysinit completion */
+
+       /*
+        * Memory management subsystems.
+        */
+       SI_BOOT1_TUNABLES       = 0x0700000,    /* establish tunable values */
+       SI_BOOT1_COPYRIGHT      = 0x0800000,    /* first use of console*/
+       SI_BOOT1_LOCK           = 0x0900000,    /* lockmgr locks and tokens */
+       SI_BOOT1_VM             = 0x1000000,    /* virtual memory system init*/
+       SI_BOOT1_ALLOCATOR      = 0x1400000,    /* slab allocator */
+       SI_BOOT1_KMALLOC        = 0x1600000,    /* kmalloc inits */
+       SI_BOOT1_POST           = 0x1800000,    /* post boot1 inits */
+
+       /*
+        * Fickle ordering.  objcache and softclock need to know what
+        * ncpus is to initialize properly, clocks (e.g. hardclock)
+        * need softclock to work, and we can't finish initializing
+        * the APs until the system clock has been initialized.
+        * Also, clock registration and smp configuration registration
+        * must occur before SMP.  Messy messy.
+        */
+       SI_BOOT2_LEAVE_CRIT     = 0x1900000,
+       SI_BOOT2_CLOCKREG       = 0x1980000,    /* register available clocks */
+       SI_BOOT2_PRESMP         = 0x1a00000,    /* register smp configs */
+       SI_BOOT2_SMP            = 0x1a80000,    /* SMP startup */
+       SI_BOOT2_OBJCACHE       = 0x1b00000,
+       SI_BOOT2_SOFTCLOCK      = 0x1b80000,
+       SI_BOOT2_CLOCKS         = 0x1c00000,    /* select & start clocks */
+       SI_BOOT2_FINISH_SMP     = 0x1c80000,    /* SMP go (& synch clocks) */
+
+       /*
+        * Finish up core kernel initialization and set up the process
+        * abstraction.
+        */
+       SI_BOOT2_BIOS           = 0x1d00000,
+       SI_BOOT2_MACHDEP        = 0x1d80000,
+       SI_BOOT2_KLD            = 0x1e00000,
+       SI_BOOT2_USCHED         = 0x1e80000,
+       SI_BOOT2_PROC0          = 0x1f00000,
+
+       /*
+        * Continue with miscellanious system initialization
+        */
        SI_SUB_CREATE_INIT      = 0x2300000,    /* create the init process */
-       SI_SUB_MBUF             = 0x2380000,    /* mbuf subsystem */
-       SI_SUB_LEAVE_CRIT       = 0x23c0000,    /* allow interrupt operation */
        SI_SUB_DRIVERS          = 0x2400000,    /* Let Drivers initialize */
        SI_SUB_CONFIGURE        = 0x3800000,    /* Configure devices */
        SI_SUB_VFS              = 0x4000000,    /* virtual file system*/
-       SI_SUB_CLOCKS           = 0x4800000,    /* real time and stat clocks*/
-       SI_SUB_FINISH_SMP       = 0x5000000,    /* finish setting up cpus */
        SI_SUB_HELPER_THREADS   = 0x5400000,    /* misc helper threads */
        SI_SUB_CLIST            = 0x5800000,    /* clists*/
        SI_SUB_SYSV_SHM         = 0x6400000,    /* System V shared memory*/
@@ -145,19 +169,22 @@ enum sysinit_sub_id {
        SI_SUB_KPROF            = 0x9000000,    /* kernel profiling*/
        SI_SUB_KICK_SCHEDULER   = 0xa000000,    /* start the timeout events*/
        SI_SUB_INT_CONFIG_HOOKS = 0xa800000,    /* Interrupts enabled config */
+
+       /*
+        * Root filesystem setup, finish up with the major system
+        * demons.
+        */
        SI_SUB_ROOT_CONF        = 0xb000000,    /* Find root devices */
        SI_SUB_DUMP_CONF        = 0xb200000,    /* Find dump devices */
        SI_SUB_RAID             = 0xb300000,    /* Configure vinum */
        SI_SUB_MOUNT_ROOT       = 0xb400000,    /* root mount*/
-       SI_SUB_SWAP             = 0xc000000,    /* swap*/
-       SI_SUB_INTRINSIC_POST   = 0xd000000,    /* proc 0 cleanup*/
+       SI_SUB_PROC0_POST       = 0xd000000,    /* proc 0 cleanup*/
        SI_SUB_KTHREAD_INIT     = 0xe000000,    /* init process*/
        SI_SUB_KTHREAD_PAGE     = 0xe400000,    /* pageout daemon*/
        SI_SUB_KTHREAD_VM       = 0xe800000,    /* vm daemon*/
        SI_SUB_KTHREAD_BUF      = 0xea00000,    /* buffer daemon*/
        SI_SUB_KTHREAD_UPDATE   = 0xec00000,    /* update daemon*/
        SI_SUB_KTHREAD_IDLE     = 0xee00000,    /* idle procs*/
-       SI_SUB_SMP              = 0xf000000,    /* idle procs*/
        SI_SUB_RUN_SCHEDULER    = 0xfffffff     /* scheduler: no return*/
 };
 
@@ -253,7 +280,7 @@ void        sysinit_add (struct sysinit **, struct sysinit **);
 /*
  * Infrastructure for tunable 'constants'.  Value may be specified at compile
  * time or kernel load time.  Rules relating tunables together can be placed
- * in a SYSINIT function at SI_SUB_TUNABLES with SI_ORDER_LAST.
+ * in a SYSINIT function at SI_BOOT1_TUNABLES with SI_ORDER_LAST.
  */
 
 extern void tunable_int_init(void *);
@@ -272,8 +299,9 @@ struct tunable_int {
                path,                                           \
                var,                                            \
        };                                                      \
-       SYSINIT(__Tunable_init_ ## line, SI_SUB_TUNABLES, SI_ORDER_MIDDLE, \
-            tunable_int_init, &__tunable_int_ ## line)
+       SYSINIT(__Tunable_init_ ## line,                        \
+               SI_BOOT1_TUNABLES, SI_ORDER_MIDDLE,             \
+               tunable_int_init, &__tunable_int_ ## line)
 
 #define        TUNABLE_INT_FETCH(path, var)    kgetenv_int((path), (var))
 
@@ -284,7 +312,8 @@ static void __Tunable_ ## var (void *ignored)       \
        (var) = (defval);                       \
        TUNABLE_INT_FETCH((path), &(var));      \
 }                                              \
-SYSINIT(__Tunable_init_ ## var, SI_SUB_TUNABLES, SI_ORDER_MIDDLE, __Tunable_ ## var , NULL);
+SYSINIT(__Tunable_init_ ## var, SI_BOOT1_TUNABLES, SI_ORDER_MIDDLE, \
+       __Tunable_ ## var , NULL);
 
 extern void tunable_quad_init(void *);
 struct tunable_quad {
@@ -301,8 +330,9 @@ struct tunable_quad {
                path,                                           \
                var,                                            \
        };                                                      \
-       SYSINIT(__Tunable_init_ ## line, SI_SUB_TUNABLES, SI_ORDER_MIDDLE, \
-           tunable_quad_init, &__tunable_quad_ ## line)
+       SYSINIT(__Tunable_init_ ## line,                        \
+               SI_BOOT1_TUNABLES, SI_ORDER_MIDDLE,             \
+               tunable_quad_init, &__tunable_quad_ ## line)
 
 #define        TUNABLE_QUAD_FETCH(path, var)   kgetenv_quad((path), (var))
 
@@ -323,8 +353,9 @@ struct tunable_str {
                var,                                            \
                size,                                           \
        };                                                      \
-       SYSINIT(__Tunable_init_ ## line, SI_SUB_TUNABLES, SI_ORDER_MIDDLE, \
-            tunable_str_init, &__tunable_str_ ## line)
+       SYSINIT(__Tunable_init_ ## line,                        \
+               SI_BOOT1_TUNABLES, SI_ORDER_MIDDLE,             \
+               tunable_str_init, &__tunable_str_ ## line)
 
 #define        TUNABLE_STR_FETCH(path, var, size)                      \
        kgetenv_string((path), (var), (size))
index 12be2c2..7b7202e 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)malloc.h    8.5 (Berkeley) 5/3/95
  * $FreeBSD: src/sys/sys/malloc.h,v 1.48.2.2 2002/03/16 02:19:16 archie Exp $
- * $DragonFly: src/sys/sys/malloc.h,v 1.27 2006/12/28 18:29:07 dillon Exp $
+ * $DragonFly: src/sys/sys/malloc.h,v 1.28 2007/04/30 07:18:56 dillon Exp $
  */
 
 #ifndef _SYS_MALLOC_H_
@@ -129,8 +129,8 @@ typedef struct malloc_type  *malloc_type_t;
        struct malloc_type type[1] = {                  \
            { NULL, { 0 }, 0, 0, 0, { 0 }, 0, 0, M_MAGIC, shortdesc, 0, 0, { 0 } } \
        };                                                                  \
-       SYSINIT(type##_init, SI_SUB_KMEM, SI_ORDER_ANY, malloc_init, type); \
-       SYSUNINIT(type##_uninit, SI_SUB_KMEM, SI_ORDER_ANY, malloc_uninit, type)
+       SYSINIT(type##_init, SI_BOOT1_KMALLOC, SI_ORDER_ANY, malloc_init, type); \
+       SYSUNINIT(type##_uninit, SI_BOOT1_KMALLOC, SI_ORDER_ANY, malloc_uninit, type)
 
 #else
 
index 1fa3915..650ca7a 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)systm.h     8.7 (Berkeley) 3/29/95
  * $FreeBSD: src/sys/sys/systm.h,v 1.111.2.18 2002/12/17 18:04:02 sam Exp $
- * $DragonFly: src/sys/sys/systm.h,v 1.67 2007/04/27 23:27:15 dillon Exp $
+ * $DragonFly: src/sys/sys/systm.h,v 1.68 2007/04/30 07:18:56 dillon Exp $
  */
 
 #ifndef _SYS_SYSTM_H_
@@ -252,7 +252,7 @@ void        adjust_timeout_calltodo (struct timeval *time_change);
 /* Initialize the world */
 void   mi_startup (void);
 void   consinit (void);
-void   cpu_initclocks (void);
+void   cpu_initclocks (void *arg __unused);
 void   nchinit (void);
 void   usrinfoinit (void);
 
index ea03e6b..a7e5383 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)vm_extern.h 8.2 (Berkeley) 1/12/94
  * $FreeBSD: src/sys/vm/vm_extern.h,v 1.46.2.3 2003/01/13 22:51:17 dillon Exp $
- * $DragonFly: src/sys/vm/vm_extern.h,v 1.26 2007/04/29 18:25:41 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_extern.h,v 1.27 2007/04/30 07:18:57 dillon Exp $
  */
 
 #ifndef _VM_VM_EXTERN_H_
@@ -97,6 +97,8 @@ int vm_fault_wire (vm_map_t, vm_map_entry_t, boolean_t);
 void vm_fork (struct proc *, struct proc *, int);
 void vm_fault_ratecheck(void);
 void vm_waitproc (struct proc *);
+void vm_init_limits(struct proc *);
+
 int vm_mmap (vm_map_t, vm_offset_t *, vm_size_t, vm_prot_t, vm_prot_t, int, void *, vm_ooffset_t);
 vm_offset_t vm_page_alloc_contig (vm_offset_t, vm_paddr_t, vm_paddr_t, vm_offset_t);
 void vm_set_page_size (void);
index 203668b..93d2224 100644 (file)
@@ -60,7 +60,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/vm/vm_glue.c,v 1.94.2.4 2003/01/13 22:51:17 dillon Exp $
- * $DragonFly: src/sys/vm/vm_glue.c,v 1.54 2007/04/29 18:25:41 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_glue.c,v 1.55 2007/04/30 07:18:57 dillon Exp $
  */
 
 #include "opt_vm.h"
 #include <sys/thread2.h>
 #include <sys/sysref2.h>
 
-/*
- * System initialization
- *
- * Note: proc0 from proc.h
- */
-
-static void vm_init_limits (void *);
-SYSINIT(vm_limits, SI_SUB_VM_CONF, SI_ORDER_FIRST, vm_init_limits, &proc0)
-
 /*
  * THIS MUST BE THE LAST INITIALIZATION ITEM!!!
  *
@@ -276,15 +267,11 @@ vm_waitproc(struct proc *p)
 }
 
 /*
- * Set default limits for VM system.
- * Called for proc 0, and then inherited by all others.
- *
- * XXX should probably act directly on proc0.
+ * Set default limits for VM system.  Call during proc0's initialization.
  */
-static void
-vm_init_limits(void *udata)
+void
+vm_init_limits(struct proc *p)
 {
-       struct proc *p = udata;
        int rss_limit;
 
        /*
index 35ad2e4..e37d0ee 100644 (file)
@@ -62,7 +62,7 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/vm/vm_init.c,v 1.20 1999/10/29 18:09:29 phk Exp $
- * $DragonFly: src/sys/vm/vm_init.c,v 1.10 2006/12/26 22:51:00 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_init.c,v 1.11 2007/04/30 07:18:57 dillon Exp $
  */
 
 /*
 #include <vm/vm_extern.h>
 
 /*
- * System initialization
+ * Initialize the VM system
  */
-
 static void vm_mem_init (void *);
-SYSINIT(vm_mem, SI_SUB_VM, SI_ORDER_FIRST, vm_mem_init, NULL)
+SYSINIT(vm_mem, SI_BOOT1_VM, SI_ORDER_FIRST, vm_mem_init, NULL)
 
 /*
  *     vm_init initializes the virtual memory system.
index 3ceb0bb..992e338 100644 (file)
@@ -39,7 +39,7 @@
  *
  *     @(#)vm_mmap.c   8.4 (Berkeley) 1/12/94
  * $FreeBSD: src/sys/vm/vm_mmap.c,v 1.108.2.6 2002/07/02 20:06:19 dillon Exp $
- * $DragonFly: src/sys/vm/vm_mmap.c,v 1.38 2007/04/29 18:25:41 dillon Exp $
+ * $DragonFly: src/sys/vm/vm_mmap.c,v 1.39 2007/04/30 07:18:57 dillon Exp $
  */
 
 /*
@@ -95,7 +95,7 @@ SYSCTL_INT(_vm, OID_AUTO, vkernel_enable, CTLFLAG_RW, &vkernel_enable, 0, "");
  */
 
 static void vmmapentry_rsrc_init (void *);
-SYSINIT(vmmersrc, SI_SUB_KVM_RSRC, SI_ORDER_FIRST, vmmapentry_rsrc_init, NULL)
+SYSINIT(vmmersrc, SI_BOOT1_POST, SI_ORDER_ANY, vmmapentry_rsrc_init, NULL)
 
 static void
 vmmapentry_rsrc_init(void *dummy)