Re: [REGRESSION] 6.12.36+: usb: hub: post-resume delayed work triggers > uncorrected MCE / data fabric sync flood on Threadripper 7970X > (bisected to aec11e5f9c45)
Lovekesh Solanki <[email protected]>
| Newsgroups | dev.linux.lists.regressions,org.kernel.vger.linux-kernel,org.kernel.vger.linux-usb,org.kernel.vger.stable |
|---|---|
| Message-ID | <aoser8dLytrwqBC2@eggarch> |
On Sun, Aug 23, 2026 at 05:40:59PM +0200, Michal Pecio wrote: > But I'm not sure what you mean by "1Hz stress loop" and why is slowing > down the suspend/resume cycles or moving suspend from close() call into > a work supposed to create problems? > > I would naively think that doing things *too fast* is more likely to > trigger races and break the HW. The whole issue smells like a HW bug, USB2 roothubs still do 30 ms cycles and are harmless, only stretched SS ones kill the box. So if speed were the issue the faster ones would be dying first and pre regression kernels ran fine. About 1Hz, adb scans the bus once a second, every open resumes the root hub and host controller out of D3 and close puts it back this existed before regression too but with 30 ms of close() and slept for rest of the second and now it keeps it in D0 well after close(), the suspend itself happening later from the delayed work, so this d3 - d0 - d3 trip of ~230ms repeats on each scan. That's the loop I meant. > Can it not become a problem for external hubs, under other workloads? Possibly yes, but nobody reported that so I'd rather scope where the harm is proven. > Also, what if we connect a downstream SS hub to the root hub? Will this > not cause the root hub to stay awake for 200ms again? Problem is back? The root hub itself skips the hold since the check is on its own parent, but it will be kept awake anyway while the downstream hub or devices are in use which is normal activity based PM. If heavy polling behind a real hub ever causes trouble that's probably a xhci/platform level fix anyways since real hubs can't really just drop the hold. Regards, Lovekesh