Ein Bug macht Intels Skylake- und Kaby-Lake-Prozessoren zu schaffen. Über ihn hatte c't im Prozessorgeflüster 13/2017 bereits geschrieben:

"Weitaus problematischer dürfte da schon der Bug SKZ7 der neuen Core-X-Familie sein, der dazu führt, dass eine gemischte Nutzung von 8-Bit und 64-Bit-Registern in kurzen Schleifen zu 'unpredicable system behavior' führen kann. Aber auch hier soll das BIOS Abhilfe schaffen können – hoffentlich tut es das auch."

Wie man jetzt weiß, ist dieser problematische Bug bei allen Skylake- und Kaby-Lake-Prozessoren vorhanden (Errata SKZ7/SKW144/SKL150/SKX150/SKZ7/KBL095/KBW09). Er tritt aber nur bei aktiviertem Hyper-Threading auf. Solange nicht klar ist, ob das BIOS den Bug auch wirklich korrigiert, solle man Hyper-Threading vorsichtshalber im BIOS abschalten, rät unter anderem auch das Debian Project. Die Debian-Entwickler haben den Bug jetzt in einer Warnung einer größeren Öffentlichkeit präsentiert.

Für Kaby Lake (0x806e9 und 0x906e9) sollen die Revisionen 0x5d/0x5e vom April 2017 für Abhilfe sorgen. Bei Skylake, heißt es, sorgen die Revisionen ab 0xb9/0xba für eine Reparatur. Für einige Skylake-Prozessoren findet man im aktuellen UEFI BIOS Updater bereits neue Microcodes (nach UBU 1.69.1 googlen - aber Vorsicht: Auf einigen Sites gibt's nur Werbung).

Die aktuell aktive Microcode-Version lässt sich mit den meisten Systeminfo-Programmen wie HWinfo auslesen – oder unter Windows mit dem c't-Programm showmc.exe, das auch alle vom Windows-Treiber angebotenen Microcode-Updates und die beim Booten aktiven Microcode-Version anzeigt. Im Artikel "Prozessor-Patches" in c't 7/2016 wird gezeigt, wie man Microcodes notfalls zur Laufzeit nachlädt. Unter Windows geht das mit dem Tool von VMWare : vmware-cpu-microcode-update-driver.

showmc für Windows zeigt die Microcode-Version beim Booten, die aktuell von Windows nachgeladenen und alle im Treiber (mcupdate_genuineIntel.dll) vorhandenen Versionen an.

Von Intel gibt es für Linux die Datei microcode-20170511.tgz vom 11. Mai.2017, die für Skylake-U -Mobilprozessoren mit CPUID 406E3 und Core-I7-Desktop-Prozessoren mit CPUID 506E3 die offenbar den Fehler bereinigende Microcode-Version 0xBA enthält. Hier muss man nur die alte microcode.dat durch die neue Version ersetzen, dann wird beim Booten der neue Microcode geladen.

Der Fehler soll von OCaml schon am Jahreanfang duch gelegentliche Abstürze durch einen segfault beim Kompilieren aufgefallen sein. Dort findet man auch Software, um den Fehler zu reproduzieren. c't hat derweil auf einem Skylake Core i7-6700 unter Windows mit verschiedenen 64-Bit/8-Bit-Registermischungen innerhalb kleiner Schleifen experimentiert, konnte bislang aber noch kein "unpredictable system behavior" provozieren. (as)