Sinds afgelopen november is er een kernel-bugrapport van een Canonical-ingenieur nadat hij ontdekte dat de Intel Thunderbolt USB-controller op verschillende laptops”dood”was na het hervatten van het systeem. Dat probleem is nu opgelost met Linux 6.4 en deze generieke oplossing kan uiteindelijk ook andere hardware helpen.
Dit kernel-bugrapport werd afgelopen november geopend nadat Canonical enkele Intel Comet Lake-laptops had gevonden waar hun Thunderbolt USB-controller werkte niet meer nadat het systeem op Linux was hervat. Het was moeilijk te debuggen totdat Mika Westerberg van Intel, die het Thunderbolt-werk van de Linux-kernel leidt, de getroffen hardware in handen kreeg, waaronder in ieder geval verschillende Dell-laptops. Uiteindelijk bleek het Intel Titan Ridge xHCI-controllers te beïnvloeden en de oplossing is om de kernel langer op het apparaat te laten wachten bij het hervatten van het systeem.
Met Linux 6.4 zal de PCI-energiebeheercode van de kernel het nu mogelijk maken om langer te wachten tot PCIe-apparaten klaar zijn nadat het systeem is hervat, volgens een vergelijkbare aanpak die al door de Linux-kernel werd gevolgd tijdens het resetten van PCIe-apparaten. Westerberg uitgelegd in de eenregelige patch naar de algemene PCI-stuurprogrammacode:
“De PCIe-specificatie schrijft voor dat een apparaat tot 1 seconde nodig heeft om te herstellen van reset en dezelfde vertraging wordt voorgeschreven wanneer het uit D3cold komt (zoals dat omvat ook reset). Het apparaat kan deze vertraging van 1 seconde verlengen door voltooiingen van Request Retry Status en we voorzien daarvoor in Linux met een limiet van 60 seconden, alleen in het resetcodepad, niet in het CV-codepad.
Een apparaat heeft echter wel opgedoken, namelijk Intel Titan Ridge xHCI, die een langere vertraging vereist, ook in het pad naar de hervattingscode. Zorg er daarom voor dat het pad naar de hervattingscode dezelfde verlengde vertraging gebruikt als bij het herstelpad.”
Omdat het een oplossing is voor de algemene stuurprogrammacode en niet specifiek voor de Intel Titan Ridge xHCI, het is mogelijk dat het ook andere eigenzinnige hardware kan helpen.
De oneliner die PCIe-apparaten extra tijd geeft om klaar te zijn bij hervatten, is vorige week ingezonden als onderdeel van de PCI-wijzigingen voor Linux 6.4. Die PCI-pull heeft ook een ASPM-oplossing voor Chromebooks, de PCIe-controller van Qualcomm die standaard async-probing mogelijk maakt om opstarttijden te verkorten, en verschillende andere hardwarewijzigingen.