linux/drivers/usb/host
Lu Baolu 227a4fd801 usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers
When a device with an isochronous endpoint is plugged into the Intel
xHCI host controller, and the driver submits multiple frames per URB,
the xHCI driver will set the Block Event Interrupt (BEI) flag on all
but the last TD for the URB. This causes the host controller to place
an event on the event ring, but not send an interrupt. When the last
TD for the URB completes, BEI is cleared, and we get an interrupt for
the whole URB.

However, under Intel xHCI host controllers, if the event ring is full
of events from transfers with BEI set,  an "Event Ring is Full" event
will be posted to the last entry of the event ring,  but no interrupt
is generated. Host will cease all transfer and command executions and
wait until software completes handling the pending events in the event
ring.  That means xHC stops, but event of "event ring is full" is not
notified. As the result, the xHC looks like dead to user.

This patch is to apply XHCI_AVOID_BEI quirk to Intel xHC devices. And
it should be backported to kernels as old as 3.0, that contains the
commit 69e848c209 ("Intel xhci: Support EHCI/xHCI port switching.").

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Tested-by: Alistair Grant <akgrant0710@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-03-23 21:51:12 +01:00
..
whci usb: use %*pb[l] to print bitmaps including cpumasks and nodemasks 2015-02-13 21:21:38 -08:00
bcma-hcd.c treewide: Remove unnecessary BCMA_CORETABLE_END macro 2015-02-11 14:38:28 -08:00
ehci-atmel.c USB: ehci-atmel: rework clk handling 2015-03-18 13:28:35 +01:00
ehci-dbg.c usb: Use dev_is_pci() to check whether it is pci device 2013-12-08 18:01:56 -08:00
ehci-exynos.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
ehci-fsl.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ehci-fsl.h
ehci-grlib.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ehci-hcd.c USB: ehci-platform: Support ehci reset after resume quirk 2015-01-09 12:25:54 -08:00
ehci-hub.c ehci-hub: use HUB_CHAR_* 2015-01-25 21:01:11 +08:00
ehci-mem.c USB: EHCI: don't allocate hardware periodic table atomically by default 2014-07-09 16:16:07 -07:00
ehci-msm.c host: ehci-msm: remove duplicate check on resource 2014-11-07 09:01:50 -08:00
ehci-mv.c host: ehci-mv: remove duplicate check on resource 2014-11-07 09:01:50 -08:00
ehci-mxc.c host: ehci-mxc: remove duplicate check on resource 2014-11-07 09:01:50 -08:00
ehci-omap.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ehci-orion.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
ehci-pci.c ehci-pci: disable for Intel MID platforms (update) 2015-02-03 15:28:31 -08:00
ehci-platform.c usb: ehci-platform: add support for multiple phys per controller 2015-01-25 21:05:10 +08:00
ehci-pmcmsp.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ehci-ppc-of.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ehci-ps3.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ehci-q.c usb: kill DEBUG compile option 2013-12-03 10:34:33 -08:00
ehci-sched.c USB: EHCI: adjust error return code 2015-01-09 09:58:49 -08:00
ehci-sead3.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ehci-sh.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ehci-spear.c host: ehci-spear: remove duplicate check on resource 2014-11-07 09:01:51 -08:00
ehci-st.c usb: host: ehci-st: Add EHCI support for ST STB devices 2014-09-23 21:35:50 -07:00
ehci-sysfs.c treewide: fix typo in printk and Kconfig 2014-11-20 14:56:11 +01:00
ehci-tegra.c usb: host: ehci-tegra: request deferred probe when failing to get phy 2015-01-09 10:01:45 -08:00
ehci-tilegx.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ehci-timer.c
ehci-w90x900.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
ehci-xilinx-of.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ehci.h USB: ehci-platform: Support ehci reset after resume quirk 2015-01-09 12:25:54 -08:00
fhci-dbg.c drivers/usb/host/fhci-dbg.c: remove unnecessary null test before debugfs_remove 2014-07-09 16:13:03 -07:00
fhci-hcd.c usb: host: drop owner assignment from platform_drivers 2014-10-20 16:21:49 +02:00
fhci-hub.c fhci-hub: use HUB_CHAR_* 2015-01-25 21:01:11 +08:00
fhci-mem.c
fhci-q.c
fhci-sched.c
fhci-tds.c
fhci.h
fotg210-hcd.c fotg210-hcd: use HUB_CHAR_* 2015-01-25 21:01:12 +08:00
fotg210.h fotg210: Use ehci_dbg_port struct 2014-11-07 09:02:38 -08:00
fsl-mph-dr-of.c usb: host: drop owner assignment from platform_drivers 2014-10-20 16:21:49 +02:00
fusbh200-hcd.c fusbh200-hcd: use HUB_CHAR_* 2015-01-25 21:01:12 +08:00
fusbh200.h fusbh200: Use ehci_dbg_port struct 2014-11-07 09:02:38 -08:00
hwa-hc.c USB: HWA: fix a warning message 2014-11-03 15:26:15 -08:00
imx21-dbg.c usb: kill DEBUG compile option 2013-12-03 10:34:33 -08:00
imx21-hcd.c imx21-hcd: use HUB_CHAR_* 2015-01-25 21:01:12 +08:00
imx21-hcd.h usb: kill DEBUG compile option 2013-12-03 10:34:33 -08:00
isp116x-hcd.c isp116x-hcd: use HUB_CHAR_* 2015-01-25 21:01:12 +08:00
isp116x.h
isp1362-hcd.c isp1362-hcd: use HUB_CHAR_* 2015-01-25 21:01:12 +08:00
isp1362.h
Kconfig usb: patches for v3.20 merge window 2015-02-04 11:03:20 -08:00
Makefile usb: isp1760: Move driver from drivers/usb/host/ to drivers/usb/isp1760/ 2015-01-27 09:39:38 -06:00
max3421-hcd.c max3421-hcd: use HUB_CHAR_* 2015-01-25 21:01:12 +08:00
ohci-at91.c USB: host: ohci-at91: Fix wake-up support 2015-01-25 21:06:42 +08:00
ohci-da8xx.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ohci-dbg.c USB: OHCI: fix bugs in debug routines 2014-07-17 17:05:07 -07:00
ohci-exynos.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
ohci-hcd.c USB: host: Remove ehci-octeon and ohci-octeon drivers 2014-11-25 09:19:28 -08:00
ohci-hub.c ohci-hub: use HUB_CHAR_* 2015-01-25 21:01:12 +08:00
ohci-jz4740.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ohci-mem.c USB: OHCI: add I/O watchdog for orphan TDs 2014-07-18 16:34:07 -07:00
ohci-nxp.c usb: host: drop owner assignment from platform_drivers 2014-10-20 16:21:49 +02:00
ohci-omap3.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ohci-omap.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
ohci-pci.c USB: OHCI: fix problem with global suspend on ATI controllers 2014-05-03 17:58:46 -04:00
ohci-platform.c usb: ohci-platform: add support for multiple phys per controller 2015-01-25 21:04:21 +08:00
ohci-ppc-of.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ohci-ps3.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ohci-pxa27x.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
ohci-q.c USB: OHCI: add I/O watchdog for orphan TDs 2014-07-18 16:34:07 -07:00
ohci-s3c2410.c ohci-s3c2410: use HUB_CHAR_* 2015-01-25 21:01:13 +08:00
ohci-sa1111.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ohci-sm501.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ohci-spear.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
ohci-st.c usb: host: ohci-st: Add OHCI driver support for ST STB devices 2014-09-23 21:35:50 -07:00
ohci-tilegx.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ohci-tmio.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
ohci.h USB: OHCI: Eliminate platform-specific test in ohci.h 2014-11-03 15:38:17 -08:00
oxu210hp-hcd.c oxu210hp-hcd: use HUB_CHAR_* 2015-01-25 21:01:13 +08:00
oxu210hp.h
pci-quirks.c usb: host: pci_quirks: joing string literals 2015-01-31 09:05:06 -08:00
pci-quirks.h usb: pci_quirks: fix sparse 'symbol not declared' warning 2014-05-27 16:25:32 -07:00
r8a66597-hcd.c r8a66597-hcd: use HUB_CHAR_* 2015-01-25 21:01:13 +08:00
r8a66597.h
sl811_cs.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
sl811-hcd.c sl811-hcd: use HUB_CHAR_* 2015-01-25 21:01:13 +08:00
sl811.h
ssb-hcd.c treewide: Remove unnecessary SSB_DEVTABLE_END macro 2015-02-11 14:38:29 -08:00
u132-hcd.c u132-hcd: use HUB_CHAR_* 2015-01-25 21:01:13 +08:00
uhci-debug.c usb: kill DEBUG compile option 2013-12-03 10:34:33 -08:00
uhci-grlib.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
uhci-hcd.c USB: UHCI: don't allocate frame list atomically 2014-07-09 16:16:07 -07:00
uhci-hcd.h
uhci-hub.c uhci-hub: use HUB_CHAR_* 2015-02-03 15:28:32 -08:00
uhci-pci.c USB: remove DEFINE_PCI_DEVICE_TABLE macro 2013-12-04 16:58:47 -08:00
uhci-platform.c usb: host: drop owner assignment from platform_drivers 2015-01-09 12:31:53 -08:00
uhci-q.c
xhci-dbg.c xhci: clean up work to remove unused parameters for functions in xhci-mem.c 2015-01-09 10:05:47 -08:00
xhci-ext-caps.h
xhci-hub.c usb: xhci: handle Config Error Change (CEC) in xhci driver 2015-03-23 21:51:12 +01:00
xhci-mem.c xhci: clean up work to remove unused parameters for functions in xhci-mem.c 2015-01-09 10:05:47 -08:00
xhci-mvebu.c usb: host: xhci-plat: add support for the Armada 375/38x XHCI controllers 2014-05-27 15:40:40 -07:00
xhci-mvebu.h usb: host: xhci-plat: add support for the Armada 375/38x XHCI controllers 2014-05-27 15:40:40 -07:00
xhci-pci.c usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers 2015-03-23 21:51:12 +01:00
xhci-plat.c usb: XHCI: platform: Move the Marvell quirks after the enabling the clocks 2015-02-24 08:34:32 -08:00
xhci-rcar.c usb: host: xhci-plat: add support for the R-Car H2 and M2 xHCI controllers 2014-07-09 15:49:10 -07:00
xhci-rcar.h usb: host: xhci-plat: add support for the R-Car H2 and M2 xHCI controllers 2014-07-09 15:49:10 -07:00
xhci-ring.c Revert "xhci: Clear the host side toggle manually when endpoint is 'soft reset'" 2015-03-11 14:13:51 +01:00
xhci-trace.c xhci: Export symbols used by host-controller drivers 2014-10-03 14:44:45 -07:00
xhci-trace.h xhci: fix sparse warning in xhci-trace.h 2013-12-02 12:59:45 -08:00
xhci.c Revert "xhci: Clear the host side toggle manually when endpoint is 'soft reset'" 2015-03-11 14:13:51 +01:00
xhci.h Revert "xhci: Clear the host side toggle manually when endpoint is 'soft reset'" 2015-03-11 14:13:51 +01:00