Problematische SSD im Bauvorschlag führt zu Bugfix im Linux-Kernel
Bei aktuellen "optimalen PCs" hat c’t eine Macke der SSD übersehen. Dank einer eigens in den Kernel eingebrachten Code-Änderung verschwindet das Problem jetzt.
- Thorsten Leemhuis
Wir bitten um Verzeihung: Bei vielen der jüngsten PC-Bauvorschläge von c’t haben wir eine Macke der Kingston-SSD übersehen, derentwegen Linux manchmal abstützt. Der Hersteller wusste davon offenbar schon monatelang, hat aber nichts unternommen. Wir konnten einige Nutzer innerhalb eines halben Monats mit einem automatisch genutzten Workaround versorgen. Durch ihn steigt allerdings die Leistungsaufnahme auch bei Systemen, die nicht betroffen sind. Da ist jetzt Kingston gefragt. Doch der Reihe nach.
SSD stolpert
In vielen Bauvorschlägen der Artikelserien zum optimalen PC 2020 und 2021 hat c’t eine SSD vom Typ Kingston A2000 NVMe PCIe eingesetzt. Sie hatte bei den ausgiebigen Tests, die solchen Texten vorausgehen, nie Probleme gezeigt – weder unter Windows noch bei den vielen Versuchen für die beiden Artikel, in denen wir die Linux-Tauglichkeit der verschiedenen Bauvorschläge beleuchteten.
Nach dem zweiten Text informierte ein Leser c’t über Stabilitätsprobleme mit der SSD: Die Installation einer Linux-Distribution klappte, aber nach ein paar Stunden stürzte das System hart ab. So hart, dass das BIOS die SSD nach Betätigen des Reset-Knopfs nicht erkannte; sie kam erst wieder in Gang, nachdem der PC für ein paar Sekunden ausgeschaltet war.
Der Leser fand im Web mehrere Berichte von A2000-Besitzern, die mit demselben Phänomen zu kämpfen hatten. Einigen zufolge tritt das Problem erst mit der neuesten, seit Frühjahr 2020 verteilten SSD-Firmware auf. Laut einem Forenbeitrag weiß Kingston seit mindestens Mitte September 2020 von dem Problem. Einzelne Nutzer betonen aber, dass die SSD bei ihnen vollkommen störungsfrei läuft; allem Anschein nach zicken nur manche SSDs der Serie oder nur in bestimmten Konfigurationen.
In einigen Berichten fand sich auch gleich ein Lösungsvorschlag: Man solle die Nutzung der NVMe-SSD-Stromspartechnik "Autonomous Power State Transition" (APST) einschränken. Manche Quellen rieten dazu, diese komplett zu deaktivieren; anderen zufolge reicht es, nur den tiefsten der APST-Modi zu meiden. Letzteres gelingt bei der A2000 über folgenden Kernel-Parameter: nvme_core.default_ps_max_latency_us=2500
Der deutsche Kingston-Support bestätigte dem Leser, vom Problem zu wissen; er riet zum Deaktivieren von APST und stellte ein Firmware-Update in Aussicht.
Der Leser leitete diese Information am 25. Januar an c’t weiter. Daraufhin hakte die Redaktion bei Kingston nach und begann parallel, das Problem nachzustellen. Nach zwei Tagen bestätigte der Hersteller das Ganze mit einem sehr kurzen und vagen offiziellen Statement; am Rande ließ man durchblicken, dass es am tiefsten APST-Modus liegt.
Abfangen
Das rief den Autor dieses Textes auf den Plan, der wusste, dass auch ein paar NVMe-SSD-Serien anderer Hersteller solche Probleme zeigen. Bei diesen vermeidet der Kernel die Nutzung des tiefsten APST-Modus automatisch: Das erhöht zwar die Leerlauf-Leistungsaufnahme minimal, doch stabile und korrekte Funktion geht für die Linux-Entwickler vor.
Diese und andere Sonderbehandlungen aktiviert der Kernel über eine Datenstruktur, in der neben Vendor- und Device-IDs auch die Art der Macke (der "Quirk") der SSD-Serie hinterlegt ist. Diese Datenstruktur kann man im Quellcode leicht erweitern, damit der Kernel den tiefsten APST-Level auch bei der Kingston-SSD automatisch meidet. Das gelingt innerhalb einer Minute und ohne Programmier-Know-how, denn viel mehr als Copy & Paste ist dazu nicht vonnöten.
Um das Problem generell aus der Welt zu schaffen, muss der Quirk-Eintrag aber in den offiziellen Kernel einziehen. Dieses Ziel war deutlich schwerer zu erreichen, denn dazu muss man den Linux-Entwicklern die Anpassung schmackhaft machen – dabei sollte man vor der Einreichung der Änderung aber auch geprüft haben, ob sie zum gewünschten Resultat führt. Das konnten wir aber nicht, da es uns nicht gelang, das Problem mit unseren SSDs zu reproduzieren.
Der Autor versorgte die Änderung daher mit einer sehr ausführlichen Patch-Beschreibung, bevor er das Ganze per Mail an die für NVMe-Code zuständigen Entwickler schickte. Nach wenigen Tagen akzeptierte einer von ihnen die Einreichung ohne weitere Rückfragen. Sie floss dann über einen anderen Entwickler zu Torvalds, der sie in die siebte Vorabversion von Linux 5.11 integrierte. In der Patch-Beschreibung hatten wir zudem eine Auszeichnung hinterlegt, die zum Backport in die vier neuesten Stable- und Longterm-Kernel aufforderte. Daher hielt sie ohne weiteres Zutun nur drei Tage später, am 10. Februar, Einzug in die Kernel-Versionen 4.14.221, 4.19.175, 5.4.97 und 5.10.15.
Verteilung
Nutzer von Arch Linux und Fedora 32 und 33 erhielten Linux 5.10.15 innerhalb weniger Tage über die normale Systemaktualisierung; openSUSE Tumbleweed folgte etwas später. Die aktuelle Version von Debian GNU/Linux sollte die Änderung innerhalb einiger Wochen über den neuen 4.19er-Kernel bekommen.
Ubuntu 20.04 LTS dürfte der Workaround über den neuen 5.4er-Kernel erreichen. Ungewiss ist, ob Ubuntu 20.10 sie bekommt: Dessen Kernel basiert auf Linux 5.8, den die Kernel-Entwickler schon lange nicht mehr pflegen. Zukünftige Versionen von Ubuntu und die meisten anderen neuen Distributionsversionen werden die Sonderbehandlung über 5.11 und neuer erhalten.
Letztlich verschwindet das Problem damit aus der Welt – auch bei Nutzern, die von sporadischen Abstürzen durch das APST-Problem betroffen waren, aber der Sache nie nachgegangen sind oder die Ursache nicht finden konnten.
Ob die Änderung wirklich wirkt, lässt sich allerdings nach wie vor nicht gesichert sagen: Mit unmodifiziertem Kernel trat im c’t-Testlabor innerhalb von drei Wochen das Problem nie wie beschrieben auf. Und das, obwohl fast rund um die Uhr getestet wurde – oftmals mit zwei PCs parallel und ab einem gewissen Zeitpunkt auch mit der betroffenen SSD, die der Leser freundlicherweise zur Verfügung stellte. Bei den Versuchen variierte c’t Testumgebung und -verfahren mehrfach, ohne dass es geholfen hat.
Ein anderer Leser stimmt indes optimistisch. Bei ihm stürzte Linux durch die A2000-Macke zwar nicht an jedem Tag ab, aber an vielen – und oftmals sehr schnell. Bei einem Kernel mit dem c’t-Patch trat das Problem innerhalb von neun Tagen nicht einmal auf.
Der Kernel aktiviert bei Zehntausenden von Hardware-Komponenten automatisch eine Spezialbehandlung, weil die sich nicht spezifikationsgemäß verhalten und sonst nicht korrekt arbeiten. In einigen Fällen verhindert Linux damit Datenverlust oder -verfälschung. Die meisten dieser Workarounds sorgen aber dafür, dass Eingabegeräte sowie Sound-Chips auf den Mainboards für PCs und Notebooks korrekt funktionieren.
Wie bei der A2000-SSD lassen sich diese Spezialbehandlungen meist über Kernel-Parameter aktivieren. Wann immer das nötig ist, sollten Sie die Linux-Entwickler darüber informieren. Die können dann die Listen der "Quirks" im Kernel erweitern, damit er den Workaround fortan automatisch verwendet. Dadurch braucht sich dann niemand mehr Gedanken um die Macke zu machen – Sie selbst eingeschlossen!
Sie müssen nicht gleich einen fertigen Patch einreichen, wie c’t es getan hat. Oft reicht eine simple, formlose Mail an die Entwickler mit ein paar Details zur Sache: der Problembeschreibung, dem helfenden Workaround sowie Namen und eindeutige Indentifikationsbezeichner der betroffenen Komponenten. Details dazu nennt ein älterer c't-Artikel; eine erweiterte Form des Textes finden Sie hier:
Richtige Lösung
Zu Ende ist die Geschichte damit (hoffentlich) noch nicht, schließlich ist der Patch nur ein Workaround: Er umgeht ein Problem, beseitigt aber nicht die eigentliche Ursache. Eine ordentliche Lösung sieht anders aus, denn durch den Patch steigt die Leistungsaufnahme im Leerlauf – auch bei Systemen mit Kingston-SSDs der Serie, die das APST-Problem aus welchen Gründen auch immer nicht zeigen.
Zur ordentliche Lösung ist mehr Know-how nötig, daher ist Kingston gefragt. Dass die Firma ein Firmware-Update in Aussicht stellt, spricht immerhin dafür, dass die Ursache des Problems in der A2000-SSD steckt. Da es nach jetzigem Kenntnisstand nicht unter Windows auftritt, lässt sich aber auch nicht vollständig ausschließen, dass beim Linux-Kernel was im Argen liegt – derlei ist schon vorgekommen, doch die Indizien sprechen in diesem Fall dagegen.
Auch Linux kann allerdings nicht Hellsehen, daher wird es den tiefsten Stromsparmodus auch bei SSDs mit der neuesten Firmware meiden. Damit sich das ändert, muss der Kernel die Firmware-Version prüfen. Wenn es eine neue ist, könnte er den tiefsten APST-Modus wieder freigeben; falls nicht, müsste er ihn weiter links liegen lassen und Nutzer idealerweise per Log-Ausgabe auf die Problematik und die neue Firmware hinweisen. Das erfordert einen komplexeren Patch, den Kingston selbst beisteuern sollte.
Notebooks sind ideal zum Arbeiten, Surfen oder auch fürs Gaming. Unser Ratgeber in c’t 7/2021 hilft Ihnen bei der Auswahl eines passenden Geräts. Wenn Sie Ihren PC lieber selbst zusammenstellen, sollten Sie unseren Test von guten, aber günstigen CPU-Kühlern lesen. c't hat aufgedeckt, dass eine große SEO-Agentur unfreiwillig Firmengeheimnisse und Kunden-Zugangsdaten veröffentlichte. Wir erklären, wie Verschlüsselung heute funktioniert und geben Tipps, wie Sie gefälschte AirPods Pro reklamieren. Dies und noch viel mehr lesen Sie in Ausgabe 7/2021, die ab dem 12. März im Heise-Shop und am gut sortierten Zeitschriftenkiosk erhältlich ist.
(thl)