On Wed, Oct 08, 2014 at 12:38:35PM -0400, Alan Stern wrote: > Dmitry, this gave me another idea. Can you test the patch below, > _without_ the previous patch? And post the corresponding usbmon trace > and dmesg log? Hi, it doesn't work. All other attempts to plug device (after first one+) don't produce any dmesg output. [ 140.766041] xhci_hcd 0000:00:14.0: PME# enabled [ 140.801962] xhci_hcd 0000:00:14.0: power state changed by ACPI to D3cold [ 211.872301] xhci_hcd 0000:00:14.0: power state changed by ACPI to D0 [ 211.976315] xhci_hcd 0000:00:14.0: PME# disabled [ 211.976332] xhci_hcd 0000:00:14.0: enabling bus mastering [ 211.976408] xhci_hcd 0000:00:14.0: hcd_pci_runtime_resume: 0 [ 211.976415] xhci_hcd 0000:00:14.0: hcd_pci_runtime_suspend: -16 [ 211.976450] pci_pm_runtime_suspend(): hcd_pci_runtime_suspend+0x0/0x40 [usbcore] returns -16 [ 211.976452] usb usb1: usb wakeup-resume [ 211.976465] usb usb1: usb auto-resume [ 211.976498] hub 1-0:1.0: hub_resume [ 211.976551] usb usb1-port5: status 0107 change 0000 [ 211.976573] usb usb1-port7: status 0107 change 0000 [ 211.976616] usb usb1-port12: status 0507 change 0000 [ 212.080230] hub 1-0:1.0: state 7 ports 15 chg 0040 evt 0000 [ 212.080297] usb usb1-port6: status 0100, change 0000, 12 Mb/s [ 212.080314] hub 1-0:1.0: hub_suspend [ 212.080328] usb usb1: bus auto-suspend, wakeup 1 [ 212.080410] xhci_hcd 0000:00:14.0: hcd_pci_runtime_suspend: 0 [ 212.080458] xhci_hcd 0000:00:14.0: PME# enabled [ 212.120252] xhci_hcd 0000:00:14.0: power state changed by ACPI to D3cold ffff88042830e7c0 1795043513 S Ci:1:001:0 s a3 00 0000 0001 0004 4 < ffff88042830e7c0 1795043534 C Ci:1:001:0 0 4 = 00010000 ffff88042830e7c0 1795043538 S Ci:1:001:0 s a3 00 0000 0002 0004 4 < ffff88042830e7c0 1795043545 C Ci:1:001:0 0 4 = 00010000 ffff88042830e7c0 1795043548 S Ci:1:001:0 s a3 00 0000 0003 0004 4 < ffff88042830e7c0 1795043550 C Ci:1:001:0 0 4 = 00010000 ffff88042830e7c0 1795043552 S Ci:1:001:0 s a3 00 0000 0004 0004 4 < ffff88042830e7c0 1795043555 C Ci:1:001:0 0 4 = 00010000 ffff88042830e7c0 1795043557 S Ci:1:001:0 s a3 00 0000 0005 0004 4 < ffff88042830e7c0 1795043560 C Ci:1:001:0 0 4 = 07010000 ffff88042830e7c0 1795043564 S Ci:1:001:0 s a3 00 0000 0006 0004 4 < ffff88042830e7c0 1795043572 C Ci:1:001:0 0 4 = 00010100 ffff88042830e7c0 1795043574 S Co:1:001:0 s 23 01 0010 0006 0000 0 ffff88042830e7c0 1795043578 C Co:1:001:0 0 0 ffff88042830e7c0 1795043580 S Ci:1:001:0 s a3 00 0000 0007 0004 4 < ffff88042830e7c0 1795043582 C Ci:1:001:0 0 4 = 07010000 ffff88042830e7c0 1795043585 S Ci:1:001:0 s a3 00 0000 0008 0004 4 < ffff88042830e7c0 1795043596 C Ci:1:001:0 0 4 = 00010000 ffff88042830e7c0 1795043598 S Ci:1:001:0 s a3 00 0000 0009 0004 4 < ffff88042830e7c0 1795043601 C Ci:1:001:0 0 4 = 00010000 ffff88042830e7c0 1795043603 S Ci:1:001:0 s a3 00 0000 000a 0004 4 < ffff88042830e7c0 1795043606 C Ci:1:001:0 0 4 = 00010000 ffff88042830e7c0 1795043608 S Ci:1:001:0 s a3 00 0000 000b 0004 4 < ffff88042830e7c0 1795043611 C Ci:1:001:0 0 4 = 00010000 ffff88042830e7c0 1795043615 S Ci:1:001:0 s a3 00 0000 000c 0004 4 < ffff88042830e7c0 1795043625 C Ci:1:001:0 0 4 = 07050000 ffff88042830e7c0 1795043629 S Ci:1:001:0 s a3 00 0000 000d 0004 4 < ffff88042830e7c0 1795043640 C Ci:1:001:0 0 4 = 00010000 ffff88042830e7c0 1795043641 S Ci:1:001:0 s a3 00 0000 000e 0004 4 < ffff88042830e7c0 1795043644 C Ci:1:001:0 0 4 = 00010000 ffff88042830e7c0 1795043646 S Ci:1:001:0 s a3 00 0000 000f 0004 4 < ffff88042830e7c0 1795043649 C Ci:1:001:0 0 4 = 00010000 ffff8800ad06bac0 1795147238 S Ii:1:001:1 -115:2048 4 < ffff880427003040 1795147287 S Ci:1:001:0 s a3 00 0000 0006 0004 4 < ffff880427003040 1795147312 C Ci:1:001:0 0 4 = 00010000 ffff8800ad06bac0 1795147369 C Ii:1:001:1 -2:2048 0 > > > Index: usb-3.17/drivers/usb/core/hub.c > =================================================================== > --- usb-3.17.orig/drivers/usb/core/hub.c > +++ usb-3.17/drivers/usb/core/hub.c > @@ -1171,7 +1171,8 @@ static void hub_activate(struct usb_hub > * check for a new connection > */ > if (udev || (portstatus & USB_PORT_STAT_CONNECTION) || > - (portstatus & USB_PORT_STAT_OVERCURRENT)) > + (portstatus & USB_PORT_STAT_OVERCURRENT) || > + (portchange & USB_PORT_STAT_C_CONNECTION)) > set_bit(port1, hub->change_bits); > > } else if (portstatus & USB_PORT_STAT_ENABLE) { > > > -- WBR, Dmitry -- 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