From owner-freebsd-usb@FreeBSD.ORG Tue Nov 2 22:25:44 2010 Return-Path: Delivered-To: freebsd-usb@FreeBSD.org Received: by hub.freebsd.org (Postfix, from userid 1233) id D0C34106566B; Tue, 2 Nov 2010 22:25:44 +0000 (UTC) Date: Tue, 2 Nov 2010 22:25:44 +0000 From: Alexander Best To: Alexander Leidinger Message-ID: <20101102222544.GA30447@freebsd.org> References: <20101102103208.45064dxs60sp833w@webmail.leidinger.net> <201011021036.41617.hselasky@freebsd.org> <20101102110134.53027bx6btjokpgc@webmail.leidinger.net> <4CCFFDC9.1040002@FreeBSD.org> <20101102122410.1227532bno09pfs4@webmail.leidinger.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20101102122410.1227532bno09pfs4@webmail.leidinger.net> Cc: Alexander Motin , Hans Petter Selasky , freebsd-usb@FreeBSD.org Subject: Re: usbconfig reset ugen4.2 hanging since an hour X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Nov 2010 22:25:44 -0000 On Tue Nov 2 10, Alexander Leidinger wrote: > Quoting Alexander Motin (from Tue, 02 Nov 2010 > 14:02:17 +0200): > > >Alexander Leidinger wrote: > >> > >>Quoting Hans Petter Selasky (from Tue, 2 Nov 2010 > >>10:36:41 +0100): > > >>>If you dump all threads in this state I think you will see that USB is > >>>waiting > >> > >># procstat -kk 29213 > >> PID TID COMM TDNAME KSTACK > >>29213 100291 usbconfig - mi_switch+0x188 > >>sleepq_switch+0x13c sleepq_timedwait+0x40 _sleep+0x320 pause+0x30 > >>usb_pause_mtx+0x94 usb_ioctl+0x171 devfs_ioctl_f+0x73 kern_ioctl+0x9d > >>ioctl+0xc5 syscallenter+0x1af syscall+0x34 Xint0x80_syscall+0x21 > >> > >>>somewhere in umass_detach(), which is preventing the usbconfig reset from > >> > >>No umass_detach in there... > > > >umass_detach() (if there) should be in some other thread. > > Not here: > ---snip--- > # procstat -kka | grep umass_detach > > ---snip--- > > >>>grabbing the SX-lock associated with serialisation. Because > >>>umass_detach() is > >>>not returning we are stuck. > >> > >>And there is no way to use some kind of timeout for cases which cause > >>problem reports (like umass_detach() and maybe this one)? I could > >>imagine several possibilities: usbconfig tries a trylock first (maybe > >>several times) and if it does not succeed in a specified timeperiode, it > >>returns an error. Adidtionally there is maybe the possibility to > >>determine if a command did not finish in a given timeperiode and print > >>out a warning message (syslog) to have an indication, that somthing is > >>not in a good condition. > > > >Not sure what should it give. We should track the real problem, not the > >consequences. Possible reason could be that due to some error umass/CAM > >leaked some references, which made impossible to destroy CAM bus on > >stick disconnection. But to diagnose it we need much more info. > > Something I could provide? Some kdb magic I could copy&paste? i believe you're experiencing the same i issue i have [1]. cheers. alex [1] http://www.mail-archive.com/freebsd-usb@freebsd.org/msg07599.html > > Bye, > Alexander. > > -- > Phosflink, v.: > To flick a bulb on and off when it burns out (as if, somehow, > that will bring it back to life). > -- Rich Hall & Friends, "Sniglets" > > http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 > http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137 -- a13x