]> git.karo-electronics.de Git - karo-tx-linux.git/commit
usb: Realloc xHCI structures after a hub is verified.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Thu, 23 Dec 2010 19:12:42 +0000 (11:12 -0800)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Sun, 26 Jun 2011 16:46:37 +0000 (12:46 -0400)
commit565a4d87b360121ec9cbd6b67bdd25b127b29471
tree3b8604cbf5721183eb2ef39ca70033856ed3b62a
parentcfde12cfc1533e5b3f44336017024b93c465af90
usb: Realloc xHCI structures after a hub is verified.

commit 653a39d1f61bdc9f277766736d21d2e9be0391cb upstream.

When there's an xHCI host power loss after a suspend from memory, the USB
core attempts to reset and verify the USB devices that are attached to the
system.  The xHCI driver has to reallocate those devices, since the
hardware lost all knowledge of them during the power loss.

When a hub is plugged in, and the host loses power, the xHCI hardware
structures are not updated to say the device is a hub.  This is usually
done in hub_configure() when the USB hub is detected.  That function is
skipped during a reset and verify by the USB core, since the core restores
the old configuration and alternate settings, and the hub driver has no
idea this happened.  This bug makes the xHCI host controller reject the
enumeration of low speed devices under the resumed hub.

Therefore, make the USB core re-setup the internal xHCI hub device
information by calling update_hub_device() when hub_activate() is called
for a hub reset resume.  After a host power loss, all devices under the
roothub get a reset-resume or a disconnect.

This patch should be queued for the 2.6.37 stable tree.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
drivers/usb/core/hub.c