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/core
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
..
buffer.c - Yosry Ahmed brought back some cgroup v1 stats in OOM logs. 2023-06-28 10:28:11 -07:00
config.c usb: core: config: Use USB API functions rather than constants 2025-05-21 13:13:18 +02:00
devices.c USB: Remove remnants of Wireless USB and UWB 2023-08-09 14:17:06 +02:00
devio.c USB: core: remove dead code in do_proc_bulk() 2024-11-13 07:06:41 +01:00
driver.c USB: Optimize goto logic in API usb_register_driver() 2024-12-23 18:40:34 +01:00
endpoint.c usb: core: use sysfs_emit() instead of sprintf() 2024-10-29 04:33:49 +01:00
file.c USB: make usb class a const structure 2023-07-25 17:49:30 +02:00
generic.c USB: Replace own str_plural with common one 2025-01-15 18:28:12 +01:00
hcd-pci.c USB: Fix the issue of task recovery failure caused by USB status when S4 wakes up 2024-12-04 16:14:08 +01:00
hcd.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
hub.c usb: hub: Fix flushing of delayed work used for post resume purposes 2025-06-30 15:36:00 +02:00
hub.h usb: hub: Fix flushing of delayed work used for post resume purposes 2025-06-30 15:36:00 +02:00
Kconfig usb: core: Kconfig: Improve USB authorization mode help 2024-02-17 16:38:35 +01:00
ledtrig-usbport.c usb: core: use sysfs_emit() instead of sprintf() 2024-10-29 04:33:49 +01:00
Makefile usb: misc: onboard_hub: rename to onboard_dev 2024-03-27 07:57:16 +01:00
message.c USB: document some API requirements on disconnection 2024-03-02 20:37:14 +01:00
notify.c
of.c usb: core: add missing of_node_put() in usb_of_has_devices_or_graph 2024-07-03 16:04:10 +02:00
otg_productlist.h
phy.c usb: core: add phy notify connect and disconnect 2024-01-27 17:36:14 -08:00
phy.h usb: core: add phy notify connect and disconnect 2024-01-27 17:36:14 -08:00
port.c USB: Use str_enable_disable-like helpers 2025-01-15 18:28:13 +01:00
quirks.c Logitech C-270 even more broken 2025-06-19 12:35:50 +02:00
sysfs.c usb: core: sysfs: Constify 'struct bin_attribute' 2024-12-24 08:56:04 +01:00
urb.c usb: core: Don't use %pK through printk 2025-03-14 09:17:29 +01:00
usb-acpi.c usb: acpi: fix device link removal 2025-06-19 12:36:19 +02:00
usb.c usb: Add checks for snprintf() calls in usb_alloc_dev() 2025-04-11 16:08:34 +02:00
usb.h USB: make to_usb_device_driver() use container_of_const() 2024-11-14 17:57:33 +01:00