Re:Re: [PATCH] usb: usbfs: Add reset_resume callback to usbfs.

From: 自己
Date: Sun Aug 24 2025 - 21:37:31 EST


At 2025-08-23 04:30:18, "Alan Stern" <stern@xxxxxxxxxxxxxxxxxxx> wrote:
>On Fri, Aug 22, 2025 at 10:46:02AM +0800, ccc194101@xxxxxxx wrote:
>> From: chenchangcheng <chenchangcheng@xxxxxxxxxx>
>>
>> When an Apple device is inserted into the host, and the host
>> wakes up from S3/S4 power states, if the reset_resume process
>> is triggered, the absence of a reset_resume callback in usbfs will
>> cause the device to unbind.
>> By adding a reset_resume callback to usbfs and reporting REMOVE and ADD
>> uevents in reset_resume, the userspace is prompted to reissue commands
>> to re-establish the binding with usbfs.
>
>usbfs has no way to inform userspace when the device is reset. This is
>true for normal resets as well as for reset-resumes (no pre_reset,
>post_reset, or reset_resume callbacks). I don't see any point in trying
>to add support for the latter but not the former.
>
>Unbinding the device forces userspace to re-open the device file and
>establish a new binding. How does adding REMOVE and ADD uevents make
>the situation any better than it already is?
>

>Alan Stern

Here is my reasoning:
Currently, for Apple devices after S3/S4 states, since the USB hub loses power,
the reset-resume process is triggered during resume. If the original
reset_resume process is followed, the device would be forcibly unbound,
and the device_attach function would be used to rebind the driver.
However, usbfs is different in that it cannot automatically rebind
after unbinding and requires a userspace ioctl to re-establish the binding.

If we assume that the reset_resume callback of usbfs does nothing
and simply returns 0, the USB device would still be reset. When userspace
uses the previous file descriptor handle to issue a command, it would result
in an error: "PTP_OC 0x1007 receiving resp failed: PTP Session Not Open (0x2003)."

Therefore, by adding REMOVE and ADD uevents in the reset_resume process,
userspace is notified to first unbind and then rebind. This approach avoids the aforementioned issue.

Chen Changcheng