Date: Fri, 14 Sep 2007 00:24:35 -0700 (PDT) From: Dave Frantz <imperial_courier@yahoo.com> To: Kip Macy <kip.macy@gmail.com> Cc: freebsd-current@freebsd.org Subject: Re: Kernel Locks During Device Probe on 7.0 Current Message-ID: <566461.13079.qm@web53907.mail.re2.yahoo.com> In-Reply-To: <b1fa29170709132319m112ced64n5162be0e514f8314@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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 <kip.macy@gmail.com> wrote:
> On 9/13/07, Dave Frantz <imperial_courier@yahoo.com>
> 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 <kip.macy@gmail.com> 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.
> > > >
<snip>
____________________________________________________________________________________
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?566461.13079.qm>
