Hi On 10.1.2022 17.03, Joe Minor wrote: > Hi, > > I use an USB-C dock to connect my laptop to two external monitors and peripherals like mouse, keyboard, headset and webcam. > Since upgrading to kernel version 5.14.6, these devices are no longer enumerated after boot. > They will however function when plugged in after login. > The dock uses the DisplayLink chipset, which requires the evdi kernel module (GitHub: https://github.com/DisplayLink/evdi/). > I do not encounter this problem when blacklisting the module (which has the consequence that my monitors no longer work). > > Hardware: > - Dock: Lenovo ThinkPad Hybrid USB-C with USB-A Dock > - Laptop: Microsoft Surface Book 2 > > The kernel buffer contains these messages per device: > [ 7.165643] usb 1-1.2.4.2.4: Not enough bandwidth for new device state. > [ 7.165652] usb 1-1.2.4.2.4: can't set config #1, error -28 > > The last unaffected kernel version is 5.14.5. > I bisected the issue to commit 2847c46c6148 ('Revert "USB: xhci: fix U1/U2 handling for hardware with XHCI_INTEL_HOST quirk set"'), which also mentions xhci bandwidth issues. This change will enable xhci USB Link power management for some devices. It adds a few more items to do during enumeration for them. > > My system information is included below. Please let me know how if you need more information or if you want me to run more tests. > > Thanks a lot > Joe If you could boot with usb core and xhci dynamic debugging enabled it could show more. Add "usbcore.dyndbg=+p xhci_hcd.dyndbg=+p" to your kernel cmdline Also, could be worth checking if removing XHCI_LPM_SUPPORT from your kernel helps: diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index 5c351970cdf1..7434406be452 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -202,7 +202,6 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) xhci->quirks |= XHCI_BROKEN_D3COLD; if (pdev->vendor == PCI_VENDOR_ID_INTEL) { - xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_INTEL_HOST; xhci->quirks |= XHCI_AVOID_BEI; } Thanks -Mathias