original_kernel/drivers/usb/host
Guenter Roeck fe81f35484 usb: ohci: Prevent missed ohci interrupts
Testing ohci functionality with qemu's pci-ohci emulation often results
in ohci interface stalls, resulting in hung task timeouts.

The problem is caused by lost interrupts between the emulation and the
Linux kernel code. Additional interrupts raised while the ohci interrupt
handler in Linux is running and before the handler clears the interrupt
status are not handled. The fix for a similar problem in ehci suggests
that the problem is likely caused by edge-triggered MSI interrupts. See
commit 0b60557230 ("usb: ehci: Prevent missed ehci interrupts with
edge-triggered MSI") for details.

Ensure that the ohci interrupt code handles all pending interrupts before
returning to solve the problem.

Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: David Laight <David.Laight@aculab.com>
Cc: stable@vger.kernel.org
Fixes: 306c54d0ed ("usb: hcd: Try MSI interrupts on PCI devices")
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Link: https://lore.kernel.org/r/20240429154010.1507366-1-linux@roeck-us.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-04-30 18:04:40 +02:00
..
Kconfig
Makefile
bcma-hcd.c
ehci-atmel.c
ehci-brcm.c
ehci-dbg.c
ehci-exynos.c
ehci-fsl.c
ehci-fsl.h
ehci-grlib.c
ehci-hcd.c
ehci-hub.c
ehci-mem.c
ehci-mv.c
ehci-npcm7xx.c
ehci-omap.c
ehci-orion.c
ehci-pci.c
ehci-platform.c
ehci-ppc-of.c
ehci-ps3.c
ehci-q.c
ehci-sched.c
ehci-sh.c
ehci-spear.c
ehci-st.c
ehci-sysfs.c
ehci-timer.c
ehci-xilinx-of.c
ehci.h
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
isp116x-hcd.c
isp116x.h
isp1362-hcd.c
isp1362.h
max3421-hcd.c
octeon-hcd.c
octeon-hcd.h
ohci-at91.c
ohci-da8xx.c
ohci-dbg.c
ohci-exynos.c
ohci-hcd.c usb: ohci: Prevent missed ohci interrupts 2024-04-30 18:04:40 +02:00
ohci-hub.c
ohci-mem.c
ohci-nxp.c
ohci-omap.c
ohci-pci.c
ohci-platform.c
ohci-ppc-of.c
ohci-ps3.c
ohci-pxa27x.c usb: ohci-pxa27x: Remove unused of_gpio.h 2024-03-07 20:58:25 +00:00
ohci-q.c
ohci-s3c2410.c
ohci-sa1111.c
ohci-sm501.c
ohci-spear.c
ohci-st.c
ohci.h
oxu210hp-hcd.c
pci-quirks.c
pci-quirks.h
r8a66597-hcd.c
r8a66597.h
sl811-hcd.c usb: sl811-hcd: only defined function checkdone if QUIRK2 is defined 2024-03-07 20:58:18 +00:00
sl811.h
sl811_cs.c
ssb-hcd.c
uhci-debug.c
uhci-grlib.c
uhci-hcd.c
uhci-hcd.h
uhci-hub.c
uhci-pci.c
uhci-platform.c
uhci-q.c
xen-hcd.c
xhci-caps.h
xhci-dbg.c
xhci-dbgcap.c xhci: dbc: poll at different rate depending on data transfer activity 2024-03-02 20:25:28 +01:00
xhci-dbgcap.h xhci: dbc: poll at different rate depending on data transfer activity 2024-03-02 20:25:28 +01:00
xhci-dbgtty.c
xhci-debugfs.c
xhci-debugfs.h
xhci-ext-caps.c
xhci-ext-caps.h
xhci-histb.c
xhci-hub.c xhci: save slot ID in struct 'xhci_port' 2024-03-02 20:25:27 +01:00
xhci-mem.c usb: xhci: utilize 'xhci_free_segments_for_ring()' for freeing segments 2024-03-02 20:25:27 +01:00
xhci-mtk-sch.c
xhci-mtk.c
xhci-mtk.h
xhci-mvebu.c
xhci-mvebu.h
xhci-pci-renesas.c
xhci-pci.c xhci: Allow RPM on the USB controller (1022:43f7) by default 2024-03-05 13:53:30 +00:00
xhci-pci.h
xhci-plat.c
xhci-plat.h usb: xhci-plat: Don't include xhci.h 2024-04-23 16:25:29 -07:00
xhci-port.h
xhci-rcar.c
xhci-ring.c usb: xhci: correct return value in case of STS_HCE 2024-04-04 14:54:53 +02:00
xhci-rzv2m.c usb: xhci-plat: Don't include xhci.h 2024-04-23 16:25:29 -07:00
xhci-rzv2m.h
xhci-tegra.c
xhci-trace.c
xhci-trace.h xhci: Fix root hub port null pointer dereference in xhci tracepoints 2024-04-04 14:54:54 +02:00
xhci.c usb: xhci: Add error handling in xhci_map_urb_for_dma 2024-03-02 20:25:28 +01:00
xhci.h xhci: save slot ID in struct 'xhci_port' 2024-03-02 20:25:27 +01:00