linux/drivers/usb/host
Alan Stern d714aaf649 USB: EHCI: fix regression in QH unlinking
This patch (as1670) fixes a regression caused by commit
6402c796d3 (USB: EHCI: work around
silicon bug in Intel's EHCI controllers).  The workaround goes through
two IAA cycles for each QH being unlinked.  During the first cycle,
the QH is not added to the async_iaa list (because it isn't fully gone
from the hardware yet), which means that list will be empty.

Unfortunately, I forgot to update the IAA watchdog timer routine.  It
thinks that an empty async_iaa list means the timer expiration was an
error, which isn't true any more.  This problem didn't show up during
initial testing because the controllers being tested all had working
IAA interrupts.  But not all controllers do, and when the watchdog
timer expires, the empty-list check prevents the second IAA cycle from
starting.  As a result, URB unlinks never complete.  The check needs
to be removed.

Among the symptoms of the regression are processes stuck in D wait
states and hangs during system shutdown.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-and-tested-by: Stephen Warren <swarren@wwwdotorg.org>
Reported-and-tested-by: Sven Joachim <svenjoac@gmx.de>
Reported-by: Andreas Bombe <aeb@debian.org>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-03-20 16:17:22 -07:00
..
whci
Kconfig Revert "USB: EHCI: make ehci-vt8500 a separate driver" 2013-02-20 10:26:31 -08:00
Makefile Revert "USB: EHCI: make ehci-vt8500 a separate driver" 2013-02-20 10:26:31 -08:00
bcma-hcd.c
ehci-atmel.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ehci-dbg.c
ehci-fsl.c USB: ehci-fsl: fix regression on mpc5121e 2013-01-11 16:01:07 -08:00
ehci-fsl.h
ehci-grlib.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ehci-hcd.c USB: EHCI: fix regression during bus resume 2013-03-15 12:07:53 -07:00
ehci-hub.c USB: EHCI: fix regression during bus resume 2013-03-15 12:07:53 -07:00
ehci-mem.c
ehci-msm.c
ehci-mv.c usb: gadget: patches for v3.9 merge window 2013-01-25 09:08:05 -08:00
ehci-mxc.c USB patches for 3.9-rc1 2013-02-21 12:20:00 -08:00
ehci-octeon.c
ehci-omap.c This is the MFD pull request for the 3.9 merge window. 2013-02-24 20:00:58 -08:00
ehci-orion.c Revert "USB: EHCI: make ehci-orion a separate driver" 2013-02-20 10:25:44 -08:00
ehci-pci.c USB: ehci: make debug port in-use detection functional again 2013-01-07 10:34:33 -08:00
ehci-platform.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ehci-pmcmsp.c
ehci-ppc-of.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ehci-ps3.c
ehci-q.c USB: EHCI: fix regression during bus resume 2013-03-15 12:07:53 -07:00
ehci-s5p.c usb: xceiv: patches for v3.9 merge window 2013-01-25 09:09:46 -08:00
ehci-sched.c USB: EHCI: fix bug in scheduling periodic split transfers 2013-01-31 10:14:48 +01:00
ehci-sead3.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ehci-sh.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ehci-spear.c
ehci-sysfs.c
ehci-tegra.c usb: host: tegra: make use of PHY pointer of HCD 2013-01-28 11:42:11 -07:00
ehci-tilegx.c
ehci-timer.c USB: EHCI: fix regression in QH unlinking 2013-03-20 16:17:22 -07:00
ehci-vt8500.c Revert "USB: EHCI: make ehci-vt8500 a separate driver" 2013-02-20 10:26:31 -08:00
ehci-w90x900.c
ehci-xilinx-of.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ehci.h USB: EHCI: add a name for the platform-private field 2013-01-22 09:22:13 -08:00
fhci-dbg.c
fhci-hcd.c
fhci-hub.c
fhci-mem.c
fhci-q.c
fhci-sched.c
fhci-tds.c
fhci.h
fsl-mph-dr-of.c USB: fsl-mph-dr-of: fix regression on mpc5121e 2013-01-11 16:01:06 -08:00
hwa-hc.c
imx21-dbg.c
imx21-hcd.c usb: imx21-hcd: Include missing linux/module.h 2013-01-11 12:01:09 -08:00
imx21-hcd.h
isp116x-hcd.c
isp116x.h
isp1362-hcd.c
isp1362.h
isp1760-hcd.c usb/isp1760: declare schedule_ptds() and errata2_function() static 2013-01-30 00:17:38 -05:00
isp1760-hcd.h
isp1760-if.c
octeon2-common.c
ohci-at91.c
ohci-da8xx.c
ohci-dbg.c
ohci-ep93xx.c
ohci-exynos.c usb: xceiv: patches for v3.9 merge window 2013-01-25 09:09:46 -08:00
ohci-hcd.c
ohci-hub.c
ohci-jz4740.c
ohci-mem.c
ohci-nxp.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ohci-octeon.c
ohci-omap.c
ohci-omap3.c
ohci-pci.c
ohci-platform.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ohci-ppc-of.c
ohci-ps3.c
ohci-pxa27x.c
ohci-q.c USB: ohci: set urb->hcpriv = NULL immediately, after free it 2013-01-11 16:03:38 -08:00
ohci-s3c2410.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ohci-sa1111.c
ohci-sm501.c
ohci-spear.c
ohci-tilegx.c
ohci-tmio.c usb: host: ohci-tmio: fix compile warning 2013-01-11 16:22:53 -08:00
ohci.h
oxu210hp-hcd.c
oxu210hp.h
pci-quirks.c usb: Prevent dead ports when xhci is not enabled 2013-01-24 09:56:19 -08:00
pci-quirks.h
r8a66597-hcd.c
r8a66597.h
sl811-hcd.c
sl811.h
sl811_cs.c
ssb-hcd.c
u132-hcd.c
uhci-debug.c USB: uhci: beautify source code 2013-01-24 13:59:26 -08:00
uhci-grlib.c
uhci-hcd.c Merge 3.8-rc5 into usb-next 2013-01-25 12:41:02 -08:00
uhci-hcd.h USB: UHCI: remove unused definition 2013-01-24 13:42:09 -08:00
uhci-hub.c Merge usb-linus branch into usb-next 2013-02-08 12:03:11 -08:00
uhci-pci.c
uhci-platform.c
uhci-q.c USB: uhci: check buffer length to avoid memory overflow 2013-01-24 13:42:09 -08:00
xhci-dbg.c
xhci-ext-caps.h
xhci-hub.c xhci: Avoid "dead ports", add roothub port polling. 2013-01-03 14:10:29 -08:00
xhci-mem.c
xhci-pci.c
xhci-plat.c
xhci-ring.c Merge usb-linus branch into usb-next 2013-02-08 12:03:11 -08:00
xhci.c USB: xhci: correctly enable interrupts 2013-03-15 12:07:53 -07:00
xhci.h USB: xhci - fix bit definitions for IMAN register 2013-03-18 08:25:13 -07:00