On Sat, May 15, 2021 at 10:17:07PM -0400, Dominik Winecki wrote: > Hello, > > I've got an issue on my laptop (Dell XPS 9570 with an i7-7700HQ) that > I'm trying to fix. Multiple usb ports are reporting over-current, despite > nothing being plugged in: > > Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub > Bus 001 Device 002: ID 138a:0091 Validity Sensors, Inc. VFS7552 Touch Fingerprint Sensor > Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub > > Two kworkers running runtime pm are trying to suspend the usb 2 & 3 root hubs. > The xHCI driver will not suspend a hub with over-current triggered > (since e9fb08d617bf) so it fails, resumes the hub, and pm tries again. > This is taking two CPU cores, but it stops if a device of the same usb > version is plugged in, or if I set the power control policy to on. > Also, this is blocking system suspend, but that's expected behavior. > > Reverting the e9fb08d617bf check fixes both issues for me, but that may cause > system halts in other systems. Making it a non-retriable suspend failure > stops the kworkers but then it will never suspend after an OC event. > > Does it make sense to fix this in the USB driver? Or is this a PM issue? > I'd rather fix my over-current issue, but taking two cpus whenever xHCI has > a no-device over-current reading seems like a bug. As you mentioned, the real bug is in your hardware. Why does it report an over-current condition when nothing is plugged into the port? The only reasonable way I can think of to fix this would be to add a quirk telling the xhci-hcd driver that your hardware does not report over-current conditions reliably, so the reports should be ignored. Alan Stern