[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <7d19444c-930e-4f43-b7bc-00c746d38cc0@linux.intel.com>
Date: Mon, 20 Oct 2025 14:20:23 +0300
From: Mathias Nyman <mathias.nyman@...ux.intel.com>
To: Hongyu Xie <xiehongyu1@...inos.cn>, mathias.nyman@...el.com
Cc: gregkh@...uxfoundation.org, linux-usb@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v1] usb: xhci: limit run_graceperiod for only usb 3.0
devices
On 10/17/25 15:12, Hongyu Xie wrote:
> run_graceperiod blocks usb 2.0 devices from auto suspending after
> xhci_start for 500ms.
>
> Log shows:
> [ 13.387170] xhci_hub_control:1271: xhci-hcd PNP0D10:03: Get port status 7-1 read: 0x2a0, return 0x100
> [ 13.387177] hub_event:5779: hub 7-0:1.0: state 7 ports 1 chg 0000 evt 0000
> [ 13.387182] hub_suspend:3903: hub 7-0:1.0: hub_suspend
> [ 13.387188] hcd_bus_suspend:2250: usb usb7: bus auto-suspend, wakeup 1
> [ 13.387191] hcd_bus_suspend:2279: usb usb7: suspend raced with wakeup event
> [ 13.387193] hcd_bus_resume:2303: usb usb7: usb auto-resume
> [ 13.387296] hub_event:5779: hub 3-0:1.0: state 7 ports 1 chg 0000 evt 0000
> [ 13.393343] handle_port_status:2034: xhci-hcd PNP0D10:02: handle_port_status: starting usb5 port polling.
> [ 13.393353] xhci_hub_control:1271: xhci-hcd PNP0D10:02: Get port status 5-1 read: 0x206e1, return 0x10101
> [ 13.400047] hub_suspend:3903: hub 3-0:1.0: hub_suspend
> [ 13.403077] hub_resume:3948: hub 7-0:1.0: hub_resume
> [ 13.403080] xhci_hub_control:1271: xhci-hcd PNP0D10:03: Get port status 7-1 read: 0x2a0, return 0x100
> [ 13.403085] hub_event:5779: hub 7-0:1.0: state 7 ports 1 chg 0000 evt 0000
> [ 13.403087] hub_suspend:3903: hub 7-0:1.0: hub_suspend
> [ 13.403090] hcd_bus_suspend:2250: usb usb7: bus auto-suspend, wakeup 1
> [ 13.403093] hcd_bus_suspend:2279: usb usb7: suspend raced with wakeup event
> [ 13.403095] hcd_bus_resume:2303: usb usb7: usb auto-resume
> [ 13.405002] handle_port_status:1913: xhci-hcd PNP0D10:04: Port change event, 9-1, id 1, portsc: 0x6e1
> [ 13.405016] hub_activate:1169: usb usb5-port1: status 0101 change 0001
> [ 13.405026] xhci_clear_port_change_bit:658: xhci-hcd PNP0D10:02: clear port1 connect change, portsc: 0x6e1
> [ 13.413275] hcd_bus_suspend:2250: usb usb3: bus auto-suspend, wakeup 1
> [ 13.419081] hub_resume:3948: hub 7-0:1.0: hub_resume
> [ 13.419086] xhci_hub_control:1271: xhci-hcd PNP0D10:03: Get port status 7-1 read: 0x2a0, return 0x100
> [ 13.419095] hub_event:5779: hub 7-0:1.0: state 7 ports 1 chg 0000 evt 0000
> [ 13.419100] hub_suspend:3903: hub 7-0:1.0: hub_suspend
> [ 13.419106] hcd_bus_suspend:2250: usb usb7: bus auto-suspend, wakeup 1
> [ 13.419110] hcd_bus_suspend:2279: usb usb7: suspend raced with wakeup event
> [ 13.419112] hcd_bus_resume:2303: usb usb7: usb auto-resume
> [ 13.420455] handle_port_status:2034: xhci-hcd PNP0D10:04: handle_port_status: starting usb9 port polling.
> [ 13.420493] handle_port_status:1913: xhci-hcd PNP0D10:05: Port change event, 10-1, id 1, portsc: 0x6e1
> [ 13.425332] hcd_bus_suspend:2279: usb usb3: suspend raced with wakeup event
> [ 13.431931] handle_port_status:2034: xhci-hcd PNP0D10:05: handle_port_status: starting usb10 port polling.
> [ 13.435080] hub_resume:3948: hub 7-0:1.0: hub_resume
> [ 13.435084] xhci_hub_control:1271: xhci-hcd PNP0D10:03: Get port status 7-1 read: 0x2a0, return 0x100
> [ 13.435092] hub_event:5779: hub 7-0:1.0: state 7 ports 1 chg 0000 evt 0000
> [ 13.435096] hub_suspend:3903: hub 7-0:1.0: hub_suspend
> [ 13.435102] hcd_bus_suspend:2250: usb usb7: bus auto-suspend, wakeup 1
> [ 13.435106] hcd_bus_suspend:2279: usb usb7: suspend raced with wakeup event
>
> usb7 and other usb 2.0 root hub were rapidly toggling between suspend
> and resume states. More, "suspend raced with wakeup event" confuses people.
>
> So, limit run_graceperiod for only usb 3.0 devices
>
> Signed-off-by: Hongyu Xie <xiehongyu1@...inos.cn>
Sounds reasonable. I don't recall USB 2.0 devices needing this.
Hub driver has also changed a bit since the xhci run_graceperiod was added.
USB 3 hubs are no longer aggressively runtime suspending after resume. See:
8f5b7e2bec1c usb: hub: fix detection of high tier USB3 devices behind suspended hubs
We could possibly get rid of the whole xhci run_graceperiod by extending the hub driver
change to cover both init and resume paths.
This patch is a good step in that direction
Thanks
Mathias
Powered by blists - more mailing lists