On Thu, Jan 09, 2025 at 03:55:09AM +0000, Guan-Yu Lin wrote: > Sharing a USB controller with another entity via xhci-sideband driver > creates power management complexities. To prevent the USB controller > from being inadvertently deactivated while in use by the other entity, a > usage-count based mechanism is implemented. This allows the system to > manage power effectively, ensuring the controller remains available > whenever needed. > In order to maintain full functionality of an offloaded USB devices, > several changes are made within the suspend flow of such devices: > - skip usb_suspend_device() so that the port/hub are still active for > USB transfers via offloaded path. > - not flushing the endpoints which are used by USB interfaces marked > with needs_remote_wakeup. Namely, skip usb_suspend_interface() and > usb_hcd_flush_endpoint() on associated USB interfaces. This reserves a > pending interrupt urb during system suspend for handling the interrupt > transfer, which is necessary since remote wakeup doesn't apply in the > offloaded USB devices when controller is still active. Does this reasoning apply to interrupt-OUT as well as interrupt-IN? Or looking at it another way: Since the device's endpoints are being used by the coprocessor, should the system flush any of them at all? Alan Stern