Hi Jason, This sounds like an issue similar to what Wang Chao is experiencing, see http://marc.info/?l=linux-usb&m=131962188623590&w=2 On Tue, Nov 22, 2011 at 02:53:06AM +0000, Jasonwu wrote: > Thanks for reply > ######################################################################## > kernel version : 3.1.1 > ######################################################################## > usb host controller : > a. fresco logic xhci FL1009 board. > b. NEC xhci host controller. > c. on board USB2 host controller. Do you mean that you see the issue with device fast plug/unplug under a USB 2.0 host controller as well, or just under the xHCI host controller? Are you plugging and unplugging the USB 3.0 hub, or the devices attached to the hub? > ######################################################################## > dmesg after crash : > 1. normal plug/unplug > [ 44.252626] hub 4-0:1.0: state 7 ports 2 chg 0000 evt 0002 > [ 44.252638] hub 4-0:1.0: warm reset port 1 > [ 44.253363] usb usb3: usb wakeup-resume > [ 44.253369] usb usb3: usb auto-resume > [ 44.268036] hub 3-0:1.0: hub_resume > [ 44.268047] hub 3-0:1.0: port 1: status 0100 change 0001 > [ 44.276051] hub 4-0:1.0: port 1, status 02c0, change 0001, 5.0 Gb/s > [ 44.276055] usb 4-1: USB disconnect, device number 2 > [ 44.276057] usb 4-1: unregistering device > [ 44.276059] usb 4-1: unregistering interface 4-1:1.0 > [ 44.276090] xhci_hcd 0000:02:00.0: shutdown urb f5d44100 ep1in-intr > [ 44.278043] usb 4-1: usb_disable_device nuking all URBs > [ 44.278129] usb 4-1: Successful Endpoint Configure command > [ 44.404034] hub 4-0:1.0: debounce: port 1: total 100ms stable 100ms status > 0x2a0 > [ 44.404039] hub 4-0:1.0: state 7 ports 2 chg 0000 evt 0002 > [ 44.404042] hub 4-0:1.0: reset change on port 1 > [ 44.404046] hub 4-0:1.0: warm reset change on port 1 > [ 44.404054] hub 3-0:1.0: state 7 ports 2 chg 0002 evt 0000 > [ 44.404059] hub 3-0:1.0: port 1, status 0100, change 0000, 12 Mb/s > [ 44.404061] usb 3-1: USB disconnect, device number 2 > [ 44.404063] usb 3-1: unregistering device > [ 44.404065] usb 3-1: unregistering interface 3-1:1.0 > [ 44.404117] usb 3-1: usb_disable_device nuking all URBs > [ 44.404212] usb 3-1: Successful Endpoint Configure command > [ 45.473010] hub 3-0:1.0: state 7 ports 2 chg 0000 evt 0002 > [ 45.473022] hub 3-0:1.0: port 1, status 0101, change 0001, 12 Mb/s > [ 45.600033] hub 3-0:1.0: debounce: port 1: total 100ms stable 100ms status > 0x101 > [ 45.712036] usb 3-1: new high speed USB device number 3 using xhci_hcd > [ 45.728728] xhci_hcd 0000:02:00.0: WARN: short transfer on control ep > [ 45.728736] usb 3-1: default language 0x0409 > [ 45.728894] xhci_hcd 0000:02:00.0: WARN: short transfer on control ep > [ 45.728900] usb 3-1: udev 3, busnum 3, minor = 258 > [ 45.728902] usb 3-1: New USB device found, idVendor=2109, idProduct=3431 > [ 45.728903] usb 3-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0 > [ 45.728905] usb 3-1: Product: USB2.0 Hub > [ 45.729018] usb 3-1: usb_probe_device > [ 45.729021] usb 3-1: configuration #1 chosen from 1 choice > [ 45.729113] usb 3-1: Successful Endpoint Configure command > [ 45.729227] usb 3-1: adding 3-1:1.0 (config #1, interface 0) > [ 45.729248] hub 3-1:1.0: usb_probe_interface > [ 45.729250] hub 3-1:1.0: usb_probe_interface - got id > [ 45.729252] hub 3-1:1.0: USB hub found > [ 45.729351] xhci_hcd 0000:02:00.0: WARN: short transfer on control ep > [ 45.729357] hub 3-1:1.0: 4 ports detected > [ 45.729358] hub 3-1:1.0: standalone hub > [ 45.729360] hub 3-1:1.0: individual port power switching > [ 45.729361] hub 3-1:1.0: individual port over-current protection > [ 45.729363] hub 3-1:1.0: Single TT > [ 45.729365] hub 3-1:1.0: TT requires at most 32 FS bit times (2664 ns) > [ 45.729366] hub 3-1:1.0: Port indicators are supported > [ 45.729368] hub 3-1:1.0: power on to power good time: 100ms > [ 45.729548] usb 3-1: Successful Endpoint Configure command > [ 45.729632] hub 3-1:1.0: local power source is good > [ 45.729634] hub 3-1:1.0: enabling power on all ports > [ 45.736105] hub 4-0:1.0: state 7 ports 2 chg 0000 evt 0002 > [ 45.736118] hub 4-0:1.0: port 1, status 0203, change 0001, 5.0 Gb/s > [ 45.864035] hub 4-0:1.0: debounce: port 1: total 100ms stable 100ms status > 0x203 > [ 45.977552] usb 4-1: new SuperSpeed USB device number 3 using xhci_hcd > [ 46.622333] usb 4-1: skipped 1 descriptor after endpoint > [ 46.635425] xhci_hcd 0000:02:00.0: WARN: short transfer on control ep > [ 46.635448] usb 4-1: default language 0x0409 > [ 46.648538] xhci_hcd 0000:02:00.0: WARN: short transfer on control ep > [ 46.661652] xhci_hcd 0000:02:00.0: WARN: short transfer on control ep > [ 46.661677] usb 4-1: udev 3, busnum 4, minor = 386 > [ 46.661679] usb 4-1: New USB device found, idVendor=2109, idProduct=0810 > [ 46.661681] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 > [ 46.661683] usb 4-1: Product: 4-Port USB 3.0 Hub > [ 46.661685] usb 4-1: Manufacturer: VIA Labs, Inc. > [ 46.661800] usb 4-1: usb_probe_device > [ 46.661803] usb 4-1: configuration #1 chosen from 1 choice > [ 46.661895] usb 4-1: Successful Endpoint Configure command > [ 46.665287] usb 4-1: adding 4-1:1.0 (config #1, interface 0) > [ 46.665333] hub 4-1:1.0: usb_probe_interface > [ 46.665336] hub 4-1:1.0: usb_probe_interface - got id > [ 46.665339] hub 4-1:1.0: USB hub found > [ 46.721174] hub 4-1:1.0: 4 ports detected > [ 46.721178] hub 4-1:1.0: standalone hub > [ 46.721179] hub 4-1:1.0: individual port power switching > [ 46.721181] hub 4-1:1.0: individual port over-current protection > [ 46.721183] hub 4-1:1.0: TT requires at most 8 FS bit times (666 ns) > [ 46.721184] hub 4-1:1.0: power on to power good time: 2ms > [ 46.724929] usb 4-1: Successful Endpoint Configure command > [ 46.728614] hub 4-1:1.0: local power source is good > [ 46.728619] hub 4-1:1.0: enabling power on all ports > [ 46.743195] hub 3-1:1.0: state 7 ports 4 chg 0000 evt 0000 > [ 46.743204] hub 4-0:1.0: state 7 ports 2 chg 0000 evt 0002 > [ 46.743211] hub 4-0:1.0: warm reset change on port 1 > [ 46.852662] hub 4-1:1.0: state 7 ports 4 chg 0000 evt 0000 > > 2. Fast unplug/plug several times > > [ 48.800036] hub 3-1:1.0: hub_suspend > [ 48.820039] usb 3-1: usb auto-suspend > [ 50.836028] hub 3-0:1.0: hub_suspend > [ 50.836037] usb usb3: bus auto-suspend > [ 55.218150] hub 4-0:1.0: state 7 ports 2 chg 0000 evt 0002 > [ 55.218162] hub 4-0:1.0: warm reset port 1 > [ 55.221657] usb usb3: usb wakeup-resume > [ 55.221662] usb usb3: usb auto-resume > [ 55.236036] hub 3-0:1.0: hub_resume > [ 55.236046] hub 3-0:1.0: port 1: status 0100 change 0005 > [ 55.240042] hub 4-0:1.0: port 1, status 02c0, change 0001, 5.0 Gb/s > [ 55.240046] usb 4-1: USB disconnect, device number 3 > [ 55.240048] usb 4-1: unregistering device > [ 55.240050] usb 4-1: unregistering interface 4-1:1.0 > [ 55.240081] xhci_hcd 0000:02:00.0: shutdown urb f009bb80 ep1in-intr > [ 55.242126] usb 4-1: usb_disable_device nuking all URBs > [ 55.242218] usb 4-1: Successful Endpoint Configure command > [ 55.368034] hub 4-0:1.0: debounce: port 1: total 100ms stable 100ms status > 0x2a0 > [ 55.368039] hub 4-0:1.0: state 7 ports 2 chg 0000 evt 0002 > [ 55.368042] hub 4-0:1.0: reset change on port 1 > [ 55.368046] hub 4-0:1.0: warm reset change on port 1 > [ 55.368055] hub 3-0:1.0: state 7 ports 2 chg 0002 evt 0002 > [ 55.384033] usb 3-1: usb wakeup-resume > [ 55.384045] hub 3-0:1.0: port 1 status 0000.0100 after resume, -19 > [ 55.384047] usb 3-1: can't resume, status -19 > [ 55.384049] hub 3-0:1.0: logical disconnect on port 1 > [ 55.384055] hub 3-0:1.0: resume on port 1, status -19 > [ 55.384057] hub 3-0:1.0: port 1, status 0100, change 0004, 12 Mb/s > [ 55.384059] usb 3-1: USB disconnect, device number 3 > [ 55.384060] usb 3-1: unregistering device > [ 55.384062] usb 3-1: unregistering interface 3-1:1.0 > [ 55.384114] usb 3-1: usb_disable_device nuking all URBs > [ 55.384209] usb 3-1: Successful Endpoint Configure command > [ 55.384295] hub 3-0:1.0: state 7 ports 2 chg 0000 evt 0000 > [ 56.007597] hub 3-0:1.0: state 7 ports 2 chg 0000 evt 0002 > [ 56.007609] hub 3-0:1.0: port 1, status 0101, change 0001, 12 Mb/s > [ 56.132035] hub 3-0:1.0: debounce: port 1: total 100ms stable 100ms status > 0x101 > [ 56.244035] usb 3-1: new high speed USB device number 4 using xhci_hcd > [ 56.260755] xhci_hcd 0000:02:00.0: WARN: short transfer on control ep > [ 56.260763] usb 3-1: default language 0x0409 > [ 56.260921] xhci_hcd 0000:02:00.0: WARN: short transfer on control ep > [ 56.260926] usb 3-1: udev 4, busnum 3, minor = 259 > [ 56.260928] usb 3-1: New USB device found, idVendor=2109, idProduct=3431 > [ 56.260930] usb 3-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0 > [ 56.260932] usb 3-1: Product: USB2.0 Hub > [ 56.261040] usb 3-1: usb_probe_device > [ 56.261043] usb 3-1: configuration #1 chosen from 1 choice > [ 56.261135] usb 3-1: Successful Endpoint Configure command > [ 56.261249] usb 3-1: adding 3-1:1.0 (config #1, interface 0) > [ 56.261272] hub 3-1:1.0: usb_probe_interface > [ 56.261274] hub 3-1:1.0: usb_probe_interface - got id > [ 56.261276] hub 3-1:1.0: USB hub found > [ 56.261380] xhci_hcd 0000:02:00.0: WARN: short transfer on control ep > [ 56.261386] hub 3-1:1.0: 4 ports detected > [ 56.261387] hub 3-1:1.0: standalone hub > [ 56.261388] hub 3-1:1.0: individual port power switching > [ 56.261390] hub 3-1:1.0: individual port over-current protection > [ 56.261392] hub 3-1:1.0: Single TT > [ 56.261393] hub 3-1:1.0: TT requires at most 32 FS bit times (2664 ns) > [ 56.261395] hub 3-1:1.0: Port indicators are supported > [ 56.261396] hub 3-1:1.0: power on to power good time: 100ms > [ 56.261570] usb 3-1: Successful Endpoint Configure command > [ 56.261654] hub 3-1:1.0: local power source is good > [ 56.261657] hub 3-1:1.0: enabling power on all ports > [ 56.268105] hub 4-0:1.0: state 7 ports 2 chg 0000 evt 0002 > [ 56.268118] hub 4-0:1.0: port 1, status 0203, change 0001, 5.0 Gb/s > [ 56.396035] hub 4-0:1.0: debounce: port 1: total 100ms stable 100ms status > 0x203 > [ 58.363607] xhci_hcd 0000:02:00.0: WARN: transfer error on endpoint > [ 58.363617] hub 3-1:1.0: transfer --> -71 So the high speed portion of the hub has re-enumerated (although it does get a transfer error for whatever reason), but the SuperSpeed portion of the hub hasn't come back yet. > crashes..... > > > > 3. no more acceptable any sort of hub or devices > > [ 76.508031] xhci_hcd 0000:02:00.0: Timeout while waiting for a slot > [ 96.712031] xhci_hcd 0000:02:00.0: Timeout while waiting for a slot > [ 96.916028] usb 4-1: device not accepting address 4, error -62 > [ 116.916025] xhci_hcd 0000:02:00.0: Timeout while waiting for a slot I suspect the SuperSpeed portion of the hub isn't responding to the set address control transfer, and the xHC never completes the Set Address command. There's a FIXME note in the driver in that code: /* FIXME: From section 4.3.4: "Software shall be responsible for timing * the SetAddress() "recovery interval" required by USB and aborting the * command on a timeout. */ if (timeleft <= 0) { xhci_warn(xhci, "%s while waiting for a slot\n", timeleft == 0 ? "Timeout" : "Signal"); /* FIXME cancel the address device command */ return -ETIME; } So it's probably an xHCI driver bug. I'll get you a patch to test next week. > [ 116.916030] hub 4-0:1.0: couldn't allocate port 1 usb_device > [ 116.916095] hub 3-1:1.0: state 7 ports 4 chg 0000 evt 0000 > [ 116.916101] hub 4-0:1.0: state 7 ports 2 chg 0000 evt 0002 > [ 116.916111] hub 4-0:1.0: warm reset change on port 1 > [ 116.916116] hub 4-0:1.0: port 1, status 02a0, change 0021, 5.0 Gb/s > [ 117.044033] hub 4-0:1.0: debounce: port 1: total 100ms stable 100ms status > 0x2a0 > [ 117.044041] hub 3-0:1.0: state 7 ports 2 chg 0000 evt 0002 > [ 117.060035] hub 3-0:1.0: resume on port 1, status 0 > [ 117.060038] hub 3-0:1.0: port 1, status 0101, change 0005, 12 Mb/s > [ 117.060041] usb 3-1: USB disconnect, device number 4 > [ 117.060043] usb 3-1: unregistering device > [ 117.060045] usb 3-1: unregistering interface 3-1:1.0 > [ 117.060076] xhci_hcd 0000:02:00.0: shutdown urb f009bb80 ep1in-intr > [ 119.800046] hub 4-0:1.0: hub_suspend > [ 119.800061] usb usb4: bus auto-suspend > > ######################################################################## > if i do plug/unplug slowly, everything is fine, > but if i do several times fast unplug/plug move, the hub gonna crash, > also host controller cannot work anymore, it happens easier when > hub has several devices attached > > Thanks!! Thanks for reporting this. Sarah Sharp -- 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