Subject: Re: kern/35553: azalia hangs an Optiplex 745
To: None <gnats-bugs@NetBSD.org>
From: Michael L. Hitch <mhitch@lightning.msu.montana.edu>
List: netbsd-bugs
Date: 08/24/2007 07:24:01
On Thu, 23 Aug 2007, Michael L. Hitch wrote:
> I've started poking around with my Optiplex 745, and it's hung waiting
> for a pending deferred autoconf function to complete. Then pending count
> is 1, so I'd guess it's the last one queued. I'm going to dig into what
> that function is and where it hangs up.
I think I see what's going on with the hang. Each USB controller starts a
kernel process to handle events, and increments the config_pending
semaphore. When the process starts, it calls a discovery routine, and
decrements the semaphore when the discovery returns. The process for
uhci0 never completes the discovery routine because when the azalia
initializes the codec, it somehow interferes with the uhci0 controller,
which halts. If ehci has been disabled, then there is no interference
and all the usb event processes complete their initialization and
everything proceeds normally. (Well, almost normally - I find that my
USB keyboard fails to attach if ehci is disabled. I can usually get it
to attach by plugging it into a different port, although is sometimes
takes several attempts.)
So all these problems seem to come back the the uhci/ehci interaction with
azalia and bge. One thing to note is that all three of these device are
sharing the same interrupt.
--
Michael L. Hitch mhitch@montana.edu
Computer Consultant
Information Technology Center
Montana State University Bozeman, MT USA