Date: Sat, 9 Jul 2005 23:52:31 +0200 From: Hans Petter Selasky <hselasky@c2i.net> To: Stefan Walter <sw@gegenunendlich.de> Cc: freebsd-usb@freebsd.org Subject: Re: usb/82660: EHCI: I/O stuck in state 'physrd'/panic Message-ID: <200507092352.33451.hselasky@c2i.net> In-Reply-To: <20050709135329.GA855@kyuzo.dunkelkammer.void> References: <20050626091628.775DD3A1D@kyuzo.dunkelkammer.void> <200507091436.44489.hselasky@c2i.net> <20050709135329.GA855@kyuzo.dunkelkammer.void>
next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday 09 July 2005 15:53, Stefan Walter wrote: > Hans Petter Selasky, 09.07.05, 14:36h CEST: > > > I don't think it's the USB stick, as the device works fine with ehci at > > > my notebook (Intel chipset). Furthermore, I could now reproduce the > > > problem with an external USB HD enclosure, too. > > > > Ok, lets have a look at the EHCI driver and see what is going on. I'm not > > sure how to do this with the official USB driver, but if you could have > > installed my USB driver again, and replace the function "ehci_timeout()" > > in the file "/sys/dev/usb2/_ehci.c" with the following: > > [...] > > > And then compile a new kernel and/or modules. > > > > Your device was USB 2.0, right, else you have to do something similar > > to /sys/dev/usb2/_uhci.c if the device is USB 1.X. > > > > Just leave all debugging flags off, and then try to reproduce the error > > [one or more times] and post the dmsg that appears. > > OK, dmesg says the following: > > QTD(0xdeb321c0) at 0x1f3501c0: > next=0x00000001<T> altnext=0x00000001<T> > status=0x10008d80: toggle=0 bytes=0x1000 ioc=1 c_page=0x0 > cerr=3 pid=1 stat=80<ACTIVE> > buffer[0]=0x1f34f0d0 > buffer[1]=0x1f350000 > buffer[2]=0x00000000 > buffer[3]=0x00000000 > buffer[4]=0x00000000 > _ehci_remove_qh: 0xdeb32400 from 0xdeb32400 > This doesn't indicate any errors. The transfer is simply waiting for data and the USB device is not supplying any so the transfer does not finish. But I want to have a look at a parent structure too, to see if your EHCI controller is not writing back or updating the last QTD. In the file /sys/dev/usb2/_ehci.c in the function ehci_device_done(): Change this: DPRINTF(("nexttog=%d; data after transfer:\n", xfer->pipe->toggle_next)); ehci_dump_sqtds(xfer->td_start); Into this : DPRINTF(("nexttog=%d; data after transfer:\n", xfer->pipe->toggle_next)); ehci_dump_sqtds(xfer->td_start); ehci_dump_sqh(xfer->qh_start); Recompile and reproduce the bug three or four times and post the dmsg. --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200507092352.33451.hselasky>