usb/82660: EHCI: I/O stuck in state 'physrd'/panic

Hans Petter Selasky hselasky at c2i.net
Sat Jul 9 21:51:40 GMT 2005


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


More information about the freebsd-usb mailing list