Ist die Verwendung des it87-Linux-Treibers mit ASUS M5A99FX sicher?

546
Петр Александров

Können it87-Linux-Treiber mit BIOS- oder Hardwaregeräten (Motherboard ASUS M5A99FX PRO 2) in Konflikt stehen? Zum Beispiel gibt es eine Funktion im Linux-Treiber (drivers / hwmon / it87.c):

/* * Must be called with data->update_lock held, except during initialization. * We ignore the IT87 BUSY flag at this moment - it could lead to deadlocks, * would slow down the IT87 access and should not be necessary. */ static int it87_read_value(struct it87_data *data, u8 reg) { outb_p(reg, data->addr + IT87_ADDR_REG_OFFSET); return inb_p(data->addr + IT87_DATA_REG_OFFSET); } 

Ist die nächste Situation möglich? Eine auf Core 0 auf einem Multicore-System ausgeführte Firmware schreibt in das Register "data-> addr + IT87_ADDR_REG_OFFSET". Dann führt der Linux-Treiber auf Core 1 den it87_read_value aus und modifiziert somit das Register "data-> addr + IT87_ADDR_REG_OFFSET". Dann versucht die Firmware "data-> addr + IT87_DATA_REG_OFFSET" zu lesen und erhält falsche Daten.

Der it87-Treiber unterstützt auch Alarme: "Wenn ein Alarm ausgelöst wird, bleibt er so lange ausgelöst, bis das Hardwareregister mindestens einmal gelesen wurde. Dies bedeutet, dass die Ursache für den Alarm möglicherweise bereits verschwunden ist. Beachten Sie, dass in der aktuellen Implementierung alle Hardwareregister vorhanden sind werden gelesen, wenn Daten gelesen werden (es sei denn, es sind weniger als 1,5 Sekunden seit dem letzten Update vergangen). Dies bedeutet, dass Sie einmalige Alarme leicht übersehen können. " (Linux-Kernel, Dokumentation / hwmon / it87). Ist es möglich, dass die Firmware einen Alarm vermisst, wenn der Linux-Treiber das Alarmregister liest?

Es scheint, dass der Hardware-Überwachungschip IT8721F ist.

Das Motherboard ASUS M5A99FX PRO 2 enthält außerdem TPU (Turbo Processor Unit) und EPU (Energy Processor Unit). Interagieren diese Chips mit IT8721F und kann eine Situation ähnlich der beschriebenen auftreten?

Ist bekannt, wie die ASUS Ai Suite mit der Hardware interagiert? Gibt es eine spezielle ACPI-Schnittstelle zum Lesen der Temperatur, einer Lüftergeschwindigkeit usw., die nicht in Linux implementiert ist?

Ausgabe des Befehls "sensors" (it87-Modul manuell geladen):

it8721-isa-0290 Adapter: ISA adapter in0: +2.82 V (min = +1.96 V, max = +3.04 V) in1: +2.84 V (min = +1.27 V, max = +2.78 V) ALARM in2: +0.95 V (min = +3.02 V, max = +2.10 V) ALARM +3.3V: +3.29 V (min = +2.71 V, max = +4.61 V) in4: +1.02 V (min = +2.92 V, max = +2.41 V) ALARM in5: +2.52 V (min = +3.04 V, max = +2.23 V) ALARM in6: +1.92 V (min = +1.48 V, max = +1.75 V) ALARM 3VSB: +2.04 V (min = +1.94 V, max = +5.93 V) Vbat: +3.29 V  fan1: 903 RPM (min = 22 RPM) fan2: 0 RPM (min = 11 RPM) ALARM fan3: 0 RPM (min = 10 RPM) ALARM temp1: +33.0°C (low = -62.0°C, high = +109.0°C) sensor = thermistor temp2: +32.0°C (low = -72.0°C, high = +60.0°C) sensor = thermistor temp3: -128.0°C (low = -33.0°C, high = -125.0°C) sensor = disabled intrusion0: OK 

Fan2 und Fan3 fehlen, also ist 0 RPM richtig.

Ich habe kein echtes Problem gesehen, während das Modul "it87" geladen wurde und die Temperaturdaten gelesen wurden. Ich bin mir jedoch nicht sicher, dass dieses Problem nicht auftritt.

0
Welche Art von "Firmware" stellen Sie sich vor, um auf Core 0 zu laufen? Das einzige, was ausgeführt werden sollte, ist eine einzelne Instanz des Linux-Treibers. Daher sollten keine Parallelitätsfehler auftreten. dirkt vor 7 Jahren 0
Interrupt-Handler für die Systemverwaltung (Teil des BIOS). Es hat mehr Berechtigungen als der Betriebssystemkern und kann ausgeführt werden, während das Betriebssystem ausgeführt wird. Ich weiß nicht, ob er bei laufendem Betriebssystem auf den Hardware-Überwachungschip zugreift. Möglicherweise blockiert der SMI-Handler während der Arbeit den Zugriff auf den Chip. Der Quellcode des BIOS ist geschlossen. Петр Александров vor 7 Jahren 0
Sie können SMI (1) immer deaktivieren oder (2) den Linux-it87-Treiber auf eine schwarze Liste setzen. Das Prinzip "Nur eine Software sollte eine bestimmte Hardware steuern" gilt auch für SMI / Linux-Treiber. Das Schlimmste, was durch Parallelitätsprobleme passieren könnte, wäre jedoch ein (einzelner) illegaler Wert - was nicht gefährlich ist. Wenn etwas überhitzt, fängt es der nächste Lesevorgang an. Thermische Prozesse sind langsam. dirkt vor 7 Jahren 0
Es ist möglich (und sicher), Systemverwaltungsinterrupts zu deaktivieren und wie ist es besser, dies zu tun? Mit den BIOS-Einstellungen möglicherweise die Lüftersteuerung deaktivieren? Die Lüftersteuerung kann jedoch ohne SMI in Hardware implementiert werden. Der Hardware-Überwachungschip bietet auch eine Spannungsüberwachung. Ist es möglich, dass aufgrund von Parallelitätsproblemen eine falsche Spannung eingestellt wird? Петр Александров vor 7 Jahren 0

0 Antworten auf die Frage