From owner-freebsd-current@FreeBSD.ORG Fri Sep 14 07:24:36 2007 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4241916A417 for ; Fri, 14 Sep 2007 07:24:36 +0000 (UTC) (envelope-from imperial_courier@yahoo.com) Received: from web53907.mail.re2.yahoo.com (web53907.mail.re2.yahoo.com [206.190.36.217]) by mx1.freebsd.org (Postfix) with SMTP id 108B413C46B for ; Fri, 14 Sep 2007 07:24:35 +0000 (UTC) (envelope-from imperial_courier@yahoo.com) Received: (qmail 14094 invoked by uid 60001); 14 Sep 2007 07:24:35 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-ID; b=5HzYiaeibUL8lDEHtQaHx7aiZoNQYrAtJJyxDi1qTrucpyXSluKZnPGlFo5HwcIpvuQr1bweIKnqKapmOn5yo02ejWxWN9/u6CJt2sQMZclVS9J7KzoAFXZ/zqzR5mRgW0hrUNk2lscGFvyhyOixMlNCJVYN3rccaKMjFUYpb4Q=; X-YMail-OSG: 4eC8JEwVM1mndxMDfenqd3DpHF8Kgjm0TtwO5zmmvSYUefTIG2vYOTY8y0HIczBJblI24Q.vbKABRy.zdG9nsbIpX62U0mKAYBqxhPStiaGEuHRV4fnl8.KkSQ-- Received: from [209.166.103.197] by web53907.mail.re2.yahoo.com via HTTP; Fri, 14 Sep 2007 00:24:35 PDT Date: Fri, 14 Sep 2007 00:24:35 -0700 (PDT) From: Dave Frantz To: Kip Macy In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Message-ID: <566461.13079.qm@web53907.mail.re2.yahoo.com> Cc: freebsd-current@freebsd.org Subject: Re: Kernel Locks During Device Probe on 7.0 Current X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Sep 2007 07:24:36 -0000 Okay, I just finished rebuilding the GENERIC kernel with this patch. All Firewire devices are still compiled out of the kernel at this point. When I boot with ACPI on, I get: subsystem 9000000 tcov_init(0)... done. subsystem a000000 synch_setup(0)... done. subsystem a800000 run_interrupt_driven_config_hooks(0)... Calling 0xc09bf490 ... rr232x: no controller detected. done. Calling 0xc04695d0 ... done. Calling 0xc04f29d0 ... acpi_acad0: acline initialization start acpi_acad0: On Line acpi_acad0: acline initialization done, tried 1 times battery0: battery initialization start battery0: battery initialization done, tried 1 times and hangs. If I boot with ACPI off, I get: subsystem 9000000 tcov_init(0)... done. subsystem a000000 synch_setup(0)... done. subsystem a800000 run_interrupt_driven_config_hooks(0)... Calling 0xc09bf490 ... rr232x: no controller detected. done. Calling 0xc04695d0 ... done. Calling 0xc04f29d0 ... and it stops. --- Kip Macy wrote: > On 9/13/07, Dave Frantz > wrote: > > I just finished searching the files in > /usr/src/sys > > for run_interrupt_driven_config_hooks. The only > > references I get for this are in > kern/subr_autoconf.c. > > > > Unfortunately, my C-fu is a little weak. I've > > reproduced the run_interrupt_driven_config_hooks > > function below. Any ideas on where I should put > the > > printf? Is this the right function? > > see inline > > > > > /* ARGSUSED */ > > static void run_interrupt_driven_config_hooks(void > > *dummy); > > > > static void > > run_interrupt_driven_config_hooks(dummy) > > void *dummy; > > { > > struct intr_config_hook *hook_entry, > *next_entry; > > > > mtx_lock(&intr_config_hook_lock); > > TAILQ_FOREACH_SAFE(hook_entry, > > &intr_config_hook_list, ich_links, > > next_entry) { > > next_entry = > TAILQ_NEXT(hook_entry, ich_links); > > > printf("calling %p ... ", > hook_entry->ich_func); > > > > > mtx_unlock(&intr_config_hook_lock); > > > (*hook_entry->ich_func)(hook_entry->ich_arg); > > mtx_lock(&intr_config_hook_lock); > > printf("done\n"); > > > > } > > > > while > (!TAILQ_EMPTY(&intr_config_hook_list)) { > > msleep(&intr_config_hook_list, > > &intr_config_hook_lock, PCONFIG, > > "conifhk", 0); > > } > > mtx_unlock(&intr_config_hook_lock); > > } > > SYSINIT(intr_config_hooks, > SI_SUB_INT_CONFIG_HOOKS, > > SI_ORDER_FIRST, > > run_interrupt_driven_config_hooks, NULL) > > > > --- Kip Macy wrote: > > > > > > run_interrupt_driven_config_hooks(0)... > rr232x: > > > no > > > > controllers detected. > > > > > > put a printf in > run_interrupt_driven_config_hooks > > > printing out the > > > addresses of the functions, > > > with something like: > > > printf("calling %p ...", fun); > > > (*fun)(); > > > printf("done\n"); > > > > > > The most likely scenario is one of the drivers > > > taking you off into the weeds. > > > > > > -Kip > > > > > > > > > > > > > > > > > and then it hangs. > > > > > > > > I don't think Firewire is causing this, > > > unfortunately. > > > > At least not directly. > > > > > > > > Thank you very much for your help, by the way. > > > > ____________________________________________________________________________________ Got a little couch potato? Check out fun summer activities for kids. http://search.yahoo.com/search?fr=oni_on_mail&p=summer+activities+for+kids&cs=bz