From owner-p4-projects@FreeBSD.ORG Sat Jan 5 04:41:48 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EC39116A468; Sat, 5 Jan 2008 04:41:47 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B1DC716A46C for ; Sat, 5 Jan 2008 04:41:47 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id A031C13C458 for ; Sat, 5 Jan 2008 04:41:47 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m054flsQ005676 for ; Sat, 5 Jan 2008 04:41:47 GMT (envelope-from jb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m054flAu005673 for perforce@freebsd.org; Sat, 5 Jan 2008 04:41:47 GMT (envelope-from jb@freebsd.org) Date: Sat, 5 Jan 2008 04:41:47 GMT Message-Id: <200801050441.m054flAu005673@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jb@freebsd.org using -f From: John Birrell To: Perforce Change Reviews Cc: Subject: PERFORCE change 132544 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 Jan 2008 04:41:48 -0000 http://perforce.freebsd.org/chv.cgi?CH=132544 Change 132544 by jb@jb_freebsd1 on 2008/01/05 04:41:40 Add a SYSINIT to setup the APs. The boot CPU is setup in the load function itself rather than waiting for the SYSINIT which happens late in the boot process. Affected files ... .. //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_load.c#23 edit Differences ... ==== //depot/projects/dtrace/src/sys/cddl/dev/dtrace/dtrace_load.c#23 (text+ko) ==== @@ -23,6 +23,26 @@ */ static void +dtrace_ap_start(void *dummy) +{ + int i; + + mutex_enter(&cpu_lock); + + /* Setup the rest of the CPUs. */ + for (i = 1; i <= mp_maxid; i++) { + if (pcpu_find(i) == NULL) + continue; + + (void) dtrace_cpu_setup(CPU_CONFIG, i); + } + + mutex_exit(&cpu_lock); +} + +SYSINIT(dtrace_ap_start, SI_SUB_SMP, SI_ORDER_ANY, dtrace_ap_start, NULL); + +static void dtrace_load(void *dummy) { dtrace_provider_id_t id; @@ -59,9 +79,6 @@ mutex_enter(&cpu_lock); #ifdef DOODAD - dtrace_modload = dtrace_module_loaded; - dtrace_modunload = dtrace_module_unloaded; - dtrace_cpu_init = dtrace_cpu_setup_initial; dtrace_helpers_cleanup = dtrace_helpers_destroy; dtrace_helpers_fork = dtrace_helpers_duplicate; dtrace_cpustart_init = dtrace_suspend; @@ -71,10 +88,8 @@ dtrace_kreloc_init = dtrace_suspend; dtrace_kreloc_fini = dtrace_resume; - register_cpu_setup_func((cpu_setup_func_t *)dtrace_cpu_setup, NULL); - +#endif ASSERT(MUTEX_HELD(&cpu_lock)); -#endif dtrace_arena = vmem_create("dtrace", (void *)1, UINT32_MAX, 1, NULL, NULL, NULL, 0, VM_SLEEP | VMC_IDENTIFIER); @@ -150,6 +165,13 @@ mutex_exit(&dtrace_lock); mutex_exit(&dtrace_provider_lock); + mutex_enter(&cpu_lock); + + /* Setup the boot CPU */ + (void) dtrace_cpu_setup(CPU_CONFIG, 0); + + mutex_exit(&cpu_lock); + /* Enable device cloning. */ clone_setup(&dtrace_clones);