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