Hi, 

My name is Juan, and I work for Qindel, a small IT company based in Spain. I'm 
currently trying to do some development for our main product QVD. Specifically, 
I'm trying to get usbip to work with a great number of LXC containers. Due to 
the nature of LXC, all usbip ports are shared among the containers, and I would 
need to increase the limit in the number of ports drastically. 

Having a look at the code of the VHCI driver at 
https://github.com/torvalds/linux/tree/master/drivers/usb/usbip , I found these 
two parameters: USBIP_VHCI_HC_PORTS and USBIP_VHCI_NR_HCS 

I've compiled VHCI driver from latest source above, altering both parameters to 
get higher number of controllers and ports per controller (not only the driver, 
but also the usbip cli tool at 
https://github.com/torvalds/linux/tree/master/tools/usb/usbip ), and run into 
several problems: 

1. USBIP_VHCI_HC_PORTS x USBIP_VHCI_NR_HCS <= 128 
It seems, whatever the combination of both parameters, usbip command line tool 
won't accept that your driver is compiled with numbers violating the above 
rule. Is this a problem of the tool code or is there a reason behind this? As 
far as I 've researched, the 127 devices limit in Linux is per controller, so 
increasing the number of controllers in usbip driver shouldn't be limited this 
way, am I wrong? 

2. I've compiled with 4 ports per controller and 32 controllers. Given that the 
drivers creates an usb2 and an usb3 controller, it results in 64 controllers 
with four ports each: 128 ports. Here, usbip cli tool works. But... if you try 
to attach a device, the kernel dumps a trace that starts with this: 
Oct 30 10 :43:14 test-mononode-ubuntu-16 kernel: [ 44.138068] usbcore: failed 
to get bus number 
Oct 30 10 :43:14 test-mononode-ubuntu-16 kernel: [ 44.138813] vhci_hcd: 
usb_add_hcd hs failed -7 
Oct 30 10 :43:14 test-mononode-ubuntu-16 kernel: [ 44.139559] vhci_hcd: probe 
of vhci_hcd.31 failed with error -7 
Oct 30 10 :44:23 test-mononode-ubuntu-16 kernel: [ 113.345824] BUG: unable to 
handle kernel NULL pointer dereference at 0000000000000230 
Oct 30 10 :44:23 test-mononode-ubuntu-16 kernel: [ 113.347584] IP: 
status_show+0x13c/0x360 [vhci_hcd] 
Oct 30 10 :44:23 test-mononode-ubuntu-16 kernel: [ 113.348592] PGD 1398cc067 
Oct 30 10 :44:23 test-mononode-ubuntu-16 kernel: [ 113.348593] PUD 136a96067 
Oct 30 10 :44:23 test-mononode-ubuntu-16 kernel: [ 113.349119] PMD 0 

This leads me to thinking there is some problem with such a big number of 
controllers, although the controller number parameters is supposed to have a 
max value of 128. Could this be related to the kernel I'm using? Maybe I should 
compile the full kernel to get higher numbers working? 

3. For this last test, I compiled with smaller numbers, just to test how the 
several controllers thing works. Specifically, one port per controller, 16 
controllers in total. This leads to the module loading, the controllers 
listable with lsusb, and no problems in kernel log. I attach one device, and it 
goes to the first controller. Working... no problem at all. But, if you attach 
a second device, the command hangs and I get this in syslog: 

Oct 30 11 :07:14 test-mononode-ubuntu-16 kernel: [ 1078.239613] vhci_hcd 
vhci_hcd.0: port 0 already used 

This message was repeated for more than 7000 times before I could stop the 
command. So... my conclusion is that usbip won't work correctly if compiled 
with more than one controller. Is this related to the usbip cli tool or is 
there any problem at the driver? 


Please excuse me for the big mail, and thanks in advance, 
Juan 

Juan Antonio Zea Herranz 
Proyectos y consultoría | Qindel Group 
E: juan....@qindel.com 
T: +34 91 766 24 21 
M: +34 637 74 63 09 
W: qindel.com 

--
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

Reply via email to