[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250726-vhci-hcd-suspend-fix-v2-0-189266dfdfaa@collabora.com>
Date: Sat, 26 Jul 2025 01:08:02 +0300
From: Cristian Ciocaltea <cristian.ciocaltea@...labora.com>
To: Valentina Manea <valentina.manea.m@...il.com>,
Shuah Khan <shuah@...nel.org>, Hongren Zheng <i@...ithal.me>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
"Brian G. Merrell" <bgmerrell@...ell.com>
Cc: kernel@...labora.com, Greg Kroah-Hartman <gregkh@...e.de>,
linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH v2 00/18] USB/IP VHCI suspend fix and driver cleanup
The USB/IP Virtual Host Controller (VHCI) platform driver is expected to
prevent entering system suspend when at least one remote device is
attached to the virtual USB root hub.
However, in some cases, the detection logic for active USB/IP
connections doesn't seem to work reliably, e.g. when all devices
attached to the virtual hub have been already suspended. This will
normally lead to a broken suspend state, with unrecoverable resume.
The first patch of the series provides a workaround to ensure the
virtually attached devices do not enter suspend. Note this is currently
limited to the client side (vhci_hcd) only, since the server side
(usbip_host) doesn't implement system suspend prevention.
Additionally, during the investigation I noticed and fixed a bunch of
coding style issues, hence the subsequent patches contain all the
changes needed to make checkpatch happy for the entire driver.
IMPORTANT:
Please note commit aa7a9275ab81 ("PM: sleep: Suspend async parents after
suspending children") from v6.16-rc1 introduced a regression which
breaks the suspend cancellation and hangs the system.
A fix [1] has been already provided, which also landed soon after in
v6.16-rc7 under commit ebd6884167ea ("PM: sleep: Update power.completion
for all devices on errors").
[1] https://lore.kernel.org/all/6191258.lOV4Wx5bFT@rjwysocki.net/
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@...labora.com>
---
Changes in v2:
- Updated cover letter to indicate the PM core fix has landed in
v6.16-rc7
- Also made it clear that the patch fixing up suspend prevention only
applies to the client side (vhci_hcd), since the server side
(usbip_host) doesn't implement this functionality
- Documented the usage of dev_pm_syscore_device() in vhci_urb_enqueue()
- Reworked most of the cleanup patches according to the feedback
received from Greg
- Link to v1: https://lore.kernel.org/r/20250717-vhci-hcd-suspend-fix-v1-0-2b000cd05952@collabora.com
---
Cristian Ciocaltea (18):
usb: vhci-hcd: Prevent suspending virtually attached devices
usb: vhci-hcd: Ensure lines do not end with '('
usb: vhci-hcd: Consistently use the braces
usb: vhci-hcd: Avoid unnecessary use of braces
usb: vhci-hcd: Consistently use blank lines
usb: vhci-hcd: Drop spaces after casts
usb: vhci-hcd: Add spaces around operators
usb: vhci-hcd: Drop unnecessary parentheses
usb: vhci-hcd: Fix open parenthesis alignment
usb: vhci-hcd: Simplify NULL comparison
usb: vhci-hcd: Simplify kzalloc usage
usb: vhci-hcd: Use the paranthesized form of sizeof
usb: vhci-hcd: Fix block comments
usb: vhci-hcd: Remove ftrace-like logging
usb: vhci-hcd: Consistently use __func__
usb: vhci-hcd: Do not split quoted strings
usb: vhci-hcd: Switch to dev_err_probe() in probe path
usb: vhci-hcd: Replace pr_*() with dev_*() logging
drivers/usb/usbip/vhci_hcd.c | 274 +++++++++++++++++++++++--------------------
1 file changed, 146 insertions(+), 128 deletions(-)
---
base-commit: 024e09e444bd2b06aee9d1f3fe7b313c7a2df1bb
change-id: 20250714-vhci-hcd-suspend-fix-7db5c25c509d
Powered by blists - more mailing lists