linux-kernelorg-stable/drivers/usb/host
Mathias Nyman 7faac1953e xhci: avoid race between disable slot command and host runtime suspend
Make xhci_disable_slot() synchronous, thus ensuring it, and
xhci_free_dev() calling it return after xHC controller completes
the disable slot command.

Otherwise the roothub and xHC host may runtime suspend, and clear the
command ring while the disable slot command is being processed.

This causes a command completion mismatch as the completion event can't
be mapped to the correct command.
Command ring gets out of sync and commands time out.
Driver finally assumes host is unresponsive and bails out.

usb 2-4: USB disconnect, device number 10
xhci_hcd 0000:00:0d.0: ERROR mismatched command completion event
...
xhci_hcd 0000:00:0d.0: xHCI host controller not responding, assume dead
xhci_hcd 0000:00:0d.0: HC died; cleaning up

Cc: <stable@vger.kernel.org>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20211210141735.1384209-3-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-12-10 15:34:01 +01:00
..
Kconfig usb: exynos: describe driver in KConfig 2021-10-05 12:55:50 +02:00
Makefile
bcma-hcd.c Revert "USB: bcma: Add a check for devm_gpiod_get" 2021-09-14 10:34:15 +02:00
ehci-atmel.c USB: host: ehci-atmel: Add support for HSIC phy 2021-09-14 10:26:29 +02:00
ehci-brcm.c USB: EHCI: Add alias for Broadcom INSNREG 2021-08-18 22:28:28 +02:00
ehci-dbg.c
ehci-exynos.c
ehci-fsl.c fsl-usb: add need_oc_pp_cycle flag for 85xx also 2021-05-21 14:04:57 +02:00
ehci-fsl.h
ehci-grlib.c
ehci-hcd.c usb: ehci: Fix a function name in comments 2021-10-05 12:44:56 +02:00
ehci-hub.c USB: EHCI: Improve port index sanitizing 2021-10-05 12:52:03 +02:00
ehci-mem.c usb: host: ehci: Make use of dma_pool_zalloc() instead of dma_pool_alloc/memset() 2021-10-21 12:47:56 +02:00
ehci-mv.c usb: host: ehci-mv: drop duplicated MODULE_ALIAS 2021-09-21 16:33:00 +02:00
ehci-npcm7xx.c
ehci-omap.c
ehci-orion.c usb: ehci-orion: Handle errors of clk_prepare_enable() in probe 2021-08-26 13:09:34 +02:00
ehci-pci.c
ehci-platform.c usb: ehci: handshake CMD_RUN instead of STS_HALT 2021-09-14 10:26:02 +02:00
ehci-ppc-of.c
ehci-ps3.c
ehci-q.c usb: host: move EH SINGLE_STEP_SET_FEATURE implementation to core 2021-05-13 16:01:59 +02:00
ehci-sched.c
ehci-sh.c
ehci-spear.c
ehci-st.c
ehci-sysfs.c
ehci-timer.c
ehci-xilinx-of.c
ehci.h usb: ehci: handshake CMD_RUN instead of STS_HALT 2021-09-14 10:26:02 +02:00
fhci-dbg.c
fhci-hcd.c
fhci-hub.c
fhci-mem.c
fhci-q.c
fhci-sched.c
fhci-tds.c
fhci.h
fotg210-hcd.c usb: host: fotg210: Make use of dma_pool_zalloc() instead of dma_pool_alloc/memset() 2021-10-21 12:47:55 +02:00
fotg210.h usb: host: fotg210: fix the actual_length of an iso packet 2021-07-21 10:03:42 +02:00
fsl-mph-dr-of.c
isp116x-hcd.c
isp116x.h
isp1362-hcd.c
isp1362.h
max3421-hcd.c usb: max-3421: Use driver data instead of maintaining a list of bound devices 2021-10-21 12:52:28 +02:00
ohci-at91.c usb: host: ohci-at91: suspend/resume ports after/before OHCI accesses 2021-07-27 16:31:17 +02:00
ohci-da8xx.c
ohci-dbg.c
ohci-exynos.c
ohci-hcd.c usb: ohci: Prefer struct_size over open coded arithmetic 2021-09-14 10:13:59 +02:00
ohci-hub.c usb: ohci: disable start-of-frame interrupt in ohci_rh_suspend 2021-10-21 12:48:18 +02:00
ohci-mem.c
ohci-nxp.c
ohci-omap.c ARM: omap1: move omap15xx local bus handling to usb.c 2021-10-05 15:39:50 +02:00
ohci-pci.c
ohci-platform.c
ohci-ppc-of.c
ohci-ps3.c
ohci-pxa27x.c
ohci-q.c
ohci-s3c2410.c
ohci-sa1111.c
ohci-sm501.c
ohci-spear.c usb: host: ohci-spear: simplify calling usb_add_hcd() 2021-07-21 10:05:05 +02:00
ohci-st.c
ohci-tmio.c usb: host: ohci-tmio: check return value after calling platform_get_resource() 2021-10-13 13:59:53 +02:00
ohci.h
oxu210hp-hcd.c usb: host: oxu210hp: Fix a function name in comments 2021-10-05 12:44:56 +02:00
pci-quirks.c
pci-quirks.h
r8a66597-hcd.c
r8a66597.h
sl811-hcd.c
sl811.h
sl811_cs.c
ssb-hcd.c
u132-hcd.c usb: host: u132-hcd: remove redundant continue statements 2021-06-17 15:31:50 +02:00
uhci-debug.c
uhci-grlib.c
uhci-hcd.c
uhci-hcd.h
uhci-hub.c
uhci-pci.c
uhci-platform.c
uhci-q.c
xhci-dbg.c
xhci-dbgcap.c
xhci-dbgcap.h
xhci-dbgtty.c USB: xhci: dbc: fix tty registration race 2021-10-11 07:42:18 +02:00
xhci-debugfs.c xhci: fix even more unsafe memory usage in xhci tracing 2021-08-26 13:06:02 +02:00
xhci-debugfs.h
xhci-ext-caps.c
xhci-ext-caps.h usb: xhci: Increase timeout for HC halt 2021-05-13 14:47:36 +02:00
xhci-histb.c
xhci-hub.c xhci: avoid race between disable slot command and host runtime suspend 2021-12-10 15:34:01 +01:00
xhci-mem.c xhci: solve a double free problem while doing s4 2021-06-17 17:34:29 +02:00
xhci-mtk-sch.c usb: xhci-mtk: use xhci_dbg() to print log 2021-10-05 12:52:39 +02:00
xhci-mtk.c usb: xhci-mtk: enable wake-up interrupt after runtime_suspend called 2021-10-27 20:49:32 +02:00
xhci-mtk.h usb: xhci-mtk: allow bandwidth table rollover 2021-08-27 10:24:51 +02:00
xhci-mvebu.c
xhci-mvebu.h
xhci-pci-renesas.c USB/Thunderbolt patches for 5.15-rc1 2021-09-01 09:59:34 -07:00
xhci-pci.c pci-v5.16-changes 2021-11-06 14:36:12 -07:00
xhci-pci.h usb: renesas-xhci: Remove renesas_xhci_pci_exit() 2021-07-21 10:05:59 +02:00
xhci-plat.c Revert "usb: host: xhci-plat: Create platform device for onboard hubs in probe()" 2021-06-18 08:37:19 +02:00
xhci-plat.h
xhci-rcar.c usb: host: xhci-rcar: Don't reload firmware after the completion 2021-08-27 10:24:58 +02:00
xhci-rcar.h
xhci-ring.c xhci: avoid race between disable slot command and host runtime suspend 2021-12-10 15:34:01 +01:00
xhci-tegra.c usb: xhci: tegra: Check padctrl interrupt presence in device tree 2021-11-17 15:02:26 +01:00
xhci-trace.c
xhci-trace.h xhci: fix even more unsafe memory usage in xhci tracing 2021-08-26 13:06:02 +02:00
xhci.c xhci: avoid race between disable slot command and host runtime suspend 2021-12-10 15:34:01 +01:00
xhci.h xhci: add quirk for host controllers that don't update endpoint DCS 2021-10-11 07:42:18 +02:00