OpenCloudOS-Kernel/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 usb: xhci-mtk: support to build xhci-mtk-hcd.ko 2021-03-10 09:37:17 +01:00
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 usb: host: Use fallthrough pseudo-keyword 2020-07-10 08:55:18 +02:00
ehci-exynos.c usb: host: ehci-exynos: Fix error check in exynos_ehci_probe() 2020-06-18 10:40:57 +02:00
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 USB: host: Use the correct style for SPDX License Identifier 2020-04-16 14:32:46 +02:00
ehci-grlib.c usb: add a HCD_DMA flag instead of guestimating DMA capabilities 2019-08-21 10:03:35 -07:00
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 usb/host: ehci-npcm7xx: Use pm_ptr() macro 2020-09-04 16:54:47 +02:00
ehci-omap.c usb: ehci-omap: Fix PM disable depth umbalance in ehci_hcd_omap_probe 2020-12-09 14:33:45 +01:00
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 USB:ehci:fix Kunpeng920 ehci hardware problem 2021-04-10 10:45:38 +02:00
ehci-platform.c usb: ehci: handshake CMD_RUN instead of STS_HALT 2021-09-14 10:26:02 +02:00
ehci-ppc-of.c usb: add a HCD_DMA flag instead of guestimating DMA capabilities 2019-08-21 10:03:35 -07:00
ehci-ps3.c powerpc/ps3: make system bus's remove and shutdown callbacks return void 2020-12-04 01:01:22 +11:00
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 usb: host: ehci-sched: add comment about find_tt() not returning error 2020-10-28 12:21:38 +01:00
ehci-sh.c usb: host: ehci-sh: Remove unused platform data support 2019-12-10 11:34:27 +01:00
ehci-spear.c usb/host: ehci-spear: Use pm_ptr() macro 2020-09-04 16:54:45 +02:00
ehci-st.c usb: Remove dev_err() usage after platform_get_irq() 2019-07-30 20:29:18 +02:00
ehci-sysfs.c
ehci-timer.c
ehci-xilinx-of.c usb: add a HCD_DMA flag instead of guestimating DMA capabilities 2019-08-21 10:03:35 -07:00
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 usb: host: fhci-hcd: annotate PIPE_CONTROL switch case with fallthrough 2020-02-19 11:08:52 +01:00
fhci-hub.c
fhci-mem.c
fhci-q.c
fhci-sched.c USB/Thunderbolt patches for 5.9-rc1 2020-08-05 12:13:10 -07:00
fhci-tds.c usb: host: fhci-tds: Remove unused variables 'buf' and 'extra_data' 2020-07-09 17:19:59 +02:00
fhci.h USB: host: Use the correct style for SPDX License Identifier 2020-04-16 14:32:46 +02:00
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 usb: host: fsl-mph-dr-of: check return of dma_set_mask() 2020-10-28 13:19:31 +01:00
isp116x-hcd.c USB: host: isp116x: remove dentry pointer for debugfs 2021-03-10 09:37:15 +01:00
isp116x.h USB: host: isp116x: remove dentry pointer for debugfs 2021-03-10 09:37:15 +01:00
isp1362-hcd.c USB: host: isp1362: remove dentry pointer for debugfs 2021-03-10 09:37:15 +01:00
isp1362.h USB: host: isp1362: remove dentry pointer for debugfs 2021-03-10 09:37:15 +01:00
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 usb: ohci-da8xx: ensure error return on variable error is set 2020-01-08 17:34:18 +01:00
ohci-dbg.c
ohci-exynos.c usb: host: ohci-exynos: Fix error handling in exynos_ohci_probe() 2020-08-27 09:25:58 +02:00
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 usb: host: Fix excessive alignment restriction for local memory allocations 2019-06-28 07:57:07 +02:00
ohci-nxp.c usb: ohci-nxp: fix use of integer as pointer 2019-11-04 15:50:38 +01:00
ohci-omap.c ARM: omap1: move omap15xx local bus handling to usb.c 2021-10-05 15:39:50 +02:00
ohci-pci.c USB: OHCI: remove obsolete FIXME comment 2020-06-19 08:58:44 +02:00
ohci-platform.c usb/ohci-platform: Fix a warning when hibernating 2020-05-18 18:15:39 +02:00
ohci-ppc-of.c usb: add a HCD_DMA flag instead of guestimating DMA capabilities 2019-08-21 10:03:35 -07:00
ohci-ps3.c powerpc/ps3: make system bus's remove and shutdown callbacks return void 2020-12-04 01:01:22 +11:00
ohci-pxa27x.c usb: hosts: Remove in_interrupt() from comments 2020-10-28 12:32:12 +01:00
ohci-q.c USB: OHCI: Use fallthrough pseudo-keyword 2020-07-10 08:55:18 +02:00
ohci-s3c2410.c usb: hosts: Remove in_interrupt() from comments 2020-10-28 12:32:12 +01:00
ohci-sa1111.c ARM: 9048/1: sa1111: make sa1111 bus's remove callback return void 2021-02-01 19:42:13 +00:00
ohci-sm501.c USB: ohci-sm501: Add missed iounmap() in remove 2020-06-18 10:42:53 +02:00
ohci-spear.c usb: host: ohci-spear: simplify calling usb_add_hcd() 2021-07-21 10:05:05 +02:00
ohci-st.c usb: Remove dev_err() usage after platform_get_irq() 2019-07-30 20:29:18 +02:00
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 usb: host: ohci: Mark cc_to_error as __maybe_unused 2020-07-03 10:18:40 +02:00
oxu210hp-hcd.c usb: host: oxu210hp: Fix a function name in comments 2021-10-05 12:44:56 +02:00
pci-quirks.c usb: pci-quirks: convert to readl_poll_timeout_atomic() 2020-09-25 16:30:05 +02:00
pci-quirks.h usb: pci-quirks: Minor cleanup for AMD PLL quirk 2019-07-25 10:40:02 +02:00
r8a66597-hcd.c usb: host: r8a66597-hcd: Remove set, then over-written, but never used variable 'tmp' 2020-07-09 17:19:57 +02:00
r8a66597.h USB: host: Use the correct style for SPDX License Identifier 2020-04-16 14:32:46 +02:00
sl811-hcd.c usb: sl811-hcd: improve misleading indentation 2021-03-23 12:38:11 +01:00
sl811.h USB: host: sl811: remove dentry pointer for debugfs 2021-03-10 09:37:15 +01:00
sl811_cs.c usb: host: Mundane spello fix in the file sl811_cs.c 2021-03-18 09:02:27 +01:00
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 usb: add a HCD_DMA flag instead of guestimating DMA capabilities 2019-08-21 10:03:35 -07:00
uhci-hcd.c USB: host: uhci: remove dentry pointer for debugfs 2021-03-10 09:37:15 +01:00
uhci-hcd.h USB: host: uhci: remove dentry pointer for debugfs 2021-03-10 09:37:15 +01:00
uhci-hub.c
uhci-pci.c usb: hci: add hc_driver as argument for usb_hcd_pci_probe 2020-05-15 15:44:34 +02:00
uhci-platform.c usb: add a HCD_DMA flag instead of guestimating DMA capabilities 2019-08-21 10:03:35 -07:00
uhci-q.c
xhci-dbg.c
xhci-dbgcap.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
xhci-dbgcap.h xhci: dbc: remove tty specific port structure from struct xhci_dbc 2020-07-23 17:05:29 +02:00
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 usb: xhci: add debugfs support for ep with stream 2020-09-20 16:18:00 +02:00
xhci-ext-caps.c xhci: ext-caps: Use software node API with the properties 2021-02-05 10:08:19 +01:00
xhci-ext-caps.h usb: xhci: Increase timeout for HC halt 2021-05-13 14:47:36 +02:00
xhci-histb.c xhci: hisilicon: fix refercence leak in xhci_histb_probe 2020-11-13 14:32:43 +01:00
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 usb: host: xhci: mvebu: make USB 3.0 PHY optional for Armada 3720 2021-02-03 11:26:47 +01:00
xhci-mvebu.h usb: host: xhci: mvebu: make USB 3.0 PHY optional for Armada 3720 2021-02-03 11:26:47 +01:00
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 usb: host: xhci: mvebu: make USB 3.0 PHY optional for Armada 3720 2021-02-03 11:26:47 +01:00
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 USB: host: Use the correct style for SPDX License Identifier 2020-04-16 14:32:46 +02:00
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