Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Dec 2008 15:37:20 -0800
From:      Sam Leffler <sam@freebsd.org>
To:        Hans Petter Selasky <hselasky@c2i.net>
Cc:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   Re: PERFORCE change 154573 for review
Message-ID:  <494598B0.9090501@freebsd.org>
In-Reply-To: <200812141623.51473.hselasky@c2i.net>
References:  <200812122326.mBCNQX6w024511@repoman.freebsd.org> <200812131005.33499.hselasky@c2i.net> <494414EF.3080403@freebsd.org> <200812141623.51473.hselasky@c2i.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Hans Petter Selasky wrote:
> On Saturday 13 December 2008, Sam Leffler wrote:
>   
>> Hans Petter Selasky wrote:
>>     
>>> On Saturday 13 December 2008, Sam Leffler wrote:
>>>       
>
>   
>> No.  But if you are interested in helping debug the problem I'm happy to
>> send you debug output.  The controller rejects all cmds setting the
>> ERRINT status bit.  The qTD contents and xfer contents look fine but I
>> haven't been able to identify the cause given the overlay qTD contents.
>> I'm in the process of collecting comparative traces from linux where usb
>> works.
>>
>>     
>
> Send me the EHCI traces and I will have a look at it. Have you tried USB2? The 
> patches which you need to apply should be similar.
>   
This is what I get w/ sysctl hw.usb.ehci.debug=6 for the first cmd 
submitted after card insert:

avila1# ehci_pcd: change=0x02
ehci_root_ctrl_start: type=0xa3 request=00
ehci_root_ctrl_start: type=0x23 request=01
ehci_root_ctrl_start: type=0x23 request=03
ehci_root_ctrl_start: reset port 1
ehci_pcd: change=0x00
ehci after reset, status=0x08001205
ehci port 1 reset, status = 0x08001205
ehci_root_ctrl_start: type=0xa3 request=00
ehci_root_ctrl_start: type=0x23 request=01
ehci_root_ctrl_start: type=0xa3 request=00
ehci_open: pipe=0xc1101d80, xfertype=0, addr=0, endpt=1 (0)
ehci_add_qh:
QH(0xd0093de0) at 0x01088de0:
 sqtd=0xd0094de0 inactivesqtd=0xd0094de0
 link=0x01088e42<QH>
 endp=0x80086000
   addr=0x00 inact=0 endpt=0 eps=2 dtc=1 hrecl=0
   mpl=0x8 ctl=0 nrl=8
 endphub=0x40811c00
   smask=0x00 cmask=0x1c huba=0x01 port=1 mult=1
 curqtd=0x00000001<T>
Overlay qTD:
 next=0x01089de0<> altnext=0x00000001<T>
 status=0x00000000: toggle=0 bytes=0x0 ioc=0 c_page=0x0
   cerr=0 pid=0 stat=0x0
 buffer[0]=0x00000000
 buffer[1]=0x00000000
 buffer[2]=0x00000000
 buffer[3]=0x00000000
 buffer[4]=0x00000000
ehci_device_request: type=0x80, request=0x06, wValue=0x0100, 
wIndex=0x0000 len=8, addr=0, endpt=0
ehci_alloc_sqtd_chain: start len=8
ehci_device_request:
QH(0xd0093de0) at 0x01088de0:
 sqtd=0xd0094de0 inactivesqtd=0xd0094d80
 link=0x01088e42<QH>
 endp=0x80086000
   addr=0x00 inact=0 endpt=0 eps=2 dtc=1 hrecl=0
   mpl=0x8 ctl=0 nrl=8
 endphub=0x40811c00
   smask=0x00 cmask=0x1c huba=0x01 port=1 mult=1
 curqtd=0x00000001<T>
Overlay qTD:
 next=0x01089de0<> altnext=0x00000001<T>
 status=0x00000000: toggle=0 bytes=0x0 ioc=0 c_page=0x0
   cerr=0 pid=0 stat=0x0
 buffer[0]=0x00000000
 buffer[1]=0x00000000
 buffer[2]=0x00000000
 buffer[3]=0x00000000
 buffer[4]=0x00000000
QTD(0xd0094de0) at 0x01089de0:
 next=0x01089cc0<> altnext=0x01089d80<>
 status=0x00080e00: toggle=0 bytes=0x8 ioc=0 c_page=0x0
   cerr=3 pid=2 stat=0x0
 buffer[0]=0x01091fc0
 buffer[1]=0x00000000
 buffer[2]=0x00000000
 buffer[3]=0x00000000
 buffer[4]=0x00000000
QTD(0xd0094cc0) at 0x01089cc0:
 next=0x01089d20<> altnext=0x01089d80<>
 status=0x80080d80: toggle=1 bytes=0x8 ioc=0 c_page=0x0
   cerr=3 pid=1 stat=0x80<ACTIVE>
 buffer[0]=0x014b8a3c
 buffer[1]=0x00000000
 buffer[2]=0x00000000
 buffer[3]=0x00000000
 buffer[4]=0x00000000
QTD(0xd0094d20) at 0x01089d20:
 next=0x01089d80<> altnext=0x01089d80<>
 status=0x80008c80: toggle=1 bytes=0x0 ioc=1 c_page=0x0
   cerr=3 pid=0 stat=0x80<ACTIVE>
 buffer[0]=0x00000000
 buffer[1]=0x00000000
 buffer[2]=0x00000000
 buffer[3]=0x00000000
 buffer[4]=0x00000000
QTD(0xd0094d80) at 0x01089d80:
 next=0x00000001<T> altnext=0x00000001<T>
 status=0x00000000: toggle=0 bytes=0x0 ioc=0 c_page=0x0
   cerr=0 pid=0 stat=0x0
 buffer[0]=0x00000000
 buffer[1]=0x00000000
 buffer[2]=0x00000000
 buffer[3]=0x00000000
 buffer[4]=0x00000000
ehci_intr1:  ERRINT
ehci_check_intr: ex=0xc1096800
ehci_idone: ex=0xc1096800
ehci_idone: xfer=0xc1096800, pipe=0xc1101d80 ready
ehci_idone: updated overlay next ptr
ehci_idone: len=8, actlen=0, cerr=3, status=0x80080d40
ehci_idone: error, addr=0, endpt=0x00, status 0x80080d40<HALTED>
QH(0xd0093de0) at 0x01088de0:
 sqtd=0xd0094de0 inactivesqtd=0xd0094d80
 link=0x01088e42<QH>
 endp=0x80086000
   addr=0x00 inact=0 endpt=0 eps=2 dtc=1 hrecl=0
   mpl=0x8 ctl=0 nrl=8
 endphub=0x40811c00
   smask=0x00 cmask=0x1c huba=0x01 port=1 mult=1
 curqtd=0x01089cc0<>
Overlay qTD:
 next=0x01089d80<> altnext=0x01089d90<>
 status=0x80080d40: toggle=1 bytes=0x8 ioc=0 c_page=0x0
   cerr=3 pid=1 stat=0x40<HALTED>
 buffer[0]=0x014b8a3c
 buffer[1]=0x00000008
 buffer[2]=0x00000000
 buffer[3]=0x00000000
 buffer[4]=0x00000000
QTD(0xd0094de0) at 0x01089de0:
 next=0x01089cc0<> altnext=0x01089d80<>
 status=0x80000e00: toggle=1 bytes=0x0 ioc=0 c_page=0x0
   cerr=3 pid=2 stat=0x0
 buffer[0]=0x01091fc8
 buffer[1]=0x00000000
 buffer[2]=0x00000000
 buffer[3]=0x00000000
 buffer[4]=0x00000000
QTD(0xd0094cc0) at 0x01089cc0:
 next=0x01089d20<> altnext=0x01089d80<>
 status=0x80080d40: toggle=1 bytes=0x8 ioc=0 c_page=0x0
   cerr=3 pid=1 stat=0x40<HALTED>
 buffer[0]=0x014b8a3c
 buffer[1]=0x00000000
 buffer[2]=0x00000000
 buffer[3]=0x00000000
 buffer[4]=0x00000000
QTD(0xd0094d20) at 0x01089d20:
 next=0x01089d80<> altnext=0x01089d80<>
 status=0x80008c80: toggle=1 bytes=0x0 ioc=1 c_page=0x0
   cerr=3 pid=0 stat=0x80<ACTIVE>
 buffer[0]=0x00000000
 buffer[1]=0x00000000
 buffer[2]=0x00000000
 buffer[3]=0x00000000
 buffer[4]=0x00000000
QTD(0xd0094d80) at 0x01089d80:
 next=0x00000001<T> altnext=0x00000001<T>
 status=0x00000000: toggle=0 bytes=0x0 ioc=0 c_page=0x0
   cerr=0 pid=0 stat=0x0
 buffer[0]=0x00000000
 buffer[1]=0x00000000
 buffer[2]=0x00000000
 buffer[3]=0x00000000
 buffer[4]=0x00000000

Subsequent cmds fail similarly.  I don't see the issue and don't 
understand how to use the overlay qTD information to pinpoint the reason 
the controller is rejecting the request.

This happens w/ either of the 2 USB ports (1 port / controller):

ehci0: <IXP4XX Integrated USB 2.0 controller> on ixp0
ehci0: [GIANT-LOCKED]
ehci0: [ITHREAD]
usb0: EHCI version 1.0
usb0: stop timeout
usb0: set host controller mode
usb0 on ehci0
usb0: USB revision 2.0
uhub0: <Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1> on usb0
uhub0: 1 port with 1 removable, self powered
ehci1: <IXP4XX Integrated USB 2.0 controller> on ixp0
ehci1: [GIANT-LOCKED]
ehci1: [ITHREAD]
usb1: EHCI version 1.0
usb1: stop timeout
usb1: set host controller mode
usb1 on ehci1
usb1: USB revision 2.0
uhub1: <Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1> on usb1
uhub1: 1 port with 1 removable, self powered

    Sam




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?494598B0.9090501>