]> git.baikalelectronics.ru Git - kernel.git/commit
USB: Allow USB 3.0 ports to be disabled.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Thu, 15 Nov 2012 00:42:32 +0000 (16:42 -0800)
committerSarah Sharp <sarah.a.sharp@linux.intel.com>
Thu, 3 Jan 2013 22:10:23 +0000 (14:10 -0800)
commitc6f4c84922afe259734a8518fb155f3f2e7a3f0b
tree10a8d18c4bc50e829721875cc18d6040b97b6246
parent9651789352680be8c8a3097d041c8408c28458cc
USB: Allow USB 3.0 ports to be disabled.

If hot and warm reset fails, or a port remains in the Compliance Mode,
the USB core needs to be able to disable a USB 3.0 port.  Unlike USB 2.0
ports, once the port is placed into the Disabled link state, it will not
report any new device connects.  To get device connect notifications, we
need to put the link into the Disabled state, and then the RxDetect
state.

The xHCI driver needs to atomically clear all change bits on USB 3.0
port disable, so that we get Port Status Change Events for future port
changes.  We could technically do this in the USB core instead of in the
xHCI roothub code, since the port state machine can't advance out of the
disabled state until we set the link state to RxDetect.  However,
external USB 3.0 hubs don't need this code.  They are level-triggered,
not edge-triggered like xHCI, so they will continue to send interrupt
events when any change bit is set.  Therefore it doesn't make sense to
put this code in the USB core.

This patch is part of a series to fix several reports of infinite loops
on device enumeration failure.  This includes John, when he boots with
a USB 3.0 device (Roseweil eusb3 enclosure) attached to his NEC 0.96
host controller.  The fix requires warm reset support, so it does not
make sense to backport this patch to stable kernels without warm reset
support.

This patch should be backported to kernels as old as 3.2, contain the
commit ID 6c6e2da66ed7c8e467171e47333afcea93f5b0ac "usbcore: refine warm
reset logic"

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Reported-by: John Covici <covici@ccs.covici.com>
Cc: stable@vger.kernel.org
drivers/usb/core/hub.c
drivers/usb/host/xhci-hub.c