On Thu, 4 Jan 2007, Mark Watson wrote:

> A few years ago I wrote myself a driver to interface with a Cypress
> FX2 sending me some DVB data from a set top box. Every few days or
> weeks it disconnects, taking out the whole Linux USB system with it.
> i.e. any new USB devices connected are not recognised, until a reboot.
> Even if I disconnect this device (my driver handles
> disconnect/reconnect in normal circumstances). All the driver does is
> submit 64 bulk URBs, when it gets a result it parses the contents and
> submits it to the DVB kernel based software demux and resubmits the
> URB. Approx 30MB/s all the time though.
> 
> I'd like to debug my driver to make this box stable. Since this has
> been going on for years, over many Linux kernel versions, so I'm
> fairly certain its an issue in my device.
> 
> Symptoms in dmesg, all ticking on fine then:
> [16015.555509] /home/pvr/skympeg_usb_driver/dvb_skympeg.c:
> skympeg(15): 20000000 iterations - packets:357627306
> [16643.576890] hub 1-0:1.0: state 7 ports 6 chg 0000 evt 0008
> [16643.576912] ehci_hcd 0000:00:10.3: GetStatus port 3 status 00180b
> POWER sig=j PEC CSC CONNECT
> [16643.576923] hub 1-0:1.0: port 3, status 0501, change 0003, 480 Mb/s
> [16643.576927] usb 1-3: USB disconnect, address 3
> [16643.576932] usb 1-3: usb_disable_device nuking all URBs
> [16643.577140] ehci_hcd 0000:00: 10.3: shutdown urb d8a13ec0 pipe
> c0430380 ep6in-bulk
> (for each of 64 URBS)
> 
> If I try to access, e.g. /proc/bus/usb/devices, I get no response
> (blocks for ever).
> 
> Any suggestions of what this could mean or how I can start debugging
> this? I started with kgdb, but didn't really get anywhere useful. I'm
> thinking I could use something like kdump then look at it offline to
> see where the threads are stuck. Presumably some kind of deadlock in
> the usb stuff.
> 
> I'm happy to post the source if someone would be kind enough to check
> it over? I'm not an expert in kernel development so likely I've done
> something stupid.

You didn't say, but I bet you're using a VIA EHCI controller.  They have a 
known failure mode which causes the ehci-hcd driver to hang; the user 
experience is exactly as you described.  There have been many similar 
reports recently; just look through the mailing list archives and you'll 
see them.

Try doing Alt-SysRq-T to see the stack for the khubd process.  If it's 
waiting inside ehci_endpoint_disable() then that's your problem.

Alan Stern


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to