linux/drivers/usb/core
Sarah Sharp 653a39d1f6 usb: Realloc xHCI structures after a hub is verified.
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>
Cc: stable@kernel.org
2011-01-14 15:50:21 -08:00
..
buffer.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
config.c USB: remove the usb_host_ss_ep_comp structure 2010-05-20 13:21:40 -07:00
devices.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
devio.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
driver.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 2011-01-10 08:14:53 -08:00
endpoint.c usb: core: endpoint: Fix error path 2010-10-22 10:22:06 -07:00
file.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
generic.c USB: accept RNDIS configs if there's no alternative 2010-08-10 14:35:43 -07:00
hcd-pci.c xHCI: synchronize irq in xhci_suspend() 2011-01-14 15:28:52 -08:00
hcd.c Merge branch 'usb-next' into musb-merge 2010-12-16 10:05:06 -08:00
hub.c usb: Realloc xHCI structures after a hub is verified. 2011-01-14 15:50:21 -08:00
inode.c fs: dcache remove dcache_lock 2011-01-07 17:50:23 +11:00
Kconfig USB: core: Add input prompt and help text for USB_OTG config 2010-12-16 15:45:44 -08:00
Makefile usb: makefile cleanup 2010-10-22 10:22:07 -07:00
message.c USB: make usb_mark_last_busy use pm_runtime_mark_last_busy 2010-11-16 14:02:54 -08:00
notify.c USB : correct comments in usb/core/notify.c 2008-02-01 14:34:44 -08:00
otg_whitelist.h USB: fix codingstyle issues in drivers/usb/core/*.h 2008-02-01 14:35:07 -08:00
quirks.c USB: improve uses of usb_mark_last_busy 2010-11-16 14:04:22 -08:00
sysfs.c USB: use the runtime-PM autosuspend implementation 2010-11-16 14:03:41 -08:00
urb.c USB: output an error message when the pipe type doesn't match the endpoint type 2010-10-22 10:21:27 -07:00
usb.c USB: use the runtime-PM autosuspend implementation 2010-11-16 14:03:41 -08:00
usb.h USB: use the runtime-PM autosuspend implementation 2010-11-16 14:03:41 -08:00