On Fri, Sep 6, 2024 at 10:22 PM Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > > On Fri, Sep 06, 2024 at 01:30:47PM +0800, Kai-Heng Feng wrote: > > The HP ProOne 440 has a power saving design that when the display is > > off, it also cuts the USB touchscreen device's power off. > > > > This can cause system early wakeup because cutting the power off the > > touchscreen device creates a disconnect event and prevent the system > > from suspending: > > Is the touchscreen device connected directly to the root hub? If it is > then it looks like there's a separate bug here, which needs to be fixed. > > > [ 445.814574] hub 2-0:1.0: hub_suspend > > [ 445.814652] usb usb2: bus suspend, wakeup 0 > > Since the wakeup flag is set to 0, the root hub should not generate a > wakeup request when a port-status-change event happens. The disconnect event itself should not generate a wake request, but the interrupt itself still needs to be handled. > > > [ 445.824629] xhci_hcd 0000:00:14.0: Port change event, 1-11, id 11, portsc: 0x202a0 > > [ 445.824639] xhci_hcd 0000:00:14.0: resume root hub > > But it did. This appears to be a bug in one of the xhci-hcd suspend > routines. So should the xhci-hcd delay all interrupt handling after system resume? > > Alternatively, if the touchscreen device is connected to an intermediate > hub then that intermediate hub should not be allowed to generate wakeup > events. That's determined by userspace, though, not by the kernel. It's connected to roothub. Kai-Heng > > Alan Stern