On Thu, Oct 24, 2024 at 04:13:55PM +0300, Mathias Nyman wrote: > Fix a boot hang issue triggered when a USB3 device is incorrectly assumed > to be tunneled over USB4, thus attempting to create a device link between > the USB3 "consumer" device and the USB4 "supplier" Host Interface before > the USB4 side is properly bound to a driver. > > This could happen if xhci isn't capable of detecting tunneled devices, > but ACPI tables contain all info needed to assume device is tunneled. > i.e. udev->tunnel_mode == USB_LINK_UNKNOWN. > > It turns out that even for actual tunneled USB3 devices it can't be > assumed that the thunderbolt driver providing the tunnel is loaded > before the tunneled USB3 device is created. > The tunnel can be created by BIOS and remain in use by thunderbolt/USB4 > host driver once it loads. > > Solve this by making the device link "stateless", which doesn't create > a driver presence order dependency between the supplier and consumer > drivers. > It still guarantees correct suspend/resume and shutdown ordering. > > cc: Mario Limonciello <mario.limonciello@xxxxxxx> > Fixes: f1bfb4a6fed6 ("usb: acpi: add device link between tunneled USB3 device and USB4 Host Interface") > Tested-by: Harry Wentland <harry.wentland@xxxxxxx> > Signed-off-by: Mathias Nyman <mathias.nyman@xxxxxxxxxxxxxxx> Reviewed-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>