Re: Kernel Locks During Device Probe on 7.0 Current

From: Dave Frantz <imperial_courier_at_yahoo.com>
Date: Thu, 13 Sep 2007 23:15:46 -0700 (PDT)
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?

/* 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);
		mtx_unlock(&intr_config_hook_lock);
		(*hook_entry->ich_func)(hook_entry->ich_arg);
		mtx_lock(&intr_config_hook_lock);
	}

	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_at_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.
> >
> > --- Kip Macy <kip.macy_at_gmail.com> wrote:
> >
> > > Try taking out firewire. And just to confirm  -
> you
> > > have bootverbose set?
> > >
> > >  -Kip
> > >
> > > On 9/13/07, Dave Frantz
> <imperial_courier_at_yahoo.com>
> > > wrote:
> > > > Okay, I've recompiled the GENERIC 7.0-current
> > > kernel
> > > > with VERBOSE_SYSINIT. ddb is in the kernel
> too.
> > > >
> > > > Booting with the GENERIC kernel built with
> those
> > > > options and with ACPI enabled, I get:
> > > >
> > > > subsystem 9000000
> > > >    tcov_init(0)... done.
> > > > subsystem a000000
> > > >    synch_setup(0)... done.
> > > > subsystem a800000
> > > >    run_interrupt_driven_config_hooks(0)...
> > > >
> > > > And then the system hangs. I cannot break into
> ddb
> > > > with Ctrl+Alt+Esc at this point.
> > > >
> > > > If I disable ACPI and boot with the same
> kernel, I
> > > > get:
> > > >
> > > >
> > > > subsystem 9000000
> > > >    tcov_init(0)... done.
> > > > subsystem a000000
> > > >    synch_setup(0)... done.
> > > > subsystem a800000
> > > >    run_interrupt_driven_config_hooks(0)...
> > > firewire0:
> > > > 2 nodes, maxhop <=1, cable IRM=1 (me)
> > > > firewire0: bus manager 1 (me)
> > > >
> > > > And it hangs there.
> > > >
> > > > Any ideas on what I should do next? Thanks in
> > > advance.
> > > >
<snip>


       
____________________________________________________________________________________
Be a better Heartthrob. Get better relationship answers from someone who knows. Yahoo! Answers - Check it out. 
http://answers.yahoo.com/dir/?link=list&sid=396545433
Received on Fri Sep 14 2007 - 04:15:47 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:17 UTC