Hi Kai-Heng, On 7-Oct-24 6:22 AM, Kai-Heng Feng wrote: > Hi Hans, > > On 2024/10/5 10:25 PM, Hans de Goede wrote: >> Hi Kai-Heng, >> >> On 6-Sep-24 7:30 AM, 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: >>> [ 445.814574] hub 2-0:1.0: hub_suspend >>> [ 445.814652] usb usb2: bus suspend, wakeup 0 >>> [ 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 >>> [ 445.824651] xhci_hcd 0000:00:14.0: handle_port_status: starting usb1 port polling. >>> [ 445.844039] xhci_hcd 0000:00:14.0: PM: pci_pm_suspend(): hcd_pci_suspend+0x0/0x20 returns -16 >>> [ 445.844058] xhci_hcd 0000:00:14.0: PM: dpm_run_callback(): pci_pm_suspend+0x0/0x1c0 returns -16 >>> [ 445.844072] xhci_hcd 0000:00:14.0: PM: failed to suspend async: error -16 >>> [ 446.276101] PM: Some devices failed to suspend, or early wake event detected >>> >>> So add a quirk to make sure the following is happening: >>> 1. Let the i915 driver suspend first, to ensure the display is off so >>> system also cuts the USB touchscreen's power. >>> 2. Wait a while to let the USB disconnect event fire and get handled. >>> 3. Since the disconnect event already happened, the xhci's suspend >>> routine won't be interrupted anymore. >>> >>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx> >> >> I was wondering if there is any progress in trying to come up with >> a more generic fix at the USB hub level for this as discussed in >> other emails in this thread ? > > This patch fixes this issue and IMO quite generic: > https://lore.kernel.org/linux-usb/20240906030548.845115-1-duanchenghao@xxxxxxxxxx/ It looks like during review the patch has changes and now it only applies to S4 / hibernate. So I guess we may need something similar for S3 / s2idle suspend ? Regards, Hans