zurück zum Artikel

Intel-Chipsatz-Bug: Port-Erkennung

| Benjamin Benz

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

Intel hat rund 8 Millionen fehlerhafte Chipsätze für Sandy-Bridge-CPUs [1] ausgeliefert. Unser Skript zur Chipsatz-Erkennung [2] liefert bislang nur die Information, ob in einem Rechner einer der vom aktuellen Intel-Bug [3] 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 [4], 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 [5], 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 [6], das zumindest in unseren Tests gut funktioniert hat.

Intel beschreibt im Chipsatzdatenblatt [7] 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 [8])


URL dieses Artikels:
https://www.heise.de/-1183534

Links in diesem Artikel:
[1] https://www.heise.de/news/Intel-Hardware-Fehler-in-neuen-Mainboard-Chipsaetzen-Update-1181172.html
[2] https://www.heise.de/news/Intel-Bug-Chipsatz-Erkennung-2-Update-1182613.html
[3] https://www.heise.de/news/Intel-Bug-Reaktionen-von-Acer-Asus-Dell-Foxconn-Gigabyte-und-MSI-Update-1182218.html
[4] http://downloadcenter.intel.com/Detail_Desc.aspx?ProdId=2101&DwnldID=19607
[5] http://mbforum.gigabyte.de/index.php?page=Thread&threadID=3307
[6] http://jacky5488.myweb.hinet.net/download.html
[7] http://www.intel.com/Assets/PDF/datasheet/324645.pdf
[8] mailto:bbe@ct.de