Letzte Woche gab es viele Berichte über AMDs Bypass Translation Buffer (TLB)-Fehler und seine Auswirkungen auf Quad-Core-Opteron-Chips. Laut ausländischen Medienberichten bereitet AMD einen Kernel für das 64-Bit-Red Hat Enterprise Linux vor als Upgrade 4. Patches. Im Gegensatz zu AMDs BIOS-Korrekturen (Basic Input Output System) und Mikrocode-Updates, die Berichten zufolge die Leistung um 10–20 % verringern, sollen Linux-Patches einen Leistungsverlust von weniger als 1 % aufweisen. Allerdings haben wir auch erfahren, dass Benutzer eine Geheimhaltungsvereinbarung unterzeichnen müssen, um den Patch zu erhalten.
Nachdem sich die Situation bestätigt hatte, veröffentlichte AMD den Quellcode des Patches auf der Mailingliste x86-64.org. Dieser Code basiert jedoch auf der aktuellen Situation und wird nicht geändert, mit einer weiteren Warnung, dass er nicht vollständig für Mainstream-Systeme geeignet ist:
Aufgrund der starken Eingriffswirkung dieses Patches und der sehr geringen Anzahl betroffener Benutzer (Sie werden dies wissen, wenn ein Teil Ihres Systems betroffen ist) empfehlen wir nicht, diesen Patch auf normalen Linux-Systemen zu verwenden. Dieser Patch ist weder für Mainstream-Benutzer gedacht, noch handelt es sich um ein Linux-Produkt zum Verkauf! Dieser Patch wurde nur minimalen Funktionstests unterzogen. Jeder Benutzer muss es vor der Verwendung bewerten, um sicherzustellen, dass es den erforderlichen Qualitätsstandards entspricht.
In einem zuvor auf derselben Mailingliste veröffentlichten Beitrag warnte auch AMD-Mitarbeiterin Elsie Wahlig, dass der Patch „nicht für Upstream-Produkte empfohlen“ werde. Wahlig erwähnte, dass der Patch von AMDs Operating System Research Center-Gruppe für Linux 2.6.23.8 entwickelt wurde und lieferte eine detaillierte Beschreibung des Fehlers:
Die Beschreibung von Fehler 298 lautet wie folgt: „Der Prozessorvorgang ist möglicherweise nicht atomar und ändert die aufgerufenen oder fehlerhaften Bytes im Seitenübersetzungstabelleneintrag von Adresse 0b auf 1b im Cache der zweiten Ebene. Innerhalb eines kleinen Zeitintervalls andere Cache-Vorgänge kann dazu führen, dass ungültige Seitenübersetzungstabelleneinträge im L3-Cache installiert werden, bevor die geänderten replizierten Daten an den L2-Cache zurückgegeben werden. Wenn die Cache-Zeile während dieses Intervalls erkannt wird, führt der Prozessor außerdem keine unabhängigen Cache-Vorgänge durch Das System meldet möglicherweise einen Cache-Protokollfehler der Stufe 3 durch ein Maschinenerkennungsereignis. Der Inhalt des Registers (MSR 0000_0410) lautet B2000000_000B0C0F Das MC4-Adressregister (MSR 0000_0412) beträgt 26 Stunden.
Wahlig beschrieb die Funktionsweise des Linux-Patches, der auch den BIOS-Arbeitsbereich umgeht und „abgerufene und schmutzige Bytes“ emuliert, um zu verhindern, dass fehlerhafte Daten Dateiheader erstellen:
Die Kernel-Patch-Lösung hängt von der Grundursache des L2-Cache-Räumungsproblems ab. Das Problem tritt nur auf, wenn der TLB ein A- oder D-Bit in einem Seitentabelleneintrag setzen muss. Wenn der TLB niemals ein A- oder D-Bit setzen muss, tritt der Fehler nicht auf. Durch die Emulation der A- und D-Bits unter Verwendung der aktuell beschreibbaren Bits stellt der Patch sicher, dass die tatsächlichen A- und D-Bits häufig voreingestellt sind. Dies wird erreicht, indem eine Fehlerseite erzwungen wird, wenn zum ersten Mal auf eine Seite zugegriffen wird, für die das Emulations-A-Bit nicht gesetzt ist, und wenn zum ersten Mal auf eine beschreibbare Seite zugegriffen wird, für die das Emulations-D-Bit nicht gesetzt ist. Die simulierten A- und D-Bits werden in Bitregistern gespeichert, die dem Betriebssystem normalerweise als Seitentabelleneinträge zur Verfügung stehen.
AMD hat mit der taktvolleren Erklärung als ursprünglich erwartet aufgehört, den Patch herauszugeben, aber das Unternehmen hat nicht allen Linux-Benutzern eine „Freigabe“ erteilt, um den durch den BIOS-Fix verursachten Leistungsverlust zu vermeiden.