Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2019-06-26 Thread Philipp Zabel
On Mon, 2019-06-24 at 16:40 +0200, Philipp Zabel wrote:
> Hi,
> 
> On Mon, 2018-05-21 at 15:03 -0700, Curt Meyers wrote:
> > On 05/16/2018 04:55 AM, Mathias Nyman wrote:
> > > On 15.05.2018 12:22, Michael Tretter wrote:
> > > > Hi Mathias,
> > > > 
> > > > On Tue, 10 Apr 2018 18:22:03 +0300, Mathias Nyman wrote:
> > > > > On 09.04.2018 11:21, Michael Tretter wrote:
> > > > > > On Tue, 20 Feb 2018 15:29:28 +0200, Mathias Nyman wrote:
> > > > > > > On 16.02.2018 15:28, Michael Tretter wrote:
> > > > > > > > On Mon, 29 Jan 2018 14:02:57 +0200, Mathias Nyman wrote:
> > > > > > > > > On 19.01.2018 22:12, Philipp Zabel wrote:
> > > > > > > > > > On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
> > > > > > > > > >  wrote:
> > > > > > > > > > > I found the old thread and it sounds exactly like my 
> > > > > > > > > > > issue. 
> > > > > > > > > > > Different
> > > > > > > > > > > camera, but same xHCI controller.
> > > > > > > > > > 
> > > > > > > > > > I have exactly the same issue with the xHCI controller of 
> > > > > > > > > > my 
> > > > > > > > > > laptop and
> > > > > > > > > > "Oculus Sensor" USB3 isochronous mostly-UVC cameras:
> > > > > > > > > > 
> > > > > > > > > > 00:14.0 USB controller: Intel Corporation Wildcat Point-LP 
> > > > > > > > > > USB 
> > > > > > > > > > xHCI
> > > > > > > > > > Controller (rev 03) (prog-if 30 [XHCI])
> > > > > > > > > >     Subsystem: Lenovo Wildcat Point-LP USB xHCI 
> > > > > > > > > > Controller
> > > > > > > > > >     Flags: bus master, medium devsel, latency 0, IRQ 44
> > > > > > > > > >     Memory at f222 (64-bit, non-prefetchable) 
> > > > > > > > > > [size=64K]
> > > > > > > > > >     Capabilities: [70] Power Management version 2
> > > > > > > > > >     Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 
> > > > > > > > > > 64bit+
> > > > > > > > > >     Kernel driver in use: xhci_hcd
> > > > > > > > > >     Kernel modules: xhci_pci
> > > > > > > > > > 
> > > > > > > > > > T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 
> > > > > > > > > > MxCh= 0
> > > > > > > > > > D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
> > > > > > > > > > P:  Vendor=2833 ProdID=0211 Rev= 0.00
> > > > > > > > > > S:  Manufacturer=Oculus VR
> > > > > > > > > > S:  Product=Rift Sensor
> > > > > > > > > > S:  SerialNumber=WMTD3034300BCT
> > > > > > > > > > C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
> > > > > > > > > > A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
> > > > > > > > > > I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 
> > > > > > > > > > Driver=uvcvideo
> > > > > > > > > > E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
> > > > > > > > > > I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 
> > > > > > > > > > Driver=uvcvideo
> > > > > > > > > > I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 
> > > > > > > > > > Driver=uvcvideo
> > > > > > > > > > E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> > > > > > > > > > I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 
> > > > > > > > > > Driver=uvcvideo
> > > > > > > > > > E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> > > > > > > > > > 
> > > > > > > > > > Any USB2 or USB3 device that I plug in while the first 
> > > > > > > > > > camera 
> > > > > > > > > > is streaming in
> > > > > > > > > > altsetting 1 or 2 causes the bandwidth error. The same 
> > > > > > > > > > happens 
> > > > > > > > > > when I try to
> > > > > > > > > > change the altsetting on an isochronous endpoint of an 
> > > > > > > > > > already 
> > > > > > > > > > plugged device.
> > > > > > > > > > While the camera is in altsetting 0, other devices can be 
> > > > > > > > > > probed and work.
> > > > > > > > > > > For some tests, I changed the 
> > > > > > > > > > > xhci_change_max_exit_latency() 
> > > > > > > > > > > function
> > > > > > > > > > > to ignore the requested MEL and set the MEL to 0. Now the 
> > > > > > > > > > > USB 
> > > > > > > > > > > devices
> > > > > > > > > > > are detected correctly.
> > > > > > > > > > 
> > > > > > > > > > Exactly the same thing helps here, as well. With this hack, 
> > > > > > > > > > streaming from two
> > > > > > > > > > of those cameras at the same time works without any 
> > > > > > > > > > apparent 
> > > > > > > > > > problem:
> > > > > > > > > > 
> > > > > > > > > > --8<--
> > > > > > > > > > diff --git a/drivers/usb/host/xhci.c 
> > > > > > > > > > b/drivers/usb/host/xhci.c
> > > > > > > > > > index 297536c9fd00..3cb4a60d8822 100644
> > > > > > > > > > --- a/drivers/usb/host/xhci.c
> > > > > > > > > > +++ b/drivers/usb/host/xhci.c
> > > > > > > > > > @@ -4025,7 +4025,7 @@ static int __maybe_unused
> > > > > > > > > > xhci_change_max_exit_latency(struct xhci_hcd *xhci,
> > > > > > > > > >     ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
> > > > > > > > > >     slot_ctx = xhci_get_slot_ctx(xhci, 
> > > > > > > > > > command->in_ctx);
> > > > > > > > > >     slot_ctx->dev_info2 &= cpu_t

Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2019-06-24 Thread Philipp Zabel
Hi,

On Mon, 2018-05-21 at 15:03 -0700, Curt Meyers wrote:
> On 05/16/2018 04:55 AM, Mathias Nyman wrote:
> > On 15.05.2018 12:22, Michael Tretter wrote:
> > > Hi Mathias,
> > > 
> > > On Tue, 10 Apr 2018 18:22:03 +0300, Mathias Nyman wrote:
> > > > On 09.04.2018 11:21, Michael Tretter wrote:
> > > > > On Tue, 20 Feb 2018 15:29:28 +0200, Mathias Nyman wrote:
> > > > > > On 16.02.2018 15:28, Michael Tretter wrote:
> > > > > > > On Mon, 29 Jan 2018 14:02:57 +0200, Mathias Nyman wrote:
> > > > > > > > On 19.01.2018 22:12, Philipp Zabel wrote:
> > > > > > > > > On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
> > > > > > > > >  wrote:
> > > > > > > > > > I found the old thread and it sounds exactly like my issue. 
> > > > > > > > > > Different
> > > > > > > > > > camera, but same xHCI controller.
> > > > > > > > > 
> > > > > > > > > I have exactly the same issue with the xHCI controller of my 
> > > > > > > > > laptop and
> > > > > > > > > "Oculus Sensor" USB3 isochronous mostly-UVC cameras:
> > > > > > > > > 
> > > > > > > > > 00:14.0 USB controller: Intel Corporation Wildcat Point-LP 
> > > > > > > > > USB 
> > > > > > > > > xHCI
> > > > > > > > > Controller (rev 03) (prog-if 30 [XHCI])
> > > > > > > > >     Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
> > > > > > > > >     Flags: bus master, medium devsel, latency 0, IRQ 44
> > > > > > > > >     Memory at f222 (64-bit, non-prefetchable) 
> > > > > > > > > [size=64K]
> > > > > > > > >     Capabilities: [70] Power Management version 2
> > > > > > > > >     Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 
> > > > > > > > > 64bit+
> > > > > > > > >     Kernel driver in use: xhci_hcd
> > > > > > > > >     Kernel modules: xhci_pci
> > > > > > > > > 
> > > > > > > > > T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 
> > > > > > > > > MxCh= 0
> > > > > > > > > D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
> > > > > > > > > P:  Vendor=2833 ProdID=0211 Rev= 0.00
> > > > > > > > > S:  Manufacturer=Oculus VR
> > > > > > > > > S:  Product=Rift Sensor
> > > > > > > > > S:  SerialNumber=WMTD3034300BCT
> > > > > > > > > C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
> > > > > > > > > A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
> > > > > > > > > I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 
> > > > > > > > > Driver=uvcvideo
> > > > > > > > > E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
> > > > > > > > > I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 
> > > > > > > > > Driver=uvcvideo
> > > > > > > > > I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 
> > > > > > > > > Driver=uvcvideo
> > > > > > > > > E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> > > > > > > > > I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 
> > > > > > > > > Driver=uvcvideo
> > > > > > > > > E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> > > > > > > > > 
> > > > > > > > > Any USB2 or USB3 device that I plug in while the first camera 
> > > > > > > > > is streaming in
> > > > > > > > > altsetting 1 or 2 causes the bandwidth error. The same 
> > > > > > > > > happens 
> > > > > > > > > when I try to
> > > > > > > > > change the altsetting on an isochronous endpoint of an 
> > > > > > > > > already 
> > > > > > > > > plugged device.
> > > > > > > > > While the camera is in altsetting 0, other devices can be 
> > > > > > > > > probed and work.
> > > > > > > > > > For some tests, I changed the 
> > > > > > > > > > xhci_change_max_exit_latency() 
> > > > > > > > > > function
> > > > > > > > > > to ignore the requested MEL and set the MEL to 0. Now the 
> > > > > > > > > > USB 
> > > > > > > > > > devices
> > > > > > > > > > are detected correctly.
> > > > > > > > > 
> > > > > > > > > Exactly the same thing helps here, as well. With this hack, 
> > > > > > > > > streaming from two
> > > > > > > > > of those cameras at the same time works without any apparent 
> > > > > > > > > problem:
> > > > > > > > > 
> > > > > > > > > --8<--
> > > > > > > > > diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> > > > > > > > > index 297536c9fd00..3cb4a60d8822 100644
> > > > > > > > > --- a/drivers/usb/host/xhci.c
> > > > > > > > > +++ b/drivers/usb/host/xhci.c
> > > > > > > > > @@ -4025,7 +4025,7 @@ static int __maybe_unused
> > > > > > > > > xhci_change_max_exit_latency(struct xhci_hcd *xhci,
> > > > > > > > >     ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
> > > > > > > > >     slot_ctx = xhci_get_slot_ctx(xhci, 
> > > > > > > > > command->in_ctx);
> > > > > > > > >     slot_ctx->dev_info2 &= cpu_to_le32(~((u32) 
> > > > > > > > > MAX_EXIT));
> > > > > > > > > -   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
> > > > > > > > > +   slot_ctx->dev_info2 |= cpu_to_le32(0);
> > > > > > > > >     slot_ctx->dev_state = 0;
> > > > > > > > > 
> > > > > > > > >     xhci_dbg_trace(xhci, 
> > > > > > > > > trace_xhci_dbg_context_change,
> 

Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-06-27 Thread Michael Tretter
Hi Zhengjun,

On Wed, 16 May 2018 14:55:55 +0300, Mathias Nyman wrote:
> On 15.05.2018 12:22, Michael Tretter wrote:
> > Hi Mathias,
> > 
> > On Tue, 10 Apr 2018 18:22:03 +0300, Mathias Nyman wrote:  
> >> On 09.04.2018 11:21, Michael Tretter wrote:  
> >>> On Tue, 20 Feb 2018 15:29:28 +0200, Mathias Nyman wrote:  
>  On 16.02.2018 15:28, Michael Tretter wrote:  
> > On Mon, 29 Jan 2018 14:02:57 +0200, Mathias Nyman wrote:  
> >> On 19.01.2018 22:12, Philipp Zabel wrote:  
> >>> On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
> >>>  wrote:  
>  I found the old thread and it sounds exactly like my issue. Different
>  camera, but same xHCI controller.  
> >>>
> >>> I have exactly the same issue with the xHCI controller of my laptop 
> >>> and
> >>> "Oculus Sensor" USB3 isochronous mostly-UVC cameras:
> >>>
> >>> 00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI
> >>> Controller (rev 03) (prog-if 30 [XHCI])
> >>> Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
> >>> Flags: bus master, medium devsel, latency 0, IRQ 44
> >>> Memory at f222 (64-bit, non-prefetchable) [size=64K]
> >>> Capabilities: [70] Power Management version 2
> >>> Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
> >>> Kernel driver in use: xhci_hcd
> >>> Kernel modules: xhci_pci
> >>>
> >>> T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
> >>> D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
> >>> P:  Vendor=2833 ProdID=0211 Rev= 0.00
> >>> S:  Manufacturer=Oculus VR
> >>> S:  Product=Rift Sensor
> >>> S:  SerialNumber=WMTD3034300BCT
> >>> C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
> >>> A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
> >>> I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 Driver=uvcvideo
> >>> E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
> >>> I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> >>> I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> >>> E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> >>> I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> >>> E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> >>>
> >>> Any USB2 or USB3 device that I plug in while the first camera is 
> >>> streaming in
> >>> altsetting 1 or 2 causes the bandwidth error. The same happens when I 
> >>> try to
> >>> change the altsetting on an isochronous endpoint of an already 
> >>> plugged device.
> >>> While the camera is in altsetting 0, other devices can be probed and 
> >>> work.
> >>>
>  For some tests, I changed the xhci_change_max_exit_latency() function
>  to ignore the requested MEL and set the MEL to 0. Now the USB devices
>  are detected correctly.  
> >>>
> >>> Exactly the same thing helps here, as well. With this hack, streaming 
> >>> from two
> >>> of those cameras at the same time works without any apparent problem:
> >>>
> >>> --8<--
> >>> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> >>> index 297536c9fd00..3cb4a60d8822 100644
> >>> --- a/drivers/usb/host/xhci.c
> >>> +++ b/drivers/usb/host/xhci.c
> >>> @@ -4025,7 +4025,7 @@ static int __maybe_unused
> >>> xhci_change_max_exit_latency(struct xhci_hcd *xhci,
> >>> ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
> >>> slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
> >>> slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
> >>> -   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
> >>> +   slot_ctx->dev_info2 |= cpu_to_le32(0);
> >>> slot_ctx->dev_state = 0;
> >>>
> >>> xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,  
> >>> -->8--  
> >>>
> >>
> >> Ok, back after a week on sickleave.
> >> I'm getting the magewell capture device and try to reproduce this 
> >> myself.  
> >
> > I don't think that the issue is specific to the magewell capture
> > device, but rather should be reproducible with any USB3 device with
> > isochronous endpoints.
> >
> > Anyway, please tell me, if I can somehow help you to get this properly
> > fixed.  
> 
>  I'm currently looking at device reset issues after suspend, but this is 
>  on the
>  todo list.
> 
>  I got a magewell device, (haven't unboxed it yet)
>  Maybe step by step instructions to reproduce it could speed things up.  
> >>>
> >>> Did you have time to unbox and test the Magewell device?
> >>>  
> >>
> >> This seems to always get postponed due to other work,
> >>
> >> I just tried it out once today on a nearby

Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-05-21 Thread Curt Meyers


On 05/16/2018 04:55 AM, Mathias Nyman wrote:

On 15.05.2018 12:22, Michael Tretter wrote:

Hi Mathias,

On Tue, 10 Apr 2018 18:22:03 +0300, Mathias Nyman wrote:

On 09.04.2018 11:21, Michael Tretter wrote:

On Tue, 20 Feb 2018 15:29:28 +0200, Mathias Nyman wrote:

On 16.02.2018 15:28, Michael Tretter wrote:

On Mon, 29 Jan 2018 14:02:57 +0200, Mathias Nyman wrote:

On 19.01.2018 22:12, Philipp Zabel wrote:

On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
 wrote:
I found the old thread and it sounds exactly like my issue. 
Different

camera, but same xHCI controller.


I have exactly the same issue with the xHCI controller of my 
laptop and

"Oculus Sensor" USB3 isochronous mostly-UVC cameras:

00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB 
xHCI

Controller (rev 03) (prog-if 30 [XHCI])
    Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
    Flags: bus master, medium devsel, latency 0, IRQ 44
    Memory at f222 (64-bit, non-prefetchable) [size=64K]
    Capabilities: [70] Power Management version 2
    Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
    Kernel driver in use: xhci_hcd
    Kernel modules: xhci_pci

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
P:  Vendor=2833 ProdID=0211 Rev= 0.00
S:  Manufacturer=Oculus VR
S:  Product=Rift Sensor
S:  SerialNumber=WMTD3034300BCT
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 
Driver=uvcvideo

E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 
Driver=uvcvideo
I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 
Driver=uvcvideo

E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 
Driver=uvcvideo

E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us

Any USB2 or USB3 device that I plug in while the first camera 
is streaming in
altsetting 1 or 2 causes the bandwidth error. The same happens 
when I try to
change the altsetting on an isochronous endpoint of an already 
plugged device.
While the camera is in altsetting 0, other devices can be 
probed and work.
For some tests, I changed the xhci_change_max_exit_latency() 
function
to ignore the requested MEL and set the MEL to 0. Now the USB 
devices

are detected correctly.


Exactly the same thing helps here, as well. With this hack, 
streaming from two
of those cameras at the same time works without any apparent 
problem:


--8<--
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 297536c9fd00..3cb4a60d8822 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -4025,7 +4025,7 @@ static int __maybe_unused
xhci_change_max_exit_latency(struct xhci_hcd *xhci,
    ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
    slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
    slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
-   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
+   slot_ctx->dev_info2 |= cpu_to_le32(0);
    slot_ctx->dev_state = 0;

    xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
-->8--


Ok, back after a week on sickleave.
I'm getting the magewell capture device and try to reproduce 
this myself.


I don't think that the issue is specific to the magewell capture
device, but rather should be reproducible with any USB3 device with
isochronous endpoints.

Anyway, please tell me, if I can somehow help you to get this 
properly

fixed.


I'm currently looking at device reset issues after suspend, but 
this is on the

todo list.

I got a magewell device, (haven't unboxed it yet)
Maybe step by step instructions to reproduce it could speed things 
up.


Did you have time to unbox and test the Magewell device?


This seems to always get postponed due to other work,

I just tried it out once today on a nearby laptop, gst-launch seems 
to work
but couldn't reproduce the bandwidth issue when connecting a second 
usb device.


But I haven't really tested it out properly yet.


I just tested with 4.17-rc5 and the behavior remains the same. Is there
anything else I could do to get this fixed?



Briefed Zhengjun about this issue, one more brain on it.
Adding him to the thread.



Isochronous has been a problem for me for 2 years. I am using a rare 3D 
stereo camera from Etron and had Isochronous problems and recently I 
have discovered that the Logitech Brio also has what appears to be the 
same issue. The Logitech Brio is the first Logitech USB3 camera that 
uses Isochronous mode and you can do a search and find that linux users 
are having problems with it.


My suggestion would be for the USB3 team to order several Logitech Brio 
cameras and debug the Isochronous problems. My company paid for someone 
to try and debug the problem and we came up w

Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-05-16 Thread Mathias Nyman

On 15.05.2018 12:22, Michael Tretter wrote:

Hi Mathias,

On Tue, 10 Apr 2018 18:22:03 +0300, Mathias Nyman wrote:

On 09.04.2018 11:21, Michael Tretter wrote:

On Tue, 20 Feb 2018 15:29:28 +0200, Mathias Nyman wrote:

On 16.02.2018 15:28, Michael Tretter wrote:

On Mon, 29 Jan 2018 14:02:57 +0200, Mathias Nyman wrote:

On 19.01.2018 22:12, Philipp Zabel wrote:

On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
 wrote:

I found the old thread and it sounds exactly like my issue. Different
camera, but same xHCI controller.


I have exactly the same issue with the xHCI controller of my laptop and
"Oculus Sensor" USB3 isochronous mostly-UVC cameras:

00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI
Controller (rev 03) (prog-if 30 [XHCI])
Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
Flags: bus master, medium devsel, latency 0, IRQ 44
Memory at f222 (64-bit, non-prefetchable) [size=64K]
Capabilities: [70] Power Management version 2
Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
Kernel driver in use: xhci_hcd
Kernel modules: xhci_pci

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
P:  Vendor=2833 ProdID=0211 Rev= 0.00
S:  Manufacturer=Oculus VR
S:  Product=Rift Sensor
S:  SerialNumber=WMTD3034300BCT
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 Driver=uvcvideo
E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us

Any USB2 or USB3 device that I plug in while the first camera is streaming in
altsetting 1 or 2 causes the bandwidth error. The same happens when I try to
change the altsetting on an isochronous endpoint of an already plugged device.
While the camera is in altsetting 0, other devices can be probed and work.
 

For some tests, I changed the xhci_change_max_exit_latency() function
to ignore the requested MEL and set the MEL to 0. Now the USB devices
are detected correctly.


Exactly the same thing helps here, as well. With this hack, streaming from two
of those cameras at the same time works without any apparent problem:

--8<--
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 297536c9fd00..3cb4a60d8822 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -4025,7 +4025,7 @@ static int __maybe_unused
xhci_change_max_exit_latency(struct xhci_hcd *xhci,
ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
-   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
+   slot_ctx->dev_info2 |= cpu_to_le32(0);
slot_ctx->dev_state = 0;

xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
-->8--
 


Ok, back after a week on sickleave.
I'm getting the magewell capture device and try to reproduce this myself.


I don't think that the issue is specific to the magewell capture
device, but rather should be reproducible with any USB3 device with
isochronous endpoints.

Anyway, please tell me, if I can somehow help you to get this properly
fixed.


I'm currently looking at device reset issues after suspend, but this is on the
todo list.

I got a magewell device, (haven't unboxed it yet)
Maybe step by step instructions to reproduce it could speed things up.


Did you have time to unbox and test the Magewell device?
   


This seems to always get postponed due to other work,

I just tried it out once today on a nearby laptop, gst-launch seems to work
but couldn't reproduce the bandwidth issue when connecting a second usb device.

But I haven't really tested it out properly yet.


I just tested with 4.17-rc5 and the behavior remains the same. Is there
anything else I could do to get this fixed?



Briefed Zhengjun about this issue, one more brain on it.
Adding him to the thread.

-Mathias
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-05-15 Thread Michael Tretter
Hi Mathias,

On Tue, 10 Apr 2018 18:22:03 +0300, Mathias Nyman wrote:
> On 09.04.2018 11:21, Michael Tretter wrote:
> > On Tue, 20 Feb 2018 15:29:28 +0200, Mathias Nyman wrote:  
> >> On 16.02.2018 15:28, Michael Tretter wrote:  
> >>> On Mon, 29 Jan 2018 14:02:57 +0200, Mathias Nyman wrote:  
>  On 19.01.2018 22:12, Philipp Zabel wrote:  
> > On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
> >  wrote:  
> >> I found the old thread and it sounds exactly like my issue. Different
> >> camera, but same xHCI controller.  
> >
> > I have exactly the same issue with the xHCI controller of my laptop and
> > "Oculus Sensor" USB3 isochronous mostly-UVC cameras:
> >
> > 00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI
> > Controller (rev 03) (prog-if 30 [XHCI])
> >Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
> >Flags: bus master, medium devsel, latency 0, IRQ 44
> >Memory at f222 (64-bit, non-prefetchable) [size=64K]
> >Capabilities: [70] Power Management version 2
> >Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
> >Kernel driver in use: xhci_hcd
> >Kernel modules: xhci_pci
> >
> > T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
> > D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
> > P:  Vendor=2833 ProdID=0211 Rev= 0.00
> > S:  Manufacturer=Oculus VR
> > S:  Product=Rift Sensor
> > S:  SerialNumber=WMTD3034300BCT
> > C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
> > A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
> > I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 Driver=uvcvideo
> > E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
> > I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> > I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> > E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> > I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> > E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> >
> > Any USB2 or USB3 device that I plug in while the first camera is 
> > streaming in
> > altsetting 1 or 2 causes the bandwidth error. The same happens when I 
> > try to
> > change the altsetting on an isochronous endpoint of an already plugged 
> > device.
> > While the camera is in altsetting 0, other devices can be probed and 
> > work.
> > 
> >> For some tests, I changed the xhci_change_max_exit_latency() function
> >> to ignore the requested MEL and set the MEL to 0. Now the USB devices
> >> are detected correctly.  
> >
> > Exactly the same thing helps here, as well. With this hack, streaming 
> > from two
> > of those cameras at the same time works without any apparent problem:
> >
> > --8<--
> > diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> > index 297536c9fd00..3cb4a60d8822 100644
> > --- a/drivers/usb/host/xhci.c
> > +++ b/drivers/usb/host/xhci.c
> > @@ -4025,7 +4025,7 @@ static int __maybe_unused
> > xhci_change_max_exit_latency(struct xhci_hcd *xhci,
> >ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
> >slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
> >slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
> > -   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
> > +   slot_ctx->dev_info2 |= cpu_to_le32(0);
> >slot_ctx->dev_state = 0;
> >
> >xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,  
> > -->8--  
> > 
> 
>  Ok, back after a week on sickleave.
>  I'm getting the magewell capture device and try to reproduce this 
>  myself.  
> >>>
> >>> I don't think that the issue is specific to the magewell capture
> >>> device, but rather should be reproducible with any USB3 device with
> >>> isochronous endpoints.
> >>>
> >>> Anyway, please tell me, if I can somehow help you to get this properly
> >>> fixed.  
> >>
> >> I'm currently looking at device reset issues after suspend, but this is on 
> >> the
> >> todo list.
> >>
> >> I got a magewell device, (haven't unboxed it yet)
> >> Maybe step by step instructions to reproduce it could speed things up.  
> > 
> > Did you have time to unbox and test the Magewell device?
> >   
> 
> This seems to always get postponed due to other work,
> 
> I just tried it out once today on a nearby laptop, gst-launch seems to work
> but couldn't reproduce the bandwidth issue when connecting a second usb 
> device.
> 
> But I haven't really tested it out properly yet.

I just tested with 4.17-rc5 and the behavior remains the same. Is there
anything else I could do to get this fixed?

Michael
--
To unsubscribe from this list: send the line "unsubscribe lin

Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-04-10 Thread Mathias Nyman

On 09.04.2018 11:21, Michael Tretter wrote:

On Tue, 20 Feb 2018 15:29:28 +0200, Mathias Nyman wrote:

On 16.02.2018 15:28, Michael Tretter wrote:

On Mon, 29 Jan 2018 14:02:57 +0200, Mathias Nyman wrote:

On 19.01.2018 22:12, Philipp Zabel wrote:

On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
 wrote:

I found the old thread and it sounds exactly like my issue. Different
camera, but same xHCI controller.


I have exactly the same issue with the xHCI controller of my laptop and
"Oculus Sensor" USB3 isochronous mostly-UVC cameras:

00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI
Controller (rev 03) (prog-if 30 [XHCI])
   Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
   Flags: bus master, medium devsel, latency 0, IRQ 44
   Memory at f222 (64-bit, non-prefetchable) [size=64K]
   Capabilities: [70] Power Management version 2
   Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
   Kernel driver in use: xhci_hcd
   Kernel modules: xhci_pci

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
P:  Vendor=2833 ProdID=0211 Rev= 0.00
S:  Manufacturer=Oculus VR
S:  Product=Rift Sensor
S:  SerialNumber=WMTD3034300BCT
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 Driver=uvcvideo
E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us

Any USB2 or USB3 device that I plug in while the first camera is streaming in
altsetting 1 or 2 causes the bandwidth error. The same happens when I try to
change the altsetting on an isochronous endpoint of an already plugged device.
While the camera is in altsetting 0, other devices can be probed and work.
  

For some tests, I changed the xhci_change_max_exit_latency() function
to ignore the requested MEL and set the MEL to 0. Now the USB devices
are detected correctly.


Exactly the same thing helps here, as well. With this hack, streaming from two
of those cameras at the same time works without any apparent problem:

--8<--
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 297536c9fd00..3cb4a60d8822 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -4025,7 +4025,7 @@ static int __maybe_unused
xhci_change_max_exit_latency(struct xhci_hcd *xhci,
   ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
   slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
   slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
-   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
+   slot_ctx->dev_info2 |= cpu_to_le32(0);
   slot_ctx->dev_state = 0;

   xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
-->8--
  


Ok, back after a week on sickleave.
I'm getting the magewell capture device and try to reproduce this myself.


I don't think that the issue is specific to the magewell capture
device, but rather should be reproducible with any USB3 device with
isochronous endpoints.

Anyway, please tell me, if I can somehow help you to get this properly
fixed.


I'm currently looking at device reset issues after suspend, but this is on the
todo list.

I got a magewell device, (haven't unboxed it yet)
Maybe step by step instructions to reproduce it could speed things up.


Did you have time to unbox and test the Magewell device?



This seems to always get postponed due to other work,

I just tried it out once today on a nearby laptop, gst-launch seems to work
but couldn't reproduce the bandwidth issue when connecting a second usb device.

But I haven't really tested it out properly yet.

-Mathias  


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-04-09 Thread Michael Tretter
On Tue, 20 Feb 2018 15:29:28 +0200, Mathias Nyman wrote:
> On 16.02.2018 15:28, Michael Tretter wrote:
> > On Mon, 29 Jan 2018 14:02:57 +0200, Mathias Nyman wrote:  
> >> On 19.01.2018 22:12, Philipp Zabel wrote:  
> >>> On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
> >>>  wrote:  
>  I found the old thread and it sounds exactly like my issue. Different
>  camera, but same xHCI controller.  
> >>>
> >>> I have exactly the same issue with the xHCI controller of my laptop and
> >>> "Oculus Sensor" USB3 isochronous mostly-UVC cameras:
> >>>
> >>> 00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI
> >>> Controller (rev 03) (prog-if 30 [XHCI])
> >>>   Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
> >>>   Flags: bus master, medium devsel, latency 0, IRQ 44
> >>>   Memory at f222 (64-bit, non-prefetchable) [size=64K]
> >>>   Capabilities: [70] Power Management version 2
> >>>   Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
> >>>   Kernel driver in use: xhci_hcd
> >>>   Kernel modules: xhci_pci
> >>>
> >>> T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
> >>> D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
> >>> P:  Vendor=2833 ProdID=0211 Rev= 0.00
> >>> S:  Manufacturer=Oculus VR
> >>> S:  Product=Rift Sensor
> >>> S:  SerialNumber=WMTD3034300BCT
> >>> C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
> >>> A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
> >>> I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 Driver=uvcvideo
> >>> E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
> >>> I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> >>> I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> >>> E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> >>> I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> >>> E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> >>>
> >>> Any USB2 or USB3 device that I plug in while the first camera is 
> >>> streaming in
> >>> altsetting 1 or 2 causes the bandwidth error. The same happens when I try 
> >>> to
> >>> change the altsetting on an isochronous endpoint of an already plugged 
> >>> device.
> >>> While the camera is in altsetting 0, other devices can be probed and work.
> >>>  
>  For some tests, I changed the xhci_change_max_exit_latency() function
>  to ignore the requested MEL and set the MEL to 0. Now the USB devices
>  are detected correctly.  
> >>>
> >>> Exactly the same thing helps here, as well. With this hack, streaming 
> >>> from two
> >>> of those cameras at the same time works without any apparent problem:
> >>>
> >>> --8<--
> >>> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> >>> index 297536c9fd00..3cb4a60d8822 100644
> >>> --- a/drivers/usb/host/xhci.c
> >>> +++ b/drivers/usb/host/xhci.c
> >>> @@ -4025,7 +4025,7 @@ static int __maybe_unused
> >>> xhci_change_max_exit_latency(struct xhci_hcd *xhci,
> >>>   ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
> >>>   slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
> >>>   slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
> >>> -   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
> >>> +   slot_ctx->dev_info2 |= cpu_to_le32(0);
> >>>   slot_ctx->dev_state = 0;
> >>>
> >>>   xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,  
> >>> -->8--  
> >>>  
> >>
> >> Ok, back after a week on sickleave.
> >> I'm getting the magewell capture device and try to reproduce this myself.  
> > 
> > I don't think that the issue is specific to the magewell capture
> > device, but rather should be reproducible with any USB3 device with
> > isochronous endpoints.
> > 
> > Anyway, please tell me, if I can somehow help you to get this properly
> > fixed.  
> 
> I'm currently looking at device reset issues after suspend, but this is on the
> todo list.
> 
> I got a magewell device, (haven't unboxed it yet)
> Maybe step by step instructions to reproduce it could speed things up.

Did you have time to unbox and test the Magewell device?

Michael
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-02-20 Thread Michael Tretter
Hi Mathias,

On Tue, 20 Feb 2018 15:29:28 +0200, Mathias Nyman wrote:
> On 16.02.2018 15:28, Michael Tretter wrote:
> > Hi Mathias,
> > 
> > On Mon, 29 Jan 2018 14:02:57 +0200, Mathias Nyman wrote:  
> >> On 19.01.2018 22:12, Philipp Zabel wrote:  
> >>> Hi,
> >>>
> >>> On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
> >>>  wrote:  
>  I found the old thread and it sounds exactly like my issue. Different
>  camera, but same xHCI controller.  
> >>>
> >>> I have exactly the same issue with the xHCI controller of my laptop and
> >>> "Oculus Sensor" USB3 isochronous mostly-UVC cameras:
> >>>
> >>> 00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI
> >>> Controller (rev 03) (prog-if 30 [XHCI])
> >>>   Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
> >>>   Flags: bus master, medium devsel, latency 0, IRQ 44
> >>>   Memory at f222 (64-bit, non-prefetchable) [size=64K]
> >>>   Capabilities: [70] Power Management version 2
> >>>   Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
> >>>   Kernel driver in use: xhci_hcd
> >>>   Kernel modules: xhci_pci
> >>>
> >>> T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
> >>> D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
> >>> P:  Vendor=2833 ProdID=0211 Rev= 0.00
> >>> S:  Manufacturer=Oculus VR
> >>> S:  Product=Rift Sensor
> >>> S:  SerialNumber=WMTD3034300BCT
> >>> C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
> >>> A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
> >>> I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 Driver=uvcvideo
> >>> E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
> >>> I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> >>> I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> >>> E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> >>> I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> >>> E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> >>>
> >>> Any USB2 or USB3 device that I plug in while the first camera is 
> >>> streaming in
> >>> altsetting 1 or 2 causes the bandwidth error. The same happens when I try 
> >>> to
> >>> change the altsetting on an isochronous endpoint of an already plugged 
> >>> device.
> >>> While the camera is in altsetting 0, other devices can be probed and work.
> >>>  
>  For some tests, I changed the xhci_change_max_exit_latency() function
>  to ignore the requested MEL and set the MEL to 0. Now the USB devices
>  are detected correctly.  
> >>>
> >>> Exactly the same thing helps here, as well. With this hack, streaming 
> >>> from two
> >>> of those cameras at the same time works without any apparent problem:
> >>>
> >>> --8<--
> >>> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> >>> index 297536c9fd00..3cb4a60d8822 100644
> >>> --- a/drivers/usb/host/xhci.c
> >>> +++ b/drivers/usb/host/xhci.c
> >>> @@ -4025,7 +4025,7 @@ static int __maybe_unused
> >>> xhci_change_max_exit_latency(struct xhci_hcd *xhci,
> >>>   ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
> >>>   slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
> >>>   slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
> >>> -   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
> >>> +   slot_ctx->dev_info2 |= cpu_to_le32(0);
> >>>   slot_ctx->dev_state = 0;
> >>>
> >>>   xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,  
> >>> -->8--  
> >>>  
> >>
> >> Ok, back after a week on sickleave.
> >> I'm getting the magewell capture device and try to reproduce this myself.  
> > 
> > I don't think that the issue is specific to the magewell capture
> > device, but rather should be reproducible with any USB3 device with
> > isochronous endpoints.
> > 
> > Anyway, please tell me, if I can somehow help you to get this properly
> > fixed.  
> 
> I'm currently looking at device reset issues after suspend, but this is on the
> todo list.
> 
> I got a magewell device, (haven't unboxed it yet)
> Maybe step by step instructions to reproduce it could speed things up.

Here are the step by step instructions:

1. Connect Magewell device to USB 3.0 port.

2. Start using the created audio input to configure the isoch endpoint.
I use pulseaudio (which should autodetect the device) and GStreamer for
that, but anything should work.

gst-launch-1.0 \
pulsesrc 
device='alsa_input.usb-Magewell_XI100DUSB-HDMI_A201170218035-02.analog-stereo' 
! \
fakesink

3. Connect another USB device, e.g., a USB Stick, but it does not
matter, to another port of the same controller.

Expected behavior: 

usb 3-1: new high-speed USB device number 6 using xhci_hcd
usb 3-1: New USB device found, idVendor=0951, idProduct=1665 
usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-1: Product: DataTraveler 2.0
usb 3-1: Ma

Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-02-20 Thread Mathias Nyman

On 16.02.2018 15:28, Michael Tretter wrote:

Hi Mathias,

On Mon, 29 Jan 2018 14:02:57 +0200, Mathias Nyman wrote:

On 19.01.2018 22:12, Philipp Zabel wrote:

Hi,

On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
 wrote:

I found the old thread and it sounds exactly like my issue. Different
camera, but same xHCI controller.


I have exactly the same issue with the xHCI controller of my laptop and
"Oculus Sensor" USB3 isochronous mostly-UVC cameras:

00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI
Controller (rev 03) (prog-if 30 [XHCI])
  Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
  Flags: bus master, medium devsel, latency 0, IRQ 44
  Memory at f222 (64-bit, non-prefetchable) [size=64K]
  Capabilities: [70] Power Management version 2
  Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
  Kernel driver in use: xhci_hcd
  Kernel modules: xhci_pci

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
P:  Vendor=2833 ProdID=0211 Rev= 0.00
S:  Manufacturer=Oculus VR
S:  Product=Rift Sensor
S:  SerialNumber=WMTD3034300BCT
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 Driver=uvcvideo
E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us

Any USB2 or USB3 device that I plug in while the first camera is streaming in
altsetting 1 or 2 causes the bandwidth error. The same happens when I try to
change the altsetting on an isochronous endpoint of an already plugged device.
While the camera is in altsetting 0, other devices can be probed and work.
   

For some tests, I changed the xhci_change_max_exit_latency() function
to ignore the requested MEL and set the MEL to 0. Now the USB devices
are detected correctly.


Exactly the same thing helps here, as well. With this hack, streaming from two
of those cameras at the same time works without any apparent problem:

--8<--
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 297536c9fd00..3cb4a60d8822 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -4025,7 +4025,7 @@ static int __maybe_unused
xhci_change_max_exit_latency(struct xhci_hcd *xhci,
  ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
  slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
  slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
-   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
+   slot_ctx->dev_info2 |= cpu_to_le32(0);
  slot_ctx->dev_state = 0;

  xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
-->8--
   


Ok, back after a week on sickleave.
I'm getting the magewell capture device and try to reproduce this myself.


I don't think that the issue is specific to the magewell capture
device, but rather should be reproducible with any USB3 device with
isochronous endpoints.

Anyway, please tell me, if I can somehow help you to get this properly
fixed.


I'm currently looking at device reset issues after suspend, but this is on the
todo list.

I got a magewell device, (haven't unboxed it yet)
Maybe step by step instructions to reproduce it could speed things up.

Thanks
Mathias
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-02-16 Thread Michael Tretter
Hi Mathias,

On Mon, 29 Jan 2018 14:02:57 +0200, Mathias Nyman wrote:
> On 19.01.2018 22:12, Philipp Zabel wrote:
> > Hi,
> > 
> > On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
> >  wrote:  
> >> I found the old thread and it sounds exactly like my issue. Different
> >> camera, but same xHCI controller.  
> > 
> > I have exactly the same issue with the xHCI controller of my laptop and
> > "Oculus Sensor" USB3 isochronous mostly-UVC cameras:
> > 
> > 00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI
> > Controller (rev 03) (prog-if 30 [XHCI])
> >  Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
> >  Flags: bus master, medium devsel, latency 0, IRQ 44
> >  Memory at f222 (64-bit, non-prefetchable) [size=64K]
> >  Capabilities: [70] Power Management version 2
> >  Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
> >  Kernel driver in use: xhci_hcd
> >  Kernel modules: xhci_pci
> > 
> > T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
> > D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
> > P:  Vendor=2833 ProdID=0211 Rev= 0.00
> > S:  Manufacturer=Oculus VR
> > S:  Product=Rift Sensor
> > S:  SerialNumber=WMTD3034300BCT
> > C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
> > A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
> > I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 Driver=uvcvideo
> > E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
> > I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> > I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> > E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> > I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
> > E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
> > 
> > Any USB2 or USB3 device that I plug in while the first camera is streaming 
> > in
> > altsetting 1 or 2 causes the bandwidth error. The same happens when I try to
> > change the altsetting on an isochronous endpoint of an already plugged 
> > device.
> > While the camera is in altsetting 0, other devices can be probed and work.
> >   
> >> For some tests, I changed the xhci_change_max_exit_latency() function
> >> to ignore the requested MEL and set the MEL to 0. Now the USB devices
> >> are detected correctly.  
> > 
> > Exactly the same thing helps here, as well. With this hack, streaming from 
> > two
> > of those cameras at the same time works without any apparent problem:
> > 
> > --8<--
> > diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> > index 297536c9fd00..3cb4a60d8822 100644
> > --- a/drivers/usb/host/xhci.c
> > +++ b/drivers/usb/host/xhci.c
> > @@ -4025,7 +4025,7 @@ static int __maybe_unused
> > xhci_change_max_exit_latency(struct xhci_hcd *xhci,
> >  ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
> >  slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
> >  slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
> > -   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
> > +   slot_ctx->dev_info2 |= cpu_to_le32(0);
> >  slot_ctx->dev_state = 0;
> > 
> >  xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,  
> > -->8--  
> >   
> 
> Ok, back after a week on sickleave.
> I'm getting the magewell capture device and try to reproduce this myself.

I don't think that the issue is specific to the magewell capture
device, but rather should be reproducible with any USB3 device with
isochronous endpoints.

Anyway, please tell me, if I can somehow help you to get this properly
fixed.

Michael
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-01-29 Thread Mathias Nyman

On 19.01.2018 22:12, Philipp Zabel wrote:

Hi,

On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
 wrote:

I found the old thread and it sounds exactly like my issue. Different
camera, but same xHCI controller.


I have exactly the same issue with the xHCI controller of my laptop and
"Oculus Sensor" USB3 isochronous mostly-UVC cameras:

00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI
Controller (rev 03) (prog-if 30 [XHCI])
 Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
 Flags: bus master, medium devsel, latency 0, IRQ 44
 Memory at f222 (64-bit, non-prefetchable) [size=64K]
 Capabilities: [70] Power Management version 2
 Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
 Kernel driver in use: xhci_hcd
 Kernel modules: xhci_pci

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
P:  Vendor=2833 ProdID=0211 Rev= 0.00
S:  Manufacturer=Oculus VR
S:  Product=Rift Sensor
S:  SerialNumber=WMTD3034300BCT
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 Driver=uvcvideo
E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us

Any USB2 or USB3 device that I plug in while the first camera is streaming in
altsetting 1 or 2 causes the bandwidth error. The same happens when I try to
change the altsetting on an isochronous endpoint of an already plugged device.
While the camera is in altsetting 0, other devices can be probed and work.


For some tests, I changed the xhci_change_max_exit_latency() function
to ignore the requested MEL and set the MEL to 0. Now the USB devices
are detected correctly.


Exactly the same thing helps here, as well. With this hack, streaming from two
of those cameras at the same time works without any apparent problem:

--8<--
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 297536c9fd00..3cb4a60d8822 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -4025,7 +4025,7 @@ static int __maybe_unused
xhci_change_max_exit_latency(struct xhci_hcd *xhci,
 ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
 slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
 slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
-   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
+   slot_ctx->dev_info2 |= cpu_to_le32(0);
 slot_ctx->dev_state = 0;

 xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
-->8--



Ok, back after a week on sickleave.
I'm getting the magewell capture device and try to reproduce this myself.

-Mathias
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-01-19 Thread Philipp Zabel
Hi,

On Fri, Jan 19, 2018 at 2:10 PM, Michael Tretter
 wrote:
> I found the old thread and it sounds exactly like my issue. Different
> camera, but same xHCI controller.

I have exactly the same issue with the xHCI controller of my laptop and
"Oculus Sensor" USB3 isochronous mostly-UVC cameras:

00:14.0 USB controller: Intel Corporation Wildcat Point-LP USB xHCI
Controller (rev 03) (prog-if 30 [XHCI])
Subsystem: Lenovo Wildcat Point-LP USB xHCI Controller
Flags: bus master, medium devsel, latency 0, IRQ 44
Memory at f222 (64-bit, non-prefetchable) [size=64K]
Capabilities: [70] Power Management version 2
Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
Kernel driver in use: xhci_hcd
Kernel modules: xhci_pci

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
P:  Vendor=2833 ProdID=0211 Rev= 0.00
S:  Manufacturer=Oculus VR
S:  Product=Rift Sensor
S:  SerialNumber=WMTD3034300BCT
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=800mA
A:  FirstIf#= 0 IfCount= 2 Cls=ff(vend.) Sub=03 Prot=00
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=00 Driver=uvcvideo
E:  Ad=83(I) Atr=03(Int.) MxPS=  32 Ivl=128ms
I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
I:  If#= 1 Alt= 1 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
I:  If#= 1 Alt= 2 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us

Any USB2 or USB3 device that I plug in while the first camera is streaming in
altsetting 1 or 2 causes the bandwidth error. The same happens when I try to
change the altsetting on an isochronous endpoint of an already plugged device.
While the camera is in altsetting 0, other devices can be probed and work.

> For some tests, I changed the xhci_change_max_exit_latency() function
> to ignore the requested MEL and set the MEL to 0. Now the USB devices
> are detected correctly.

Exactly the same thing helps here, as well. With this hack, streaming from two
of those cameras at the same time works without any apparent problem:

--8<--
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 297536c9fd00..3cb4a60d8822 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -4025,7 +4025,7 @@ static int __maybe_unused
xhci_change_max_exit_latency(struct xhci_hcd *xhci,
ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
slot_ctx = xhci_get_slot_ctx(xhci, command->in_ctx);
slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
-   slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
+   slot_ctx->dev_info2 |= cpu_to_le32(0);
slot_ctx->dev_state = 0;

xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
-->8--

regards
Philipp
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-01-19 Thread Michael Tretter
On Thu, 18 Jan 2018 17:53:24 +0200, Mathias Nyman wrote:
> On 17.01.2018 18:46, Michael Tretter wrote:
> > Hello,
> > 
> > I am using a Magewell XI100DUSB-HDMI frame grabber which by itself works
> > fine. However, I get a "Not enough bandwidth for new device state."
> > error for any other USB device that is plugged after the frame grabber.
> > This error is caused by the xHC sending a Bandwidth Error for
> > the Configure Endpoint command during xhci_check_bandwidth(). I
> > tested it with a USB-storage device (high speed and SuperSpeed) and a
> > USB 3.0 hub, but there is no difference. If I plug the frame grabber
> > after the other device, both work fine.
> > 
> > The error only occurs, if Pulseaudio opened the device, which selects
> > an alternate interface for the AudioStreaming interface. This alternate
> > interface uses an isochronous endpoint with an interval of 1 ms and 192
> > BytesPerInterval. This should not reserve all bandwidth of the root
> > hub. I implemented the Get Port Bandwidth command to check the
> > available bandwidth of the xHC and it reports 80 % for HS ports, 90 %
> > for SS ports, and 0 % on the port used by the frame grabber. LGTM.
> > 
> > I am currently testing on 4.15-rc8, but I can reproduce the same issue
> > with 4.12, too.
> > 
> > This is the output of /sys/kernel/debug/usb/devices for the frame
> > grabber with the isochronous endpoint selected:
> > 
> > T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#=  2 Spd=5000
> > MxCh= 0 D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
> > P:  Vendor=2935 ProdID=0001 Rev= 0.01
> > S:  Manufacturer=Magewell
> > S:  Product=XI100DUSB-HDMI
> > S:  SerialNumber=A201170218035
> > C:* #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=800mA
> > A:  FirstIf#= 0 IfCount= 2 Cls=0e(video) Sub=03 Prot=00
> > A:  FirstIf#= 2 IfCount= 2 Cls=01(audio) Sub=01 Prot=00
> > I:* If#= 0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
> > E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us
> > I:* If#= 1 Alt= 0 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
> > E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
> > I:* If#= 2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 
> > Driver=snd-usb-audio
> > I:  If#= 3 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 
> > Driver=snd-usb-audio
> > I:* If#= 3 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 
> > Driver=snd-usb-audio
> > E:  Ad=85(I) Atr=05(Isoc) MxPS= 192 Ivl=1ms
> > I:* If#= 4 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
> > E:  Ad=86(I) Atr=03(Int.) MxPS=  64 Ivl=64ms
> > 
> > I don't understand, why the xHC sends the Bandwidth Error. I already
> > looked at the information about the xhci in the debugfs and the event
> > tracing, but I did not find anything relevant. Is there anything else
> > that I can look for and test  
> Odd, there shouldn't be any bandwidth error in this case.
> 
> There was one other case where bogus bandwidth errors for isoc transfers were
> reported. The reporter saw some correlation between the Bandwidth issues and
> LPM/MEL (Link power management/Max exit latency) settings.
> 
> It could be worth disabling LPM, or just prevent changing the MEL to check if 
> you see the same correlation.

I found the old thread and it sounds exactly like my issue. Different
camera, but same xHCI controller.

For some tests, I changed the xhci_change_max_exit_latency() function
to ignore the requested MEL and set the MEL to 0. Now the USB devices
are detected correctly.

These are the slot contexts for the devices. The first device is the
frame grabber, the second one is the device with the failed EP
configuration, which is still in addressed state.

/sys/kernel/debug/usb/xhci/:00:14.0/devices cat 06/slot-context 
0x00022b151000: RS 0 super-speed Ctx Entries 13 MEL 2047 us Port# 19/0 
[TT Slot 0 Port# 0 TTT 0 Intr 0] Addr 6 State configured
/sys/kernel/debug/usb/xhci/:00:14.0/devices cat 07/slot-context
0x00022b14d000: RS 0 high-speed Ctx Entries 1 MEL 0 us Port# 4/0 [TT 
Slot 0 Port# 0 TTT 0 Intr 0] Addr 7 State addressed

Further devices are detected correctly when the slot-context reports an
MEL of 2047 us and no isoch ep is selected.

> I might be able to get one of those devices.
> Do you have more detail (a testscript) on how to trigger the issue,
> and details about the xHCI host controller you are using.

00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI 
Controller (rev 31) (prog-if 30 [XHCI])
Subsystem: ASUSTeK Computer Inc. Device 8694
Flags: bus master, medium devsel, latency 0, IRQ 122
Memory at f753 (64-bit, non-prefetchable) [size=64K]
Capabilities: [70] Power Management version 2
Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
Kernel driver in use: xhci_hcd

> If you also could you send me the xhci debug and trace outputs just in case.

I attached the dmesg output and the event trace for

Re: Not enough bandwidth with Magewell XI100DUSB-HDMI

2018-01-18 Thread Mathias Nyman

On 17.01.2018 18:46, Michael Tretter wrote:

Hello,

I am using a Magewell XI100DUSB-HDMI frame grabber which by itself works
fine. However, I get a "Not enough bandwidth for new device state."
error for any other USB device that is plugged after the frame grabber.
This error is caused by the xHC sending a Bandwidth Error for
the Configure Endpoint command during xhci_check_bandwidth(). I
tested it with a USB-storage device (high speed and SuperSpeed) and a
USB 3.0 hub, but there is no difference. If I plug the frame grabber
after the other device, both work fine.

The error only occurs, if Pulseaudio opened the device, which selects
an alternate interface for the AudioStreaming interface. This alternate
interface uses an isochronous endpoint with an interval of 1 ms and 192
BytesPerInterval. This should not reserve all bandwidth of the root
hub. I implemented the Get Port Bandwidth command to check the
available bandwidth of the xHC and it reports 80 % for HS ports, 90 %
for SS ports, and 0 % on the port used by the frame grabber. LGTM.

I am currently testing on 4.15-rc8, but I can reproduce the same issue
with 4.12, too.

This is the output of /sys/kernel/debug/usb/devices for the frame
grabber with the isochronous endpoint selected:

T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#=  2 Spd=5000
MxCh= 0 D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
P:  Vendor=2935 ProdID=0001 Rev= 0.01
S:  Manufacturer=Magewell
S:  Product=XI100DUSB-HDMI
S:  SerialNumber=A201170218035
C:* #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=800mA
A:  FirstIf#= 0 IfCount= 2 Cls=0e(video) Sub=03 Prot=00
A:  FirstIf#= 2 IfCount= 2 Cls=01(audio) Sub=01 Prot=00
I:* If#= 0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=125us
I:* If#= 1 Alt= 0 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 
Driver=snd-usb-audio
I:  If#= 3 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 
Driver=snd-usb-audio
I:* If#= 3 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 
Driver=snd-usb-audio
E:  Ad=85(I) Atr=05(Isoc) MxPS= 192 Ivl=1ms
I:* If#= 4 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
E:  Ad=86(I) Atr=03(Int.) MxPS=  64 Ivl=64ms

I don't understand, why the xHC sends the Bandwidth Error. I already
looked at the information about the xhci in the debugfs and the event
tracing, but I did not find anything relevant. Is there anything else
that I can look for and test

Odd, there shouldn't be any bandwidth error in this case.

There was one other case where bogus bandwidth errors for isoc transfers were
reported. The reporter saw some correlation between the Bandwidth issues and
LPM/MEL (Link power management/Max exit latency) settings.

It could be worth disabling LPM, or just prevent changing the MEL to check if 
you see the same correlation.

I might be able to get one of those devices.
Do you have more detail (a testscript) on how to trigger the issue,
and details about the xHCI host controller you are using.

If you also could you send me the xhci debug and trace outputs just in case.

Thanks
Mathias
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html