2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/drivers/usb
Mathias Nyman 9bd9c80263 usb: hub: Fix flushing of delayed work used for post resume purposes
Delayed work that prevents USB3 hubs from runtime-suspending too early
needed to be flushed in hub_quiesce() to resolve issues detected on
QC SC8280XP CRD board during suspend resume testing.

This flushing did however trigger new issues on Raspberry Pi 3B+, which
doesn't have USB3 ports, and doesn't queue any post resume delayed work.

The flushed 'hub->init_work' item is used for several purposes, and
is originally initialized with a 'NULL' work function. The work function
is also changed on the fly, which may contribute to the issue.

Solve this by creating a dedicated delayed work item for post resume work,
and flush that delayed work in hub_quiesce()

Cc: stable <stable@kernel.org>
Fixes: a49e1e2e78 ("usb: hub: Fix flushing and scheduling of delayed work that tunes runtime pm")
Reported-by: Mark Brown <broonie@kernel.org>
Closes: https://lore.kernel.org/linux-usb/aF5rNp1l0LWITnEB@finisterre.sirena.org.uk
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Tested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> # SC8280XP CRD
Tested-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20250627164348.3982628-2-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-06-30 15:36:00 +02:00
..
atm treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
c67x00 usb: Switch back to struct platform_driver::remove() 2024-10-04 15:13:03 +02:00
cdns3 usb: cdnsp: Fix issue with CV Bad Descriptor test 2025-06-24 15:42:39 +01:00
chipidea usb: chipidea: udc: disconnect/reconnect from host when do suspend/resume 2025-06-19 12:36:43 +02:00
class usb: usbtmc: Fix timeout value in get_stb 2025-05-21 15:01:09 +02:00
common usb: common: usb-conn-gpio: use a unique name for usb connector device 2025-04-11 16:08:34 +02:00
core usb: hub: Fix flushing of delayed work used for post resume purposes 2025-06-30 15:36:00 +02:00
dwc2 treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
dwc3 usb: dwc3: gadget: Fix TRB reclaim logic for short transfers and ZLPs 2025-06-28 17:19:56 +02:00
early
fotg210 usb: fotg210-hcd: Switch to use hrtimer_setup() 2025-02-18 11:19:02 +01:00
gadget usb: gadget: u_serial: Fix race condition in TTY wakeup 2025-06-19 12:41:13 +02:00
host xhci: dbc: Flush queued requests before stopping dbc 2025-06-28 17:20:25 +02:00
image scsi: Rename .slave_alloc() and .slave_destroy() 2024-12-04 15:34:28 -05:00
isp1760 treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
misc treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
mon drivers/usb/mon: refactor min with min_t 2024-11-13 15:09:51 +01:00
mtu3 Driver core and debugfs updates 2025-01-28 12:25:12 -08:00
musb treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
phy usb: Remove orphaned UDC drivers 2025-04-11 16:11:25 +02:00
renesas_usbhs usb: renesas_usbhs: Reorder clock handling and power management in probe 2025-04-11 16:08:34 +02:00
roles usb: roles: set switch registered flag early on 2025-02-14 09:26:25 +01:00
serial treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
storage treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
typec usb: typec: displayport: Fix potential deadlock 2025-06-24 15:43:15 +01:00
usbip treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
Kconfig usb: pci-quirks: handle HAS_IOPORT dependency for AMD quirk 2023-10-02 16:19:12 +02:00
Makefile USB: xen-hcd: Traverse host/ when CONFIG_USB_XEN_HCD is selected 2024-06-04 15:33:38 +02:00
usb-skeleton.c