> -----Original Message----- > From: Dmitri Belimov [mailto:d.belimov@xxxxxxxxx] > Sent: Thursday, March 15, 2012 9:32 AM > To: Xu, Andiry > Cc: Mauro Carvalho Chehab > Subject: USB3.0 race condition? > > Hello > > Our company design and sell own TV cards. One of them has USB 2.0 interface > and based on the tm6010 chip. > I wrote some open-source drivers of linux kernel for our TV cards. > > Some times a go one of our customers report me about some problems with USB > TV cards and newest USB 3.0 host. > When many TV cards connected to the USB 3.0 we see errors: > > > [ 846.285810] tm6000 #0: registered device video0 > [ 846.285835] tm6000 #0: registered device radio0 > [ 846.285838] Trident TVMaster TM5600/TM6000/TM6010 USB2 board (Load > status: 0) > [ 846.285851] tm6000_usb_probe stop OK > First device init OK > > [ 846.285859] tm6000_usb_probe start > [ 846.285861] befor usb_set_int > [ 846.286099] usb 3-1.2: Not enough bandwidth for new device state. > [ 846.286104] usb 3-1.2: Not enough bandwidth for altsetting 1 > [ 846.286106] usb_set_interface FAILURE rc = -28 > [ 846.286107] tm6000: Error -28 while registering > [ 846.286156] tm6000_usb_probe stop FAIL > Second and other devices init FAIL > > We have this errors when many TV cards installed into USB3.0. > > If we set at the first time only one all is good. When we add next TV cards > after some time > all is good too. We try add step by step 7 TV cards to USB 3.0 all of them > init OK. > > I think the xhci can has race condition or spinlock a bug. May be I wrong. > What you think about it?? > Well, I don't think it's a race/spinlock problem. When a device is plugged in and addressed, the xHCI driver will send a configure endpoint command and ask host to allocate bandwidth for the device. Isoc devices such as TV cards require more bandwidth. If the bandwidth is not enough, host rejects the command and returns failure, and devices init fail. However, I don't know why adding them one by one is OK. Maybe Sarah has some suggestions. Thanks, Andiry -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html