Intel-Chipsatz-Bug: Port-Erkennung

Mit ein bisschen Hexadezimalzahlen-Jonglage bekommt man selbst heraus, ob Laufwerke an den vom Chipsatz-Bug betroffenen SATA-Ports hängen.

In Pocket speichern vorlesen Druckansicht 65 Kommentare lesen
Lesezeit: 4 Min.
Von
  • Benjamin Benz

Intel hat rund 8 Millionen fehlerhafte Chipsätze für Sandy-Bridge-CPUs ausgeliefert. Unser Skript zur Chipsatz-Erkennung liefert bislang nur die Information, ob in einem Rechner einer der vom aktuellen Intel-Bug potenziell betroffenen Chipsätze aus der Serie 6 steckt. Benutzer, deren Laufwerke aber ohnehin nur an den beiden SATA-6G-Ports (Port 0 und 1) hängen – was etwa in vielen Notebooks der Fall sein dürfte – brauchen keine Angst vor Ausfällen zu haben. Probleme drohen nur an den vier SATA-II-Ports (Port 2 bis 5). Leider verrät das Betriebssystem nicht ohne Weiteres und in jeder Betriebsart des Controllers, welches Laufwerk an welchem Port hängt.

Der Windows-Gerätemanager oder auch die WMI-Schnittstelle zeigen nicht zuverlässig, welches Laufwerk genau an welchem Port hängt. Intels Rapid Storage Manager, der zum "Rapid Storage Technology"-(RST-)Treiber gehört, kann das allerdings. Auf einem H67-Mainboard funktioniert nach unseren Erfahrungen die Version 10.1.0.1008, obwohl Intel die Serie-6-Chipsätze dabei nicht erwähnt. Der RST-Treiber lässt sich aber nicht immer installieren, wenn der SATA-Controller im IDE-Modus arbeitet.

Der Mainboard-Hersteller Gigabyte hat nun ein Windows-Tool veröffentlicht, das anzeigt, an welchem SATA-Port Laufwerke angeschlossen sind.

Das Windows-Tool RW Everything verrät: Bei diesem System hängen Laufwerke an den Ports 1,3,4 und 5.

Wer aber nicht vor ein paar Hexadezimalzahlen zurückschreckt, sondern beispielsweise den Windows- (oder Linux-)Taschenrechner (im Hexadezimal- oder Programmier-Modus) zückt und bereit ist, ein paar Byte abzuzählen, kann das selbst herausfinden. Denn auf höfliche Nachfrage mit einem Programm wie dem Linux-Bordwerkzeug "lspci" verrät der SATA-Controller über seine PCI Configuration Register an welchen seiner Ports Laufwerke hängen. Für Windows gibt es Software-Pendants zu lspci wie RW Everything, das zumindest in unseren Tests gut funktioniert hat.

Intel beschreibt im Chipsatzdatenblatt ab Seite 551 die Bedeutung der einzelnen Register und deren Adressen. Das "Port Control and Status Register (PCS)" am Adress-Offset 92h und 93h enthält Bit-Felder, die zeigen, welche SATA-Ports gerade in Benutzung sind. Bit 8 und 9 stehen für die Ports 0 und 1, die bei den meisten Mainboards den fehlerlosen SATA-6G-Ports entsprechen. Ist jedoch mindestens eines der Bits 10, 11, 12 oder 13 gesetzt, hängt an den vom Bug betroffenen SATA-(II-)Ports 2, 3, 4 oder 5 ein Laufwerk.

Soweit die Theorie. In der Praxis muss man aber erst einmal herausbekommen, unter welcher PCI-ID der SATA-Host-Controller gerade segelt. Diese beginnt immer mit der Herstellerkennung ("8086" für Intel) gefolgt von einem Doppelpunkt. Danach – also bei der PCI Device ID – scheiden sich bei den Serie-6-Chipsätzen die Wege von Desktop-PCs und Notebooks sowie die der Betriebsmodi AHCI, IDE und RAID. Je nach Einstellung im BIOS(-Setup) meldet sich der SATA-Controller also mit unterschiedlichen PCI Device IDs; die in der Tabelle stehenden kommen in Frage, mehr dazu verrät mal wieder das Intel-Datenblatt sowie das Specification Update:

Vendor-ID Device-ID Betriebsart
8086 1C00 Desktop: Non-AHCI and Non-RAID Mode (Ports 0-3)
8086 1C02 Desktop: AHCI (Ports 0-5)
8086 2822¹ Desktop RAID 0/1/5/10 (Ports 0-5)
8086 1C04 Desktop RAID 0/1/5/10 (Ports 0-5)
8086 1C01 Mobile: Non-AHCI and Non-RAID Mode (Ports 0-3)
8086 1C03 Mobile: AHCI (Ports 0-5)
8086 282A¹ Mobile: RAID 0/1/5/10 (Ports 0-5)
8086 1C05h Mobile: RAID 0/1/5/10 (Ports 0-5)
¹Kompatibilitätsmodus (AIE-Bit=0)

Sowohl lspci als auch die Windows-Tools geben aber auch aus, welche PCI- und PCI-Express-Komponenten (Devices) in Ihrem Computer aktiv sind. Der Linux-Befehl lautet "lspci -nn".

Das Linux-Bordwerkzeug lspci listet alle PCI-/PCIe-Geräte auf, auch den SATA-Controller im AHCI-Modus (8086:1c02).

lspci kann man in einem zweiten Schritt auch benutzen, um die Register eines Gerätes (hier 8086:1c02, also ein Desktop-Controller im AHCI-Modus) auszulesen:

lspci -d 8086:1c02 -xxxx

Mit der Option -xxxx liefert lspci die Inhalte der PCI Configuration Register.

Die gesuchte Information steckt in der Zeile, die mit 90: beginnt. Nun muss man nur noch die beiden gesuchten Hexadezimalwerte (hier "3a" und "ba") analysieren. Dabei hilft zum Beispiel der Taschenrechner im Hex-Modus. Bei diesem System sind die Bits 9 sowie 11 bis 13 gesetzt, sprich die SATA-Ports 1, 3, 4 und 5 in Benutzung. Das System könnte also potenziell von dem Bug betroffen sein. (bbe)