[Bug 299199] thunderbolt(4): Suspend routine is incomplete

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 07 Oct 2026 12:27:48 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=299199

            Bug ID: 299199
           Summary: thunderbolt(4): Suspend routine is incomplete
           Product: Base System
           Version: CURRENT
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: obiwac@FreeBSD.org

There are a few things we should be doing in our suspend routine for it to be
complete which we are not yet doing:

- We should be sending LT_LRoff to downstream routers on the sideband (normally
we can't send anything on the sideband after setting the sleep bit but LT_LRoff
is an exception). See 4.5.1. 
- We should make sure the USB3 hub is in the U3 state and it's PCI endpoint is
in D3.
- We should be able to choose which events wake us up from sleep (wake on PCIe,
wake on USB3, or wake on DP).
- We should wait for the ROP_CMPLT notification on v2 routers instead of
polling the SLPR bit (see 4.5.1). But v2 routers do still support v1-style
polling and I don't think FreeBSD yet has a mechanism for asynchronous suspend
in newbus, so this is fine for the time being.

None of these prevent suspending enough to unblock S0i3 entry, but for full
USB4 support we will need to take care of these eventually.

-- 
You are receiving this mail because:
You are the assignee for the bug.